Віктор Турський про програмування / навігатор

концепції / digital-signatures

Цифрові підписи

Друга суперсила асиметричного шифрування, як її подає канал: зашифрувати хеш документа своїм приватним ключем — це і є підпис. Будь-хто може перевірити його твоїм публічним ключем, і це дає автентичність (це був ти), цілісність (нічого не змінилося — змінений документ змінює контрольну суму) і непідробність, бо приватного ключа більше ні в кого немає (асиметричне шифрування і цифрові підписи). Практична деталь, на якій він наполягає: у реальності ніколи не підписують весь документ — підписують його контрольну суму/хеш. Він також розбирає симетричного двійника — MAC на основі HMAC, — де той, хто підписує, і той, хто перевіряє, ділять один спільний секрет.

Підписи — це відповідь каналу на його улюблене питання-пастку: чи зашифрований JWT? Ні — він підписаний (симетрично або асиметрично), що доводить цілісність, але нічого не ховає; фронтенд може прочитати кожен байт пейлоада (хешування, кодування і шифрування). Розуміння того, чим підпис є насправді — на відміну від шифрування, — у 3 речах, що роблять програміста кращим подано як маркер глибокого знання проти поверхневого.

Розібрано у відео

Повʼязане

Асиметричне шифрування — пара ключів, що робить підписи можливими. Хешування — те, що насправді підписується. JWT — канонічний повсякденний підписаний (не зашифрований) артефакт. Шифрування — вічно плутаний родич: шифрування ховає, підписи доводять. Холодні криптогаманці — підписати транзакцію офлайн — у цьому весь трюк. Практики безпеки — підписування образів/пакетів у ланцюжку постачання (із застереженням, що підпис доводить лише те, чиїм ключем підписано).