?

Log in

No account? Create an account
entries friends calendar profile Previous Previous Next Next
March 28th, 2012 - mikhailmasl

Public Key Infrastructure (PKI)

Аббревиатура PKI в повседневной жизни имеет множество назначений. Это, в первую очередь, система выработки и регистрации собственных уникальных ключевых параметров, необходимых для каких-то целей. А каких? Как правило, для аутентификации (подтверждения подлинности) клиента на каком-то сервере. Тут мы плавно переходим к продолжению предыдущей главы: есть криптографические стандарты, а для чего они нужны и как их использовать?

Когда какой-то человек приходит в отделение банка, то его просят представиться: кто вы и что вам здесь надо. Если тот же человек пытается зайти на банковский сервер, то сервер делает фактически то же самое – пытается проверить подлинность и цели обратившегося к нему клиента. А как это сделать? Одним из распространенных методов проверки подлинности клиента является его криптографическая аутентификация, т.е. проверка подлинности с помощью криптографических методов.

Дальше нам потребуются три источника и три составных части PKI: private key, public key и сертификат. Читатели, знакомые с этими понятиями, смело могут перевернуть эту страницу или отлучиться на минутку по каким-то неотложным делам. Когда вернетесь, все эти заморочки закончатся, у вас уже будет готовый персональный сертификат. Ну а с остальными – курс криптографического ликбеза.

Криптографическая аутентификация предполагает проверку электронно-цифровой подписи (ЭЦП) клиента. А нормальная ЭЦП, в свою очередь, предполагает наличие у клиента ключа для подписи, а у сервера – ключа для проверки подписи клиента. Ключ, с помощью которого клиент осуществляет подпись, называется private key, а ключ, с помощью которого сервер осуществляет проверку подписи клиента – public key. По-русски - закрытые и открытые ключи.

Вопросы и ответы.

  1. Есть ли у клиента его открытый ключ?

Есть.

  1. Есть ли у сервера закрытый ключ клиента?

Нет.

  1. Связаны ли между собой закрытые и открытые ключи?

Да, связаны, каждому закрытому ключу соответствует строго определенный открытый ключ.

  1. Можно ли по закрытому ключу определить открытый ключ?

Да.

  1. Можно ли по открытому ключу определить закрытый?

Нет.

Детская писательница Агния Барто в таких случаях говорила: «Мы с Тамарой ходим парой...». Точно так же, парой, ходят по криптографическим просторам public and private keys. И называют их key pair, а в интерфейсе PKCS # 11 функция их выработки тоже называется C_GenerateKeyPair. Тандем, если кто следит за политикой в современной России.

Ну и, как принято в тандеме, один главнее. Private key, несомненно, главнее.

    В общих словах, про тандем все. Если кто заинтересуется подробностями: каким образом строятся и используются в ЭЦП закрытый и открытые ключи – милости прошу на Wikipedia.

    Теперь о сертификате. Открытый ключ еще называют публичным, потому что он у всех на виду. А появляться на публике голому открытому ключу просто неприлично. Вот его приодевают и приукрашивают в специальной организации, называемой Центром Сертификации (ЦС) или, по терминологии Microsoft, Certification Authority (CA). Приодетый и приукрашенный открытый ключ, получивший в ЦС персональную ЭЦП, и принято называть сертификатом.

    Как приодевают и приукрашивают в ЦС открытый ключ – особая песня. Различных атрибутов в сертификате может быть великое множество: фамилия, имя, отчество владельца, его должность, место работы, место жительства, электронная почта и т.д. и т.п. Указывается также назначение ключа (key usage или extended key usage): для подписи или шифрования электронной почты, для идентификации пользователя на сервере, для подписи программных кодов, для EFS (Encrypted File System) и прочая, прочая, прочая. В сертификате обязательно присутствуют срок действия ключа и электронная подпись ЦС. Здесь опять же, пробегая галопом по такой необъятной теме, как состав информации, включаемой в сертификат, я руководствовался принципами гуманизма к обычному читателю, стараясь не перегружать далекого от криптографии человека всеми нюансами, связанными с созданием в современных информационных системах персональных сертификатов. Вкратце: это «одетый» открытый ключ, получивший «паспорт» - персональную ЭЦП в ЦС. «Одежд» может быть много, иногда и самых экзотических: корейцы, например, включают в свои сертификаты хеш-функцию от национального ID и некоторого случайного числа – это их персональный атрибут, который называется KR, по-видимому, Korean Random.

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

    О трех источниках и трех составных частях PKI: public, private keys and certificates – пока хватит. Надеюсь, что даже у непросвещенных читателей сложилось некоторое общее представление об этих понятиях, пора поговорить и о CA – Центре выдачи сертификатов, той организации, где «одевают» поступившие к ним public keys.

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

    Общенациональный CA я бы сравнил с эмиссионным центром, печатающим денежные купюры, которым все доверяют. Наличие общенационального CA является признаком высокоразвитости страны, наличия в ней общедоступных современных технологий электронной коммерции и электронного документооборота. Хотя, наверное, я бы назвал условие наличия национального CA достаточным, но не необходимым. Internet-технологии, как правило, не знают национальных границ, сейчас в мире уже существуют общепризнанные CA такие, как VeriSign, GlobalSign, DigiCert и другие.

    Процесс получения персонального сертификата в CA является одним из первоначальных понятий в PKI. Как составить запрос на сертификат (PKCS # 10), что в него включить, как получить готовый сертификат из CA: online (Enterprise CA) или offline (Stand alone CA) – вот те проблемы, которые должны быть решены в PKI. В отличии от России (offline) у корейцев offline не может использоваться просто по определению: только online! Никаких чиновников, только диалог компьютеров в режиме реального времени. И, завершая эту часть PKI, посвященную диалогу с CA, отмечу три ключевых слова: new, renew, revoke. По русски: клиент должен иметь возможность в режиме реального времени:

- запросить новый сертификат;

- обновить действующий сертификат;

- отменить действующий сертификат.

Все эти возможности у корейцев реально реализованы, любой пользователь любого корейского банка при открытии счета получает свои персональные коды для Internet Banking. Программное обеспечение PKI, являющееся фактически ActiveX компонентой, автоматически и бесплатно скачивается с сайта банка, и с помощью этого ActiveX и полученных в банке персональных кодов пользователь бесплатно в режиме online получает в общенациональном сертификационном центре Yessign сертификат, который затем может быть использован в системе Internet Banking любого корейского банка. Читателя, испугавшегося слова ActiveX, хочу успокоить: не надо бояться, оно не кусается. Это такие специальные динамические библиотеки, которые, в частности, могут понимать и выполнять некоторые функции, вызываемые из браузера Internet Explorer.

    А теперь о том, как у корейцев организован диалог клиентского компьютера с банковским сервером.
С черного хода. В том смысле, что основной диалог клиента с сервером происходит через обычный
порт, через который работает протокол HTTP, а та часть диалога, где требуется авторизация клиента, в результате чего он получает доступ к своему банковскому счету – через другой, причем у разных банков эти порты тоже могут быть разные. И у всех, как правило, этот порт отличен от стандартного 443 – порта HTTPS. И шифруется при этом не все подряд, а только конфиденциальная информация.

    Если героический читатель-непрограммист все честно дочитал до этого места и заинтересовался подробностями диалога клиентского компьютера с корейским банковским сервером, то хочу по секрету сообщить, что этот диалог очень похож на диалог клиент-сервер в протоколе HTTPS. Вот только конфиденциальные страницы браузер получает с сервера не сам, а через ActiveX, о котором уже шла речь при получении сертификата. Этот же ActiveX выполняет и функции соединения с банковским сервером через специальный порт (handshake – привет-привет, давай пообщаемся, ну и так далее...).

Что же в результате получилось?

Вместо грубой силы – сломаем Windows так, чтобы HTTPS работал по нашему – корейский клиент, ничего не ломая, протаптывает собственную тропочку к банковскому серверу и по ней уже ведет свои дела с персональным банковским счетом. Ведет честно, по правилам SSL, только шифрует при этом не весь протокол, а только то, что является конфиденциальной информацией на странице и с использованием корейского национального алгоритма симметричного шифрования SEED.

В Интернете я наткнулся на интересную презентацию, которую приготовил mr. Jae-IL, Lee, Vice President of Korea Information Security Agency and Secretary General of Korea PKI Forum. В ней дается краткое представление о PKI наиболее развитых стран азиатско-тихоокеанского региона: Южной Кореи, Китая, Японии, Сингапура, Тайваня, Таиланда и Индии. В частности, с момента появления PKI в феврале 1999 года в Корее было выдано примерно 11 миллионов сертификатов, а в Китае – 5 млн. с августа 2004. По остальным странам даются только даты появления PKI: в Японии – апрель 2001, Сингапур – 1998 год, Тайвань – апрель 2002, Таиланд – 2001 год, Индия – июнь 2000. Россия в этой презентации даже не упоминается.

В самой Корее действует 6 национальных сертификационных центров.

Около 70% выданных сертификатов используются для Internet Banking

    Мне, безусловно, после первой пары лет «въезжания» в международные криптографические стандарты захотелось въехать и в корейские протоколы обмена клиента с банковским сервером. Как полноценный зарубежный специалист, официально зарегистрированный в корейской иммиграционной службе, я имел свой ID и свои счета в корейских банках, следовательно, фактически ничем не отличался от корейца и реально использовал их Internet Banking. Я попытался написать своего клиента, который мог бы успешно общаться с корейским банковским сервером и совершать банковские операции от моего имени. Стандартный корейский клиент, автоматически загружаемый с банковского сервера на мой компьютер, иногда вдруг переходил на корейский язык и выдавал какие-то непонятки для русского программиста.

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

«... Есть надписи на русском языке» как пел В.С.Высоцкий.


Назад                                Продолжение
В начало книги Криптография и Свобода - 2
8 comments or Leave a comment

Сеул

    Переменка! Отдохнем от криптографии и прогуляемся по Сеулу. Я временно переквалифицируюсь в экскурсовода.

    Давно-давно (в 60-70–х годах прошлого века) в Советском Союзе город Сеул преподносился в основном в виде словосочетания «сеульский режим». И вот – если мне сейчас не изменяет память, во время или сразу после Московской Олимпиады 1980 года - пришло известие: МОК избрал Сеул столицей летних Олимпийских Игр 1988 года. Ну и ну – удивлялись тогда простые советские люди – неужели нельзя было выбрать что-нибудь получше?

    А получился очень даже неплохой выбор. После взаимных бойкотов (1980 год – западные страны бойкотировали Московскую Олимпиаду, а в 1984 – социалистические страны Олимпиаду в Лос-Анджелесе) в Сеуле собрались все лучшие спортсмены и весь мир увидел, что Южная Корея стала современной цивилизованной страной. В Сеуле в память об этой Олимпиаде остался прекрасный Olympic Park, где до сих пор можно увидеть олимпийские кольца и флаги стран-участниц той Олимпиады.

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

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

    Тут нет никаких сомнений: Private and Public Keys.

    SSL – защищенный сетевой протокол.

    Это, безусловно, Центр Сертификации: public key поднимается по ступенькам в кабинку, где его одевают.

    Нечто вроде защищенного банковского сервера.

    Особую память хранят корейцы о войне 1950-53 годов между Севером и Югом. История этой войны вкратце такова: вначале Северная Корея оккупировала практически весь Корейский полуостров, но затем в ход боевых действий вмешалась ООН и послала на помощь Южной Корее войска, в основном американские. В результате теперь уже Южная Корея заняла практически всю Корею. Тут в ход боевых событий вмешались Китай и СССР и в конце концов линия фронта стабилизировалась по 38-й параллели – практически там, где сейчас демаркационная линия, разделяющая Север и Юг.

    Эта война прекратилась вскоре после смерти Сталина. После ее окончания Север пошел по пути СССР, а Юг – США. Кто и куда в результате пришел – сейчас спустя почти 60 лет стало очевидно всем. Северная Корея – к идеям чучхе и миске риса в день. Южная – к азиатскому экономическому тигру, завалившему пол-мира своей электроникой и автомобилями. Мирные и дружелюбные южные корейцы сразу же становятся настороженными и непримиримыми, когда речь заходит о Севере. И неудивительно: сколько раз северокорейские вожди грозились сжечь Сеул!

    К сожалению здесь, как и в коммерческой криптографии, американский «проект» оказался успешнее советского.

    В память о той войне в центре Сеула есть большой мемориал. Я несколько раз побывал в нем, вот фотографии.

    Главный вход. «Only strong national security can guarantee peace» - вот его девиз. Для корейцев это не пустые слова – Северная Корея с ее идеями чучхе – всего в 150 километрах от Сеула.

К тем событиям почти 60-летней давности у корейцев отношение философское. Сейчас все стало на свои места, большие перемены произошли в Китае и СССР – у бывших противников. Нет у корейцев злобы на русских, убедился в этом сам за все 6 с лишним лет проживания в Сеуле. Но помнить об этой никому не нужной войне необходимо, это очевидно всем. И корейцы помнят! Перед входом в мемориал установлены образцы военной техники противоборствующих сторон. Американская техника – с табличками синего цвета, советско-китайская – красного. Русскому, с одной стороны, есть повод гордиться: смотрите, какие у нас хорошие танки и пушки, а с другой – какого черта их занесло в эту далекую миролюбивую страну? Для мировой революции?

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

    Ну и в заключение краткой экскурсии по Сеулу, нельзя не упомянуть про корейские горы. Корея, по российским масштабам, - совсем маленькая страна, размером с Московскую область, причем 70% ее территории – горы. Проживают в ней почти 50 миллионов человек и, естественно, в таких условиях загородных дач практически ни у кого нет. Привычные россиянину поездки на дачу в weekend корейцам заменяет лазание по горам. Горы есть даже в самом Сеуле, до них можно добраться на метро и потом полдня карабкаться по оборудованным горным тропочкам, наслаждаясь свежим воздухом, родниковой водой и великолепными горными пейзажами.

    Звонок! Перемена закончилась, пора заняться криптографией, точнее – RSA. Это просто сказка...



Назад                                Продолжение
В начало книги Криптография и Свобода - 2

2 comments or Leave a comment