Используя MD5 для генерации ключа шифрования от пароля?

Абсолютная оптимизация является неразрешимой проблемой, которая означает, нет никакой Машины Тьюринга (и, поэтому, никакая компьютерная программа), который может привести к оптимальной версии ЛЮБОЙ данной программы.

Некоторая простая оптимизация может быть (и, на самом деле), сделанный, но, в примерах Вы дали...

  1. , Чтобы обнаружить, что Ваша первая программа всегда печатает нуль, компилятор должен был бы обнаружить, что x остается постоянным несмотря на все повторения цикла. Как может Вы объяснять (я знаю, это не лучшее слово, но я не могу придумать другого), это к компилятору?

  2. , Как компилятор может знать, что StringBuilder является правильным инструментом для задания без КАКОЙ-ЛИБО ссылки на него?

В реальном приложении, если эффективность очень важна в части Вашего приложения, она должна быть записана на низкоуровневом языке как C. (Ха-ха, серьезно, я записал это?)

5
задан Charles 1 October 2009 в 03:32
поделиться

3 ответа

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

4
ответ дан 14 December 2019 в 19:19
поделиться

Ну, так как ваш пост является общим, позвольте мне сказать несколько общих вещей :

  1. MD5, SHA-0, SHA-1 - все битые хэши, и вы не должны использовать их для каких-либо криптографических целей, используйте SHA-2.

  2. Как правило, вы должны использовать хорошо известные и задокументированные подходы к извлечение ключей из паролей (вы не указываете, какой язык, пожалуйста, скажите, какой из них вы используете).

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

1
ответ дан 14 December 2019 в 19:19
поделиться

Ответ на ваш новый вопрос: вы определенно должны использовать что-то вроде PBKDF2 для генерации ключа.

Я предполагаю, что у вас будет пароль (не менее 10 символов с верхним нижним значением цифр и пунктуации, верно?), который затем сгенерирует ключ AES-256. Ключ будет использоваться для шифрования/дешифрования файла(ов). Вы хотите использовать что-то вроде PBKDF2, чтобы уменьшить возможность того, кто получит ваш файл, узнать ваш ключ/пароль путем перебора. Использование чего-то вроде PBKDF2 (и случайной соли!) увеличивает стоимость взлома шифрования файла.

Что я действительно рекомендую, так это использовать это в качестве игрушки, а не для защиты чего-то, что вам действительно важно. Если вы не эксперт по безопасности, вы будете делать ошибки, даже эксперты (и многие из них вместе) делают ошибки: http://www.sslshopper.com/article-ssl-and-tls-renegotiation-vulnerability-discovered.html

0
ответ дан 14 December 2019 в 19:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: