> Кто знает, как осуществляется зашифрование и расшифрование > документа после установки пользователем пароля на чтение? > Спасибо за любую информацию Где-то в старом форуме я про это уже писал...
Вообщем так (расшифрование)
Берется пароль, хешируется с помощью md5, отрезаются первые 5 байт, к ним дописывается последовательность байт из файла (генерируется случайно при зашифровании при создании зашифрованного файла, имеет длину по моему 16 байт), далее все это хешируется по моему раз 5 (точно не помню), каждый раз хешируется последовательность байт длины 64, состоящая из хеша, полученного на предыдущем шаге и той самой последовательности из файла. От полученного хеша отрезаются 5 байт, к ним дописывается номер блока (файл зашифровывается блоками по 512 байт). Все это опять хешируется и получается ключ для шифрования блока с данным номером. Шифрование осуществляется с помощью алгоритма RC4 (алгоритм посточного гаммирования, разработка фирмы RSA). Вот вроде все :)
Если интересно, могу еще написать про алгоритм для проверки корректности пароля...
WBR Nick
Конечно, проверка тоже неплохо бы...А откуда эта информация? Есть источник в Инете?07.06.01 20:53 Автор: Weezer Статус: Незарегистрированный пользователь
Конечно, проверка тоже неплохо бы...А откуда эта информация? Есть источник в Инете?08.06.01 12:15 Автор: _Nick_ Статус: Незарегистрированный пользователь
Насчет информации в сети - не знаю, не искал
У меня она из SoftIce + mso97.dll
Алгоритм проверки пароля выглядит примерно так:
В зашифрованном файле есть строка из 32 байт. Из пароля получается
ключ описанным выше способом с номером блока равным 0.
Далее первые 16 байт зашифровываются (расшифровываются)
на этом ключе. Полученные зашифрованные 16 байт сравниваются с оставшимися из 32-х. При совпадении двух 16-ти байтных последовательностей пароль считается верным. По моему так...
Если не секрет, что за задача?
WBR Nick
Мне это представили так:08.06.01 17:50 Автор: Weezer Статус: Незарегистрированный пользователь
а) Введенный пользователем пароль (максимум 15 символов или 120 бит) Password преобразуется по MD5 в 128 бит хэша MD5Hash1.
б) 40 младших бит хэша MD5Hash1 (остальные биты отбрасываются) вновь поступает на вход MD5-шифратора с образованием 128 бит выхода MD5Hash2.
в) MD5Hash2 подается на шифратор RC4 в качестве ключа. Входом RC4 служит текст документа пользователя Text 8-битными блоками. Для каждых 8 бит Text`а ключ преобразуется и накладывается операцией XOR. На выходе образуется шифр RC4Cypher, который далее используется MS Word для создания законченного файла стандартного типа «Документ Microsoft Word» с расширением «.doc».
Расшифрование - все то же самое, только на входе RC4-шифратора не открытый Text, а шифрованный RC4Cypher. В результате получаем открытый текст. Для проверки достаточно 2 байт.
Не знаю, насколько это верно, хотелось узнать поточнее
Дальнейшее общение IMHO имеет смысл продолжить по e-mail. cypher@beep.ru09.06.01 13:33 Автор: _Nick_ Статус: Незарегистрированный пользователь
Задача в том, чтобы все это реализовать аппаратно. То есть нужна точная информация, как реализуется за- и расшифрование08.06.01 17:39 Автор: Weezer Статус: Незарегистрированный пользователь
Задача в том, чтобы все это реализовать аппаратно. То есть нужна точная информация, как реализуется за- и расшифрование10.06.01 02:30 Автор: Dmit Статус: Незарегистрированный пользователь
Довольно подробно все это расписано в документике от CRAK Software (http://www.crak.com). Раньше они его (документик) продавали, теперь я что-то не нашел ссылки вообще.
А аппаратная реализация этого - штука почти безнадежная. Если подбирать ключ шифрования, то основное время будет тратиться на RC4. Это не DES, который состоит из битовых операций, и прекрасно ложится на железо. В RC4 258 байт памяти, и инициализация ключа на 80% состоит из пересылок данных. Так что все будет упираться в тактовую частоту и контроллер памяти.
Гораздо выгодней поставить несколько быстрых машин без HDD/монитора/... (что, собственно, ребята из CRAK и предлагают :)