2013-02-26 2 views
2

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

Предполагая, что мы используем строгие алгоритмы, такие как соленые и растянутые AES-256 и SHA-256, заключается в том, что пользователь имеет приложение в скомпилированной форме (и с некоторыми усилиями, возможно, разрабатывает используемые алгоритмы) делает это любой проще для них взломать шифрование или создать фальшивый хеш?

Если это на самом деле серьезная уязвимость, какие меры кто-либо предложит смягчить уязвимость?

+0

Что значит «скомпилированный код для хэша»? Вы не компилируете код в хэш, но можете сделать что-то вроде создания хеша md5sum из скомпилированного кода. Это то, что вы имели ввиду? О, а также что вы имеете в виду «приложение в скомпилированной форме?» Вы имеете в виду зашифрованную форму? – Eric

+0

КАЖДЫЙ код, который запускается на устройстве пользователя, может быть реинжинирингом, иначе машина не сможет запустить этот код. Однако вы можете сделать трещину как можно труднее, но с достаточным усилием все можно сломать. – MorbZ

+0

Извините @ Эрик, потерянный в переводе. Я имел в виду: «Естественно, приложение должно включать скомпилированный код, необходимый для вычисления хэша данных, а также для шифрования и дешифрования данных». И нет, я не собирался шифровать приложение. «Приложением в скомпилированной форме» я имею в виду файлы EXE приложения и DLL, установленные на компьютере пользователя. – rossmcm

ответ

4

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

  • ли использующий security through obscurity техники,
  • встраивает секрет в теле программа,
  • Выполняет ошибку при реализации хорошо известного алгоритма, который открывает реализацию для атаки.

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

+0

Итак, вы говорите, что объявляя, что «мое приложение использует XYZ123 для шифрования данных, а исходный код, который я использовал, можно найти в ...», не является ли уязвимостью при условии, что реализация звучит? – rossmcm

+2

@rossmcm При условии, что реализация, которую вы используете, безопасна, это может даже сдержать злоумышленников, если библиотека, как известно, хороша. Вы должны доверять реализации, которую вы используете в любом случае, потому что, если библиотека окажется уязвимой в более позднее время, так будет ваше приложение. – dasblinkenlight

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^