четверг, 24 июня 2010 г.

Общая информация об электронной подписи

По результатам прочтения статьей (раз и два) на Хабрахабре решил для себя систематизировать полученную информацию и расписать последовательность действий по работе с электронной подписью.

Краткая формулировка задачи:
У отправителя есть некий файл, например, файл типа *.doc или *.txt, и его нужно передать получателю так, чтобы получатель был уверен в принадлежности владельца, и в том, что текст не изменился по дороге.


Итак, опишем базовые термины.

Хеширование или Хэш-функция (иногда хэширование, англ. hashing) — преобразование входного массива данных произвольной длины в выходную битовую строку фиксированной длины. Такие преобразования также называются хеш-функциями или функциями свёртки, а их результаты называют хешем, хеш-кодом или дайджестом сообщения (англ. message digest). Подробнее в Википедии.

Криптографическая система с открытым ключом (или Асимметричное шифрование, Асимметричный шифр) — система шифрования и/или электронной цифровой подписи (ЭЦП), при которой открытый ключ передаётся по открытому (то есть незащищённому, доступному для наблюдения) каналу, и используется для проверки ЭЦП и для шифрования сообщения. Для генерации ЭЦП и для расшифрования сообщения используется секретный ключ. Криптографические системы с открытым ключом в настоящее время широко применяются в различных сетевых протоколах, в частности, в протоколах TLS и его предшественнике SSL (лежащих в основе HTTPS), в SSH. Также используется в PGP, S/MIME. Подробнее в википедии.


Действия отправителя:
  1. Регистрирует себя, как владельца открытого ключа, и получает свой закрытый ключ.
  2. Хеширует файл и получает хеш-код нашего текстового файла;
  3. Зашифровывает хеш-код закрытым ключом;
  4. Отправляет получателю текстовый файл, информацию о владельце открытого ключа и подпись (шифрованный хеш-код).


Действия получателя:
  1. Генерирует хеш-код полученного файла;
  2. По информации о владельце открытого ключа получает открытый ключ;
  3. Расшифровывает открытым ключом подпись и получает хеш-функцию.
  4. Сравниваются описания хеш-функций, полученных на 1-ом и 3-ем шагах.

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

Таким образом, задача решена.

Комментариев нет:

Отправить комментарий