Подтвердить что ты не робот

DSA: Что может сделать хакер с * просто * открытым ключом?

Система регистрации условного доступа, которую я сейчас разрабатываю, внедряет открытый ключ DSA в сам исполняемый файл, а закрытый ключ находится на сервере. (Для обсуждения допустим, что сервер на 100% безопасен, и никто не может получить доступ к закрытому ключу.)

Всякий раз, когда программа приобретается, сервер генерирует лицензию для пользователя, подписывая имя пользователя с помощью закрытого ключа. Затем эта лицензия отправляется пользователю по электронной почте. После того, как пользователь вручную вводит свое имя и лицензию в shareware-приложение, он проверяется открытым ключом в приложении как действительная или недействительная лицензия.

Однако для определенного человека было бы достаточно тривиальным с правом "ноу-хау", чтобы разобрать исполняемый файл и получить открытый ключ.

Мой вопрос здесь в том, что они могут с этим сделать? Является ли открытый ключ само по себе абсолютно безобидным? Является ли открытый ключ достаточной информацией для обратной инженерии генератора ключей?

Любопытные умы хотят знать. Спасибо заранее!

4b9b3361

Ответ 1

Открытый ключ не должен давать им ничего полезного. Однако, если проверка будет легко обнаружена, они могут просто обойти ее и исправить в тесте, который всегда удастся, даже не пытаясь проверить лицензию на открытый ключ.

Ответ 2

Открытый ключ сам по себе позволит им расшифровать любую зашифрованную информацию, отправленную сервером. Это. Переход от открытого ключа к закрытому ключу исключительно затруднен; как работает криптография с открытым ключом. ( "Исключительно" я имею в виду, что он призван быть устойчивым к хорошо финансируемым усилиям правительства, и если он заставит NSA взломать вас, он будет достаточно хорош, чтобы остановить Джо Блау.)

Обратите внимание, что это не помогает DRM, который звучит так же, как вы пытаетесь сделать. DRM просто разбит дизайном; если у злоумышленника есть информация и ключ, чтобы разблокировать его в локальных для него устройствах, это уже игра. Если вы дадите ключ злоумышленнику, он может быть общедоступным, так как он уверен, что не захочет хранить его в тайне...

Ответ 3

Открытые ключи используются повсеместно - формы входа в систему, безопасность банковских транзакций, аутентификация на стороне клиента и т.д. Поэтому короткий ответ заключается в том, что вам не следует беспокоиться, потому что многие другие умные люди рассматривают эту проблему и принимают распределение открытых ключей с конечными точками.

Что люди могут сказать из вашего открытого ключа? Очевидно, они знали ключевое имя и длину ключа. Я предполагаю, что ключ является частью сертификата, который также может содержать некоторые сведения о вашей компании и URL-адресе веб-сайта.

Мои вопросы для вас:

1) Почему вас беспокоит открытый ключ в исполняемом файле? Любой полупристойный взломщик просто изменит ваш исполняемый файл, чтобы полностью обходить проверку открытого ключа. Тот факт, что шифрование является сильным, не имеет смысла, когда вы даете двоичный код клиенту, который может быть изменен.

2) Знаете ли вы о беспорядке, в который вы можете попасть? Там нет ничего неправильного в использовании шифрования с открытым ключом для защиты двоичного файла, но вы можете столкнуться с проблемами по мере развития системы. Такие вещи, как истекшие ключи, ключевые броски и выдача ключей (я считаю, что это инструмент, который вы разрабатываете для продажи), могут стать серьезной болью. И, тем не менее, вы все равно столкнетесь с реальностью, что ваша большая задача - остановить крекеры от просто перенаправления двоичного кода, чтобы избежать проверки безопасности вообще.

Ответ 4

Предполагая, что используется еще небежденный метод шифрования, открытый ключ не может использоваться для определения закрытого ключа. Он должен быть по-настоящему публичным; известный кем-то.

Ответ 5

Просто наличие открытого ключа недостаточно для того, чтобы делать что-нибудь полезное.

Единственное, что можно сделать, - это то, что кто-то может зашифровать сообщение, используя открытый ключ, который может быть дешифрован только с помощью закрытого ключа. Но если закрытый ключ находится только на сервере, это ничего не сделает.

Любая другая атака потребует попыток вычислить закрытый ключ, который вообще не будет ускорен с помощью открытого ключа.

Ответ 6

В асимметричной криптографии безопасно предоставлять ваш открытый ключ злоумышленнику. Однако это значение вместе с сигнатурным или шифрованным текстом, созданным закрытым ключом, можно использовать в Trivial Attack для получения соответствующего закрытого ключа.

Ответ 7

Дело в том, что такое шифрование предназначено для защиты содержимого сообщения и проверки подлинности отправителя, которое в этом случае хорошо известно пользователю, то есть Name и Vendor и т.д. Гораздо лучше было бы защитить раздел код с таким типом шифрования, так что критические биты кода остаются искаженными до тех пор, пока не будет использован правильный ключ.

Как только ключ используется, пользователь может расшифровать и сделать копии программного обеспечения. Полностью защищенное программное обеспечение полностью непригодно. Хотя не связанный этот является интересным, прочитанным относительно защиты вещей.

Ответ 8

Я не согласен с тем, что открытый ключ не является полезным. Я создаю свою собственную пару открытого и закрытого ключей и позволяю предположить, что я нахожу бит открытого ключа в исполняемом файле. Я изменяю открытый ключ на свой открытый ключ. Теперь я могу подписывать что-либо с моим личным ключом, программа примет его.