Цифровий підпис – це не просто гарний друк на PDF-файлі. Це технічний механізм, який доводить два факти: електронний документ походить від конкретної людини і не змінено з моменту її підписання. Без цього надсилання таблиці або договору електронною поштою схоже на відправку листівки. Кожен може прочитати її. Будь-хто може зробити позначки на полях.
Справжність у цифровому світі спирається на “шифрування”. Йдеться не лише про приховування даних. Це їхнє кодування таким чином, щоб тільки передбачуваний одержувач міг їх розшифрувати. Аутентифікація підтверджує джерело. Ці два процеси працюють у зв’язці, створюючи цифровий підпис, який витримує перевірку.
Ієрархія верифікації
Комп’ютери використовують кілька методів на підтвердження особистості. Не всі вони однаково надійні.
Паролі — найпоширеніший захисник. Ви вводите ім’я користувача та секретну фразу. Система звіряє цю пару із захищеною базою даних. Збіг? Ви у системі. Розбіжність? Ви заблоковано. Це просто. Це повсюдно. Але це не гарантує, що документ не було змінено після того, як ви залишили приміщення.
Контрольні суми (checksums) — старіший і найпростіший метод, який часто розуміють неправильно. Вони перевіряють цілісність даних. Якщо змінюється хоча б один байт, контрольна сума стає недійсною. Ось як це працює практично. Представте пакет даних із восьми байт. Система складає їх. Якщо сума дорівнює 255 або менше, контрольна сума дорівнює цьому числу. Якщо вона перевищує 255, контрольна сума дорівнює залишку від поділу на 256.
Розглянемо математику для конкретного пакета:
- Байт 1: 212
- Байт 2: 232
- Байт 3: 54
- Байт 4: 135
- Байт 5: 244
- Байт 6: 15
- Байт 7: 179
- Байт 8: 80
Сума дорівнює 1151. Розділимо 1151 на 256. Отримаємо 4,496. Округлимо вниз до 4. Помножимо 4 на 256. Це дорівнює 1024. Віднімемо 1024 з 1151. Результат — контрольна сума 127.
Якщо хтось змінить хоча б один байт цих даних, нова сума не дасть 127 при тому розрахунку по модулю 256. Цілісність буде порушена.
CRC: краще виявляють помилки
Циклічні надлишкові коди (CRC) беруть концепцію контрольних сум і роблять її надійнішою. Замість простого додавання CRC використовують поліноміальний поділ. Результуюче значення має довжину 16 або 32 біта. Цей метод дуже точно виявляє помилки під час передачі. Якщо один біт змінюється під час передачі, CRC не співпаде.
Однак у CRC та контрольних сум є фатальний недолік. Вони не захищають від навмисних атак. Хакер може змінити дані і перерахувати контрольну суму чи CRC. Математика все одно зійдеться. Отримувач не дізнається, що дані були зловмисно змінені. Для захисту від цього потрібне шифрування.
Шифрування із закритим ключем: загальний секрет
Шифрування із закритим ключем, також відоме як симетричне шифрування, спирається на загальний секрет. І відправник, і одержувач повинні мати той самий ключ. Уявіть собі колесо шифрування. Ви заздалегідь домовляєтеся, що “A” стає “C”, а “B” стає “D”. Ви зсуваєте кожну букву на дві позиції.
Ви надсилаєте закодоване повідомлення. Ваш друг, який знає правило “Зсув на 2”, розшифровує його. Будь-який інший, який перехопив повідомлення, побачить лише нісенітницю. Безпека полягає у секретності ключа. Нестача? Ви повинні бути впевнені, що ключ залишається секретним на обох кінцях зв’язку. Якщо комп’ютер скомпрометований, стає вразливим і інший.
Шифрування з відкритим ключем: асиметричне рішення
Саме тут цифрові підписи стають по-справжньому серйозними. Шифрування з відкритим ключем використовує кілька ключів. Закритий ключ, який зберігається у секреті власником. І відкритий ключ, який передається всім, хто бажає безпечно спілкуватися.
Щоб надіслати захищене повідомлення, ви використовуєте відкритий ключ одержувача. Він розшифровує його своїм закритим ключем. Але для цифрового підпису процес змінюється. Ви підписуєте документ своїм закритим ключем. Інші перевіряють його за допомогою відкритого ключа.
Надійним фундаментом тут є хеш-значення. Алгоритм хешування бере вихідні дані та створює рядок фіксованої довжини. Цей хеш є унікальним для конкретних даних. Практично неможливо відновити вхідні дані по хешу.
Розглянемо грубий приклад алгоритму хешування:
Вхідне число 10667
Алгоритм хешування = Вхідне число # x 143
Отриманий хеш прив’язаний до цього входу. Змініть вхідні дані та хеш повністю зміниться. Ця властивість у поєднанні з асиметричним шифруванням гарантує, що цифровий підпис це не просто твердження про авторство, а математичний доказ цього факту.
Спробуйте зрозуміти, як число 1525381 вийшло внаслідок множення 10667 на 143. Удачі. Це вулиця із одностороннім рухом. Математика робить легким рух уперед, але майже неможливим рух назад без вихідного множника. Якби ви знали, що 143 це множник, знайти 10667 було б тривіальним завданням. Публічно-ключове шифрування не так просто, але логіка залишається тією ж. Воно спирається на складні алгоритми та величезні хеш-значення. Йдеться про числа довжиною 40 або 128 біт. Число із 128 біт пропонує 2^128 комбінацій. Це більше комбінацій ніж молекул води в 2,7 мільйонах олімпійських басейнів. Навіть одна крапля води містить мільярди таких молекул. Атака грубою силою фізично неможлива за поточного рівня технологій.
Роль цифрових сертифікатів в інфраструктурі відкритих ключів
Масштабування публічно-ключового шифрування для завантаженого веб-сервера потребує не лише математики. Вам потрібна довіра. На сцену виходить цифровий сертифікат. Це цифровий ідентифікатор. Він стверджує, що веб-сервер перевірено незалежною третьою стороною. Ця сторона — Центр посвідчення (CA). CA діє як довірений посередник. Він підтверджує ідентичність комп’ютерів, що беруть участь. Потім він розподіляє їхні відкриті ключі один до одного. Без цього ви просто обмінюєтеся ключами із незнайомцями. Або ще гірше, хтось перехоплює цей обмін. Сертифікат закриває цей пролом. Він прив’язує абстрактну математику до реального суб’єкта.
Стандарт цифрового підпису (DSS) та алгоритм DSA
Стандарт цифрового підпису (DSS) – це відповідь уряду на необхідність перевірки електронних документів. Він використовує Алгоритм цифрового підпису (DSA). DSS – це затверджений формат. Уряд США схвалює його офіційного використання. DSA спирається на кілька ключів. Один із них — закритий. Тільки сторона, що підписує, знає його. Інший – відкритий. Він має чотири різні частини. Технічний опис можна знайти в інших джерелах. Закритий ключ створює підпис. Відкритий ключ перевіряє її. Це забезпечує невідмовність. Відправник не може пізніше заявити, що не надсилав повідомлення. Це також доводить цілісність. Якщо дані змінюються під час передачі, підпис стає недійсним.
Електронні платежі дедалі глибше проникають у цифрову сферу. Цифрові підписи є основою цієї безпеки. Вони захищають транзакції так само, як і захищають документи.
Ось деякі ресурси для більш глибокого вивчення:
- Bionic Buffalo Tech #5: Шифрування
- Ініціатива цифрового підпису
- Посилання по темам: Право, Криптографія та Електронні комунікації
Часті питання
Що таке цифровий підпис і як він працює?
Це математична схема. Вона доводить справжність цифрового повідомлення. Дійсний підпис повідомляє одержувачу, що повідомлення надійшло від відомого відправника. Вона також гарантує, що відправник не зможе відмовитися від надсилання повідомлення. Нарешті вона забезпечує захист від зміни повідомлення під час передачі.
Що ви маєте на увазі під цифровими підписами?
Те ж визначення, трохи змінене формулювання. Це математична схема демонстрації справжності. Якщо виконані необхідні умови, одержувач має вагомі підстави вважати, що повідомлення походить від заявленого відправника. Він також знає, що вона залишилася незмінною під час передачі.








































