>Как работает цифровая подпись? Подробный разбор работы электронной подписи PKI
Дата статьи 24.12.2021

Как работает цифровая подпись? Подробный разбор работы электронной подписи PKI

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


По информации Netscope в июле 2021 года количество троянов и вирусов, загруженных через облачные хранилища, достигло рекордного показателя. Виновниками такой ужасающей статистики являются приложения для облачного хранения файлов (66,4%) и вредоносные файлы Office (43%).

Во время быстрого роста кибермошенничества людям необходимо иметь инструмент, который бы мог проверить определенный файл или сообщение на подлинность. Цифровая подпись в Инфраструктуре Открытых Ключей (Public Key Infrastructure) и стала таким инструментом в киберарсенале обычных пользователей.

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

  • Цифровые подписи создаются с использованием методов криптографии (шифрования), которые поддерживаются инфраструктурой открытых ключей (PKI).

  • Цифровая подпись может быть применена абсолютно ко всему: от файлов программного обеспечения и файлов Microsoft Office до сообщений электронной почты и даже подключений к веб-сайтам.

  • Цифровая подпись файлов и ПО идентифицирует пользователя (аутентификация). Так, подпись может подтвердить вашу личность на просторах интернета.

  • Добавление цифровой подписи помогает защитить целостность файлов и данных, предоставляя пользователям возможность проверить, были ли они изменены с момента добавления подписи.

Пока что все понятно? Хорошо. Теперь мы знаем, что такое цифровая подпись и для чего она нужна, так что пора ответить на вопрос: как работает цифровая подпись?

Как работает цифровая подпись? Краткий обзор

Говоря коротко, цифровая подпись предоставляет пользователю неопровержимую информацию о создателе и о подлинности соединения. Другими словами, она доказывает:

  • Личность создателя (электронного письма, файла или другого рассматриваемого элемента)

  • Подлинность сообщения (т.е. что электронное письмо, файл или программное обеспечение не изменялись с момента их подписания).

Цифровая подпись может быть легко проверена компьютером или сервером получателя, а также ее невозможно подделать.

Цифровые подписи являются ключевым компонентом различных типов цифровых сертификатов PKI. В качестве примера взгляните на цепочку доверия сертификатов SSL / TLS. Сертификат SSL / TLS для домена www.emaro-ssl.ru использует цифровую подпись, чтобы доказать, что это действительный подлинный сертификат, выданный законным центром сертификации (т. е. Sectigo). Сертификат домена был подписан цифровой подписью «Sectigo RSA Organization Validation Secure Server CA», которая, в свою очередь, подтверждена корневым сертификатом «Sectigo (AAA)».

SSL сертификат

Цепочка сертификатов SSL / TLS с доверительной информацией для домена www.emaro-ssl.ru.

Справа налево: конечный сертификат (слева) подписан цифровой подписью промежуточного сертификата, который, в свою очередь, подписан корневым сертификатом (справа).

Но как все это работает? Поскольку в этой теме будут затрагиваться технические аспекты работы цифровой подписи, мы начнем с общего обзора того, как работает цифровая подпись, а потом уже углубимся в подробности.

Например, вы можете использовать сертификат подписи для подписи файлов Microsoft Office и PDF-файлов. Давайте разберемся, что происходит в ходе этого процесса:

  • Берем файл, который мы хотим подписать, и применяем к нему алгоритм хеширования. Эта часть процесса создания цифровой подписи включает в себя создание хеш-значения (hash value). Хеш-значение - это строка чисел фиксированной длины, которая создается на основе информации документа. Хеш-значение можно воссоздать из файла, но файл из хеш-значения – нет.

  • Зашифруем хеш-значение с помощью ключа шифрования цифрового сертификата документа. Вот мы и создали цифровую подпись! Для пущей надежности в нее также можно вставить точную дату и время создания подписи.

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

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

Цифровая подпись в документе - это все равно что защитный знак на водительском удостоверении

Использование цифровой подписи для подписи файлов или ПО сродни защитным знакам на водительских правах или в пасорте. Эти компоненты подтверждают, что документ был выдан органом власти (в данном случае - ГИБДД) и что он подлинный.

Водительское удостоверение

Третьи лица будут доверять информации на карте даже не зная вас лично. Почему? Потому что они знают, что для получения документа вам нужно было подтвердить вашу личность в ГИБДД.

Эти удостоверения личности содержат информационные и визуальные компоненты, которые дают возможность проверить подлинность личности человека, в том числе:

  • Полное имя

  • Физические данные (фотография, дата рождения, рост)

  • Действительный адрес проживания

  • Уникальный номер водительского удостоверения

  • Дата выдачи и дата истечения действия карты

  • Защитные знаки (голографические наклейки, узоры и т.д.)

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

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

А сейчас давайте разберем компоненты, из которых состоит цифровая подпись…

Теперь, когда у нас есть общее представление о работе цифровой подписи, пришло время ознакомится с неотъемлемыми составляющими этой самой подписи.

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

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

Сертификат для подписи документов: этот сертификат позволяет подписывать документы цифровой подписью. Эти сертификаты используются при индивидуальной проверки и проверки организации. Некоторые из этих сертификатов, например, сертификаты от DigiCert, также включают в себя двухфакторную аутентификацию. Это обеспечивает дополнительный уровень защиты, требуя от вас ввода пароля и использования USB-токена для подтверждения вашей личности во время цифровой подписи файла.

Сертификат подписи кода: файл, с помощью которого можно создать цифровую подпись для программного обеспечения, сценариев и других исполняемых файлов. Зачем? Чтобы люди знали, что ПО или любые выпускаемые вами обновления этого ПО были созданы вами, а не каким-то хакером, который хочет заразить устройство вирусом.

Сертификат подписи электронной почты (сертификат S/MIME): с помощью этого типа цифрового сертификата PKI пользователь может подписать электронную почту цифровой подписью. Также сертификат даст возможность шифровать определённые электронные письма: пользователь может зашифровать письмо с помощью открытого ключа шифрования, отправить его, после чего получатель сможет его расшифровать с помощью соответствующего закрытого ключа шифрования. Для этого вы и ваш получатель должны использовать сертификаты S/MIME.

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

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

Алгоритм хеширования. Хеш-алгоритм или хеш-функция, представляет собой математическое уравнение, которое берет ваши данные и сопоставляет их со строкой данных определенной длины. Хеширование - это криптографический процесс, который часто путают с шифрованием. В отличие от шифрования, хеширование является односторонней функцией, что означает, что вы можете использовать его для генерации хеш-значения, но не можете использовать это хеш-значение для получения исходных входных данных. С другой стороны, шифрование же может быть снято с помощью ключа дешифрования. Примеры общих алгоритмов хеширования: MD5, SHA-256 и SHA-384.

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

Как работает цифровая подпись: подробный разбор процесса создания подписи и ее проверки

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

Как упоминалось ранее, цифровая подпись может быть добавлена к сообщениям электронной почты, коду и ПО, а также к различным типам файлов (например, к файлам PDF и файлам Office). Допустим, вам нужно создать электронный контракт на приобретение/покупку чего-либо для клиента, и вы хотите доказать, что это именно вы создали документ. Как же это реализовать?

В этом примере мы подробно расскажем, как создать цифровую подпись для файла PDF, и как проверить подлинность подписи.

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

Шаг 1: Создайте непосредственно PDF файл

Очевидно, что нельзя создать цифровую подпись из того, чего еще не существует. Создайте документ, оформите его, после чего убедитесь, что это окончательный вариант файла, так как после создания подписи редактировать документ нельзя. Уже имеется финальный вариант файла? Тогда переходим ко второму шагу.

Шаг 2: Создаем цифровую подпись

Теперь надо применить алгоритм хеширования к PDF файлу. Например, можно использовать алгоритм SHA-256, который сгенерирует хеш-значение размером в 256 бит, а сама строка будет содержать 64 символов в шестнадцатеричной системе счисления.

Иллюстрация, демонстрирующая процесс создания цифровой подписи.

Конечно, когда вы подписываете PDF-файлы в Adobe, все криптографические процессы происходят за кулисами программы. Это чем-то похоже на процесс приготовления колбасы - вам не обязательно видеть процесс, чтобы знать, что в итоге результат будет отличным. (И опять же, часто лучше НЕ видеть сам процесс изготовления колбасы, чтобы вы могли продолжать наслаждаться ее вкусом, не думая о том, что было сделано в ходе ее производства!)

Вот как выглядит цифровая подпись PDF в Adobe Acrobat:

Подпись в ADobe Acrobat

Вот скриншот с подробной информацией о цифровом сертификате.

Шаг 3: Шифрование хеш-значения с помощью закрытого ключа шифрования

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

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

Теперь перейдем к тому, как получатель может использовать цифровую подпись для подтверждения вашей личности и проверки подлинности файла.

Шаг 4: Расшифровка хеш-значения зашифрованного файла

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

Шаг 5: Генерация нового хеш-значения для полученного файла и сравнение этого значения со старым

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

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

Как вручную проверить контрольную сумму файла с помощью PowerShell

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

               certutil -hashfile [имя проверяемого файла] [алгоритм хеширования]

Здесь программа подтверждает, что хеш-значения совпадают.

Что происходит, если хеш-значения не совпадают?

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

Выводы

Мы надеемся, что эта статья помогла ответить на вопрос: «Как работает цифровая подпись?». Вот краткое обобщение всего сказанного выше:

  • Цифровая подпись - это способ подтвердить личную или организационную идентичность в интернете и обеспечить целостность файлов.

  • Разные типы электронных подписей имеют множество применений, в том числе и к электронной почте, файлам, программному обеспечению.

  • Цифровые подписи и их проверка возможны благодаря цифровым сертификатам, ключам шифрования и поддерживающей их Инфраструктуре Открытых Ключей (PKI).

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


Войти Регистрация
Корзина 0 позиций
на сумму 0 ₽
Связаться со мной
Отправить
Отправляя форму Вы автоматически подтверждаете, что ознакомились и принимаете Политику конфиденциальности сайта
Оформить заказ
Заказать
Отправляя форму Вы автоматически подтверждаете, что ознакомились и принимаете Политику конфиденциальности сайта
Сообщение отправлено!
Спасибо за обращение! Мы свяжемся с Вами в ближайшие рабочие часы
Отправка не удалась
Во время отправки запроса произошла ошибка. Пожалуйста, подождите и попробуйте снова через некоторое время или позвоните на мой номер телефона
Авторизация
Отправляя форму Вы автоматически подтверждаете, что ознакомились и принимаете Политику конфиденциальности сайта
Забыли пароль?
\
Регистрация
Восстановление пароля
Отправляя форму Вы автоматически подтверждаете, что ознакомились и принимаете Политику конфиденциальности сайта
Авторизация
\
Регистрация
Ошибка авторизации
Пожалуйста, проверьте корректность данных.
Форма будет автоматически закрыта через 5 секунд
Успешная авторизация
Через 5 секунд страница будет перезагружена и вы сможете войти в свой аккаунт
Ошибка регистрации
Пожалуйста, проверьте корректность данных.
Форма будет автоматически закрыта через 5 секунд
Успешная регистрация
Через 5 секунд страница будет перезагружена и вы сможете войти в свой аккаунт
Ошибка регистрации
Такой пользователь уже существует. Пожалуйста, проверьте корректность данных.
Регистрация
Ошибка восстановления пароля
Пожалуйста, проверьте корректность email.
Успех
Ваш новый пароль был выслан вам на email
Регистрация
Отправляя форму Вы автоматически подтверждаете, что ознакомились и принимаете Политику конфиденциальности сайта
Авторизация
Создать тикет
Отправляя форму Вы автоматически подтверждаете, что ознакомились и принимаете Политику конфиденциальности сайта
Свяжитесь с нами
Отправляя форму Вы автоматически подтверждаете, что ознакомились и принимаете Политику конфиденциальности сайта
Сообщение отправлено!
Ваше сообщение получено. Наш менеджер свяжется с вами в ближайшие рабочие часы
Скачать файл валидации
Для валидации домена разместите скачанный текстовый файл в указанную директорию на Вашем сервере: