Подпись 🆚 Шифрование

Я помогаю Golang, Java и C# разработчикам находить работу и проходить собеседования: резюме и отклики, которые доходят до HR, спокойный собес и торг по офферу. Разбираю механику найма изнутри, я провёл более 100 собеседований. Без воды, только чек-листы и готовые фразы.

подписьшифрованиеасимметричные ключи

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

Разберем вопрос на примере ассиметричных криптосистем. По-другому их называют криптосистемами с открытым ключом. Они наиболее распространены и более эффективны, чем симетричные криптосистемы. На основе ассиметричных криптосистем работают TLS и SSL, которые лежат в основе HTTPS. А одним из самых известных алгоритмов является RSA.

В случае ассиметричной системы используются пары ключей: публичный и приватный.

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

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

🔏 Подпись

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

Подпись используется для гарантии подлинности данных и их неизменности. А подписанные данные может прочитать кто угодно.

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

  • Информация не была подделана: процесс валидации будет неуспешным, если исходные данные или подпись подменят
  • Информацию подписал владелец публичного ключа, которым мы выполнили валидацию: так как в ассиметричных криптосистемах публичные и приватные ключи существуют парами, можно достоверно установить соответствие подписи владельцу приватного ключа с помощью публичного.

🔐 Шифрование

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

Шифрование используется для сокрытия информации. А зашифрованные данные может прочитать только владелец приватного ключа.

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

#техничка #backend

Дискуссия

Евгений Беляев
В конце можно коротко подитожить: Подпись - для гарантии подлинности и неизменности. Как к нотариусу сходил. Шифрование - для скрытия. Как к Цезарю сходил.
Сергей Назаров | Карьерный бустер
Евгений Беляев
В конце можно коротко подитожить: Подпись - для гарантии подлинности и неизменности. Как к нотариусу сходил. Шифрование - для скрытия. Как к Цезарю сходил.
Точнее не скажешь 😀
Присоединиться к обсуждению →

Читайте так же