Иногда в России мне приходилось спрашивать у криптографических чиновников:
– Как вы относитесь к международным криптографическим стандартам?
Типовой ответ:
– У нас свои стандарты.
А один на стене своего служебного кабинета в ФАПСИ даже повесил плакат
– Тот, кто встроил RSA, тот проныра и лиса.
Вот такие в России «идеи чучхе». Почему-то криптографические чиновники считают оторванность российской криптографии от цивилизованного мира за благо. «Мы сами себе придумываем свои криптографические стандарты, нам Америка не указ!»
Лукавят! Не все российские криптографические стандарты придуманы в России. Все, что касается открытых ключей и электронной подписи, придумали американские криптографы. Я писал об этом в книге «Маркант».
Но главное не в том, кто и что придумал, а в том, как использовать криптографические алгоритмы.
Если вы создаете какой-то сложный программный комплекс, например, систему Интернет-банкинга, ориентированную на неопределенный круг потребителей (помните – «количество подписчиков онлайн-банкинга составляло 23 миллиона, что составляет около половины населения страны»), то ваш программный комплекс должен будет работать с типовыми устройствами и типовой операционной системой, которыми пользуется этот неопределенный круг потребителей в своей повседневной жизни. Если в свободной стране вы начнете создавать какие-то надуманные проблемы миллионам пользователей, то они просто не будут использовать ваш Интернет-банкинг и закажут его создание другой фирме.
Типичный пример надуманных проблем, создаваемых в России криптографическими чиновниками, – это запрет общепринятых международных стандартов и, в первую очередь, запрет асимметричного алгоритма RSA. Разумных объяснений этим запретам нет, так захотели чиновники и все тут. И, к огромному сожалению, эти чиновники получили практически неограниченные права все запрещать, не неся при этом ни малейшей ответственности за последствия, вызываемые этими необоснованными запретами.
В Южной Корее я наконец-то выбрался из российского криптографического «королевства кривых зеркал». Полстраны пользовались Интернет-банкингом не потому, что разрешили чиновники, а потому, что это было удобно. Хотя криптографические чиновники в Южной Корее тоже есть, но само название их организации – Korean Information Security Agency (KISA) – для уха российского криптографа звучало ласково и по-домашнему тепло. Они не создавали никаких идиотских запретов, а наоборот, иногда очень даже помогали. Далее в этой книге я расскажу, когда и при каких обстоятельствах мне пришлось иметь дело с KISA.
Естественно, что никто в Южной Корее не считал криптографию и создание криптографических программ чем-то особенным, требующим каких-то лицензий и сертификатов от KISA. Используй при этом все, что необходимо и удобно, главное – чтобы работало и было востребовано конечным пользователем. Создать как-то иначе Интернет-банкинг, которым пользуется полстраны, просто невозможно. Нужно для создания более безопасного Интернет-банкинга привлечь иностранного криптографа – пожалуйста, никакого разрешения KISA для этого тоже не требовалось.
Олимпийский парк в Сеуле. Скульптура «Указующий перст».
Взявшись за написание этой книги, я сам себе дал слово писать ее как можно более простым языком, по возможности избегать сложных математических формул и терминов. Книга должна быть интересной обычному читателю, который не должен напрягаться от чего-то непонятного. Непонятно – значит надо разъяснить как можно более простыми словами и примерами.
Как я упоминал выше, в 2003 году малазиец Гекке Краай пишет про Интеренет-банкинг Южной Кореи: «Это был первый случай взлома и ограбления счета онлайн-банкинга в Южной Корее, лидере по количеству пользователей высокоскоростного Интернета» Сам случай произошел в 2002 году. А когда в Южной Корее запустили систему Интернет-банкинга?
Корейский Интернет-банкинг был тесно связан с криптографией. В нем использовалась криптографическая аутентификация и электронная цифровая подпись. В свою очередь, эти два понятия тесно связаны с асимметричной криптографией и цифровыми сертификатами.
Когда какой-то человек приходит в отделение банка, то его просят представиться: кто вы и что вам здесь надо. Если тот же человек пытается зайти на банковский сервер, то сервер делает фактически то же самое – пытается проверить подлинность и цели обратившегося к нему клиента. А как это сделать? Одним из распространенных методов проверки подлинности клиента является его криптографическая аутентификация, т.е. проверка подлинности с помощью криптографических методов.
Криптографическая аутентификация предполагает проверку электронно-цифровой подписи (ЭЦП) клиента. А нормальная ЭЦП, в свою очередь, предполагает наличие у клиента ключа для подписи, а у сервера – ключа для проверки подписи клиента. Ключ, с помощью которого клиент осуществляет подпись, называется private key, а ключ, с помощью которого сервер осуществляет проверку подписи клиента – public key. По-русски – закрытые и открытые ключи. Закрытый ключ иногда именуют секретным, а открытый – публичным.
Вопросы и ответы.
Есть ли у клиента его открытый ключ?
Есть.
Есть ли у сервера закрытый ключ клиента?
Нет.
Связаны ли между собой закрытые и открытые ключи?
Да, связаны, каждому закрытому ключу соответствует строго определенный открытый ключ.
Можно ли по закрытому ключу определить открытый ключ?
Да.
Можно ли по открытому ключу определить закрытый?
Нет.
Теперь о сертификате. Открытый ключ еще называют публичным, потому что он у всех на виду. А появляться на публике голому открытому ключу просто неприлично. Вот его приодевают и приукрашивают в специальной организации, называемой Центром Сертификации (ЦС) или, по терминологии Microsoft, Certification Authority (CA). Приодетый и приукрашенный открытый ключ, получивший в ЦС персональную ЭЦП, и принято называть сертификатом.
Как приодевают и приукрашивают в ЦС открытый ключ – особая песня. Различных атрибутов в сертификате может быть великое множество: фамилия, имя, отчество владельца, его должность, место работы, место жительства, электронная почта и т.д. и т.п. Указывается также назначение ключа (key usage или extended key usage): для подписи или шифрования электронной почты, для идентификации пользователя на сервере, для подписи программных кодов, для EFS (Encrypted File System) и прочая, прочая, прочая. В сертификате обязательно присутствуют срок действия ключа и электронная подпись ЦС. Здесь опять же, пробегая галопом по такой необъятной теме, как состав информации, включаемой в сертификат, я руководствовался принципами гуманизма к обычному читателю, стараясь не перегружать далекого от криптографии человека всеми нюансами, связанными с созданием в современных информационных системах персональных сертификатов. Вкратце: это «одетый» открытый ключ, получивший «паспорт» – персональную ЭЦП в ЦС. «Одежд» может быть много, иногда и самых экзотических: корейцы, например, включают в свои сертификаты хеш-функцию от национального ID и некоторого случайного числа – это их персональный атрибут, который называется KR, по-видимому, Korean Random.
Читаем Википедию.
«Инфраструктура открытых ключей (ИОК, англ. PKI – public key infrastructure) – набор средств (технических, материальных, людских и т. д.), распределённых служб и компонентов, в совокупности используемых для поддержки криптозадач, на основе закрытого и открытого ключей. В основе PKI лежит использование криптографической системы с открытым ключом»
В Интернете я наткнулся на интересную презентацию, которую приготовил 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.
Тут меня немного смутило расхождение в количестве пользователей Интернет-банкинга у Гекке Краай (23 миллиона) и mr. Jae-IL, Lee, Vice President of KISA (70% от 11 миллионов). У одного из них данные не совсем верные. По-моему, прав вице-президент KISA. Но в любом случае, счет идет на миллионы пользователей.
Итак, предварительной оценкой начала работы Интернет-банкинга в Южной Корее можно считать февраль 1999 года, когда появилась первая PKI. Эта PKI была представлена в виде специализированного программного обеспечения XecureWeb, разработанного корейской фирмой SoftForum. Вот что сказано про XecureWeb в японской Википедии (https://ja.wikipedia.org/wiki/Xecureweb)
«XecureWeb – система, разработанная в Корее. Это программное обеспечение (программное обеспечение PKI), которое обеспечивает взаимное доверие и надежную связь в сети»
Читатель, видимо уже заинтересовался: а какая асимметричная криптография используется в Корее? Можно ли рассказать о ней поподробнее?
Рассказываю поподробнее.
Как-то в апреле 1977 года три еврея собрались выпить. Напились и придумали алгоритм с открытым распределением ключей RSA – первые буквы их фамилий: Rivest, Shamir, Adleman. Не верите? Напрасно. Читайте Википедию.
«Рон Ривест, Ади Шамир и Леонард Адлеман из Массачусетского технологического института в течение года предприняли несколько попыток создать одностороннюю функцию, которую было бы трудно инвертировать. Ривест и Шамир, будучи компьютерными учеными, предложили множество потенциальных функций, а Адлеман, будучи математиком, отвечал за поиск их слабых мест. Они опробовали множество подходов, включая "ранцевый" и "перестановочные полиномы". Какое-то время они думали, что то, чего они хотели достичь, невозможно из-за противоречивых требований. В апреле 1977 года они провели Песах в доме одного из студентов и выпили много манишевицкого вина, а затем вернулись к себе домой около полуночи. Ривест, не в силах заснуть, лег на диван с учебником математики и начал думать о своей односторонней функции. Остаток ночи он провел, формализуя свою идею, и к рассвету большая часть статьи была готова. Алгоритм теперь известен как RSA – инициалы их фамилий в том же порядке, что и в их статье.»
И стал этот пьяный алгоритм RSA мировым асимметричным стандартом. Очень удобным и практичным. С его помощью легко осуществлять асимметричное шифрование и электронную подпись. И в корейском Интернет-банкинге тоже используется алгоритм RSA.
О проекте
О подписке