2010-10-10 2 views
4

Привет всем Мне нужно зашифровать текст, какое лучшее шифрование использовать программно?
В общем, у меня есть файл ввода со строкой, который мне нужно зашифровать, а затем прочитать файл в приложении
Расшифруйте его для потока приложения.
с C++Какое самое сильное шифрование для защиты текста?

+5

Лучшее в каком смысле? Каждый алгоритм имеет компромиссы, которые необходимо учитывать при выборе. –

+0

@Ignacio: «Что такое шифрование __strongest__ [...]?» – sbi

+0

Каковы компромиссы, которые необходимо учитывать при выборе? – user63898

ответ

13

Самое сильное шифрование - использовать one-time pad (например, с XOR). Алгоритм одноразовой прокладки (в отличие от большинства других часто используемых алгоритмов), при условии правильного использования, является безопасным.

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

В ситуациях, когда невозможно безопасно отправлять информацию по другому каналу, используется public key cryptography. Как правило, сила этих алгоритмов возрастает по мере увеличения длины ключа, если в алгоритме не обнаружена критическая слабость. RSA - широко используемый алгоритм открытого ключа.

Чтобы получить надежное шифрование с использованием криптографии с открытым ключом, ключи имеют тенденцию быть большими (тысячи бит не редкость), и алгоритмы медленно вычисляются. Альтернативой является использование вместо symmetric key algorithm. Они могут часто получать одинаковое шифрование по силе с более короткими ключами и могут быть быстрее для шифрования и дешифрования. Подобно одноразовым прокладкам, это также связано с проблемой распределения ключей, но на этот раз ключ очень короткий, поэтому более вероятно, что вы сможете безопасно его перенести. Примером обычно используемого алгоритма симметричных ключей является AES.

+1

+1 для одноразовой прокладки. – Skarab

+0

Это не единственный алгоритм, который безопасен, далек от него. Фактически, ссылка Wikipedia относится к классу «безопасных» алгоритмов Shannon, которые одинаково сильны. Тривиально, так как «OTP (текст, ключ)» отлично защищен, «OTP (OTP (текст, ключ1), key2)» также. – MSalters

+0

@MSalters: Спасибо за комментарий. Я обновил свой ответ. –

2

Одноразовый блок является самым сильным, но, вероятно, вы ищете sth, который вы можете легко использовать в своем приложении. Проверьте эту страницу, чтобы узнать о силе алгоритмов - http://security.resist.ca/crypt.shtml, и здесь у вас есть библиотека C++: crypto ++ (ссылка указывает на сравнительный тест, сравнивающий производительность разных алгоритмов) http://www.cryptopp.com/benchmarks.html.

0

Ответ зависит от того, что вы подразумеваете под «сильным шифрованием».

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

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

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

В частности, некоторые другие ответы утверждают, что одноразовая панель является наиболее безопасным алгоритмом. Однако одноразовая панель не обеспечивает целостности. Без какой-либо модификации легко модифицировать зашифрованный текст, без которого приемник замечает модификацию. Это означает, что одноразовая панель удовлетворяет довольно слабой концепции безопасности, называемой «совершенной секретностью». То естьв настоящее время совершенно неверно называть одноразовый блок «доказуемо безопасным», не говоря уже о том, что это относится только к модели безопасности, которая не включает целостность сообщения.

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

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