Интеграция ЭЦП НУЦ РК в информационные системы на базе веб технологий / Хабр

Проверка подписи

Даже если не вникать в схему, понятно, что такой алгоритм сложнее. Кроме того, нигде уже не используется простой модуль, его сменили эллиптические кривые. Эллиптическая кривая — это кривая, которая задана кубическим уравнением и имеет невообразимо сложное представление.

Задача решения логарифма в группе точек, которые принадлежат эллиптической кривой, вычислительно сложная, и на данный момент не существует таких мощностей, которые решали бы это уравнение за полиномиальное время, если длина секретного ключа составляет 512 бит.

Roadmap

Это пятый урок из цикла «Погружение в крипту». Все уроки цикла в хронологическом порядке:

  • Урок 1. Исторические шифры. Основы и исторические шифраторы. Как работают (и анализируются) шифры сдвига, замены, Рихарда Зорге, шифр Вернама и шифровальные машины
  • Урок 2. Распределение ключей. Что это такое, как выполняется распределение ключей и как выбрать криптостойкий ключ
  • Урок 3. Современные отечественные шифры. Что такое сеть Фейстеля и какими бывают отечественные блочные шифры, используемые в современных протоколах, — ГОСТ 28147—89, «Кузнечик»
  • Урок 4. Современные зарубежные шифры. В чем разница между 3DES, AES, Blowfish, IDEA, Threefish от Брюса Шнайера и как они работают
  • Урок 5. Электронная подпись. Виды электронных подписей, как они работают и как их использовать (ты здесь)
  • Урок 6. Квантовая криптография. Что это такое, где используется и как помогает в распределении секретных ключей, генерации случайных чисел и электронной подписи

Вариант 2. установить отдельную программу для создания подписи

Чтобы подписывать документы любого формата (*rar, *.jpeg и *.png,*.ppt, видео, базы данных и т.д.), можно установить на компьютер специальную программу — например, КриптоАРМ.

У программы есть несколько версий, которые отличаются функциональностью. Базовой версией КриптоАРМ Старт с минимумом возможностей можно пользоваться бесплатно. У всех платных версий есть тестовый период, в течение которого будут доступны все возможности. Когда это время истечет, потребуется приобрести лицензию, чтобы продолжить пользоваться этой версией.

Подписать документ можно из главного окна программы или из контекстного меню файла. Алгоритм подписания отличается в зависимости от этих вариантов, но в любом случае выбирайте пункт «Подписать» и следуйте инструкциям. Программа предложит вам выбрать:

  • Количество файлов, которые нужно подписать: можно подписать несколько файлов или папку с документами.
  • Формат подписи: присоединенная или отсоединенная. В первом случае подпись будет встроена в файл, а во втором будет создана в отдельном файле с расширением *.sig.
  • Сертификат, которым нужно подписать документ.

Что учесть при использовании программы:

  • В бесплатной версии можно поставить только базовую КЭП (без проверки времени подписания документа и статуса сертификата). Но проверить можно и усовершенствованную подпись (со статусом сертификата и временем подписания документа).

Получить электронную подпись

Вариант 3. воспользоваться веб-сервисами

Можно подписать документ любого формата, не устанавливая на компьютер специальных программ, — например, в веб-сервисе Контур.Крипто.

Это бесплатная программа, которая позволяет создать и проверить электронную подпись, зашифровать и расшифровать электронный файл. Можно подписать не только отдельный файл, но и пакет файлов или архивов. Можно создать подпись документа двумя и более лицами.

Работать в программе можно после регистрации и автоматической установки на компьютер программного обеспечения для криптографических операций. У программы интуитивно понятный интерфейс. Чтобы подписать электронный документ, необходимо:

Где можно использовать электронную подпись

ПростаяНеквалифицированнаяКвалифицированная
Внешние и внутренние электронные документы
Документооборот с физическими лицами
Госуслуги
Документы для ИФНС в личном кабинете налогоплательщика
ПФР и ФСС
Арбитражный суд

Для документов формата pdf

Для создания и проверки электронной подписи в программах Adobe Acrobat, Adobe Reader и Adobe LiveCycle ES есть отдельный модуль КриптоПро PDF.

КриптоПро PDF прилагается бесплатно при совместном использовании с программой Adobe Reader. В остальных программах также есть тестовый период, по истечении которого нужно приобрести лицензию.

Прежде чем вставить электронную подпись в документе PDF, необходимо установить и настроить Acrobat Reader DC или Adobe Acrobat Pro для работы с программой КриптоПро PDF.

После настройки чтобы поставить подпись, выберете в меню документа пункт «Работа с сертификатами», затем нажмите «Подписание». Программа предложит выбрать нужную подпись, среди установленных и место в документе, где будет располагаться подпись. После этого можно завершить подписание документа.

Получить электронную подпись

Для документов формата word и excel

Чаще всего требуется подписать документ в формате Word:

  • трудовой или хозяйственный договор,
  • иск в арбитраж,
  • заявление в вуз и т.д.

Штатная функция пакета Microsoft Office «Подписать документ» не позволяет создать подпись, которая придает электронному документу юридическую силу. Чтобы создать такую подпись в Word или Excel, необходимо установить на свой компьютер специальный программный модуль, который добавит такую возможность, — например, КриптоПро Office Signature.

Это платная программа, использовать все возможности бесплатно можно только в тестовый период. После загрузки и установки плагина на компьютере можно подписывать документы по такому алгоритму:

  1. В главном меню документа выберите пункт «Сервис» и перейдите в «Параметры». В появившемся окне выберите вкладку «Безопасность» и нажмите кнопку «Цифровые подписи».

  2. В этом окне выберите нужный сертификат электронной подписи из тех, что установлены на компьютере.

  3. С его помощью создайте для документа электронную подпись: нажмите «Подписать» и введите пароль ключевого контейнера.

Что учесть при использовании плагина:

  • Алгоритм подписания отличается в разных версиях Word.
  • Если создать подпись в одной версии программы, а проверять ее в другой, результат проверки может быть некорректным.
  • Документ, подписанный с помощью КриптоПро Office Signature, можно открыть и проверить даже на компьютере, где эта программа не установлена.

Получить электронную подпись

Как начать работать с квалифицированной электронной подписью

Чтобы начать работать с электронной подписью, необходимо подготовить свое рабочее место и приобрести сертификат подписи. Сертификат выдают быстро — в течение часа.

Еще для работы с квалифицированной подписью надо будет установить программу для криптозащиты информации (СКЗИ). Самые распространенные средства криптозащиты в России — это «Криптопро CSP», Signal-com CSP, «Лисси CSP», Vipnet CSP. Все они примерно одинаковые.

Какое конкретно СКЗИ потребуется и какие настройки будут нужны, вам скажут в удостоверяющем центре или МФЦ.

Как приобрести подпись физическому лицу

Физическим лицам проще всего получить подпись в ближайшем МФЦ: рядом может не быть удостоверяющих центров, а МФЦ найдется всегда. Для этого надо записаться на прием и подготовить следующие документы:

  1. Заявление на изготовление квалифицированного сертификата — шаблон дадут в МФЦ.
  2. Паспорт.
  3. СНИЛС.
  4. Свидетельство о присвоении ИНН.

В Москве электронная подпись для граждан стоит 900—950 рублей. Вместе с носителем цена составит 1500—1600 Р. Отдельно носитель будет стоить от 1500 рублей. Эта цена отличается в зависимости от тарифа удостоверяющего центра и того, насколько защищенную подпись вы хотите использовать.

Как работает цифровая подпись

Если вспомнить формальное определение, то ЭЦП — это реквизит электронного документа. Другими словами, последовательность битов, вычисленная уникально для каждого конкретного сообщения. Подпись может быть вычислена как с применением секретного ключа, так и без него.

Без секретного ключа подпись представляет собой просто код, который может доказать, что документ не был изменен. С использованием секретного ключа подпись докажет целостность сообщения, позволит убедиться в его подлинности и аутентифицировать источник.

Если ты читал вторую часть нашего цикла, то помнишь, что существуют симметричный и асимметричный подходы к шифрованию. С электронной подписью дела обстоят очень похоже — есть подписи с симметричным механизмом, а есть с асимметричным.

Симметричный механизм подписи малоприменим на практике — никому не хочется генерировать ключи для каждой подписи заново. А как ты помнишь, именно в одинаковых ключах кроется фишка симметричной криптографии.

  • В лучших традициях асимметричной криптографии — имеем пару открытый и секретный ключ. Но не спеши пролистывать все это описание. Электронная подпись концептуально отличается от шифрования применением ключей, описанного ранее.
  • От документа или сообщения подсчитывается хеш-функция, которая сократит сообщение любого объема до определенного количества байтов.
  • Посредством криптографических преобразований вычисляется сама электронная подпись. В отличие от асимметричного шифрования, подпись основана на закрытом ключе, а вот проверить с помощью открытого ключа ее может любой его обладатель. Если помнишь, в шифровании все происходит наоборот: шифруют для нас на открытом ключе, а вот расшифровывать мы будем с помощью секретного ключа.
  • Электронная подпись предоставляется вместе с исходным документом на проверку. По полученной композиции можно доказать, что документ с момента вычисления подписи не был изменен.

Схемы электронной подписи так же многообразны, как и способы шифрования. Чтобы схема подписи была стойкой, нужно, чтобы она основывалась на трудновычислимой математической задаче. Есть два типа таких задач: факторизация больших чисел и дискретное логарифмирование.

Когда не обойтись без квалифицированной эп


Такая подпись имеет квалифицированный сертификат ключа ЭП, выданный аккредитованным удостоверяющим центром (п. 4 ст. 5 Закона № 63-ФЗ).

Электронный документ, подписанный усиленной квалифицированной ЭП (далее – УКЭП) равнозначен документу на бумажном носителе, подписанному собственноручной подписью, и может применяться в любых правоотношениях в соответствии с законодательством Российской Федерации, кроме случая, когда допускается исключительно бумажный документооборот. Закон запрещает участникам ЭДО ограничивать признание УКЭП (п. 1 ст. 6, п. 2 ст. 10 Закона № 63-ФЗ.

Как самый защищенный вид ЭП, квалифицированная подпись может использоваться наиболее широко. Сдерживающие факторы тут в основном финансовые: само оформление сертификата ключа УКЭП и ЭДО обычно не бесплатны, однако государство, будучи заинтересованным в стимулировании электронного документооборота, ввело уже множество правил в различных сферах, обязывающих организации и ИП переходить на применение УКЭП во взаимодействии как с органами власти и их партнерами, так и с контрагентами. Расширяются также и возможности электронного документооборота с применение УКЭП.

Читайте также:  Как продлить ЭЦП на торговых площадках? Сбербанк аст как привязать новый сертификат Установка новой эцп на сбербанк аст - Адвоката дом

Приведем примеры ситуаций, где в случаях электронного взаимодействия с налоговыми органами обязательно использование именно квалифицированной ЭП:

— подача документов при государственной регистрации юридического лица или ИП (ст. 9 Федерального закона от 08.08.2001 № 129-ФЗ «О государственной регистрации юридических лиц и индивидуальных предпринимателей», Порядок взаимодействия с регистрирующим органом при направлении документов, необходимых для государственной регистрации юридических лиц и индивидуальных предпринимателей, в форме электронных документов, а также требований к формированию таких электронных документов, утв. Приказом ФНС России от 12.10.2020 № ЕД-7-14/743@);

— представление бухгалтерской отчетности и аудиторского заключения в ГИР БО (п. 5 ст. 18 Федерального закона от 06.12.2021 № 402-ФЗ «О бухгалтерском учете», п. п. 5, 9, 10 Порядка представления экземпляра составленной годовой бухгалтерской (финансовой) отчетности и аудиторского заключения о ней в целях формирования государственного информационного ресурса бухгалтерской (финансовой) отчетности, утв. Приказом ФНС России от 13.11.2021 № ММВ-7-1/569@, Письмо ФНС России от 18.02.2020 № ВД-4-1/2844@);

— заверение истребуемых документов, представление заявлений (о постановке на учет, об уточнении платежа, о зачете или возврате переплаты по налогу и т.д.), уведомлений и сообщений в налоговые органы (п. 7 ст. 23, п. 7 ст. 45, п. п. 4, 6 ст. 78, п. 5 ст. 79, п. 5.1 ст. 84, п. 2 ст. 93, п. 6 ст. 176, п. 4 ст. 203, п. п. 1.1, 1.2 ст. 346.51, п. 6 ст.

416 НК РФ, Порядок направления и получения документов, предусмотренных НК РФ и используемых налоговыми органами при реализации своих полномочий в отношениях, регулируемых законодательством о налогах и сборах, а также представления документов по требованию налогового органа в электронной форме по ТКС, утв. Приказом ФНС России от 16.07.2020 № ЕД-7-2/448@, Письмо ФНС России от 24.05.2021 № ЕД-4-2/9885@).

Все большую популярность приобретают электронные счета-фактуры (УПД). Обмениваться ими по интернету НК РФ разрешает по соглашению сторон. Но тип ЭП выбирать нельзя – годится только УКЭП руководителя организации либо иных уполномоченных лиц (п. 1, п. 6 ст.

169 НК РФ, Порядок выставления и получения счетов-фактур в электронной форме по ТКС с применением УКЭП, утв. Приказом Минфина России от 10.11.2021 № 174н, действует до 01.07.2021, с этой даты – утв. Приказом Минфина России от 05.02.2021 № 14н). Для большинства налогоплательщиков применение электронных счетов-фактур добровольно, однако для участников оборота товаров, подлежащих обязательной маркировке средствами идентификации, и оборота импортных товаров, подлежащих прослеживаемости, альтернативы нет – им положен только ЭДО (п. 1.1, 1.2 ст.

С 1 июля 2021 года у налогоплательщиков появится еще одна интересная возможность для применения УКЭП, предусмотренная НК РФ: если декларация подается за подписью уполномоченного представителя налогоплательщика, то в налоговый орган можно будет вместе с такой декларацией передавать электронную доверенность, подписанную усиленной квалифицированной электронной подписью доверителя (п. 5 ст. 80 НК РФ).

Это очень хорошая новость для организаций, измученных нестыковками в коммуникации с проверяющими, и для самих налоговых органов, которым будет проще обрабатывать сведения о доверенностях. Аналогичные поправки будут внесены и в законодательство о персонифицированном учете в системе обязательного пенсионного страхования (для представления формы СЗВ-М уполномоченным лицом), а также об обязательном страховании от несчастных случае на производстве (в отношении формы 4-ФСС) (см. законопроект № 1115653-7).

Пользователи ККТ, желающие провести регистрационные действия с онлайн-кассой без визита в инспекцию, могут передавать необходимые заявления и сведения в налоговые органы в форме электронного документа, подписанного УКЭП, через кабинет контрольно-кассовой техники либо через ОФД (п. 10 ст. 4.

Кое-где не обойтись без УКЭП во внутреннем электронном документообороте организации (если он осуществляется), в частности:

— при ведении журнала путевых листов в электронном виде (п. 18 Приложения к Приказу Минтранса России от 11.09.2020 № 368 «Об утверждении обязательных реквизитов и порядка заполнения путевых листов»);

— при выдаче работнику сведений о трудовой деятельности (ст. 66.1, ст. 84.1 ТК РФ);

— при заключении с дистанционными работниками в электронном виде трудовых договоров, дополнительных соглашений к трудовым договорам, договоров о материальной ответственности, ученических договоров на получение образования, а также при внесении изменений в эти документы и их расторжении путем обмена электронными документами (ст. 312.3 ТК РФ).

Развитие ЭДО в России – один из приоритетов государства. В качестве «пряника» для тех, кто сомневается получать ли УКЭП, законодатель с 1 января 2022 года возложил на ФНС России функции по бесплатному выпуску квалифицированной электронной подписи для юридических лиц (лиц, имеющих право действовать от имени юридического лица без доверенности)

, ИП и нотариусов (п. п. 1 и 3 части 1 ст. 17.2, ст. 17.3, п. 3.1 ст. 18 Закона № 63-ФЗ (в ред., действующей с 01.01.2022), п. 2 ст. 3 Федерального закона № 476-ФЗ, Письмо ФНС России от 15.02.2021 № ПА-2-24/264@), однако налоговая служба готова начать оказывать эту услугу досрочно – уже с 01.07.2021, как информирует официальный сайт ФНС России.

Подготовка подписи к долгосрочному хранению

Проверка подписи под электронным документом включает в себя проверку срока действия сертификата и проверку статуса отозванности сертификата. В том случае, когда необходимо обеспечить юридическую значимость подписанного документа по истечению срока действия сертификата или в том случае, когда сертификат был отозван через некоторое время после подписания, следует собирать дополнительный набор доказательств фиксирующий момент подписания и подтверждающий то, что на момент подписания сертификат не истек и не был отозван.

Для фиксации момента подписания принято использовать метки времени TSP. Метку времени на подпись можно получить либо на клиенте (запрос createCMSSignatureFromBase64 интегрирует метку времени в CMS), либо на сервере. Метка времени позволит удостовериться в том, что момент подписания попадает в срок действия сертификата.

Для того, чтобы удостовериться в том, что сертификат не был отозван в момент подписания, следует использовать CRL или OCSP ответ. Этот нюанс и рекомендации по реализации описаны в разделе APPENDIX B — Placing a Signature At a Particular Point in Time документа RFC 3161.

Подписание документа в веб интерфейсе с помощью ncalayer

Для формирования цифровых подписей на стороне клиента НУЦ РК предоставляет единственный инструмент — сертифицированное программное обеспечение NCALayer которое представляет из себя WebSocket сервер, запускаемый на 127.0.0.1, которому можно отправлять запросы на выполнение криптографических (а так же некоторых смежных) операций.

Описание API NCALayer доступно в составе комплекта разработчика. Для того, чтобы поэкспериментировать со взаимодействием с NCALayer по WebSocket можно воспользоваться страницей интерактивной документации KAZTOKEN mobile (KAZTOKEN mobile повторяет API NCALayer).

Взаимодействовать с NCALayer из браузера можно напрямую с помощью класса WebSocket, либо можно воспользоваться библиотекой ncalayer-js-client которая оборачивает отправку команд и получение ответов в современные async вызовы.

Проверка подписи на стороне сервера

Тема проверки цифровых подписей обширна и я не планировал раскрывать ее в этот раз, но упомянуть о необходимости выполнения проверок как с технической, так и юридической точки зрения счел необходимым.

С технической точки зрения проверка цифровой подписи на стороне сервера в первую очередь гарантирует целостность полученного документа, во вторую — авторство, а так же неотказуемость. То есть даже в том случае, если ИС получает подписанный документ не напрямую от пользователя, а через какие-то дополнительные слои программного обеспечения, уверенность в том, что было получено именно то, что отправлял пользователь сохраняется.

С юридической точки зрения ориентироваться следует на Приказ Министра по инвестициям и развитию Республики Казахстан “Об утверждении Правил проверки подлинности электронной цифровой подписи”. В Приказе перечислены необходимые проверки которые должны выполнять информационные системы для обеспечения юридической значимости подписанных электронной цифровой подписью документов. Анализу этого документа, а так же некоторым техническим вопросам посвящена заметка Проверка цифровой подписи.

Выполнять проверки необходимо с применением сертифицированных средств, к примеру с помощью библиотек входящих в состав комплекта разработчика НУЦ РК, либо можно воспользоваться готовым решением SIGEX.

Сравнение программ для создания электронной подписи

 

Плагины КриптоПро

Отдельная программа КриптоАРМ

Веб-сервис Контур.Крипто

Стоимость

Платные

Бесплатна только базовая версия Старт

Все функции доступны бесплатно

Форматы документов

Word и Excel, PDF

Все

Все

Соподпись/ пакетная подпись

Есть

Есть

Есть

Максимальный вес файла

Без ограничений

Без ограничений

до 100 Мб

Создание усовершенство

ванной подпись

Есть

Только в платных версиях

Есть

Присоединенная/ отсоединенная

Есть

Присоединенная/ отсоединенная

Только отсоединенная

Функции проверки, шифрования и расшифрования

Есть

Только в платных версиях

Есть

Читайте также:  Сбербанк-АСТ плагин недоступен и другие ошибки - как решить проблемы с электронной торговой площадкой, как обновить ЭЦП и где скачать Капиком

Получить электронную подпись

Только бумага

Несмотря на бурный рост ЭДО, есть сферы, где допустим только бумажный документооборот и требуется проставление только собственноручных подписей. Преимущественно это зона трудового законодательства, которое пока не столь прогрессивно, хотя эксперимент по внедрению электронного документооборота проводится.

В ТК РФ есть многочисленные нормы, обязывающие работодателя или работника оформлять некоторые связанные с трудом документы в письменном виде и/или знакомить с ними работников под роспись (см. ст. 19.1, 22, 57, 60.2, 62, 64, 65, 67, 68, 71, 72, 72.1, 72.

2, 73, 74, 76, 79, 80, 81, 82, 83, 84, 84.1, 92, 94, 96, 99, 113, 117, 123, 124, 126, 127, 128, 131, 136, 142, 174, 180, 185.1, 188, 193, 196, 200, 222, 229, 232, 243, 244, 245, 247, 248, 259, 261, 262, 263, 280, 288, 290, 292, 296, 303, 306, 309, 319, 327.6, 332, 336.1, 336.2, 341.2, 342, 344, 348.2, 348.4, 348.6, 348.12, 349.1, 350, 351.5, 375, 377, 379 и 414 ТК РФ).

При отсутствии прямого запрета на ЭДО его можно применять в трудовых отношениях, хотя Минтруд России и Роструд почему-то придерживаются мнения, что в этих случаях будет уместно использование только УКЭП как со стороны работодателя, так и работника (см.

Письмо Минтруда России от 06.03.2020 № 14-2/ООГ-1773, Доклад с руководством по соблюдению обязательных требований, дающих разъяснение, какое поведение является правомерным, а также разъяснение новых требований нормативных правовых актов за 1 квартал 2021 г., утв. Рострудом).

Формирование неизменного представления подписываемого документа

Разработчикам важно понимать то, что любое изменение подписанного документа приведет к тому, что подпись под ним перестанет проходить проверку. При этом изменения могут быть вызваны не только редактированием самих данных документа, но и обновлением структуры документа или механизма его сериализации.

Рассмотрим простой пример — документы хранятся в виде записей в базе данных. Для подписания документа необходимо сформировать его представление в виде единого блока данных (конечно можно подписывать каждое поле записи поотдельности, но обычно так не делают), сделать это можно, к примеру, следующими способами:

  • извлечь все поля записи, привести их к строкам и соединить в одну строку;
  • сформировать XML или JSON представление;
  • сформировать PDF документ на базе шаблона с каким-то оформлением содержащий данные из записи;
  • и т.п.

Далее возможны два сценария каждый из которых имеет свои подводные камни:

  • ИС не хранит сформированного представления и каждый раз для проверки подписи под документом (в частности проверки неизменности данных) формирует его;
  • ИС хранит сформированное представление и использует его для проверки подписи.

В том случае, если ИС не хранит сформированного представления, разработчикам необходимо гарантировать что в будущем формируемые представления будут бинарно идентичны тем, которые были сформированы в первый раз не смотря на:

  • изменения схемы базы данных;
  • обновления механизма формирования представления (которое может так же зависеть от внешних библиотек которые, скорее всего, не стремятся к обеспечению бинарной идентичности).

В том случае, если на каком-то этапе бинарная идентичность перестанет соблюдаться, то проверки цифровых подписей перестанут выполняться и юридическая значимость документов в ИС будет утеряна.

Подход с хранением сформированного представления в базе данных ИС надежнее с точки зрения обеспечения сохранности юридической значимости, но и тут есть нюанс — необходимо гарантировать эквивалентность данных в подписанном документе данным в записи в базе данных иначе может возникнуть такая ситуация когда ИС принимает решение (выполняет расчет) на основании информации не соответствующей тому, что было подписано.

То есть нужно либо так же, как и в предыдущем случае, обеспечивать бинарную идентичность формируемого представления, тогда при проверках в первую очередь следует формировать представление из текущего содержимого записи в базе данных и бинарно сравнивать новое представление с сохраненным.

Либо необходим механизм позволяющий разобрать сохраненное сформированное представление и сравнить данные из него с текущим содержимым записи в базе данных. Этот механизм так же придется дорабатывать постоянно параллельно с доработками основного функционала ИС.

Цифровая подпись в bitcoin

Помимо прочего, электронная подпись используется в криптовалютах, в частности — в Bitcoin. У каждого пользователя Bitcoin есть пара из секретного и открытого ключа. Хеш-значение открытого ключа служит основным адресом для передачи монет. Это значение не секретно, и сообщать его можно кому угодно. Но по значению хеша вычислить значение открытого ключа невозможно.

Сама пара ключей будет использована лишь однажды — при передаче прав собственности. На этом жизнь пары ключей заканчивается.

  • PUB1 — публичный ключ;
  • PRIV1 — секретный ключ;
  • HASH1 или HASH(PUB1) — хеш-значение открытого ключа (биткойн-адрес);
  • HASH2 или HASH(PUB2) — хеш открытого ключа следующего владельца.

Вот как устроен сам процесс передачи прав собственности на биткойны.

  1. Владелец монеты открыто сообщает хеш своего публичного ключа HASH(PUB1), это и будет идентифицировать биткойн.
  2. До момента продажи оба ключа PUB1, PRIV1 продавца остаются в секрете. Известен только HASH(PUB1) и соответствующий ему биткойн.
  3. Как только появляется покупатель, владелец формирует открытое письмо, в котором указывает адрес биткойна HASH(PUB1) и хеш-значение публичного ключа нового владельца HASH(PUB2). И конечно же, подписывает письмо своим секретным ключом PRIV1, прилагая публичный ключ PUB1.
  4. После этого пара ключей владельца PUB1 и PRIV1 теряют свою актуальность. Публичным ключом можно проверить само письмо, узнать новый адрес монеты.

О втором собственнике ничего не известно, кроме HASH(PUB2), до тех пор пока он не передаст права третьему владельцу. И эта цепочка может быть бесконечной.

Подписывая передачу прав с использованием ЭЦП, собственник подтверждает не только свою личность, но и свое согласие на проведение сделки. То есть вернуть монетку он уже не может и с этим согласился, подписавшись электронной подписью.

Благодаря HASH(PUB) получается двойная защита. Первая загадка — узнать публичный ключ по его хешу. Вторая загадка — подписаться чужим секретным ключом.

Такая технология построения цепи передачи прав и называется блокчейном. Благодаря этой технологии можно отследить историю владения до самых истоков, но изменить эту историю никак нельзя.

Электронная цифровая подпись для чайников: с чем ее есть и как не подавиться. часть 3

Часть 1
Часть 2

В этой части сделаем небольшое отступление от цифровых подписей в сторону того, без чего непосредственно цифровых подписей, да и защиты информации в привычном понимании, не было бы: шифрования. Ведь первое, что приходит на ум, когда идет речь о защите наших данных — это не дать эти данные нехорошему человеку прочитать. Поэтому, перед тем, как продолжить рассмотрение стандартов PGP и S/MIME, стоит закрасить некоторые остающиеся в знаниях белые пятна, и рассмотреть процесс шифрования немного поподробнее.

Шифры и коды существуют, наверное, с того момента, как человечество научилось записывать свои впечатления об окружающем мире на носителях. Если немного вдуматься, даже обыкновенный алфавит — уже шифр. Ведь когда мы читаем какой-либо текст, в нашей голове каждому нарисованному символу сопоставляется некий звук, сочетание звуков, или даже целое понятие, а в голове соседа, который читать не умеет, этого уже не происходит.

Не зная, какому символу и что сопоставлено, мы никогда не сможем понять, что же именно писавший имел ввиду. К примеру, попробуйте взять и прочитать что-то, написанное на иврите, или на китайском языке. Сами алфавиты этих языков будут являться для вас непреодолимым препятствием, даже если с помощью этих символов написаны понятия вашего родного языка.

Но, тем не менее, простое использование чужого алфавита все же недостаточная мера для защиты ваших данных. Ведь любой алфавит, так или иначе, создавался для удобства пользования им и является неразрывно связанным с языком, которому данный алфавит характерен. А значит, выучив этот язык и некоторый набор базовых понятий на нем (а то и просто воспользовавшись услугами человека, знающего данный язык), нехороший человек может прочитать вашу информацию.

Значит, надо придумать алфавит, который знает только ограниченный круг лиц, и с его помощью записать информацию. Наверняка все читали (или, по крайней мере, слышали) цикл историй про Шерлока Холмса. В этом цикле фигурировал алфавит, составленный из пляшущих человечков (а многие, я думаю, в детстве на его основе составляли свой). Однако, как показывает данная история, наблюдательный человек может разгадать, какой символ и к чему относится. А значит наша информация опять попадет не в те руки.

Читайте также:  Квалифицированная, неквалифицированная, простая? Выбираем электронную подпись

Что же делать? Придумывать все более и более сложные алфавиты? Но чем более сложный и громоздкий алфавит, тем более неудобно с ним работать, хранить его в тайне. К тому же, насчет тайны есть замечательная поговорка: знают двое – знают все. Ведь самое слабое звено в любом шифре – это человек, который знает, как этот шифр расшифровать.

А почему бы не сделать так, чтобы способ шифрования был сразу известен всем, но расшифровать наши данные было бы нельзя без какого-то ключа? Ведь ключ (в отличие от всего алфавита) маленький, его достаточно легко сделать новый, если что (опять же, в отличие от переработки всего алфавита), легко спрятать. Наиболее наглядно плюсы ключевых систем показывает следующий пример: получателю надо прочитать сосланное вами сообщение. Обычное, на бумаге. Допустим, вы используете секретный алфавит. Тогда, чтобы прочитать сообщение, получатель должен знать алфавит, иметь большой пыльный талмуд, в котором описаны способы расшифровки (ведь алфавит должен быть сложным, чтобы быть надежным) и понимать, как же с этим талмудом работать. С ключами же все проще: вы кладете сообщение в коробку с замком, а получателю достаточно просто вставить подходящий ключик, а знать, как же устроен замок ему совершенно но нужно.
Итак, общеизвестные «алфавиты» и ключи — механизм, существенно более удобный, чем просто алфавиты. Но как же так зашифровать, чтобы все расшифровывалось простым ключом? И вот тут нам на помощь приходит математика, а конкретнее – математические функции, которые можно использовать для замены наших исходных символов на новые.

Вспомним же, что такое функция. Это некоторое соотношение, по которому из одного числа можно получить другое. Зная x и подставляя его в известное нам соотношение y=A*x, мы всегда получим значение y. Но ведь, как правило, верно и обратное: зная y, мы можем получить и x.
Как правило, но далеко не всегда. Для многих зависимостей получить y легко, тогда как x – уже очень трудно, и его получение займет продолжительное время. Вот именно на таких зависимостях и базируется используемое сейчас шифрование.

Но, вернемся к самому шифрованию. Шифрование подразделяют на симметричное, асимметричное и комбинированное. Рассмотрим, в чем суть каждого из них.

Симметричное шифрование, по большому счету, достаточно слабо отличается от старого доброго секретного алфавита. Собственно говоря, отличается оно как раз наличием ключа – некоторой сравнительно маленькой последовательности чисел, которая используется для шифрования и расшифровывания. При этом, каждая из обменивающихся информацией сторон должна этот ключ знать и хранить в секрете. Огромным плюсом такого подхода является скорость шифрования: ключ, по сути, является достаточно простой и короткой инструкцией, какой символ, когда, и на какой надо заменять. И работает данный ключ в обе стороны (то есть с его помощью можно как заменить все символы на новые, так и вернуть все как было), за что такой способ шифрования и получил название симметричного. Столь же огромным минусом является именно то, что обе стороны, между которыми информация пересылается, должны ключ знать. При этом, стоит нехорошему человеку заполучить ключ, как он тут же прочитает наши столь бережно защищаемые данные, а значит проблема передачи ключа принимающей стороне становится в полный рост.

Асимметричное шифрование поступает несколько хитрее. Здесь и у нас, и у нашего получателя есть уже два ключа, которые называют открытый и закрытый. Закрытый ключ мы и получатель храним у себя (заметьте, каждый хранит только свой ключ, а значит, мы уже выходим за пределы той самой поговорки про двоих знающих), а открытый мы и получатель можем спокойно передавать кому угодно – наш закрытый, секретный, по нему восстановить нельзя. Итого, мы используем открытый ключ получателя для шифрования, а получатель, в свою очередь, использует свой закрытый ключ для расшифровывания. Плюс данного подхода очевиден: мы легко можем начать обмениваться секретной информацией с разными получателями, практически ничем (принимая условие, что наш получатель свой закрытый ключ не потерял/отдал и т.п., то есть не передал его в руки нехорошего человека) не рискуем при передаче информации. Но, без огромного минуса не обойтись. И здесь он в следующем: шифрование и расшифровывание в данном случае идут очень, очень, очень медленно, на два-три порядка медленнее, чем аналогичные операции при симметричном шифровании. Кроме того, ресурсов на это шифрование тратится также значительно больше. Да и сами ключи для данных операций существенно длиннее аналогичных для операций симметричного шифрования, так как требуется максимально обезопасить закрытый ключ от подбора по открытому. А значит, большие объемы информации данным способом шифровать просто невыгодно.
Интеграция ЭЦП НУЦ РК в информационные системы на базе веб технологий / Хабр
Пример использования асимметричного шифрования [Wikipedia]
e — открытый ключ получателя B
d — закрытый ключ получателя B
m — исходная информация отправителя A
c — зашифрованная исходная информация

И снова возникает вопрос: что же делать? А делать нужно следующее: взять, и скомбинировать оба способа. Собственно, так мы и получаем комбинированное шифрование. Наш большой объем данных мы зашифруем по первому способу, а чтобы донести ключ, с помощью которого мы их зашифровали, до получателя, мы сам ключ зашифруем по второму способу. Тогда и получим, что хоть асимметричное шифрование и медленное, но объем зашифрованных данных (то есть ключа, на котором зашифрованы большие данные) будет маленьким, а значит расшифровывание пройдет достаточно быстро, и дальше уже в дело вступит более быстрое симметричное шифрование.

Интеграция ЭЦП НУЦ РК в информационные системы на базе веб технологий / Хабр
Пример применения комбинированной системы [Wikipedia]

Все эти механизмы нашли свое применение на практике, и оба наших больших лагеря PGP и S/MIME их используют. Как говорилось в первой статье, асимметричное шифрование используется для цифровой подписи (а именно, для шифрования нашего хэша). Отличие данного применения от обычного асимметричного шифрования в том, что для шифрования используется наш закрытый ключ, а для расшифровывания достаточно наличие связанного с ним (то есть, тоже нашего) открытого ключа. Поскольку открытый ключ мы не прячем, наш хэш можем прочитать кто угодно, а не только отдельный получатель, что и требуется для цифровой подписи.
Комбинированное же шифрование применяется в обоих стандартах непосредственно для шифрования отправляемых данных.

Таким образом, начиная пользоваться цифровыми подписями для защиты наших данных от подмены, мы автоматически (для этих двух стандартов) получаем и замечательную возможность защитить наши данные еще и от прочтения, что, согласитесь, весьма удобно.

Теперь, когда мы познакомились с общими принципами работы механизмов, используемых для защиты наших данных, можно наконец перейти к практике и рассмотрению, что же использовать. Но об этом в следующих статьях.

Эцп на практике

В России, как и во многих развитых странах, электронная подпись имеет официальный юридический статус. У нас этот факт регламентирует закон № 63-ФЗ «Об электронной подписи». Однако он утверждает, что юридической силой обладает далеко не любая электронная подпись, а только соответствующая определенным критериям:

  • подпись сгенерирована посредством криптографического преобразования с секретным ключом;
  • этот ключ и соответствующий ему открытый ключ выданы квалифицированным удостоверяющим центром;
  • по подписи можно достоверно установить ее обладателя.

Подпись также должна быть вычислена средствами, соответствующими требованиям закона. Этим требованиям удовлетворяет отечественный алгоритм шифрования ГОСТ 34.10—2021. Он использует математический аппарат эллиптических кривых, является достаточно стойким и официально используется для разработки криптографических средств, реализующих электронную подпись.

Стоит сказать, что в нашей стране электронная подпись используется чаще, чем можно себе представить. В банках, налоговых, торгово-закупочных операциях, бухгалтерии — во всех этих организациях используется или внедряется ЭЦП. Электронная подпись отважно борется со злом бюрократии, однако до полной победы еще далеко.

За рубежом электронный документооборот процветает еще дольше. Официальный стандарт электронной подписи в США DSS (Digital Signature Standard) также использует эллиптические кривые и основан на описанной выше схеме Эль-Гамаля.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector