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

Поговоримо про електронний підпис, апаратний ключ і чому це не флешка. А також про 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. Вичитати історію взаємодії.

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: Дебагер роботи з фалом/ключем.

Коментарі