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

концепції / encoding

Кодування

Представлення, а не секретність — найбільш недозрозумілий член трійці, яку канал свідомо викладає разом: кодування, шифрування і хешування. За відео про різницю між хешуванням, кодуванням і шифруванням, кодування — це просто подання даних в іншій формі під певну задачу: Base64 перетворює бінарні дані на текст (та сама ідея дає Base32 і Base85), і навіть zip-стиснення — теж кодування. Тут немає ні ключа, ні секрету — розкодувати може будь-хто. Найгостріше формулювання Віктора: шифрування — це, технічно, різновид кодування, який додає властивість безпеки; звичайне кодування не додає жодної.

Практичне відео-компаньйон «Як працює Base64» показує, навіщо кодування взагалі існують: сирі байти не відправиш як «текст» — керівні символи та алфавіти конкретних кодувань усе ламають, — тому й потрібен алфавіт із 64 символів як найменший спільний знаменник. Ціну плутанини між кодуванням і шифруванням ілюструє його улюблена бойова історія з «3 речей, що роблять програміста кращим»: інженер, який стверджував, що HTTP Basic Auth «зашифрований, бо це Base64». Знати цю різницю — за його словами, знання рівня абетки, яке відкриває справжні властивості безпеки механізму.

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

Повʼязане

Base64 — канонічне кодування, розібране біт за бітом. Шифрування — кодування плюс ключ; те, чим кодування не є. Хешування — третій член трійці: незворотне взагалі. Практики безпеки — «воно закодоване» ніколи не означає «воно захищене».