Безпека і криптографія / крок 01
Хешування, кодування, шифрування — у чому різниця?
Про що це відео
Три поняття, які розробники постійно плутають, розплутані на планшеті у вигляді маленького дерева-таксономії. Автор відкриває каверзними питаннями: чи JSON Web Token зашифрований — чи може фронтенд прочитати його без ключа? Чи паролі у вашій базі зашифровані? Чи безпечно, що HTTP Basic Auth шле облікові дані в Base64? Його відповіді: JWT підписаний і закодований, а не зашифрований; паролі хешовані, а не зашифровані; а Base64 — це те саме, що звичайний текст. Він трактує шифрування технічно як форму кодування, що додає властивість безпеки (нечитабельність без ключа), тоді як хешування стоїть окремо як строго одностороннє.
Головне
- Хешування — це одностороннє стиснення до фіксованого розміру: подай йому 1 ТБ чи 100 ТБ — на виході все одно, наприклад, 20 байтів (розмір SHA-1), і назад дороги немає — це не архівація.
- Він розрізняє три сімейства хеш-функцій за призначенням: контрольні суми (MD5, SHA-1 — які git використовує для цілісності), криптографічне хешування паролів (scrypt, bcrypt — як паролі мають зберігатися, обіцяне окреме відео) і швидкі хеші для хеш-таблиць (MurmurHash — перетворення ключів на індекси масиву, див. Структури даних).
- Завдання шифрування в тому, щоб інші не могли зрозуміти дані без ключа. Два види: симетричне — один ключ в обидва боки (AES, ChaCha20) — і асиметричне з парою публічний/приватний ключ (RSA, еліптичні криві), яке працює в обидва боки й тому також уможливлює цифрові підписи.
- Кодування — це просто подання даних в іншій формі під задачу: Base64 перетворює бінарник на текст (а щойно ви це зрозуміли, Base32 і Base85 йдуть за тією самою ідеєю), і навіть zip-стиснення — це різновид кодування.
- Відповідаючи на власні вступні питання: JWT виглядає зашифрованим, але це не так — він закодований у Base64 і підписаний (симетрично чи асиметрично); HTTP Basic Auth у Base64 «це те саме, що plaintext»; а хешовані паролі в БД не можна відновити навіть тому, хто тримає всю базу і всі конфіги — у цьому й суть (Практики безпеки).
Теми відео
Частина цих треків
Безпека і криптографія · крок 01/10
← початок трекуЯк працює Base64 і навіщо він потрібен →