Криптоапы это хорошо? - PullRequest
3 голосов
/ 25 мая 2009

Я пишу криптографическую программу, которая выполняет такие вещи, как хеширование (sha1), шифрование, цифровые подписи для win32 на c ++ встроен в cryptoapi secure, или я должен использовать другую библиотеку, такую ​​как crypto ++ Мне нужна максимальная безопасность, и она работает на всех системах XP и Vista (и, необязательно, 2000), но в то же время мне нужно минимизировать размер исполняемого файла, и поэтому я не хочу ненужных внешних библиотек

Ответы [ 7 ]

6 голосов
/ 25 мая 2009

Определите «безопасный». Встроенный в Windows crypto api делает то, что рекламирует, и не имеет недостатков, которые не могут быть исправлены, по крайней мере, о которых я знаю. API Crypto Next Generation может стоить посмотреть.

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

2 голосов
/ 25 мая 2009

«Безопасность - это процесс, а не продукт». - Шнайер

Криптографические алгоритмы, такие как хеширование, шифрование и подпись, являются лишь частью процесса:

  • Как вы храните свои ключи? Могут ли они случайно попасть на диск через файл подкачки?
  • Как вы генерируете свои случайные числа? Плохие случайные числа могут действительно ослабить все. Просто спросите Debian или Netscape об ужасах.
  • Может ли ИТ-администратор (ы) обновить, какие алгоритмы разрешены с использованием групповой политики?
  • Поддерживает ли решение внешние закаленные устройства?
  • Можете ли вы выполнить шифрование в режиме ядра?
  • Как распространяются обновления в случае атаки или слабости?

CAPI и особенно CNG на Vista продумали эти проблемы и в целом достойны. Возможно, вы захотите посмотреть это видео двух парней из команды CAPI, чтобы понять, кто его разработал.

И кроме того, все это спорно, если люди могут получить физический доступ к машине и поставить в ключевой регистратор.

Увы, это процесс ...

1 голос
/ 25 мая 2009

«Максимальная безопасность» будет определяться тем, как вы используете выбранный вами криптографический API. не будет определено самим API.

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

0 голосов
/ 24 июня 2009

Crypto API устарел, все еще работает в Vista, но вы должны использовать CNG (Crypto APi Next Generation). Я не уверен, что Crypto API все еще доступен в Windows 7.

0 голосов
/ 12 июня 2009

Для безопасности выберите библиотеку с аккредитацией 140-2. После этого все зависит от вас, используя его безопасно.

0 голосов
/ 25 мая 2009

CryptoAPI такой же надежный, как и при правильном использовании.

Вы обнаружите, что есть два вида внешних библиотек для crypto для Windows: те, которые переопределяют все, потому что они предназначены для поддержки многоплатформенной разработки, и те, которые действуют как упрощающий слой поверх CryptoAPI для определенных целей. Если вы в бывшей толпе, во что бы то ни стало используйте авторитетную независимую от платформы библиотеку. Если вы обнаружите, что не можете работать продуктивно в сыром CryptoAPI, найдите авторитетную библиотеку, которая будет делать именно то, что вам нужно, за меньшее количество шагов. Но не думайте, что другая библиотека собирается вылечить ваши риски безопасности, потому что она как-то «лучше»; просто убедитесь, что все, что вы используете, заслуживает уважения.

Как отмечали многие другие, если вам действительно нужна «максимальная безопасность» (на каком бы уровне вы ни находились, «максимальный»), вы можете нанять эксперта. Кроме того, вам нужно взглянуть на безопасность с целостного ракурса; шифрование данных - это только один аспект.

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

0 голосов
/ 25 мая 2009

Если вам нужна «максимальная» безопасность, вам действительно нужно нанять специалиста, чтобы помочь вам. В результате вы можете получить небезопасную программу не только из-за неправильного использования крипто-API, как указал Чарли Мартин, но и из-за правильного использования неправильного типа криптографии, из-за неправильного использования результатов правильно используемого API или даже из-за небезопасного проектирования в других частях. вашей программы.

Это чрезвычайно частая проблема в индустрии программного обеспечения.

...