Страницы: 1
А именно - AES-256. Сразу скажу, что блочное симметричное шифрование (а не асимметричное) было выбрано ввиду того, что возникла задача поточного шифрования достаточно больших объемов информации (в настоящий момент - ~50 мегабайт на одну операцию шифрования) - для такого случая асимметричные методы считаются неоптимальными из-за большего времени операции криптования. Собственно, сама реализация такой операции никаких проблем не вызвала, т.к. целевая платформа - .Net/C#, в которой есть реализация Rijndael "из коробки". Меня смущают два нижеизложенных нюанса.
Отсутствует
... блочное симметричное шифрование (а не асимметричное) было выбрано ввиду того, что возникла задача поточного шифрования достаточно больших объемов информации
Я для Вас Америку не открою, но хочу напомнить некоторую вещь, которая возможно наведет Вас на дальнейшие размышления. Вспомните, КАК(!) на самом деле реализовано шифрование в PGP / GnuPG. Вы правильно заметили, что симметричные алгоритмы гораздо превосходят ассиметричные по скорости (особенно хорошо это заметно на больших объемах данных).
Ну так вот - там вначале незашифрованный материал шифруется именно симметричным алгоритмом (с очень высокой скоростью), потом сеансовый ключ для симметричного алгоритма (а он ма-а-аленький) уже сам шифруется при помощи ассиметричного открытого ключа реципиента. То есть речь идет о комбинированном шифровании с применением симметричных и ассиметричных алгоритмов... Может Вам как-то реализовать подобную схему? Тем более, что она хорошо описана и де-факто является негласным стандартом.
... нужно ли хранить IV в секрете - в разных источниках видел упоминания о том, что IV никакой ценности без ключа не представляет, и его можно хранить прямо вместе с закриптованными данными (но доказательств такого подхода я не видел). С другой стороны, IV используется для последовательного криптования сцепленных блоков, чтобы предотвратить словарную атаку, и, соответственно, является как бы вторым ключом к зашифрованным данным - так стоит ли выкладывать этот ключ для любого желающего?
Очень рискую ошибиться, но я бы здесь провел достаточно натянутую аналогию с ассиметричным шифрованием. Как мы знаем, открытый (публичный) ключ активно участвует в шифровании данных, однако публикация его безопасна.
P.S. А Вы пробовали похожие вопросы задать на pgpru.com - у его владельца Влада "SATtv'ы" Миллера (или у Unknown'a) - это самый компетентный ресурс по стойкому крипто на русскоязычном пространстве? ... Они ребята хорошие, вряд ли откажут.
Отредактировано Rosenfeld (27-08-2011 16:12:04)
Project Rosenfox: Pure, fast and secure inner settings for Mozilla Firefox. Global and complete manual on GitHub.
Отсутствует
1) PBKDF2 - должно быть прямо в библиотеках.
2) Вектор инициализации можно хранить публично вместе с зашифрованными данными. На практике его лучше всего вставить в поток данных перед данными, чтобы можно было начинать расшифровку потока до окончания его получения по сети. Тут имеет смысл только озаботиться защитой от его подмены или подмены фрагметов сообщения, например, передать в конце потока HMAC. В openpgp такая техника называетс mdc, можете посмотреть, как она там реализована.
Отредактировано sentaus (29-08-2011 13:23:54)
Отсутствует
Страницы: 1