Нередко участие в электронных торгах требует использования электронной цифровой подписи. Это метод шифрования хешированных данных. Для шифрования используется асимметричная технология – она медленная и тяжелая, однако и хеш не слишком большой, нужно всего лишь зашифровать маленькую последовательность байт. Преимущество такого действия очевидно - чтобы удостоверить подпись, нужно иметь открытый ключ, с помощью которого личность зашифровавшего и создавшего хэш довольно легко устанавливается.
Суть шифрования заключается в следующем: существует закрытый ключ, хранящийся у его владельца. Есть также открытый. Последний можно передавать кому угодно, а вот закрытый – нет. Шифруют при помощи закрытого ключа, а расшифровывают — при помощи открытого. Если приводить аналогию, то электронная цифровая подпись как замок, к которому есть пара ключей, причем один только открывает (открытый), а второй – закрывает (закрытый). Вот владелец берет ценную вещь и запирает ее за замком. А открывающий ключ спокойно передает получателю. Тот может взять оттуда предмет, но не более. Если не хочется, чтобы замком пользовался кто-то, кроме его владельца, то не нужно никому отдавать закрывающий, и тогда никто не сможет владельцу ничего подкинуть.
Сразу видны несколько проблем:
Как правильно передать ключ получателю, чтобы никто другой не смог им воспользоваться?
Как сделать так, чтобы ключ нельзя было присвоить?
Как не запутаться в том, какую дверь каким ключом следует открывать?
В результате возникает необходимость в системе хранения и контроля и хешей, и ключей. Наиболее популярны стали два формата: OpenPGP, а также S/MIME + X.509.
Каждый из элементов информации можно отправить с ключом открытого типа или разом с подписью. Можно послать и то, и другое для того, чтобы было удобнее. Разумеется, можно не разделять информацию на отправляемую с ключом открытого типа или с подписью.
Проверка подписки – это информация, позволяющая узнать, кто ее сделал. Асимметричное шифрование дает возможность объединить ключ с полученной подписью. Однако сам по себе ключ открытого типа – это всего лишь набор байт, который при этом связан с закрытым, которым владеет только хозяин замка.
В итоге возникает решение - связать открытые ключи соответственно с той информацией, которую они шифруют, чтобы после присылать данные одним пакетом. В таком случае вопрос реестра решается сам собой, пакет данных с ключом открытого типа можно просто посмотреть, чтобы мгновенно понять его принадлежность.