Электронно-цифровая подпись
Электронная цифровая подпись - последовательность символов, полученная в результате криптографического преобразования данных. ЭЦП добавляется к блоку данных и позволяет получателю проверить источник и целостность данных, т.е. защититься от подделки. ЭЦП используется в качестве аналога собственноручной подписи
Электронно-цифровая подпись (ЭЦП)создается с применением закрытого ключа и с использованием открытого ключа подтверждается неизменность и целостность электронного сообщения.
«Электронное сообщение» — информация, пересылаемая в цифровом виде через средства компьютерной техники, в том числе по сетям.
Закрытый ключ — это информация (последовательность символов), известная только ее пользователю, позволяющая создавать ЭЦП.
Открытый ключ — это информация (последовательность символов) для проверки ЭЦП, она сообщается пользователям закрытого ключа получателю электронного сообщения либо Центру удостоверения открытых ключей ЭЦП (Удостоверяющий центр).
В электронных документах подпись представлена в виде цифрового кода. Необходима компьютерная программа для проверки подлинности этой подписи. Эта программа подтверждает также неизменность и целостность электронного сообщения после его подписания электронно-цифровой подписью.
Электронное сообщение, подписанное ЭЦП подписью признается документом, например, договором гражданско-правовой сделки. Использование ЭЦП — это не шифрование информации, а средства ЭЦП не являются средствами шифрования информации. Любое лицо, отправляющее электронные сообщения, вправе создать свою ЭЦП и подписывать ею свои сообщения.
Побочное, но не менее важное назначение ЭЦП— подтверждение авторства сообщения
Пользователю генерируются/назначаются два ключа - открытый (публичный) и закрытый (приватный). Первый доступен всем (будет использоваться для проверки подлинности подписи и документа), а второй только пользователю. Для подписания документа вычисляется его хеш (шифрование всего полумегабайтного документа довольно ресурсоемко :), этот хеш шифруется закрытым ключом
(сделать это - т.е. сформировать собственно подпись может только владелец ключа и никто кроме него) и вносится в таблицу DOCUMENT_SIGNS, привязываясь конкретному пользователю и документу. Если кто-либо хочет проверить подписан ли документ пользователем, или пользователь хочет проконтролировать неизменность документа - он расшифровывает подпись открытым ключом и сравнивает с хешем документа - если они совпали - документ аутентичен.
Расшифровка подписи выполняется в клиентском приложении.
Хеширование
- это в идеале необратимое преобразование позволяющее для данных переменной длины вернуть однозначно соответствующее им данные фиксированного размера (дайджест, хеш), обычно 128 бит.
Хэширование (hashing) — преобразование входного массива данных произвольной длины в выходную битовую строку фиксированной длины. Такие преобразования также называются хеш-функциями или функциями свёртки, а их результаты называют хешем,
Существует множество алгоритмов хеширования с различными характеристиками (разрядность, вычислительная сложность, криптостойкость и т.п.). Выбор той или иной хэш-функции определяется спецификой решаемой задачи.
В общем случае однозначного соответствия между исходными данными и хеш-кодом нет. Поэтому существует множество массивов данных, дающих одинаковые хеш-коды - так называемые коллизии. Вероятность возникновения коллизий играет немаловажную роль в оценке «качества» хеш-функций.
Хэш-функцией называется односторонняя функция, предназначенная для получения дайджеста или "отпечатков пальцев" файла, сообщения или некоторого блока данных.
Хэш-код создается функцией Н:
h = H (M)
Где М является сообщением произвольной длины и h является хэш-кодом фиксированной длины.