>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Программы и ОС http://forum.mozilla-russia.org/viewforum.php?id=31 >Некоторые нюансы реализации блочных криптоалгоритмов http://forum.mozilla-russia.org/viewtopic.php?id=51214 |
hydrolizer > 27-08-2011 13:30:28 |
А именно - AES-256. Сразу скажу, что блочное симметричное шифрование (а не асимметричное) было выбрано ввиду того, что возникла задача поточного шифрования достаточно больших объемов информации (в настоящий момент - ~50 мегабайт на одну операцию шифрования) - для такого случая асимметричные методы считаются неоптимальными из-за большего времени операции криптования. Собственно, сама реализация такой операции никаких проблем не вызвала, т.к. целевая платформа - .Net/C#, в которой есть реализация Rijndael "из коробки". Меня смущают два нижеизложенных нюанса.
|
Rosenfeld > 27-08-2011 14:07:12 |
Я для Вас Америку не открою, но хочу напомнить некоторую вещь, которая возможно наведет Вас на дальнейшие размышления. Вспомните, КАК(!) на самом деле реализовано шифрование в PGP / GnuPG. Вы правильно заметили, что симметричные алгоритмы гораздо превосходят ассиметричные по скорости (особенно хорошо это заметно на больших объемах данных). Ну так вот - там вначале незашифрованный материал шифруется именно симметричным алгоритмом (с очень высокой скоростью), потом сеансовый ключ для симметричного алгоритма (а он ма-а-аленький) уже сам шифруется при помощи ассиметричного открытого ключа реципиента. То есть речь идет о комбинированном шифровании с применением симметричных и ассиметричных алгоритмов... Может Вам как-то реализовать подобную схему? Тем более, что она хорошо описана и де-факто является негласным стандартом.
Очень рискую ошибиться, но я бы здесь провел достаточно натянутую аналогию с ассиметричным шифрованием. Как мы знаем, открытый (публичный) ключ активно участвует в шифровании данных, однако публикация его безопасна. P.S. А Вы пробовали похожие вопросы задать на pgpru.com - у его владельца Влада "SATtv'ы" Миллера (или у Unknown'a) - это самый компетентный ресурс по стойкому крипто на русскоязычном пространстве? ... Они ребята хорошие, вряд ли откажут. |
sentaus > 29-08-2011 13:22:13 |
1) PBKDF2 - должно быть прямо в библиотеках. 2) Вектор инициализации можно хранить публично вместе с зашифрованными данными. На практике его лучше всего вставить в поток данных перед данными, чтобы можно было начинать расшифровку потока до окончания его получения по сети. Тут имеет смысл только озаботиться защитой от его подмены или подмены фрагметов сообщения, например, передать в конце потока HMAC. В openpgp такая техника называетс mdc, можете посмотреть, как она там реализована. |