Ещё одна тема, на которой паразитируют техно-гики в России — это государственный удостоверяющий центр (SSL/TLS сертификат). К сожалению, тема крайне сложна и особенности этой технологии знают и понимают буквально единицы специалистов, остальные просто беспредметно истерят. Проблема с текущей моделью в TLS кроется совершенно в другой области и прилагать усилия по исправлению нужно именно там, но это крайне сложно, поскольку придётся бодаться с огромным межгосударственным болотом и корпоративными интересами.
Напомню историю вопроса. В 2022 году в госдуму был внесён законопроект № 244043-8, в котором предусматривается создание российского национального удостоверяющего центра (УЦ) для централизованного выпуска TLS-сертификатов для, например, сайтов. Обоснование было предельно рациональным: западные УЦ стали отказывать российским клиентам в обслуживании и перестали выдавать сертификаты для их сайтов, поэтому решили создать свой собственный УЦ, чтобы не зависеть от западных. Чтобы выданные этим новым удостоверяющим центром сертификаты корректно обслуживались на компьютерах пользователей, им нужно добавить корневой сертификат удостоверяющего центра в доверенные. И в этой статье я максимально подробно расскажу, что же это означает, какие от этого могут быть проблемы, как их можно решить и почему это никогда не будет решено.
СКУД (система контроля и управления доступом, Physical Access Control System, PACS) — это набор программно-аппаратных средств контроля и управления физическим доступом к дверям, воротам, турникетам и другим технологическим отверстиями. В систему входит множество датчиков, замков, камер и другое оборудование, но в данной статье меня будут интересовать только физические электронные ключи доступа, их типы, особенности, характеристики, проблемы и недостатки.
Эта статья — нечто вроде инструкции по использованию USB криптотокенов в терминале (консоли) линукса и макоси. Ориентирована она прежде всего на российские реалии и рассматривает доступные у нас устройства и программное обеспечение.
Здесь не рассматриваются подробно детали устройства сертификатов и ключей, для этого я рекомендую прочитать статью Ещё больше и лучше о цифровых сертификатах: X.509, PKI, PKCS, где я подробно рассматриваю прикладную криптографию, сертификаты, ключи, а также консольные инструменты для работы с ними.
Базовая операционная система: ubuntu/debian на архитектуре amd64, однако многие сценарии также применимы к макоси версии Catalina или выше (только intel, на arm не проверял), а также для линуксов на другой архитектуре, если для неё существуют подходящие драйверы устройств.
Для работы в макоси вам необходимо сначала поставить homebrew.
❈ ❈ ❈
В рамках этой статьи я рассматриваю прежде всего штатные инструменты, которые применимы к любым токенам, поэтому все проприетарные криптопровайдеры типа Криптопро тут не описаны. Я настоятельно рекомендую сначала прочитать статью, прежде чем покупать криптотокен, для экспериментов вы можете использовать программный эмулятор SoftHSM (он описан ниже). К сожалению, на российском рынке очень много откровенно мусорных устройств, которые я советую игнорировать, про это я тоже отдельно напишу, поэтому экспериментируйте только с SoftHSM, для понимания принципов работы инфраструктуры он подходит идеально.
Аутентификация в информационной системе обычно происходит через логин и пароль. Логин служит для идентификации пользователя, а пароль — для подтверждения логина. Такая схема использовалась годами, однако со временем проблема кражи личности приобрела такие масштабы, что потребовался дополнительный уровень защиты — многофакторная аутентификация (multi-factor authentication, MFA).
Смысл MFA в том, что идентификация пользователя происходит по нескольким независимым каналам (факторам) и когда результат по всем положительный, система успешно завершает процесс аутентификации.
Здесь написано о GnuPG, как им пользоваться и при этом понимать, что делаешь. Изначально статья была написана в 2013 году, несколько раз слегка обновлялась, а в 2023 была значительно переработана и дополнена актуальной информацией.
GnuPG (GNU Privacy Guard, официальный сайт gnupg.org) — это опенсорсная реализация открытого стандарта OpenPGP, изложенного в RFC 4880. GnuPG состоит из набора программ и библиотек, однако нас будет интересовать только консольная программа gpg. Она существует под все операционные системы, однако наиболее комфортно используется в linux и macos. По gnupg есть множество материалов, однако из-за высокой сложности базовых концептов, всегда есть что добавить или объяснить.
В линуксах gnupg ставится из штатного репозитория, для макоси можно поставить из macports, brew, но я рекомендую GPG Suite. Все эти способы предоставляют вам консольную программу gpg с одинаковыми командами на всех операционках. Текущая актуальная версия GnuPG 2.2 и вся статья отталкивается именно от неё. Многие команды в принципе применимы и для более старых версий.
Между разными версиями gnupg формат хранения данных в каталоге с конфигурацией несколько раз менялся и связанные с этим термины типа keyring уже во многом устарели, поэтому в обновлённой версии я постараюсь не углубляться в конкретные детали реализации и слова типа keyring/кейринг тут использоваться не будут. Чтобы подчеркнуть относительность конфигурации, я буду использовать слово конфиг, под которым вы должны понимать выбранный каталог с конфигурацией. Также я не буду вдаваться в эзотерические команды или свойства подписей, который никем нигде не используются.
Когда я рассказываю о концепциях, то обычно использую термин OpenPGP, когда рассказываю о конкретных прикладных командах, то использую gpg или gnupg.
В этой заметке в деталях описывается процесс создания собственного Центра сертификации и последующая генерация сопутствующих файлов: сертификатов, запросов на сертификат и так далее. Считаем, что работаем в терминале на линукс/юникс машине с установленным openssl.
Заметка является вольным переложением на русский язык вот этой статьи (плюс мой собственный материал). Здесь описываются базовые «низкоуровневые» команды для работы с сертификатами (x509, req и т.п.)
Больше о цифровых сертификатах в других постах: