Стоит признать, что мы живём в информационном веке и сложно недооценивать значение информационных систем в повседневной жизни. Государства всё больше вмешиваются в некогда гиковскую информационную область и устанавливают правила её регулирования. Одним из институтов государственного регулирования в информационном пространстве является механизм «квалифицированной электронной подписи», условно неподделываемого доверенного идентификатора субъекта, которым он может заверять различного рода сделки в электронном виде от своего имени в инфопространстве. На самом деле, идея ЭП не нова и развивается достаточно давно, но как обычно, в России в какой-то момент что-то пошло немного не так. Статья является пространным субъективным рассуждением на тему института электронной подписи в России без излишнего погружения в технологическую матчасть. Ну и немного хейта, как же без этого.
CC-BY-SA, Vadim Rybalko
Disclaimer
Постарался никого не задеть, даже когда хотелось. Но всё равно, если кто-то готов оскорбиться: прошу поберечь свою психику и пойти читать пост с обзором очередного облачного хостинга или про докер, например. Полегчает. Если вы готовы подискутировать или есть чего добавить — пишите смело в комментарии или лично.
Сначала немного абстрактной юридической матчасти
Что такое сделка? В России, как и в большинстве развитых и не очень стран, есть целый стек законов и подзаконных актов, эдакое «дерево» нормативно-правовых актов (НПА), регулирующих повседневную жизнь граждан и объединений. Отбросив детализацию: у нас есть основной закон страны — Конституция Российской Федерации; через уровень от неё — масса федеральных законов, к которым в том числе относятся кодексы (в контексте нашего рассуждения — Гражданский Кодекс Российской Федерации, ГК РФ) и различные законы и постановления, затрагивающие электронную подпись (из них основной — Федеральный Закон «Об Электронной подписи» от 06.04.2011 № 63-ФЗ).
Понятие «сделка» регулируется ГК РФ: в общем случае, это действия лиц, по установлению отношений между собой, влекущих возникновение гражданских прав и обязанностей. Сделок бывает невероятное количество видов, в целом их объединяет тот факт, что сторона сделки заверяет её со своей стороны своей собственноручной подписью (но не всегда), в знак того, что участие стороны в этой сделке соответсвует её свободному волеизлиянию.
Теперь, что касается электронной подписи. На заре становления ЭП в России её называли «электронная цифровая подпись» (ЭЦП), видимо, в качестве кальки с англоязычного digital signature. Потом слово digital переварилось и растворилось, осталась «электронная подпись». Вообще, по действующему законодательству электронной подписью можно назвать что угодно, хоть скан собственноручной подписи, поэтому были введены детализирующие понятия. Закон определил три понятия ЭП:
Простая электронная подпись — любые коды, пароли, сканы, SMS-верификация. Имеет ограниченное юридическое признание, в том числе только в случае, когда стороны договора заранее договорились использовать такой тип подписи и определили параметры использования.
Усиленная неквалифицированная электронная подпись — подпись, совершённая с использованием любых криптографических средств защиты информации, при участии ключа ЭП. При признании такой подписи важно, чтобы по такой подписи можно было установить подписавшую сторону и обеспечить криптографическую стойкость подписанного документа (для обнаружения факта внесения изменений в документ после момента его подписания).
Усиленная квалифицированная электронная подпись (УКЭП) — соответствует характеристикам усиленной неквалифицированной электронной подписи, но с условием, что ключ ЭП подписывающей стороны удостоверен государственным органом власти по цепочке доверия (уполномоченным удостоверяющим центром).
Далее речь пойдёт исключительно про усиленную квалифицированную электронную подпись, УКЭП — именно данный тип подписи используется в юридически-значимом электронном документообороте в России.
Обобщённый принцип работы ЭП
Если на пальцах попробовать объяснить, что такое электронная подпись и как она, чёрт возьми, работает, то получится примерно такое тезисное описание.
Есть группа асимметричных криптоалгоритмов «с открытым ключом». У владельца формируется взаимосвязанная пара из двух ключей: закрытый и открытый ключ. Закрытый, или приватный ключ строго хранится у владельца и является тайной.
Открытый, или публичный ключ неотъемлемый от приватного и может свободно передаваться кому угодно. С помощью открытого ключа можно зашифровать некую информацию так, что расшифровать её сможет только владелец закрытого ключа и никто ещё (даже тот, кто зашифровал данные).
С помощью закрытого ключа можно сформировать подпись исходной информации, при передаче такого файла совместно с подписью, получатель, заранее имеющий публичный ключ владельца, может вычислить, что файл не был видоизменён в процессе и подписан именно тем лицом, которое владеет закрытым ключом.
CC-BY-SA, Иллюстрация процессов подписывания и проверки подписи при применении асимметричного шифрования, Wikipedia.
Очевидно, что точка доверия — владелец ли передал ранее свой публичный ключ или кто ещё? Для того, чтобы каждому не устанавливать с каждым заранее пиринговых доверительных отношений, придумана PKI (Public Key Infrastructure, Инфраструктура публичных ключей).
Чтобы публичный ключ отправителя, владельца ключа ЭП, был доверенным по-умолчанию получателем без установки отношений, его может подписать общий доверенный обеими сторонами участник. Он называется «удостоверяющим центром», УЦ. Технически, УЦ добавляет к публичному ключу владельца набор дополнительных свойств (как правило: срок действия, текстовое описание владельца, набор служебных идентификаторов), после чего этот бутерброд уже подписывает своим закрытым ключом. Итоговый файл называется сертификатом ЭП. Владея заранее публичным ключом УЦ, файлом и ЭП отправителя, получатель подписи может вычислить, подвергался ли файл изменениям после подписания.
Публичный ключ УЦ может быть также удостоверен публичным ключом иного УЦ (иногда и нескольких, это называется кросс-подпись). Таким образом, получатель может не иметь открытого ключа непосредственно УЦ отправителя, а может иметь открытый ключ вышестоящего УЦ, который в свою очередь подписал открытый ключ УЦ отправителя. Цепочка проверки удлинится, но всё равно построить цепочку доверия будет возможно.
Дополнительно при формировании ЭП для документа в этот бутерброд добавляется важный ингредиент — штамп времени, timestamp. Это метка реального времени из доверенного источника, подписанная также ЭП сервера точного времени. Она уникальна и создаётся для конкретного документа. Это позволяет убедиться, что подпись сформирована в конкретный момент времени и не даёт перегенерировать подпись «задним числом».
Так работает PKI (читай: электронная подпись) во всём мире в различных реализациях: HTTPS для сайтов, корпоративная аутентификация в VPN и Wi-Fi, регистрация SIM-карт в сети, чиповые и бесконтактные банковские карты, DNSSec и RPKI, валидация загранпаспортов, ЭП в России и аналоги за рубежом и т.д.
Стоит отметить, что закрытый ключ ЭП является ключевым элементом системы, потому что его компрометация позволит несанкционированно создавать ЭП без ведома владельца. На страже ключа стоят индустриально признанные алгоритмы, за историю прикладной криптографии их разработано достаточно много. Самым распространённым алгоритмом ключей является RSA, история применения которого насчитывает уже 40 лет. Он имеет достаточно дубовый математический аппарат, и до сих пор надёжен за счёт простоты и элегантности решения, прямо как топор (при правильном применении). Более молодые и перспективные алгоритмы основаны на математике эллиптических кривых, из них ECDSA (и целая вереница «кривых» под капотом), перспективный ED25519, оба наших ГОСТа (как старый, 2001 года, так и новый, от 2012). Всё это защищает закрытый ключ от его «восстановления» на основе открытого. Защиту от прямого копирования закрытого ключа обеспечивают современные механизмы смарт-карт: закрытый ключ генерируется внутри криптографической микросхемы и никогда не покидает её пределы, в том числе и во время операций с ним; а специальные механизмы саморазрушения делают практически невозможным механический взлом микросхемы.
Как у них?
В ряде цивилизованных стран ключ ЭП выдаётся гражданам вместе с пластиковым идентификатором личности. Так как ID выдаётся государственным органом власти, ключ ЭП в составе ID также выдаётся государством и равняется сроку действия самого удостоверения. В большинстве случаев тем, кто желает пользоваться электронной подписью, достаточно докупить копеечный считыватель смарт-карт и поставить на компьютер комплекс ПО для взаимодействия с ключом и работы с ЭП. Такие удостоверения используют индустриально стандартизированные параметры, так как за их выпуском «приглядывает» международный орган по стандартизации ИКАО. ИКАО (ICAO) на самом деле не для того создана, чтобы заниматься стандартизацией удостоверений личности, так как это вообще-то Международная организация гражданской авиации, стандартизирующая всякое в авиации. Но так повелось, что миграционный контроль граждан — немалая часть обязанностей авиаперевозчиков и наземных авиаслужб, поэтому ИКАО взялись и за стандартизацию проездных документов, среди которых паспорта всех видов и идентификационные карты, выпустив серию стандартов 9303 в 12-ти частях. А так как большинство государств стало внедрять ЭП как дополнительное приложение на смарт-карте персонального удостоверения личности, это обеспечило хоть какую-то совместимость электронной составляющей таких ID от страны к стране, в том числе по части алгоритмов ЭП.
Основные атрибуты идентификационной карты соответствующей стандарту ICAO. Образец документа крупного производителя пластиковых карт Oberthur
С другой стороны, основные операционные системы содержат в себе встроенные программные реализации всемирно признанных криптоалгоритмов, что делает возможным обмен подписанными документами и проверку ЭП среди контрагентов из разных стран.
А как у нас?
В России есть несколько стандартов, описывающих национальные алгоритмы ЭП, признаваемые нашим законодательством. Два из них (ГОСТ Р 34.10-94 и ГОСТ Р 34.10-2001) в настоящее время не действуют (от 2001 года имеет ограниченное действие в legacy-режиме), рабочим является ГОСТ Р 34.10-2012. Все УКЭП должны использовать алгоритм ГОСТ Р 34.10-2012 или ГОСТ Р 34.10-2001, чтобы считаться юридически признаваемыми. В целом, наши алгоритмы считаются вполне неплохими, построенными как раз на основе эллиптических кривых (не считая совсем устаревшего от 94 года). Однако в силу ряда причин они не стали общепризнанными международными стандартами. Самое интересное, что ГОСТ Р 34.10-2001 сумел просочиться в стандарт DNSSec, но успеха и какой-либо осязаемой доли достичь не смог. Зато осилили написать RFC в рамках IETF — за это плюс в карму.
В какой-то момент наши законодатели стали прибивать УКЭП гвоздями в разные сегменты гражданских отношений в России. Начали, естественно, с одной из самых обираемых группы субъектов — юридических лиц. В целом, идея здравая: перевести документооборот в электронный вид, убрать очереди из разных контролирующих контор, опять же, подорвать бизнес целлюлозных заводов и сохранить природу за счёт снижения объёма бумаги. Но, так как законы принимаются в том числе без должной проработки и экспертизы (а иногда и вовсе в интересах определённого круга лиц, по ощущениям), так что всё в какой-то момент пошло не так. Государство обязало предпринимателей получать и продлевать ЭП каждый год (срок действия обычного ключа 12-15 месяцев), при этом самоустранилось от самого процесса выдачи такого важного атрибута, как ключ ЭП, отдав это на откуп коммерческим организациям — уполномоченным удостоверяющим центрам. При этом, кроме того, что выдача ключа УКЭП сама по себе не бесплатна, было выбрано очень странное программно-аппаратное решение. Было принято решение заменить нормальные защищённые криптографические носители для закрытого ключа на более дешёвые, позволяющие производить копирование ключа (на самом деле не такие уж и дешёвые). Так как такие носители не умеют сами работать с ключом, а по сути являются флешками с паролем, подтянулись софтверные коммерсанты, торгующие программными прослойками для операционных систем, которые проводят манипуляции с закрытым ключом ЭП, копируя его в оперативную память компьютера (SIC!), и при этом стабильно стоят денег.
Пикантности добавило тотальное невежество добровольно-прину́жденных пользователей ЭП и чудовищность программных решений для работы с ней. Например, чтобы настроить рабочий компьютер среднестатистического пользователя ЭП для работы с бухгалтерскими порталами всех мастей и электронными торговыми площадками, надо выполнить порядка 20 операций: скачиваний/устанавки кучи разномастного ПО сомнительного качества, сертификатов УЦ, произведения специфических настроек, чтобы всё это взаимодействовало и хоть как-то работало. Не стоит даже упоминать, что этот ворох говнокода более-менее уверенно работает только в среде Windows (и не всегда последних версий), крайне ограниченно и с жуткими костылями работает в некоторых «гослинуксах» и абсолютно не работает на MacOS. Например, сайт налоговой всего менее года назад отучился работать только с Internet Explorer! И это ФНС — ведомство, которое считается относительно продвинутым в IT и оператором немалого государственного big data решения.
CC-BY-SA, Vadim Rybalko, Примерный список действий, которые выполняет скрипт-автоустановщик ПО для использования УКЭП. У УЦ СКБ Контур хоть есть такой сервис, некоторые УЦ просто дают инструкцию в DOC-файле.
Среднестатистический usecase с УКЭП в компании: кто-то (курьер или эникейщик) получает по доверенности от руководителя организации в УЦ ключ, передаёт его условной тёте Мане бухгалтеру, которая «подписывает» им документы от имени руководителя. Надо понимать, что суть УКЭП — аналог собственноручной подписи, а не подписи дяди условного Васи. То есть, применение в данном виде уже претерпело существенные мутации. Надо не забывать, хоть ключ выдан и организации для работы с электронной отчётностью, он содержит в качестве квалифицирующих значений и данные физического лица — руководителя, на чьё имя данный ключ создан. Это допускает вектор атаки против данного физического лица, единственным сдерживающим фактором которого является неразвитость электронных услуг с ЭП для физических лиц. И даже физический контроль над токеном с ключом является фикцией, так как любое лицо (тот же бухгалтер) может относительно незаметно для владельца просто скопировать ключ себе «в реестр», потому что «так удобнее». И это не говоря о пин-кодах по-умолчанию вида 12345678. Мрак и декаданс.
Отдельно стоит написать про электронную подпись для торговых площадок. Чтобы совершать сделки с бюджетными и околобюджетными структурами: что-то продавать или оказывать услуги, необходимо пройти через механизм тендера. Тендер осуществляются на электронных торговых площадках (ЭТП): специальных сайтах, где размещаются заказы, что-то типа аукциона. Площадок достаточно много, как правило их держателями являются крупные окологосударственные организации. Чтобы быть аккредитованным участником ЭТП, нужно иметь электронную подпись, но только УКЭП, какой бы она ни была официальной и признаваемой государством не подойдёт. Нет, разговор не о доверии к УКЭП, просто владельцы торговых площадок на этом зарабатывают. Технически электронная подпись для площадок та же УКЭП, но в состав сертификата дополнительно входят дополнительные идентификаторы, OID, которые дают право использовать данный ключ УКЭП на конкретной площадке. Сделано это с той целью, чтобы получить за выпуск такой электронной подписи ощутимо больше денег, чем за выпуск обычной УКЭП. Доходит до нелепого сценария: чтобы продать что-то РЖД, нужно пройти через тендер, для которого надо получить ключ электронной подписи у конкретного УЦ, не любого. РЖД может закупать не только вагоны и чугунные мосты, но и достаточно недорогой товар или заказывать услуги в малых объёмах. Технически, можно осуществить недорогую сделку и без тендера, но представители РЖД боятся так делать, могут по шапке настучать. Поэтому они предлагают потенциальному поставщику зарегистрироваться на своей же карманной торговой площадке и откликнуться на специально подготовленный под поставщика заказ. Естественно, что такая схема в принципе попахивает нарушением принципов тендера, но для работников корпорации главное соблюсти бюрократический регламент. Естественно, торговая площадка РЖД работает только для тех, кто имеет ключ электронной подписи, только в отличии от более крупных ЭТП, сотрудничает всего с четырьмя аккредитованными УЦ, из которых нет ни одного с разветвлённой сетью офисов по России, а один является просто оператором (владельцем) самой площадки. Но если представителям РЖД очень надо получить уникальную услугу и поставщику проще им отказать в этом цирке с их ЭТП, то иногда они могут плюнуть на свой тендерный регламент и заказать сделку напрямую (основано на реальной истории). Получается, что вроде и нормальная УКЭП с одной стороны, но не подходит для ряда действий, для которых надо получать по сути такую же УКЭП у другого УЦ с иным набором дополнительных атрибутов. В итоге ворох токенов, за которыми сложно следить и которые надо продлевать ежегодно, проходя квест с подтверждением полномочий.
Ряд уполномоченных УЦ вообще подозревают в халатном отношении к верификации персональных данных субъекта при выдаче ему УКЭП. Это должно было случиться, учитывая количество УЦ, которые развернули свою деятельность по всей территории страны. Хочется надеяться, что данные случаи всего лишь описывают факт невнимательности, а не умышленных действий. И да, если кто-то успешно попробует получить УКЭП по подставным документам на моё имя, я даже не узнаю об этом! Причём я владею своей персональной УКЭП, то есть появится ключ-двойник.
В своё время реальный пример раскрытия данных был на сервисе Госуслуги, куда можно было попасть по УКЭП, выданной руководителю организации, в его персональный личный кабинет на портале. Страшных действий натворить там было сложно, но всё равно для кого-то это будет неприятно. А, например, тот же Росреестр был вынужден продавить законопроект (ещё не принятый, кстати), запрещающий совершать сделки с недвижимостью с использованием УКЭП, если заранее не разрешить такие операции для данного физического лица. То есть, сначала делаем откровенное архитектурное решето, а потом не меняем его, а просто ставим заплатки.
При разработке следующего проекта с применением УКЭП, ЕГАИС, разработчики пошли чуть более в сторону светлой стороны: допустили для работы в системе только те УКЭП, которые находятся в неизвлекаемом виде на честных криптографических токенах. Это проблеск здравого смысла, жаль, только на рынке классических УКЭП продолжает царить криптографический нигилизм. Да, это возможно было всегда, но финансовые интересы производителей программных прослоек тоже надо обслуживать. Да и ежегодный выпуск ключа каждому юрлицу удостоверяющим центром тоже неплохое финансовое подспорье.
К слову, неизвлекаемые аппаратные ключи давно и успешно использует ряд банков в своих решениях дистанционного банковского обслуживания для организаций. Отдельным бенефитом таких решений является относительная абстрагированность криптографических вычислений с конкретным крипто-алгоритмом от поддержки данного алгоритма операционной системой. Можно сказать, что ОС уже не обязана уметь работать с конкретным алгоритмом, а просто выдаёт задания: создай подпись для этого, или зашифруй это, а микропрограмма на аппаратном ключе уже выполняет указанные действия. И сразу не нужно никакое платное сумеречное ПО и всё отлично работает в любых браузерах, и даже на Маке.
Ну и нельзя не упомянуть весьма странный проект по запихиванию алгоритмов ГОСТ в мобильную телефонию, а именно в SIM-карты. Здравому анализу данная хотелка некоего круга лиц из числа russian silovik и подконтрольных «лицензированных» вендоров крипто-оборудования не поддаётся. Хорошо, если дело только в госзаказах и приземлении очередной суммы денежных средств в нужном направлении, но это даёт очередной повод конспирологического обсуждения несчастного и так не очень рукопожатного «суверенного» криптоалгоритма.
Одни ли мы такие Д’Артаньяны?
При подготовке статьи с удивлением обнаружил ещё нескольких представителей клуба искателей своего пути. По странному стечению обстоятельств, они тут, под боком: белорусы выдумали свой алгоритм СТБ 34.101.45-2013 (крайне схожий с ГОСТ), а украинцы — ДСТУ 4145-2002. Особенности алгоритмов расписаны в прекрасном постеNeverWalkAloner. Обе страны даже не удосужились описать свои стандарты в IETF RFC, в отличии от ГОСТ. Там скорее всего свои мыши с кактусами в практическом применении, о которых нам не ведомо, но нам и своего хватает.
Перспективы
Есть мнение о закате «классической» криптографии по мере развития квантовых вычислений. В определённый момент станет возможным обойти базовый принцип защиты закрытого ключа — невозможность его восстановления из открытого за вменяемый промежуток времени. Эта проблематика относится к области криптографии — постквантовой криптографии. В целом, подходы к PKI это особо не меняет, этот вопрос больше относится к выбору конкретных криптографических алгоритмов.
Ещё одной механикой подтверждения личности является биометрическая аутентификация. Как любая биометрия, такие данные не могут выступать вектором генерации закрытого ключа, так как априори биометрические параметры доступны для считывания без контроля владельца, так как всегда на виду у всех (отпечатки пальцев, рисунок радужной оболочки глаза, голосовой профиль). Технологии считывания биометрических данных у их владельца постоянно находятся под прессом технических способов воспроизведения этих данных без участия владельца на основе ранее сделанной записи. Это вполне действующая технология, которая имеет определённые ограничения. То есть, это не замена электронной подписи и модели PKI, а отдельный механизм со своей нишей использования.
Отдельно стоит кратко рассказать про «облачную электронную подпись». Как и все термины, имеющие в своём составе слово «облачный», данная технология не является чем-то волшебным: это всего навсего хранение ключевой пары владельца (включая закрытый ключ) на некоем сервере в сети Интернет. Криптографические операции аналогично производятся на удалённом компьютере, по сути, владелец ЭП не контролирует свой закрытый ключ никак. В России появились сервисы облачной подписи, один из первых стала предоставлять ФНС для личного кабинета физических лиц, а сейчас такие сервисы предоставляются некоторыми поставщиками «облачной бухгалтерии». По факту это появилось исключительно из-за проблем совместимости нашей УКЭП с компьютерами и иными электронными устройствами конечных пользователей. Какие бы ни давали заверения поставщики таких услуг, реальная защищённость таких решений от неправомерных действий поставщика, его сотрудников или третьих лиц остаётся только на совести такого поставщика. Большинство технически подкованных людей отмечают эту технологию как профанацию криптографии, в том числе направленную на то, чтобы под любым благовидным предлогом отнять закрытый ключ подписи у владельца этого ключа и положить в доступное для нужных служб хранилище.
Ну и какая статья может обойтись без упоминания Blockchain? На самом деле, технология самозаверяемового реестра уже используются в реализациях PKI, тот же transparency log активно используется рядом удостоверяющих центров. И не стоит забывать, что сам Blockchain — приложение к криптографии, в том числе на асимметричных алгоритмах. И, в целом, идеи переработки удостоверения личности в плоскость blockchain выглядят заманчиво, хотя и пугающими из-за излишней прозрачности реестра. Даже под идею подтянулись со своим виденьем некоторые дизайнеры.
Есть ли свет в конце тоннеля?
На самом деле есть. Безусловно, применение ЭП должно развиваться — это благо. По моему мнению, институт уполномоченных УЦ должен уйти. Это лишнее звено, к тому же и слабо контролируемое. Единственным ответственным за выдачу УКЭП должен стать орган власти, как и в большинстве стран. Самым рациональным выглядит сценарий некоторых стран: выдача УКЭП в составе электронной удостоверяющей личность карты, что сразу ограничит ряд векторов атак, так как УКЭП будет одна на человека и в виде, исключающем сознательную передачу ключа иному лицу на постоянной основе. Та же передача ключа условному бухгалтеру — невежество, надо передавать полномочия, а бухгалтеру делать свой ключ на его имя (а с УКЭП на ID-карте достаточно просто передать полномочия, ключ к этому моменту у бухгалтеру уже будет свой). Но пока, возможно, никто этим не заморачивается. Естественно, с данной карты ключ должен быть не извлекаемым. Излишние программные прослойки тоже должны оказаться на свалке истории. Разработать внятные открытые стандарты контейнеров для передачи ЭП, желательно opensource. Посмотреть в сторону эстонского решения, как наиболее прогрессивного и элегантного.
Здесь отдельная боль по поводу нормального пластикового удостоверения личности взамен морально устаревшему российскому внутреннему паспорту. При неспособности взять и сделать как все (а всё придумано до нас), мы выдумываем свой особый путь с берёзовым соком и кокошниками, проектируем каких-то монстров в интересах коммерческого банка (SIC!) — это камень в огород УЭК. История приключения Сбербанка с УЭК тянет ещё на один обзор, так как в ней много боли. Сегодня снова заговорили об ID-картах, но теперь уже Ростелеком тянет одеяло на свою сторону и предлагает очередного франкенштейна, вместо того, чтобы взять спецификацию ICAO, обмазать её любимым ГОСТом (смарт-карты и не такое переживали) и пустить в опытную эксплуатацию.
Вот тогда заживём (если доживём)!
Немного о себе: системный и сетевой администратор, крипто-энтузиаст, коллекционирую банковские карты (порядка двух тысяч штук) и удостоверения личности различных стран, топлю за здравый смысл.