Удалёнка: опыт и лайфхаки
5 сентября 2011

Convergence — возможная замена Certification Authority System

Информационная безопасность


Доброго всем времени суток!

Сразу хотелось бы дать две ссылки на материалы, на основе которых составлена эта заметка. Можно ознакомиться непосредственно с источниками и не читать топик, представляющий из себя всего-навсего мой вольный перевод-пересказ основных моментов с небольшим количеством отсебятины.
BlackHat USA 2011: SSL And The Future Of Authenticity
Moxie Marlinspike :: Blog — SSL And The Future Of Authenticity


Вводная


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

Позвольте процитировать пару комментариев из обозначенной выше статьи:
Сертификаты — прекрасный пример торговли воздухом. Причем за вполне себе реальные деньги получаешь набор байт, который ничего не гарантирует и ни от чего не защищает.… (с) angry_elf
и ответ на него:
Предложите свой вариант защиты от MiM! Тогда вы будите торговать воздухом или станете на столько богатым и популярным, что вообще ничего не нужно будет делать. (с) okazymyrov.
Там же еще ряд комментариев, из которых ясно, что людей как и раньше волнуют следующие темы, проблемы и вопросы:
  • Торговля сертификатами — торговля воздухом? За что мы платим деньги ?
  • Справляются ли удостоверяющие центры (УЦ) с возложенными на них обязанностями и можно ли считать, что они предоставляют реальную защиту, или это можно ставить под сомнение ?
  • Что делать горемышным Алисе и Бобу чтобы защитить себя от коварного Человека-По-Середине ?

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

Немного теории


Защищенная передача данных между узлами в сети Интернет происходит посредством протокола HTTPS (расширение протокола HTTP), в котором передаваемые данные инкапсулируются в криптографический протокол SSL/TLS (TLS — это разработанный на основе SSL 3.0 стандарт), который в свою очередь базируется на использовании алгоритма асимметричного шифрования с открытым ключом — RSA. А общая проблема всей асимметричной криптографии – сложность проверки аутентичности открытых ключей. Поэтому во всех криптографических протоколах, основанных на алгоритмах с открым ключом принципиальное значение имеет вопрос доверия. А именно как быть уверенным в том, что полученый от сервера открытый ключ действительно тот ключ, который использует сервер с которым вы хотите установить защищенный канал связи, а не ключ, расположившегося в Вашем сегменте сети Человека-По-Середине, который заворачивает весь Ваш HTTPS траффик на свой sslsniff. Имеется проблема доверия.

Удостоверяющие центры


Исторически так сложилось, что проблему доверия стали решать с помощью такой технологии аутентификации как PKI (Public Key Infrastructure). Это комплексная система мер, которая связывает открытые ключи с личностью пользователя посредством УЦ. В основе PKI лежит использование криптографической системы с открытым ключом и несколько основных принципов:
  1. Закрытый ключ известен только его владельцу.
  2. УЦ создает сертификат открытого ключа, таким образом удостоверяя этот ключ.
  3. Никто не доверяет друг другу, но все доверяют УЦ.
  4. УЦ подтверждает или опровергает принадлежность открытого ключа заданному лицу, которое владеет соответствующим закрытым ключом.

Фактически, PKI представляет собой систему, основным компонентом которой является УЦ и пользователи, взаимодействующие между собой посредством УЦ.
Работает это так: Боб хочет разрешить Алисе и другим своим подругам устанавливать с ним защищенные соединения. Он приходит в УЦ со своим открытым ключом, а так же прочими данными (имя, адрес и тд — все то, что будет в сертификате), тем или иным способом верифицирует свою личность (многие это делают просто по e-mail) и регистрирует свой ключ. УЦ выдает ему сертификат. Дальше Боб передает его своим подругам, которые могут убедится в том, что он действительно принадлежит Бобу, проверив цивровую подпись УЦ, которому они полностью доверяют.

Проблема


В чем проблема? Проблема в том что за Вас решают кому Вам доверять. В тот самый момент, когда хозяин ресурса решает, что получать сертификат он будет, скажем, у Comodo — он решает за Вас кому Вы должны будете доверять. Кто-то возможно скажет, что его ресурс — ему и решать у кого ему получать сертификат. Да, но данные то (например credit card data) этот ресурс процессит Ваши! И это, мать ее, проблема! Все бы ничего, если бы надежность существующей системы удостоверяющих центров никто не ставил под сомнение и они б безукоризненно выполняли свою работу, но это не так. УЦ представляют собой частные компании, в них работают живые неизвестные Вам люди, которые могут преследовать свои корыстные интересы, могут быть подкуплены, запуганы, шантажированы. УЦ может быть скомпрометирован сторонними злоумышленниками (ака хакирами). Можно вспомнить достаточно шумную историю с Comodo УЦ, случившуюся весной этого года (линк), в ходе которой он жидко обоср был скомпрометирован злоумышленниками и буквально на днях произошедшию оказию с DigiNotar УЦ (линк1, линк2). С DigiNotar проблему как-то худо-бедно решили — к черту вырезали их из списка корневых сертификатов в браузерах и дело с концом (Because the extent of the mis-issuance is not clear, we are releasing new versions of Firefox… shortly that will revoke trust in the DigiNotar root). Но Comodo не DigiNotar, покрупнее рыба. Что было с Comodo? Все поворчали, поворчали да забыли. Как был Comodo в списке корневых сетификатов браузеров, так и остался, как продавал сертификаты, так и продает. Можете спать спокойно, продолжайте доверять тем, кто у Вас прописан в Certificate Authority листе Вашего браузера. И это ведь только те случаи, которые были освещены в прессе, а сколь было тех, о которых всем не рассказали, тех о которых даже и не узнали сами, сколько на данный момент существует формально валидных по факту, но левых по своей природе сертификатов? И даже если исключить фактор неизвестных злоумышленников, компрометирующих работу удостоверящих центров сертификации со стороны, то что насчет того, что творится за кулисами самих этих центров? Что насчет представителей спец. служб? Бред параноика? Взгляните на эту статью и на материалы по ссылкам в ней — Устройства сил правопорядка подрывают SSL. Вообщем небольшие проблемы как ни крути, но имеются, только слепой их не видит.

Решение


Как известно существует две модели организации инфраструктуры сертификатов: централизованная (PKI) и децентрализованная (реализуемая на основе т. н. сетей доверия — web of trust), на данный момент получившая наибольшее распространение в сетях PGP/GPG. О всех прелестях централизованной модели сказано выше. Остановимся на распределённой системе, в которой нет единого источника сертификации, напротив, каждый пользователь самостоятельно решает, кому он доверяет, а кому не доверяет в удостоверении других открытых ключей, создавая тем самым личную сеть доверия. Такой подход обеспечивает гибкость и устойчивость системы к любому злонамеренному воздействию: можно повлиять на один узел распределённой системы (в этом случае исключить его из сети доверия), но остальные сохранят надёжность.

Можно пересмотреть централизованную модель, на основе которой доверительные отношения инициирует сам ресурс, запрашивая сертификат в конкретном УЦ, тем самым впоследствие обязуя всех своих клиентов взаимодействовать именно с этим УЦ для проверки своей подлиности и применить децентрализованный подход, в ходе которого доверительные отношения между клиентом и сервером инициирует сам клиент и взаимодействие осуществляется следующим образом:
  1. Клиент хочет установить защищенный канал связи с неким сайтом. Он обращается к этому сайту и получает от него SSL-сертификат. Встает вопрос — это в самом деле сертификат этого сайта или сертификат, который подсунул Человек-По-Середине? Нужно проверить.
  2. Клиент обращается к сформированному им списку удостоверяющих серверов и спрашивает у каждого из них — «какой сертификат ты видишь на этом сайте ?».
  3. В ответ на запрос сервера обращаются к заданному сайту и тоже получают от него сертификат, а затем пересылают их запрашивающему клиенту, заверяя своей подписью.
  4. Клиент сравнивает сертификат, который он получил непосредственно от сервера с сертификатами полученными от удостоверяющих серверов.
  5. Если сертификаты совпадают — все нормально, работаем. Не совпадают — где-то рядом Человек-По-Середине и возможно быть беде.


Реализация


На традиционно прошедней в начале прошлого месяца в Лас-Вегасе конференции BlackHat, небезызвестный в исследовательских кругах security-специалистов Moxie Marlinspike представил проект под названием Convergence (An agile, distributed, and secure alternative to the Certificate Authority system), в котором и реализовал обозначенные идеи. В рамках проекта удостоверяющие сервера были названы Notary (Нотариус).

Кочаем и ставим FireFox плагин — Сonvergence:


Формируем Notary-лист. Для этого можно воспользоваться списоком уже существующих серверов — Notary list, можно поднять свои Notary-сервера — Running-a-Notary, можно сделать и первое и второе.



Из особенностей настройки системы — можно регулировать порог паранои, изменяя опцию Verification Treshold.


Раньше, при использовании традиционной Certification Authority System было:


Активируем плагин, переходим на Convergence:


Приятные мелочи:
  • Администраторам сайтов ничего не нужно делать на стороне сервера. Нет нужды устраивать миграцию Интернета на новую систему аутентификации. Все уже работает, осталось только реализовать плагины для всех основных браузеров.
  • Больше нет предупреждений о самоподписанных сертификатах, так как клиенту не важно кем он подписан, клиенту важно быть уверенным в том, что он использует сертификат предоставляемый сервером а не Человеком-По-Середине.


Заключение


Who do I Have to trust?
… and for how long?
A prescribed set of people forver,
Or time to try Convergence ?
Теги: Convergence CA Certification Authority SSL TLS сертификат HTTPS
Хабы: Информационная безопасность
+25
2,9k 20
Комментарии 55
Реклама

Рекомендуем