Удалёнка: опыт и лайфхаки
20 января 2012

Интересные решения для электронной подписи в браузере

Информационная безопасность
В одном из комментов к этому топику, отечественный потребитель ЭЦП написал:
У меня есть мечта… В самом деле — у меня есть мечта, что когда-нибудь в будущем я смогу обойтись без связки «windows + IE» для клиент-банков и прочего софта, который использует крипто-про. СБИС++, например. Блин, я надеюсь, что это когда-нибудь будет.



Конкретная такая мечта. И сейчас имеются все предпосылки для ее исполнения.

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

А так же опишу одно оригинальное решение от фирмы Криптоком (www.cryptocom.ru), которое позволяет подписывать документы через интернет квалифицированной ЭЦП с помощью практически любого компьютера/браузера без предварительной настройки и без прав сисадмина (для варианта «срочно нужно провести сделку из интернет-кафе турецкого отеля»).


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


Специалисты Крипто-Про сделали кроссплатформенные плагины к браузерам. При заходе пользователя на web-страницу ЭЦП сервер определяет какой именно требуется плагин в зависимости от браузера, запускается программа установки плагина. Эта программа не требует для установки прав сисадмина. Все достаточно удобно и можно подписывать документы, не слезая с Mozilla FireFox.

Минусы:
  1. чтобы плагины заработали, требуется предварительно установить КриптоПро CSP и сконфигурировать его на использование ключевого носителя Рутокен (это не всегда просто для неподготовленного человека)
  2. придется повозиться с настройками безопасности браузера, так как плагин для IE является тем же ActiveX


Первую проблему можно сгладить. У Крипто-Про имеется вариант CSP, который представляет собой one-click installer — программно-аппаратное СКЗИ КриптоПро Рутокен CSP . Этот продукт создан на основе КриптоПро CSP и Рутокен ЭЦП, все моменты сопряжения usb-токена и программной части решены уже на уровне архитектуры продукта. Таким образом, существенно снижается сложность установки и настройки СКЗИ, а благодаря тому, что работа с закрытыми ключами идет на аппаратном уровне, повышается общий уровень безопасности

В любом случае связка КриптоПро Рутокен CSP + кроссбраузерные плагины это большой шаг вперед с точки зрения облегчения жизни службе техподдержки крупных проектов.

КриптоТуннель



Фирма Криптоком выпустила продукт МагПро КриптоТуннель. Он позволяет сделать несколько вещей, в частности, защитить сертифицированным гостовым TLS web-соединение, аутентифицироваться на сайте по сертификату и подписать текстовое сообщение или файл при передаче через web-форму квалифицированной подписью.

КриптоТуннель сделан на базе open source приложения sTunnel. Работает он по принципу порт- форвардинга. При старте КриптоТуннель начинает слушать произвольный порт на localhost. При этом у него в конфиге прописан удаленный host:port, на которые следует форвардить соединения. Но форвардит он их не просто так, а предварительно установив с удаленным хостом TLS-соединение. Вот по этому TLS-соединению данные и передаются.

Если запустить КриптоТуннель, указав ему «слушать» на 127.0.0.1:8080:, а затем браузером пойти на 127.0.0.1:8080, то КриптоТуннель установит TLS-соединение с прописанным у него в конфиге удаленным хостом и начнет передавать по нему HTTP-запросы от браузера и HTTP-ответы от web-сервера. Следует отметить, что разработчики встроили автоматический запуск умолчательного для пользователя браузера на нужный url (http://127.0.0.1:8080/куда-то-там).

Пример конфига с комментариями:

# проверять сертификат сервера
verify=2
# клиент
client=yes
# файл с корневым сертификатом УЦ 
CAFile=..\crypto\ca.crt
# модуль поддержки ГОСТов
engine=gost
# поддерживаем только
sslVersion=TLSv1
# отображаться в taskbar
taskbar=yes
# уровень ведения лога
DEBUG=7


[https]
# где слушаем
accept = 127.0.0.1:80
# куда коннектимся
connect = ca.cryptocom.ru:443
# алгоритмы шифрования
ciphers = GOST2001-GOST89-GOST89
TIMEOUTclose = 0
# сертификат клиента
cert=..\crypto\client.crt
# ключ клиента
key=..\crypto\client.key
# сертификат подписи клиента
cert_sign=..\crypto\client.crt
# ключ подписи клиента
key_sign=..\crypto\client.key
sign_only_new=no
# имя поля html-формы, значение которого следует подписать 
sign_inputs=ID797C1C735EEB4926925375E1D6907834
# имя поля html-формы, в котором передается файл, который следует подписать 
sign_files=IDCBB806E365FB4FBA9490AB20303971F4


С TLS надеюсь все понятно, теперь перейдем к ЭЦП.

Так как весь траффик прикладного уровня (HTTP) ходит через КриптоТуннель, то некоторые части траффика можно специальным образом пометить. КриптоТуннель, увидев помеченную часть, вытащит ее из POST-запроса, декодирует из url-encoded, подпишет (предварительно спросив у пользователя), аккуратно вложит в POST-запрос подписанное сообщение/файл (или отдельно подпись) и отправит далее на сервер. Учтена главная тонкость — при передаче файлов формируется POST-запрос в виде multi-part.

Для того, чтобы КриптоТуннель понял, какое поле передаваемой web-формы следует подписывать, ему в конфиге задаются параметры sign_inputs и sign_files. Разработчику сайта при проектировании web-формы ввода пользовательских данных следует поле, которое будет подписываться, назвать соответствующим образом.

Основной фишкой решения КриптоТуннель является то, что он работает без установки, со всеми браузерами, без сложной настройки политик безопасности браузера. КриптоТуннель можно положить на
флешку и запускать прямо с нее.

Желающие могут посмотреть решение на демонстрационной площадке.

Рутокен КриптоТуннель





Для надежной защиты ключа КриптоТуннель следует использовать совместно с Рутокен ЭЦП Flash. При этом ключ хранится в защищенной памяти Рутокена, а сам КриптоТуннель на его Flash-памяти, откуда и запускается. Так как Рутокен ЭЦП Flash использует стандартный CCID-драйвер, то для его работы на современных ОС (начиная с Windows Vista и Mac OS X 10.7) не требуется установки какого-либо софта, а модуль поддержки Рутокен ЭЦП Flash уже входит в КриптоТуннель.
Теги: эцп криптопро TLS SSL плагин stunnel csp рутокен https скзи рутокен эцп криптоком
Хабы: Информационная безопасность
+20
28,4k 96
Комментарии 98
Реклама

Рекомендуем