ТЕХНОЛОГИИ

Подключение ЭЦП на сайт. Авторизация и верификация с помощью ЭЦП

Назад
24
December 2018

Что такое ЭЦП?

ЭЦП(электронная цифровая подпись) или КЭП (квалифицированная электронная подпись) - это новая модная аббревиатура или инструмент, который сможет вывести договорные отношения на новый уровень. Для того чтобы понять это и заодно ощутить его пользу, давайте разберем простой пример из жизни.

Вы решили затеять ремонт. Нашли квалифицированную компанию для этой задачи, оценили все и готовы приступать. Договорились завтра подписать все бумаги и приступать к работе. Но неожиданно, вам звонит ваш руководитель и говорит, что завтра вы улетаете в командировку на 2 недели и в 5 утра у вас самолет. Что делать? Сегодня рабочий день уже завершен и вам ничего не остается как смириться с тем, что ремонт затянется еще на две недели. И тут вы вспоминаете, что у вас есть ЭЦП, вы берете электронную версию договора и, к примеру, с помощью ПО, установленного на вашем компьютере, его подписываете. Все, дело сделано. Теперь отправляем этот договор компании по ремонту, и пока вы в командировке, ремонт не стоит на месте. Естественно, это не единственный вариант применения ЭЦП. К примеру, с его помощью вы можете подать налоговую декларацию, заявление в суд и осуществить прочие административные действия, не выходя из дому. Да и касательно описанного примера, если бы у данной компании был свой веб-сайт с возможностью подписи договора в личном кабинете, то у нашего героя вовсе не возникло проблем с подписанием договора.

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

Итак, ваш документ подписан и готов к отправке другой стороне.

  1. В аккредитационном центре сертификации ключей (АЦСК) получаете ваши электронные ключи (приватный и публичный), с помощью которых будет осуществляться подпись документов;
  2. Используя программное обеспечение (установленное на компьютере/телефоне/сайте), выбираете любой документ и указываете путь к вашим ключам;
  3. После этого происходит первая часть подписи, а именно генерация уникального “отпечатка сообщения”. Данный отпечаток (набор символов) создается на основании текста документа и публичного ключа, и становиться неотъемлемой частью документа.
  4. Далее вы подписываете “отпечаток документа” своим уникальным приватным ключом, чем подтверждаете свою личность;
  5. Получив от вас подписанный документ, вторая сторона запрашивает у аккредитационного центра сертификат - ваш публичный ключ и повторно генерирует “отпечаток сообщения” из текста документа.

Если он идентичный тому, который был прислан вами, следовательно текст документа является подлинным и с момента подписи в него не вносились изменения.

Как установить ЭЦП на сайт?

Сегодня на рынке есть несколько специализированных компаний, занимающиеся поставкой ПО для реализации электронной подписи в рамках вашего проекта, которые предлагают разные варианты интеграции с ними.

Рассмотрим основные из них:

Javascript библиотека в web-странице (ИИТ)

  • Некоторые браузеры могут требовать кастомных доработок;
  • Загрузка страницы утяжеляется кодом библиотеки;
  • Присутствует ограничение по объему обрабатываемых данных;
  • Нельзя использовать защищенные носители ЭЦП (Secure Token), так как у JS нет доступа к файловой системе;
  • Учитывая, что это сторонняя библиотека, вы будете зависеть от ее обновлений и поддержки третьей стороны.

Native библиотека в расширении в web-браузере (ПриватБанк)

  • Кроссплатформенное и кроссбраузерное решение;
  • Объем обрабатываемых данных не ограничен;
  • Можно использовать защищенные носители ЭЦП (Secure Token);
  • Нельзя использовать в браузерах, не поддерживающих расширения.

Серверное приложение (Сайфер)

  • Объем обрабатываемых данных не ограничен;
  • Повышенный уровень безопасности;
  • Более времязатратный способ реализации;
  • Можно использовать защищенные носители ЭЦП (Secure Token).

Локальное приложение(ИИТ)

  • Кроссплатформенное решение;
  • Использовать защищенный https или Proxy соединение;
  • Взаимодействие с локальными приложениями;
  • Можно использовать защищенные носители ЭЦП (Secure Token).
  • Высокая производительность;
  • Повышенный уровень безопасности.

 

Наш персональный опыт подключения электронной подписи:

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

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

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

Все бы хорошо, но безопасность клиентов - превыше всего.

Как подключить ЕЦП - 44

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

 

Глаза боятся, а руки делают. Через н-ое кол-во чашек кофе и штудирование сотен страниц документации работы библиотек ИИТ (Институт Информационных Технологий) для работы с ЭЦП, мы нашли вариант, который устраивает нас и наши стандарты безопасности при работе с пользователями, а также сводит к минимуму возможную подмену. Помните про сертификат, который содержит вашу персональную информацию? Так вот, он находится в публичном доступе и любой может его найти по его идентификатору в регистре аккредитационного центра. По ключу пользователя на клиенте мы можем получить его со всеми данными пользователя. В чем же преимущество данного метода, спросите вы? А вот в чем - данный сертификат передается нам в зашифрованном виде и, чтобы получить все данные нужно с этим сертификатом пойти в аккредитационный центр и получить данные. Вуаля.

Если вы столкнетесь с ИИТ, будьте готовы к сотням страниц спецификации API для работы с ЭЦП, различным реализациям API для многих языков программирования. Если мы говорим, в частности, про веб, то ИИТ предоставляет несколько javascript-библиотек для работы на клиенте и плагины для браузера (для работы с ключами пользователя). Также от пользователя может потребоваться установить ПО на свой компьютер (предоставляется, аналогично, для основных ОС - linux, windows, macOS). Это все нужно учитывать и при необходимости напоминать пользователю, что работать определенный функционал работать не будет, пока он не установит ПО.

Есть ИИТ пользователь цск-1, десктопная программа, которая позволяет генерировать тестовые ключи (есть видео-материалы от ИИТ как им пользоваться). Достаточно удобная программа, когда вы ей научитесь пользоваться. Увы, она предоставлена только для Windows, так что готовьтесь к работе wine или virtualbox.

Если вдруг, вы используете последние версии софта и что-то у вас не заработало, не отчаивайтесь, а звоните в поддержку. Может оказаться, что у вас на самом деле далеко не последняя версия (хотя официальный сайт будет утверждать в обратном).

И да прибудет с вами сила в вашем нелегком пути в работе с ЭЦП!

Как подключить ЕЦП - 44

Спасибо за ваш интерес!

Мы с вами свяжемся в ближайшее время