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

концепції / encryption

Шифрування

Одна третина трійці, яку канал свідомо викладає разом — кодування, шифрування, хешування — і яку розробники постійно плутають. Визначальна властивість, за відео про різницю між хешуванням, кодуванням і шифруванням: без ключа інші не можуть зрозуміти дані. Симетричне шифрування використовує один ключ в обидва боки (AES, ChaCha20); асиметричне — пару публічний/приватний. Віктор навіть формулює шифрування як, технічно, різновид кодування плюс властивість безпеки — саме тому ця різниця й важлива. Його ключовий меседж: більшість того, що розробники недбало називають «зашифрованим» — JWT, Base64 — не зашифровано взагалі.

Практичне відео (асиметричне шифрування і цифрові підписи) глибоко занурюється в симетричний бік: демо AES-256-CBC з вектором ініціалізації, знаменита картинка з ECB-пінгвіном, яка показує, чому однакові вхідні блоки з однаковим виходом зливають структуру даних, XOR-зчеплення блоків у CBC як ліки, і потокові шифри на кшталт гуглівського ChaCha20, пояснені як XOR із довгим псевдовипадковим потоком ключа. Оскільки симетричне шифрування швидке, а асиметричне у 100–1000 разів повільніше, реальні протоколи шифрують дані симетрично, а асиметричне шифрування використовують лише щоб домовитися про ключ.

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

Повʼязане

Кодування — представлення, а не секретність; те, з чим шифрування плутають найчастіше. Хешування — одностороннє, без ключа, без розшифрування — третій член трійці. Асиметричне шифрування — схема з двома ключами і чому вона лише запускає симетричне шифрування. HTTPS і TLS — шифрування в дорозі та його межі у ворожій мережі. Base64 — виглядає як шифр, а насправді відкритий текст.