Как работает цифровая подпись открытым ключом, что именно шифруется на подписанном файле?
Есть файл, который мы подписывали цифровым сертификатом (подпись), или же мы подписали сертификат другим сертификатом. Что именно шифрует и подписывает сертификат на файле? Какие данные или метаданные файлы шифруется? Или вычисляется хеш и этот хеш шифруется затем прикрепляется к саму файлу? Например, как работает DKIM, что и как подписывается письма?
mayton2019, Нет я именно спрашиваю что При Подписании файла Цифровой подписью (то есть сертификатом) что именно этот сертификат изменяет шифруется при процессе подписывания?
by_EL, ЭЦП не изменяет содержимого твоего документа. Просто дописывает к нему хвостик. И этот хвостик закрепляет состояние документа так что изменить его не сломав подпись уже невозможно. А сертификат участвует в этом как хранилище публичного ключа. Но не просто ключа а документа где прописаны все реквизиты в том числе и публичные ключи. Но сами сертификаты и документы не являются акторами. Тебе проще описать свой вопрос в терминологии таких субъектов как Алиса Боб и Кларк. Так проще для восприятия.
by_EL, Вы как-то определитесь уже, шифрование вам или подпись.
Подпись - это когда документ можно прочитать, но нельзя изменить, не владея секретной частью
А шифрование - это когда и прочитать нельзя, не зная ключа
DKIM - подписывание, без шифрования
Когда хотя бы с этим различием разберётесь, будет проще.
MaxKozlov, Понятно, Пожалуйста ответили бы мне, тогда как файлы для удостоверения подписываются сертификатом, Что именно как подписывается криптографическим способом, PS Я прочитал об PKI Diffie helman и др , Но именно описание об процессе как сертификатом подписывается файл или документ технически я не нашел
by_EL, обычно просто считается определённым способом хеш документа или его части и именно этот хеш шифруется секретным ключом. Результат в виде подписи кладётся рядом.
А проверяющий считает хеш сам и сверяет с расшифрованным с помощью публичного ключа. Совпали - документ не изменён.
Касательно dkim, Rsa97 кидал ссылку на документ, так там в стандарте как раз описывается какие заголовки использовать в хешировании и как проверять.
by_EL,
Подписание:
1. Нормализовать документ. Выделить ту часть документа, которая будет защищена подписью. Если требуется, то включить в документ все используемые шрифты и embedded-фрагменты (например, графики, вставленные из Excel через OLE).
2. Рассчитать хэш нормализованного документа.
3. Зашифровать хэш приватным ключом сертификата.
4. Дописать зашифрованный хэш (подпись) в документ или создать отдельный файл с подписью. В зависимости от стандарта дописать в документ или в отдельный файл применённые правила нормализации.
Проверка подписи:
1. Нормализовать документ по тем же правилам, что и при подписании.
2. Рассчитать хэш нормализованного документа.
3. Расшифровать подпись публичным ключом сертификата.
4. Сравнить расшифрованный и рассчитанный хэши.
При шифровании файл шифруется публичным ключом, содержащимся в сертификате. Для расшифровки нужен парный приватный ключ. Шифруется весь файл. На выходе процедуры новый файл с зашифрованным содержимым старого файла.
При подписании файла используется приватный ключ. Приватный ключ в сертификате не содержится. Для проверки подписи у проверяющего должен быть парный приватному ключу сертификат, содержащий публичный ключ. Подпись может добавляться к файлу в конец или может быть в виде отдельного файла (обычно с расширением sig) - открепленная подпись.
Про DKIM нормальное общее описание есть в вики, в т.ч. указано что конкретно подписывается. Тут подписание идет некоторых полей письма, а не всего письма. Подпись добавляется как одно из полей письма в формате SMTP.