Зберігаємо цифровий підпис у безпеці

Поговоримо про електронний підпис, апаратний ключ і чому це не флешка. А також про ID паспорт, Дія.Підпис. Раніше документи скріпляли печаткою, печатка реєструвалася у МВС, но з розвитком технологій стала необов’язковим атрибутом: повноцінна заміна – електронний підпис.

Рік тому лінійка ключів була досить вузькою, зараз збільшилася. Поширені на ринку:

Назва, виробник, чіп, ціна
🔑 SecureToken-337, Avtor, P5CC037, 850 грн
🔑 SecureToken-338, Avtor, SLE78CxFXxxxxP, 850 грн
🔑 Almaz-1C, ІІТ, AVR, 800 грн
🔑 AvestKey, Avest, STM32F200, 500 грн
🔑 EfitKey, IT Engineering, 1250 грн
🔑 TEllipse4, Техноконсалтинг, S3D350A

Основні компоненти безпечного ключа-токена:

  1. Апаратний генератор випадкових чисел (RND) який генерує закритий ключ із рівномірним розподілом. Це може бути шумовий діод, квантовий генератор.
  2. Згенерований закритий ключ в жодному випадку не повинен покинути апаратний носій. Ні програмним способом ні апаратним.
  3. Має мати функції генерування публічного ключа (асиметричне шифрування), підписання вхідної інформації закритим ключем, збереження підписаного сертифікату.
  4. Захист від несанкціонованого доступу (пароль, апаратний захист).

В Європі носій має відповідати вимозі EAL5+.

Функції, які повинен виконувати токен:

  1. Підписування документа (авторизація на сайті теж саме).
  2. Розшифрування вхідних даних.

Закони дуже заплутали поняття електронного підпису, в результаті є: кваліфікований електронний підпис, удосконалений цифровий підпис, електронний цифровий підпис. Бо треба узаконити підпис на ID паспорті, хмарні підписи.

Для кого обов’язкове використання апаратних ключів: нотаріуси і реєстратори, державні підприємства, робота із критичною інфраструктурою.

Також є пару прецедентів по інфраструктурі цифрових підписів (Joe Biden, Рябошапка, ключ Мирний Олександр Максимович (РНОКПП 1010101017, дійсний до 23.10.2021, OCSP відкликаний)).

З мінусів: необхідність встановлення стороннього програмного забезпечення (плагінів), які взаємодіють між браузером і CCID USB пристроєм.

Алмаз-1К (Almaz-1C)

Розглянемо електронний ключ Алмаз-1К від АТ “ІІТ” (Харків). Поставляється у блістері.

Ручний напис пакувальника. На корпусі лазерне гравіювання номера.

При підключенні Windows автоматично підтягує драйвер WUDF (VID 03EB [Atmel Corp.], PID 9324).

Індикація чи фізичні кнопки відсутні. Пристрій USB CCID (PC/SC) – для операційної системи як smart card.

Потрібно встановити програму Алмаз-1К Конфігурація. Дозволяє форматувати носій. Пароль встановлюється під час форматування.

Інформація про пристрій вичитує статус. Токен має 15 спроб на введення невірного паролю, після чого стирає ключі.

е.ключ ІІТ Алмаз-1К
Серійний номер: 342888
Залишилось спроб введення паролю: 15
Всього можливих спроб введення паролю: 15
Особистий ключ ЕП: присутній
Особистий ключ ПРК: присутній
Версія прошивки: 11
Контрольна сума прошивки: 9E633465

Також токен веде журнал подій (цікаво де час береться). Підписання чи розшифрування не записується.

У нас є токен, і діючий файловий ключ. Ідемо на сайт https://ols.am-soft.ua/ і після авторизації діючим ключем обираємо Програмний засіб “КЕП MASTERKEY” 1 рік базовий за 178 гривень. На етапі генерування ключа обираємо на пристрій (token).

Через плагін передаються дані про підключений ключ і робиться запит на генерування: закритого ключа підпису (ЕЦП, c0), закритого ключа протоколу розподілу (ПРК, шифрування, 08), а також генерування запиту на сертифікат у формату P10 який містить публічний ключ (по суті це “половина” Certificate Signing Request (CSR)).

Після успішного генерування отримуємо повідомлення. Якщо виникає помилка, перезавантажте комп’ютер.

Можемо перевірити у логу токена:

Альтернатива: з допомогою програми Користувач ЦСК можна сформувати закрити ключі і запити також у форматі RSA і ECDSA.

Технічні деталі

ДСТУ 4145-2002 «Інформаційні технології. Криптографічний захист інформації. Цифровий підпис, що ґрунтується на еліптичних кривих. Формування та перевірка»

[згорнути]

Після завантаження P10 файлів отримуємо повідомлення: Пристрій: Token OID = 1.3.6.1.4.1.19398.1.1.8.22. Я обрав генерацію на токен. У підписаному сертифікаті у поле Enhanced Key Usage (Покращений ключ) дописується вказаний вище OID. Зліва ключ на токені, справа у файловому контейнері.

Чи можна окремо створити ключ RSA і ECDSA пізніше? так

Що дає PKCS#11? по суті нічого, режим для ключів з старою прошивкою.

Що робити якщо ключ загублено, знищено, забуто пароль: відкликаємо у центрі сертифікації виданий сертифікат, і генеруємо новий.

Що робити, якщо хтось підглянув пароль до токена? Через Користувач ЦСК змінити пароль. Старий пароль ніхто не зможе використати. (у разі файлового ключа, якщо хтось файл собі скопіював, то з вашим старим паролем може робити що завгодно)

Що може зробити “зловмисник” отримавши токен на 2 хвилини без паролю: 1. Відформатувати токен (знищивши закритий ключ) 2. Вичитати історію взаємодії.

Для оновлення сертифікату вибираємо сформувати запит на сертифікат на базі існуючих ключів. – не перевірено особисто.

Невірно: Оновлення ключа коли проходить рік: З одним апаратним токеном Алмаз виглядає: генеруємо новий файловий ключ (буде без позначки Enhanced Key Usage), після закінчення попереднього ключа (на токені) перевіряємо чи всі квитанції розшифровані, і записуємо утилітою (не вдається записати) на апаратний токен новий ключ (втрачаємо можливість розшифрувати дані зашифровані попереднім ключем). Сам файловий новий ключ додатково шифруємо у ZIP архів, і зберігаємо у надійному місці.

Для запису ключа запускаємо Користувач-ЦСК: Меню – Особистий ключ – Резервне копіювання ключа – з файлу на носій. – це просто збереження ключа як файл у пам’яті токена – записати ключ у захищене сховище не можливо.

На токен Автор SecureToken-338 можна записати до 30 пар закрити-публічний ключ. Також виправили проблему із нагрівом токена.

SecureToken-338

Розглянемо цифровий ключ Secure Token 338 від Автор із криптосхемою SLE78CxFXxxxxP компанії Infineon який має сертифікат Common Criteria EAL6+.

Поставляється у блістері, зверху немає людино читабельного номеру ключа. Номер нанесений з іншої сторони лазерним гравіюванням, збоку у code-128 нанесений номер ключа.

Є синій світлодіод статусу, світиться при ініціалізованому пристрої.

Корпус металевий, видно структуру пристрою: товстий текстоліт із SMD монтажем. Проглядаються електроліти, виглядає що захисту від вологи немає. При роботі корпус нагрівається.

USB VID=15CF PID=0019

Початковий пароль токена 12345678. Зміна паролю утилітою AvPinTool. Є 7 спроб вводу пін коду.

Ініціалізація токена через InitUM.exe, певні нюанси із кодуванням.

При підключенні відображає інший номер ніж нанесений на корпус.

А Дія.Підпис?

По підписанню документів я не зрозумів, що мається під “розподіленим ключем”, бо з опису виходить що є два ключі: один зберігається на пристрої, і ОС гарантує його збереження (Android: EncryptedSharedPreferences, не SEService, якщо Samsung перенесіть додаток у захищену теку (knox)). І ним підписується дані документу, а далі на серверній частині відбувається звіряння фото із камери і фото з паспорта/ів, перевірка ключа пристрою, і відбувається підписання ключем на сервері. Також не відображено де генерується закритий ключ який зберігається на пристрої.

І я не довіряю “авторизації” по фото (на мою суб’єктивну думку):

(Не)Безпечна авторизація у Дія з допомогою фото?

А що за файл Key-6.dat?

Файл Key-6.dat це шифрований паролем бінарний файл контейнер, який містить закриті ключі підпису і шифрування, відкриті ключі. Перебуваючи на сайті, який використовує форму входу по КЕП/ЕЦП ви не можете  перевірити (через дебагер можна) чи вказаний вами файл і пароль передається на веб сервер чи обробляється локально (JS бібліотека + плагін). Сценарій: зловмисник фішингом заманює жертву на зловмисний сайт голосування, жертва “авторизується” своїм файловим ключем і зловмисник може робити будь які дії від імені жертви…

Чи можливо імпортувати існуючий файл на токен: у деякий виробників так (на 337 токен можна імпортувати утилітою P11KeyUtil.exe).

Також тисячі контейнерів люди завантажили у ProZorro, без слів, …

А цифровий підпис на ID паспорті?

Ніде не найшов яку мікросхему використовують у чіпі паспорта (чи є сертифікований RND), а також де генеруються закриті ключі. І чи можливо записати існуючі ключі. І чи підтримує чіп криптоалгоритми ДСТУ.  Сертифікати видаються МВС. Тому не генерував цифровий підпис.

Паспорт громадянина України (ID картка) – inside

Де ще є апаратні сховища ключів?

У кожного з собою у телефоні є сховища ключів: перш за все це SIM карта де зберігаються 128 бітний ключ Ki (симетричне шифрування), мікропрограма з використанням закритого ключа виконує наступні алгоритми A3/A8 – аутентифікація, А5 – шифрування даних між телефоном і базовою станцією. Якщо часто протягом короткого періоду запитувати відповідь, то карта заблокується. В самому телефоні також є сховища: Embedded Secure Element (eSE) – Samsung, Secure Element – Apple (Cellebrite декларує можливість доступу до них…).

Також сховище ключів використовується у POS терміналі, фізичне пошкодження корпусу чи спрацювання тамплера стирає ключі. Наприклад POS термінал VeriFone Omni 3750. Процесор і флеш закритий захисною кліткою, при спробі розбору ключі стираються, сіла резервна батарейка – ключі стираються.

Чи є щось опенсорсне?

Так, за 3$ можна зробити GNUK криптографічний токен із програматора ST-Link STM32F103 (128Кб): це OpenPGP емулятор смарт карт. Основний функціонал: збереження PGP і SSH ключів. З українською криптографією не працює.

Альтернативи для 2FA чи MFA?

Чи можна з браузера доступитися до CCID пристрою? Можна через WebUSB но з питань безпеки цей функціонал заблокований. Замість цього нативно реалізований Web Authentication API. Відкритий протокол U2F від FIDO Alliance.

Підтвердження команди потрібно підтвердити апаратною кнопкою.

Такий метод реалізований як другий фактор (2FA) наприклад у FB.

Найпоширеніші YubiKey ціна ~ 75$.

UPD: Дебагер роботи з фалом/ключем.

Використання фотографій або текстового контенту на інших ресурсах без клікабельного індексованого посилання заборонено.