Pull to refresh

Электронная подпись в браузере с помощью OpenSSL и СКЗИ Рутокен ЭЦП

«Актив» corporate blog Information Security *
UPDATE. Готовое решение для электронной подписи в браузере — Рутокен Плагин

Потребность в решениях, помогающих реализовать электронную подпись в «браузере», возрастает. Главные требования к таким решениям — поддержка российких криптоалгоритмов, обеспечение безопасности ключа и нормальное usability. В данном топике мы напишем браузерный криптографический java-апплет, в который интегрирован OpenSSL ГОСТ c модулем поддержки Рутокен ЭЦП. Этот апплет не требует установки какого-либо клиентского софта (кроме java-машины, конечно) и позволяет подписывать файлы через браузер в формате PKCS#7 с ипользованием аппаратной реализации российских криптографических стандартов на «борту» USB-токена Рутокен ЭЦП. Для демонстрации в топике будет дан пример HTML-страницы, использующей данный апплет. На странице можно сгенерить ключ внутри токена, создать заявку PKCS#10 на сертификат для этого ключа, получить тестовый сертификат, записать его на токен, подписать файл.

Архитектура решения представлена на рисунке:

image
Читать дальше →
Total votes 43: ↑36 and ↓7 +29
Views 22K
Comments 29

Защита RDP по ГОСТ с помощью Рутокен ЭЦП. Двухуровневый TLS

Information Security *
image

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

В данном топике с помощью open source приложений OpenSSL и sTunnel мы защитим RDP-соединения по протоколу TLS c поддержкой российских шифрсьютов (GOST2001-GOST89-GOST89), клиентская аутентификация по ГОСТ-вым сертификатам будет проводиться аппаратно на борту USB-токена Рутокен ЭЦП с выработкой ключа согласования по схеме VKO GOST 34-10.2001. При этом ключ аутентификации является неизвлекаемым и его невозможно украсть. Так же Рутокен ЭЦП будет использоваться в качестве аппаратного ДСЧ.

Для случая аутентификации на терминальном сервере об Active Directory по сертификатам RSA мы обернем TLS по RSA в TLS по ГОСТ. Таким образом, мы получим двухуровневый TLS — RSA с клиентской аутентификацией будет идти внутри канала, защищенного ГОСТами.

Читать дальше →
Total votes 40: ↑36 and ↓4 +32
Views 26K
Comments 19

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

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



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

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

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

Читать дальше →
Total votes 32: ↑26 and ↓6 +20
Views 30K
Comments 98

Аутентификация в OpenVPN c помощью Рутокен ЭЦП

«Актив» corporate blog Information Security *
image
OpenVPN — кроссплатформенное, гибкое и удобное решение для организации VPN. Для допуска в виртуальную сеть, построенную на базе OpenVPN, клиент должен авторизоваться. В OpenVPN это можно сделать 3 способами:
  • по логину и паролю
  • по ключу и сертификату в файлах
  • по ключу и сертификату на «борту» криптографического USB-токена или смарт-карты
Последний способ является наиболее безопасным. В топике будет описана авторизация в OpenVPN с помощью криптографического USB-токена Рутокен ЭЦП. Рутокен ЭЦП надежно защищен PIN-кодом от несанкционированного доступа и блокируется при исчерпании попыток ввода PIN-кода, поэтому злоумышленник не попадет в VPN даже в случае кражи токена. Кроме того, в Рутокен ЭЦП аппаратно реализованы алгоритмы ГОСТ и RSA, поэтому аутентификация производится «на борту» токена. Благодаря этому закрытый ключ никогда не покидает токен и его невозможно украсть из оперативной памяти компьютера с помощью троянов.

В топике будет показано, как развернуть тестовый VPN, а также корпоративный УЦ на базе open source приложения XCA. С помощью УЦ будет создан ключ и сертификат сервера OpenVPN и произведена инициализация токена клиента. Затем настроим клиент OpenVPN таким образом, чтобы пользователь мог авторизоваться в OpenVPN с помощью Рутокен ЭЦП.
Читать дальше →
Total votes 25: ↑24 and ↓1 +23
Views 29K
Comments 60

Рутокен ЭЦП и Open Source

«Актив» corporate blog


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

Мы прилагаем много усилий, чтобы «подружить» Рутокен ЭЦП и различные приложения Open Source. Для этой цели мы добавили поддержку российских криптоалгоритмов (ГОСТ 28147-89, ГОСТ Р 34-11.94 и ГОСТ Р 34-10.2001) и устройств Рутокен и Рутокен ЭЦП в проект OpenSC, а также разработали свою собственную кроссплатформенную библиотеку PKCS#11, работающую на операционных системах Microsoft Windows, GNU/Linux, Mac OS X, FreeBSD и др.

Читать дальше →
Total votes 23: ↑22 and ↓1 +21
Views 29K
Comments 15

Разработка и применение модуля PAM для аутентификации в Astra Linux с использованием Рутокен ЭЦП и Рутокен S

«Актив» corporate blog Information Security *


В этой статье мне бы хотелось рассказать о том, как приложения в Linux могут использовать систему Подключаемых Модулей Безопасности (Pluggable Authentication Modules) для прозрачной аутентификации пользователей. Мы немного покопаемся в истории развития механизмов аутентификации в Linux, разберемся с системой настроек PAM и разберем исходный код модуля аутентификации pam_p11, который позволяет проводить аутентификацию пользователей по смарт-картам.
В конце статьи мы рассмотрим на практике настройку и работу модуля аутентификации в сертифицированном по 3 классу защищенности СВТ и 2 уровню контроля отсутствия недекларированных возможностей дистрибутиве Astra Linux для аутентификации по USB-токенам Рутокен ЭЦП и Рутокен S. Учитывая то, что Рутокен S имеет сертификаты ФСТЭК по НДВ 3, а Рутокен ЭЦП по НДВ 4, это решение может применяться в информационных системах, обрабатывающих конфиденциальную информацию, вплоть до информации с грифом «С».
Читать дальше →
Total votes 27: ↑23 and ↓4 +19
Views 41K
Comments 6

Настройка Kerberos-аутентификации с использованием смарт-карт

«Актив» corporate blog Information Security *
Tutorial
В продолжение давней темы про использование двухфакторной аутентификации в ОС GNU/Linux позвольте рассказать про схему работы и настройку аутентификации с помощью Kerberos. В этой статье мы рассмотрим процесс настройки MIT Kerberos для аутентификации пользователей по сертификатам и ключевым парам, находящимся на USB-токене. Также материалы, изложенные в статье, можно использовать для настройки аутентификации в домене Windows.
Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Views 90K
Comments 2

Берем под контроль криптографию в облачном хранилище MEGA

«Актив» corporate blog Information Security *JavaScript *
После запуска в какой-то мере скандального сервиса MEGA разговоры о его защищенности немного побурлили и затихли. На сегодняшний день сервис живет своей жизнью и его никто даже не поломал. Из всех разговоров почему-то был упущен термин «User Controlled Encryption» (UCE, или Контролируемая пользователем криптография), которой кичится MEGA. Под словом «упущен» я подразумеваю тот факт, что мы не рассмотрели все возможности, которые дает нам криптографический движок, выполняющийся в JavaScript на стороне клиента.

Конечно, сам сервис MEGA под этим подразумевает всего лишь то, что ключи шифрования не хранятся на сервере, а вся их криптография выполняется в контексте браузера. При этом после запуска сервиса было много разговоров о том, что в нем используются нестойкие криптографические алгоритмы и что вообще все плохо и мы все умрем, а наши файлы прочитает ФСБ. Это подтолкнуло меня на мысль расширить понятие «UCE» и действительно взять криптографию под свой контроль, а именно — заменить или дополнить некоторые механизмы обеспечения безопасности сервиса.

В этой статье я частично разложу по полочкам магию, которая происходит в двух мегабайтах JavaScript-кода MEGA и покажу, как можно переопределить некоторые методы, чтобы перестать волноваться и полюбить криптографию. В результате мы получим сервис облачного хранения файлов с двухфакторной аутентификацией и аппаратным шифрованием критически важной информации.
Читать дальше →
Total votes 147: ↑138 and ↓9 +129
Views 47K
Comments 31

Подпись файлов через браузер

«Актив» corporate blog Information Security *
В ряде проектов требуется подписывать файлы произвольного формата (например, конкурсную документацию в формате PDF) при загрузке их на сервер.
Обычно требуется подпись по ГОСТ Р 34.10-2001, с применением цифровых сертификатов X.509. При этом саму подпись потом удобно хранить на сервере в формате CMS detached.
Сразу хочется отметить, что задача это решена достаточно давно (КриптоПро CSP, CAPICOM, etc). Но есть нюансы, которые делают такое решение не всегда удобным. Для одного из проектов мы предложили решение по подписи файлов, которое реально облегчило жизнь конечным пользователям и техподдержке. О нем ниже.



Читать дальше →
Total votes 21: ↑11 and ↓10 +1
Views 15K
Comments 115

Авторизация на портале Госуслуг с помощью Рутокен ЭЦП

«Актив» corporate blog Information Security *
Одному из сотрудников нашей компании понадобилось зарегистрироваться на портале Госуслуг. Как известно, на портале сейчас есть возможность входить в личный кабинет по логину/паролю, либо по электронной подписи. Вариант с логином/паролем был отброшен в силу профессиональной паранойи, и поехал сотрудник в УЦ Ростелекома — оператора системы — получать сертификат. В УЦ ему в качестве носителя электронной подписи/аппаратного СКЗИ не предложили Рутокен ЭЦП. В силу корпоративного патриотизма сотрудник решил не форсировать события, а попробовать-таки зайти на Госуслуги, используя для электронной подписи Рутокен ЭЦП.
Что из этого получилось, описано под катом.



Читать дальше →
Total votes 14: ↑10 and ↓4 +6
Views 74K
Comments 35

YotaPhone, Android и немного криптографии

«Актив» corporate blog Information Security *
Привет, Хабр!

По акции YotaDevices к нам в компанию попал тот самый Йо́тафон для опытов.
Обзоров по дизайну/производительности/качеству камеры/зачем_вообще_это_сделали было достаточно много, да и мы, собственно, не задавались целью написать очередной.
Интересно было другое — показать возможность интеграции современного смартфона на базе Android с современными средствами криптографической защиты информации.



Подробности под катом
Читать дальше →
Total votes 26: ↑14 and ↓12 +2
Views 16K
Comments 13

Встраивание электронной подписи в системы с WEB-интерфейсом с помощью браузерного плагина и openssl

«Актив» corporate blog Information Security *Cryptography *
Tutorial


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

В данной статье будет расписана типичная схема подобной интеграции, основанная на следующих сценариях использования плагина:

  • Регистрация на портале (с выдачей сертификата или по имеющемуся сертификату)
  • Строгая аутентификация на портале
  • Электронная подпись данных и/или файлов в формате CMS
  • Шифрование данных и/или файлов в формате CMS


Данные сценарии предполагают клиент-серверное взаимодействие, написание клиентских скриптов на JavaScript и соответствующих им серверных вызовов openssl.

Подробности под катом.
Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Views 26K
Comments 4

Конструируем локальный криптографический TLS-прокси c HTTP API электронной подписи

«Актив» corporate blog Information Security *Cryptography *


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

Основным средством взаимодействия пользователя и информационной системы медленно, но верно становится браузер.
Если внимательно рассмотреть вопрос интеграции популярных браузеров и российских криптосредств, то вырисовываются следующие проблемы:
  • Браузеры используют совершенно различные криптографические библиотеки (MS Crypto API, NSS, openssl). Универсального криптосредства, которое «добавляет» ГОСТы во все эти библиотеки нет
  • Механизмы встраивания многих криптосредств в операционную систему и в браузер «завязаны» на версию ОС. С выходом обновления ОС работоспособность криптосредства может кончиться
  • Google Chrome отказывается от поддержки плагинов, работающих через NPAPI. А многие российские вендоры криптосредств разработали плагины, используя именно данный механизм
  • На мобильных платформах браузеры не поддерживают плагины


В данной ситуации наиболее универсальным решением представляется вынести реализацию TLS-ГОСТ и функций ЭЦП в отдельное сетевое приложение, которое принимает запросы от браузера на localhost, позволяет «туннелировать» соединения между браузером и удаленными web-серверами (real proxy), а также предоставляет HTTP API для функционала ЭЦП, работы с сертификатами, токенами и т.п.
Не скажу, что идея является новой, но давайте попробуем сделать некоторый конструктор для ее реализации.

Деталями конструктора будут:


Любители модульных архитектурных экпериментальных решений приглашаются под кат.

Читать дальше →
Total votes 6: ↑5 and ↓1 +4
Views 9K
Comments 4

Библиотека для встраивания электронной подписи в приложения С++

«Актив» corporate blog Information Security *Cryptography *C++ *
Tutorial


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

Некоторое время назад мы поддержали Рутокен ЭЦП в openssl, затем выпустили кроссплатформенный плагин для браузера, а теперь сделали высокоуровневую криптобиблиотеку для встраивания в С++ приложения.

Концептуально данные решения выполнены идентично: используется аппаратная реализация российских криптоалгоритмов на чипе Рутокен ЭЦП, обеспечивается поддержка цифровых сертификатов X.509, запросов на сертификаты PKCS#10, подписанных и зашифрованных сообщений CMS.

Новая библиотека пригодится тем, кто пишет «толстые клиенты», десктопные приложения, свои браузерные плагины и т.п.

Поддерживаемые устройства:
  • USB-токен Рутокен ЭЦП
  • Смарт-карта Рутокен ЭЦП
  • Bluetooth-токен Рутокен ЭЦП
  • Trustscreen-устройство Рутокен PINPad
  • USB-токен Рутокен WEB (HID)


Основные сценарии применения библиотеки с примерами кода под катом.
Читать дальше →
Total votes 14: ↑11 and ↓3 +8
Views 12K
Comments 4

Электронная подпись в доверенной среде на базe загрузочной Ubuntu 14.04 LTS и Рутокен ЭЦП Flash

«Актив» corporate blog Information Security *
Процедура наложения электронной подписи, призванная обеспечить подтверждение целостности подписанного документа и его авторства, сама по себе может быть небезопасной.
Основные атаки на ЭП — это кража ключа и подмена подписываемой информации, а также несанкционированный доступ к средству ЭП (например, USB-токену) посредством кражи его PIN-кода.

Реализуются данные атаки различными способами и на различных уровнях. На уровне ОС это внедрение вредоносного ПО (вирусы, программы-шпионы, руткиты и т.п.), которое способно похищать ключи, PIN-коды и делать подмену документов посредством чтения и/или подмены данных в памяти системного процесса, используя различные механизмы «хака», заложенные в ОС.
Если мы говорим о подписи в браузере, то к данным атакам добавляется возможность проведения атаки man-in-the-middle, направленной на модификацию подписываемых данных на web-странице или на кражу PIN-кода или на перехват secure token для возможности злоумышленнику прикинуться абонентом системы. Кроме того, на сайтах возможна атака типа CSS, обусловленная безалаберностью разработчиков сайта.

Очевидно, что максимально защитить клиента при проведении процедуры ЭП возможно лишь комплексом мер.
К данным мерам можно отнести:
  • применение для электронной подписи криптографических смарт-карт/USB-токенов с неизвлекаемыми ключами
  • использование правильной реализации протокола TLS на сайте
  • правильное конфигурирование этой правильной реализации протокола TLS
  • использование специальных аппаратных средств для визуализации подписываемых данных перед наложением подписи (trustscreen)
  • корректная реализация браузерных плагинов и расширений, которые обеспечивают ЭП в браузере
  • регламентирование процедуры подписи для пользователя с учетом встроенных в браузер механизмов безопасности
    • проверка сертификата TLS-сервера пользователем перед ЭП
    • запуск браузерных плагинов и расширений только на доверенном сайте (сейчас правильно настроенные браузеры предупреждают пользователя о запуске)
    • ввод PIN-кода токена по запросу только доверенного сайта
    • реагирование на предупреждение браузера о получении «смешанного» контента — часть по HTTPS, часть по HTTP
  • защита ОС от вредоносного ПО (создание доверенной среды)

Некоторое время назад наша компания выпустила новый Рутокен ЭЦП Flash. Это устройство «два в одном» — криптографический токен и управляемая FLASH-память в едином корпусе. При этом контроллер позволяет настраивать FLASH-память таким образом, что атрибуты настройки нельзя изменить без знания PIN-кода к устройству.

В данной статье мы сделаем кастомную Ubuntu 14.04 LTS, в которую «упакуем» смарткарточные драйвера и Рутокен Плагин. Эту ОС запишем на FLASH-память Рутокен ЭЦП Flash (USB-live) и специальными средствами сделаем ее read-only, так, что без знания PIN-кода злоумышленник не сможет снять этот атрибут.

Таким образом, получим загрузочное устройство, при загрузке с которого пользователь сразу получит возможность подписи документов в браузере на неизвлекаемых ключах в доверенной среде, целостность которой гарантируется управляющим контроллером USB-токена.
Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Views 22K
Comments 44

Извлечение ключа из токена с неизвлекаемым ключом

Information Security *Cryptography *System Programming *


Довольно часто при оформлении сертификатов ключей электронной подписи можно наблюдать навязчивый пиар токенов с неизвлекаемым ключом. Продавцы из удостоверяющих центров уверяют, что, купив у них СКЗИ КриптоПРО CSP и токен с неизвлекаемым ключом (Рутокен ЭЦП или JaCarta ГОСТ), мы получим сертифицированные СКЗИ, обеспечивающие 100%-ную защиту от кражи ключей с токена. Но так ли это на самом деле? Для ответа на этот вопрос проведем простой эксперимент…
Читать дальше →
Total votes 34: ↑31 and ↓3 +28
Views 156K
Comments 132

Как я настраивал новые утилиты по работе с электронной подписью в Linux

«Актив» corporate blog Information Security *Cryptography *
Tutorial


Поговорим немного про средства электронной подписи (ЭП) с использованием отечественных ГОСТ-алгоритмов в Linux. Несмотря на то, что различные средства и интерфейсы по работе с ЭП в Linux развиты даже лучше, чем в Windows, использовать их не так просто.

Такое положение вещей сохранялось последние несколько лет. Но с конца 2016 года ситуация изменилась в лучшую сторону. Появилось сразу два продукта, которые позволяют работать с электронной подписью по стандарту ГОСТ и шифрованием без использования консоли – это Rosa Crypto Tool и Trusted eSign. Оба эти продукта для работы с криптографией используют «КриптоПро CSP» для Linux. Поэтому, перед тем как обратиться к описанию самих продуктов, поговорим немного про «КриптоПро CSP».
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Views 63K
Comments 16

Как настроить Linux для входа в домен с использованием алгоритмов ГОСТ

«Актив» corporate blog Information Security *C *Development for Linux *
Tutorial

Введение



Протокол Kerberos 5 сейчас активно используется для аутентификации. Особенностью данного протокола является то, что он осуществляет аутентификацию, базируясь на четырех китах:


  1. Симметричное шифрование;
  2. Хеширование;
  3. ЭЦП;
  4. Третья доверенная сторона.

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


К сожалению, количество алгоритмов шифрования, хеширования и ЭЦП, которые использует данный протокол, не настолько велико, насколько хотелось бы, поэтому в данной статье я хочу показать, как добавить легко и просто собственные алгоритмы в реализацию данного протокола MIT'ом. Добавлять же мы будем наши отечественные алгоритмы: ГОСТ 28147-89 (aka Магма), ГОСТ Р 34.11-2012 (aka Стрибог) и ГОСТ Р 34.10-2012 (хотелось бы тоже иметь для него aka, но я не знаю:(). Готовое решение для данных алгоритмов можно его найти в моем репозитории. На стороне клиента мы будем использовать аппаратные реализации алгоритмов ГОСТ в Рутокене ЭЦП 2.0 и их программные реализации в engine GOST для openssl. Но самый безопасный вариант хранения ключей – когда они генерируются непосредственно на Рутокене и никогда не покидают его память во время криптографических операций. Для такого варианта работы потребуется rtengine.

Читать дальше →
Total votes 23: ↑23 and ↓0 +23
Views 8.1K
Comments 8

Шифрование TLS-трафика по алгоритмам ГОСТ-2012 c Stunnel

«Актив» corporate blog Information Security *Open source *Network technologies *
Tutorial

В этой статье я хочу показать, как настроить Stunnel на использование российских криптографических алгоритмов в протоколе TLS. В качестве бонуса покажу, как шифровать TLS-канал, используя алгоритмы ГОСТ, реализованные в криптоядре Рутокен ЭЦП 2.0.


Но для начала давайте вообще разберёмся для чего нужен Stunnel. В двух словах — это программа, на которую можно переложить всю логику шифрования трафика между сервером и клиентом. Делается это следующем образом: допустим у вас есть клиент и сервер, которые общаются между собой без использования шифрования, аутентификации и проверки целостности. Вы могли бы переписать клиент и сервер так, чтобы все исходящие и входящие сообщения передавались между собой с учётом всех этих моментов, но для чего такие сложности, если можно это просто переложить на плечи другому приложения? Для решения такой задачи как раз подойдёт Stunnel.

Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Views 11K
Comments 2

Как подписывать почтовую переписку GPG-ключом, используя PKCS#11-токены

«Актив» corporate blog Information Security *Cryptography *Open source *Software
Tutorial


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

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

Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Views 4.2K
Comments 31
1