СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

| сохранено

H О перспективах поддержки российских шифрсьютов в браузерах Chrome от Google в черновиках Recovery Mode


Сегодня поддержка защищенного протокола HTTPS с использованием российских шифрсьютов, рекомендованных к использованию на территории Российской Федерации, так или иначе реализована и в браузере Internet Explorer (IE) и в браузере Mozilla Firefox. В случае браузера IE достаточно установить КриптоПро CSP или другое CSP с поддержкой российской криптографии и российские шифрсьюты доступны для использования.

Уже сегодня можно использовать российские шифрсьюты для доступа, например, в личный кабинет налогоплательщика на сайте ФНС:



Почему не наступила Золотая эра NSS
Будем надеяться, что и сайт Госуслуг и другие государственные сайты все перейдут на российские шифрсьюты.

До середины 2014 года поддержку защищенного протокола https в браузерах Chrome от Google (Google Chrome/Chromium) обеспечивала библиотека NSS (Network Security Socket), которая имеет как встроенное криптографическое ядро, так и позволяет подключать сторонние средства криптографической защиты информации (СКЗИ) с интерфейсом PKCS#11. Встроенное ядро не поддерживает российские криптоалгоритмы. Именно библиотека NSS отвечала в браузерах Chrome от Google за реализацию как протокола https, так и работу с хранилищем сертификатов.

База данных NSS (хранилище сертификатов) для браузерах Chrome от Google хранится в каталоге $HOME/.pki и включает в себя базу данных cert9.db, в которой хранятся сертификаты, включая корневые, и key4.db, в которой хранятся закрытые ключи, поддерживаемые встроенным криптоядром. В каталоге $HOME/.pki хранится еще файл pkcs11.txt, в котором прописываются библиотеки PKCS#11, для подключаемых устройств PKCS#11. Именно в этот файл надо добавить путь к библиотеке PKCS#11 токена, реализующего российские криптографические стандарты ГОСТ Р 34.10-2012, ГОСТ Р 34.11-2012, ГОСТ Р 34.12-2015 и ГОСТ Р 34.13-2015, а также ГОСТ Р 34.10-2001, ГОСТ Р 34.11-94 и ГОСТ 28147-89:

#путь к библиотеке ГОСТ-ового токена
library=/usr/local/lib64/libls11usb2016.so
#Произвольное имя устройства
name=TOKEN_LS11USB2016


И вот до середины 2014 года достаточно было собрать Google Chromium с доработанной библиотекой NSS, подключить токен PKCS11, разработанный в соответствие с выпущенным Техническим комитетом по стандартизации «Криптографическая защита информации» (ТК 26) дополнением к стандарту PKCS#11 — "Расширение PKCS#11 для использования российских криптографических алгоритмов" (версия 2.30) и можно было смело работать по ГОСТ-ому TLS:



В это же время браузер Google Chrome на платформе Аndroid использовал для реализации протоколов https библиотеку OpenSSL.

Но вот в начале 2014 года в OpenSSL была обнаружена уязвимость HeartBleed. В этом момент многим показалось, что может наступить золотая эра NSS в проектах Google. Но Google не был бы Google, если бы не принял совсем неожиданное решение: разработать опираясь на опыт OpenSSL и LibreSSL собственный криптографический движок для поддержки HTTPS – BoringSSL. Были также предложения полностью отказаться от использования NSS в браузерах Chrome от Google и для хранения личных сертификатов. Однако, развернувшаяся дискуссия не позволила это сделать. Звучали такие заявления, что отсутствие поддержки smartcard с интерфейсом PKCS#11 станет позором для Google, что, например, граждане Бельгии, которые получают электронные идентификаторы PKCS, вынуждены будут использовать другие браузеры.

В итоге, сегодня в браузерах Chrome от Google используется две библиотеки, а именно NSS и BoringSSL.

Библиотека NSS используется для организации хранения и проверки сертификатов и ключей, импорта и экспорта сертификатов, в том числе корневых, а также для импорта и экспорта личных сертификатов в формате PKCS#12. Для реализации механизмов HTTPS/TLS используется уже библиотека BoringSSL.

Вот бы и нам в России добиться использования, хотя бы наравне с Microsoft CSP, стандарта PKCS#11 (ТК-26 постоянно выпускает по нему рекомендации) и чтобы портал госуслуг был доступен не только через Internet Explorer с КриптоПро-CSP, а с любого браузера, где есть поддержка российской криптографии, включая браузеры Chrome от Google.
Соответственно, если говорить об использовании в браузерах Chrome от Google российской криптографии, то необходима модернизация обеих библиотек и наличие токенов PKCS#11, реализованных с учетом рекомендаций ТК26. И если опыт встраивания поддержки механизмов PKCS#11 для российских криптоалгоритмов в библиотеку NSS уже имеется и токены, реализующие российскую криптографии и имеющие интерфейс PKCS#11, также имеются и их подключение в браузер Chrome от Google уже сегодня позволяет импортировать и хранить в хранилище сертификатов cert9.db сертификаты X509 с алгоритмами электронной подписи ГОСТ Р 34.10-2001 и ГОСТ Р 34.10-2012с длиной открытого ключа как 512, так и 1024 бита, то про библиотеку BoringSSL этого не скажешь.

И так, если после подключения токена (добавления соответствующих директив в файл pkcs11.txt) запустить браузер GoogleChrome и в адресной строке ввести:

chrome://settings/certificates

то браузер GoogleChrome запросит ввод PIN для подключенного токена с ГОСТ-алгоритмами:

image
Рис. Ввод PIN-кода к токену с российской криптографией

После корректного ввода PIN-кода можно импортировать корневые сертификаты X509 с алгоритмами электронной подписи ГОСТ Р 34.10-2001 и ГОСТ Р 34.10-2012 с длиной открытого ключа как 512, так и 1024 бита:

image
Рис. Верификация корневого сертификата и его назначение

image
Рис. OID алгоритма подписи ключа

Личные сертификаты пользователя естественно хранятся на подключенном токене. Есть определенная проблема: как сертификаты и ключи появятся на токене. Формально в браузерах Chrome от Google можно импортировать личные сертификаты из контейнеров PKCS#12. Но где взять эти PKCS#12, а если токен с неизвлекаемым ключом и самое главное сейчас механизм PKCS#12 в браузерах Chrome от Google не понимает ГОСТ-овых сертификатов и ключей, необходимо модификация модуля nsPKCS12Blob.cpp. Есть простой и элегантный путь – положить личные сертификаты на токен, скажем, с использованием браузера Redfox. И так токен подключен и мы просматриваем личные сертификаты:

image
Рис. Верификация личного сертификата и его назначение

image
Рис. OID алгоритма ключа (1.2.643.7.1.1.1- ГОСТ Р 34.10-2012 длина открытого ключа 512 бит).

Однако попытка связаться по HTTPS с ГОСТ-овым Web-сервером как в анонимном, так и авторизованном режимах заканчивается неудачей.

И все это несмотря на то, что российская криптография для работы подключена.

Как говорилось выше, за реализацию собственно протокола HTTPS в браузерах Chrome от Google отвечает библиотека BoringSSL. А библиотека BoringSSL сегодня поддерживает только ключи типа RSA и ECDSA и тем более ничего не знает про российские шифрсьюты TLS_GOSTR341001_WITH_28147_CNT_IMIT и TLS_GOSTR341112_256_WITH_28147_CNT_IMIT (GOST2001-GOST89-GOST89, GOST2012-GOST8912-GOST8912 — в терминологии OpenSSL ).

Таким образом, для появления в браузерах Chrome от Google полноценной поддержки отечественных шифрсьютов требуется сделать еще один шаг – провести доработку библиотеки BoringSSL. Сегодня есть компании, которые имеют большой опыт по встраиванию российской криптографии в OpenSSL. Это прежде всего ООО «Криптоком» и ООО «ЛИССИ-Софт», более того они имеют и опыт совместной работы.

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

комментарии (51)

–3
+2 –5
psylostlife ,  
Что-то мне подсказывает, что я себе такого не хочу.
0
Disasm ,  
> так или иначе реализована и в браузере Internet Explorer (IE) и в браузере Mozilla Firefox.
Не реализованы в браузерах, а реализованы альтернативные версии браузеров с поддержкой российских шифров, не надо вводить людей в заблуждение.
0
dartraiden ,  
Что-то я сомневаюсь по поводу альтернативной реализации IE.
0
Disasm ,  
Да, неточно выразился. Хотел сказать, что в оригинальных версиях этих браузеров данной поддержки нет и вряд ли она там когда-то появится.
+1
dartraiden ,   * (был изменён)
В браузерах с открытым исходным кодом поддержка могла бы быть, если бы нашёлся желающий её реализовать и продвинуть патчи.

Разработчики Firefox предпочитают работать над поддержкой TLS 1.3, которая полезна всем, а не двум с половиной пользователям, вынужденным из-за требований законодательства работать с российской криптографией.

А «Лисси-Софт», конечно, могли бы предложить в апстрим набор патчей, но решили исходники не открывать. Видимо, в надежде, что эту работу поручит и профинансирует государство.
+1
V2008 ,  
Да, NSS от IBM и Firefox от Mozilla работатют над TLS 1.3.
У нас многие не знают о существование TLS 1.2, хотя есть и положительные примеры:
http://soft.lissi.ru/about/news/2016/02/69/.
Что касается «двум с половиной пользователей» — они живут в этой стране и хотят быть законопослушными налогоплательщиками. Но это из другой эпостаси.
0
Disasm ,  
Чтобы платить налоги не нужно всё это. Тогда зачем?
+3
WayMax ,  
Зачем вообще эта статья?
+6
dartraiden ,  
Представитель «Лисси-Софт» рассуждает о том, как хорошо было бы, поручи правительство им решить эту задачу.
+3
ValdikSS ,  
…после того, как (предположительно) его забанили на ЛОРе.
Блокирован 09.09.2016 19:19:19, модератором Falcon-peregrinus по причине: Иди спамить своей лисси в другое место, ОК?
+1
dartraiden ,   * (был изменён)
Да и на GT, похоже, тоже. Но там хоть был какой-то полезный выхлоп в виде информации о выходе новых версий.
–4
V2008 ,  
А зачем законы?
0
WayMax ,  
Зачем нужны законы я понимаю. Зачем нужна эта «статья» — нет. Поэтому и спросил вас. Вы же отвечаете вопросом на вопрос.У вас вроде не корпоративный бложек чтобы вам за него платили.
0
V2008 ,  
Чтобы народ знал, что помимо западной криптографии есть и другая, в частности, российская.
+1
geisha ,  
О, а вот это интересно.

1. А зачем она есть?
2. Какие проблемы она решает из тех, что недоступны западной криптографии?
3. Когда на iPhone/Android запилят?
–3
+1 –4
V2008 ,  
1. Если Россия страна, тем более великая, то она должна охранять свои секреты. А зачем строить свои космические корабли и т.д.
2. См. п. 1. Да и по закону у нас ЭП признается только ГОСТ-овая
3. И там и там они уже есть:

http://soft.lissi.ru/ls_product/mobile_application/
0
13_beta2 ,  
Вы явно намерено подменяете понятия. Чтобы охранять секреты есть множество существующих инструментов, одновременно новый инструмент не гарантирует ни лучшей ни хотя одинаковой «секретности».
+3
+4 –1
V2008 ,  
В NSS и соответственно Firefox, а также в OpenSSL поддерживается порядка 100 различных шифрсьютов, при чем они постояно дополняются. Зачем, если «новый инструмент не гарантирует ни лучшей ни хотя одинаковой «секретности» »?
И ни у кого нет ни тени сомнения, что это надо делать. В России ТК-26 ввел фактически два российских шифрсьюта и столько шума. Зачем-то на Западе стали активно продвигать EC, а это фактически наши ГОСТ Р 34.10-2001/2012. Они зачем-то ввели SHA-256/384/224/512 (на самом деле из-за дыры в TLS-1) и это правильно. А наш ГОСТ Р 34.11-94 изначально имел длину 256 бит, а теперь еще есть и ГОСТ Р 34.11-2012. И так далее. Значит им можно двигать математическую науку, а нам нельзя.
0
Sheti ,  
Если России так хочется иметь свою криптографию, то она бы спокойно могла прийти в нужные сообщества и такими же путями, как и все остальные добавить поддержку.
Для меня вообще сомнителен тезис, что величие страны и вероятность сохранения секретов определяется наличием своего собственного варианта криптографии. Как показала практика только открытость алгоритмов и постоянный их широкий анализ могут быть индикатором надежности криптографических алгоритмов.
Ну и к тому же если государство нас с вами обязывает, что-то использовать без альтернатив, то государство и должно предоставить бесплатный инструмент. А то как то не хорошо получается.
0
V2008 ,  
Стоп, стоп. Она (Россия) и так пришла в «нужные сообщества». Почитайте докукменты по PKCS#11 v.2.30, v.2.40. Посмотрите на OpenSSL и GCrypt, где уже просто есть поддержка ГОСТ-ов.
0
+1 –1
V2008 ,  
Насчет альтернативы полностью согласен с Вами! Двумя руками и за тезис «государство и должно предоставить бесплатный инструмент». Всеми силами продвигаю его. Но…
Вот и Поручении Президента нашему премьр-министру (http://kremlin.ru/acts/assignments/orders/52536#sel=5:2,5:6 ), который я упоминаю, сказано:

«При разработке указанного комплекса мероприятий предусмотрите в числе прочих:

1) предоставление безвозмездного доступа гражданам Российской Федерации к использованию российских средств шифрования для электронного взаимодействия с органами государственной власти и органами местного самоуправления;»

Но срок исполнения 1 декабря 2017 г. И самое главное — исполнение чего?
–1
geisha ,  
Зачем строить космические корабли я понимаю. Я не понимаю зачем цеплять к ним свистоперделки, которые не улучшают, так сказать, полетные качества. Ну понятно, в общем. Вопрос был о том, зачем мне, как разработчику, эту реализацию использовать.

По поводу приложения: с айфона можно получать веб-страницу по TLS зашифрованным этим зоопарком? По вашей ссылке я увидел какое-то приложение по менеджменту сертификатов.
0
V2008 ,  
А это что за зверь «свистоперделки»? Они что прикручены к нашим космическим кораблям, на которых сегодня летают все. Кроме, естественно, Китая, который тоже строить свои корабли.
Вас как разработчика никто не заставляет «эту реализацию использовать». Разрабатывайте свою.

Про TLS, да есть такая функция:

#Получение страницы по авторизованному TLS-соединения.

К сожалению, я тоже не нашел ее на сайте. Но я зная, что она работает.

Что касается менеджмента сертификатов — обычное приложение по работе с ЭП.
0
geisha ,  
Ну как бы вы отнеслись если бы по ГОСТУ ракеты заставили строить не из алюминия а из чугуна и верх ногами? Скажите, есть здесь Смысл? Да, можно построить. Да, можно летать. Но зачем если достаточно подправить ГОСТ и делать как все?
0
V2008 ,  
Так предложите ТК-26 что и как по вашему надо подправить. Может в математике есть ошибки? Может кто взломал ГОСТ-ы? К кому притензии? К закону об ЭП? Или к закону, утвердившему ГОСТ-ы, или к ТК-26, который формализует реализацию этих законов? Или к автору? И кто сказал, что ГОСТ-ы и на основании чего это чугун?
–2
brujodentista ,  
Россия великая? Вы это с чего вообще взяли?
–3
V2008 ,  
А зачем законы?
0
Thero ,  
я не понял почему поддержка протокола шифрования до сих пор не закоммичена в хромиум(и прочие криптобиблиотеки)… я не понимаю почему работа с подобными сертификатами требует от пользователя что-то править в каких-то файлах…

после фразы: «Вот бы и нам в России добиться использования..» пытался вникнуть в текст три раза, но повествование окончательно рассыпалось и суть начала стремительно ускользать( это плохо думаю дальше мало кто дочитает) да и в целом еслиб не пара коментариев поясняющих за суть статьи её посыл так и остался бы загадкой… Надеюсь перспективы российских шифрсьютов лучше чем качество статьи.
+1
Aingis ,  
В Хромиум сложно отправить в апстрим что-то, что не входит в планы Гугла, по словам ребят из Яндекс.Браузера. А как убедишь Гугл вставить ещё один алгоритм шифрования (который надо ещё нехило поддерживать, безопасность же), которым пользуются полтора сайта в России? Он даже Яндекс.Браузеру не нужен.
–1
V2008 ,  
Ну, я думаю, ребята из АНБ не дадут Гугл-у возможности добавить этот алгоритм шифрования, если бы они даже захотели.
–1
+1 –2
brujodentista ,  
Бред, бред, бред. Вы забываете, что есть страны, в которых есть законы, которые исполняются.
0
V2008 ,  
Да, исполняются и поэтому они свято чтут экспортные ограничения на криптография, длину ключей и т.д. Вспомните хотя бы мытарства разработчика SoftVPN.
0
Thero ,  
то что эти алгоритмы даже в яндекс браузере не добавлены показатель того что никто просто не заинтересован в добавлении. ведь как можно зарабатывать на интеграции софта который может скачать домохозяйка? никак. увы.
+1
Meklon ,  
Патчи в upstream отклонили?
+1
ValdikSS ,  
Они даже на почту про раскрытие исходников модификации Firefox не отвечают, что уж тут.
+2
dartraiden ,  
На ЛОРе совместными усилиями выяснили, что лицензия MPL позволяет не открывать исходники производного продукта. Единственное требование — чтобы производный продукт не носил название Firefox.
+1
ValdikSS ,  
Я знаю об этом, но на письмо можно было бы хотя бы какую-нибудь отписку послать.
На странице RedFox открытый исходный код упоминается в качестве преимущества, и звучит как издевательство.
–3
V2008 ,  
А в чем издевательство-то?
«Продукты, разрабатываемые сообществом Mozilla, завоевывают все большее признание. Браузер Firefox уже сравнялся по популярности с Internet Explorer, многие пользователи используют почтовый клиент Thunderbird и т.д. Широкому распространению этих продуктов способствует их бесплатность, кроссплатформенность, функциональность, не уступающая конкурентам, и, конечно, открытость исходного кода.»
Очень даже хорошо написали про Mozilla!

Насчет отписки. Вы в почте тоже ValdikSS представились? Если да, то…
А с другой стороны, оказывается вы все знаете. И самое главное — зачем лично вам исходный код?
+2
Meklon ,  
В апстрим залить!)) Иначе так и останется одиноким не нужным огрызком.
+2
dartraiden ,   * (был изменён)
Вот именно. Пользователи уже сами просят «дайте исходники, мы их адаптируем, будем продвигать в таких-то дистрибутивах, кто-то и в апстрим отправит». Это шанс заиметь поддержку российского крипто не в браузере Redfox, а в браузере Firefox, у которого пользовательская база на порядок больше.

Вот это я понимаю под продвижением российской криптографии в массы.
0
sleeply4cat ,  
А вот этот ответ немного похож на издевательство, не находите?
+2
ValdikSS ,  
Насчет отписки. Вы в почте тоже ValdikSS представились? Если да, то…
Да, уважаемый V2008.

И самое главное — зачем лично вам исходный код?
Чтобы я мог сгенерировать из него патч и попробовать наложить на более свежие версии Firefox. Чтобы я мог сделать ArchLinux PKGBUILD и загрузить в AUR, RPM и загрузить в COPR, чтобы остальные тоже могли воспользоваться. Чтобы я смог скомпилировать браузер с оптимизациями, защитой от переполнений и RELRO:
$ hardening-check /usr/lib64/firefox/firefox # мой Firefox
/usr/lib64/firefox/firefox:
 Position Independent Executable: yes
 Stack protected: yes
 Fortify Source functions: yes (some protected functions found)
 Read-only relocations: yes
 Immediate binding: yes

$ hardening-check ./firefox # RedFox
./firefox:
 Position Independent Executable: yes
 Stack protected: no, not found!
 Fortify Source functions: no, only unprotected functions found!
 Read-only relocations: no, not found!
 Immediate binding: no, not found!
0
V2008 ,  
За подсказку искреннее спасибо!
+2
Here_and_Now ,  
Я не имею отношения к криптособществу, но меня зацепили вот эти 3 буквы в названии софта «CSP».

Я из РБ и у нас тут электронное декларирование в налоговой, отчёты в статистику и фсзн по электронке + интернет банк (все через эти CSP). У ВСЕХ них своя версия криптопровайдера (которые не устанавливаются без конфликтов в систему). Инструкции по использованию/установке занимают мануалы на десятки страниц с десятком-другим шагов. Порталы гос услуг (да и Альфа банка тоже) работают кто как. Для налоговой, например, у меня отдельный ноут с XP, поскольку в более новых версиях IE их портал не работает.

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

Так вот, пользуясь случаем, хочу у вас поинтересоваться зачем это всё? По моему опыту работы с удалёнными серверами обычный SSH справился бы гораздо проще: в налоговой генерируешь ключ, тебе его записывают на флешку, которую ты шифруешь с помощью пароля. Потом этот ключ скармливаешь при логине в систему и всё. Где здесь SCP?
0
V2008 ,  
А я только про это и писал. Весь мир работает с PKCS#11, а мы мучаемся с "'этими CSP". Вставил и работай. Более того все электронные паспорта на Западе, как правило делают с интерфейсом PKCS#11.
Тот же Chrome берет сертификаты и ключи через PKCS#11. То же самое с SSH. Более того есть реализация SSH с ЭП по ГОСТ (http://soft.lissi.ru/ls_product/vpn/foxssh/ ).
Значит кому-то надо чтобы было только CSP (не SCP, как вы случайно написали, а именно CSP).
А самое страшное, что это докатилось до Республики Белорусь и Крыма.
0
Here_and_Now ,  
Прошу прощения за ошибку в аббревиатуре.

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

А Firefox уже умеет это делать? Как его настраивать?
–1
V2008 ,  
Еще как умеет делать:
— http://soft.lissi.ru/solution/mozilla/

А это плагин, работающий в большинстве браузеров и тоже токенами PKCS#11:

— http://soft.lissi.ru/ls_product/crypto-web/nss_based_plugin/
— http://soft.lissi.ru/ls_product/crypto-web/
— http://soft.lissi.ru/ls_product/crypto-web/nss_plugin_examples/
+1
geisha ,  
Чувак, жизнь — боль. Я сам сталкивался со всей этой фигней с отчетностью по интернетам. Это просто ужасно. Принципиально, в России даже не самый плохой вариант реализован, хотя за костылями там ничего не видно.
0
V2008 ,  
Да, жизнь — боль, но хотелось бы поменьше навязанной боли какими-то CSP
0
equand ,  
В других странах с сильным крипто-сообществом и требованиями тоже своя система.
0
shifttstas ,  
странно, что модераторы не снесли автора и пост реклама же да еще и с ссылками