Электронно-цифровая подпись

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

Электронно-цифровая подпись (ЭЦП)создается с применением закрытого ключа и с использованием открытого ключа под­тверждается неизменность и целостность электронного сообщения.

«Элек­тронное сообщение» — информация, пересылаемая в цифровом виде через средства компьютерной техники, в том числе по сетям.

Закрытый ключ — это информа­ция (последовательность символов), известная только ее пользо­вателю, позволяющая создавать ЭЦП.

Открытый ключ — это информация (последовательность симво­лов) для проверки ЭЦП, она сообщается пользователям закрытого ключа получателю электронного сообщения либо Центру удостоверения откры­тых ключей ЭЦП (Удостоверяющий центр).

В электронных документах подпись представлена в виде циф­рового кода. Необходима компьютерная программа для проверки подлинности этой подписи. Эта программа подтверждает также неизменность и целостность электронного со­общения после его подписания электронно-цифровой подписью.

Электронное сообщение, подписан­ное ЭЦП подписью признается до­кументом, например, договором гражданско-правовой сделки. Использование ЭЦП — это не шифрование информа­ции, а средства ЭЦП не являются средствами шифрования информации. Любое лицо, отправляю­щее электронные сообщения, вправе создать свою ЭЦП и подписывать ею свои сообщения.

Побочное, но не менее важное назначение ЭЦП— подтверждение авторства сообщения

Пользователю генерируются/назначаются два ключа - открытый (публичный) и закрытый (приватный). Первый доступен всем (будет использоваться для проверки подлинности подписи и документа), а второй только пользователю. Для подписания документа вычисляется его хеш (шифрование всего полумегабайтного документа довольно ресурсоемко :), этот хеш шифруется закрытым ключом

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

Расшифровка подписи выполняется в клиентском приложении.

Хеширование

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

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

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

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

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

Хэш-код создается функцией Н:

h = H (M)

Где М является сообщением произвольной длины и h является хэш-кодом фиксированной длины.