mikhailmasl (mikhailmasl) wrote,
mikhailmasl
mikhailmasl

Category:

Криптография и Свобода - 2

Международные криптографические стандарты

    В моей «прошлой» криптографической жизни (в КГБ) само словосочетание «криптографические стандарты» было каким-то нелепым. Основная задача – обеспечение стойкости шифра, удобства его реализации – вторичны. Какие тут могут быть стандарты! Криптосхема – понятие секретное, гриф секретности всего на одну ступень ниже, чем у ключей. Таков был подход к военной и государственной криптографии до появления персональных компьютеров и Интернет.

    Появление компьютеров положило начало гражданской криптографии. Вопросы стойкости отошли на второй план, поскольку возможности компьютера позволяли реализовывать любые криптографические фантазии: если DES (американский Data Encryption Standard) вызывал какие-то сомнения в стойкости из-за сравнительно короткого ключа, то крутим его 3 раза на разных ключах, получаем 3DES. На первый же план вышли вопросы встраивания криптографических процедур в общеизвестные приложения: электронную почту, текстовые редакторы, файловую систему и т.п. Мои первые программы больше напоминали «криптографические идеи чучхе» - весь интерфейс свой, полностью выполняющий некоторый законченный цикл задач, как, например, было в автоматизированной системе электронного документооборота TeleDoc. Практически с первого же дня пребывания в Корее стало ясно, что здесь, в условиях высокоразвитых информационных технологий, эти идеи устарели. Нужно переучиваться жить по международным криптографическим стандартам.

    К таким стандартам, в первую очередь, я бы отнес разработанный Microsoft интерфейс Cryptography Service Provider, или сокращенно CSP. Это набор функций, удовлетворяющих определенным правилам Microsoft, и позволяющий выполнять наиболее типовые криптографические задачи: выработку ключей, шифрование, хеширование, подпись и проверку подписи и т.п. Все эти функции объединяются в динамическую библиотеку, которая затем регистрируется под уникальным именем в системном реестре Windows. Я позволю себе без надобности не вдаваться слишком глубоко в технические детали CSP, опасаясь что книга при этом будет скучной для большинства нормальных читателей, которым они неинтересны. Если же кто-то захочет узнать более подробно о функциях интерфейса CSP, то для этих целей на сайте Microsoft имеется обширная техническая документация. Нормальный программист-разработчик приложений под Windows, планирующий использовать в них криптографические функции, просто обязан полностью перепахать всю документацию Microsoft по CSP.

    Для «криптографических обывателей», да и просто для ленивых программистов (лень – двигатель прогресса), могу пересказать CSP своими словами, как в советское время пропагандисты пересказывали на политзанятиях политику Коммунистической Партии и Советского Правительства. Не спите, берите ручки, пишите конспект.

  1. CSP – обычная динамическая библиотека, содержащая экспортируемые криптографические функции, которые можно вызывать напрямую: LoadLibrary -> GetProcAddress.
  2. Для удобства программистов Microsoft встроил в Windows специальный интерфейс CRYPTO API, значительно упрощающий вызов функций CSP.
  3. Интерфейс CRYPTO API поддерживает только те CSP, которые правильно зарегистрированы в реестре Windows, каждый зарегистрированный CSP имеет персональное осмысленное имя (как правило, отличное от названия DLL) и электронную подпись Microsoft.
  4. На каждом компьютере может быть установлено и зарегистрировано несколько различных CSP от разных производителей.
  5. Интерфейс CRYPTO API дает возможность прикладной программе загружать CSP не по названию DLL, а по его зарегистрированному имени.
  6. В операционную систему Windows уже включены несколько CSP от Microsoft.

Вопросы будут? Будут. Что такое электронная подпись Microsoft?

Ну это такая, на первый взгляд неприятная заморочка для разработчиков CSP, когда готовую к реализации библиотеку CSP надо еще послать в Microsoft, чтобы там ее подписали. Пишешь-пишешь код библиотеки CSP, а проверить его толком – проблема, не будешь же чуть ли не каждый день посылать свой полуфабрикат в MS! Тут надо заметить, что процедура эта абсолютно бесплатная и MS, как правило, в трехдневный срок возвращает подписанную библиотеку.

Первые года два моего пребывания в Корее я прямолинейно слал свой CSP на подпись в MS, через день-два всплывали новые глюки, код CSP исправлялся и опять отсылался по тому же адресу. Один раз меня там «взяли на заметку» и прислали такой нестандартный ответ:

Hi Reed,

Is it okay to sign this?

    В переводе на русский – достал уже. Стало ясно, что нужен иной подход. Описанный на сайте MS способ тестирования – временное переопределение CRYPTO API – неудобен и работает только под Windows-2000.

Решение нашлось простое и универсальное. Полностью выдавать свои профессиональные тайны не буду, а только намекну: ни к чему посылать в MS все CSP, достаточно и одного кусочка, но такого, что следующие 4 года я в MS не посылал ничего. Сразу наступили тишина и спокойствие...

Проснувшийся advanced user с задней парты непременно задаст и такой вопрос: а зачем вообще надо писать свои CSP, если в Windows уже есть встроенные от MS? Отвечаю: для того, чтобы культурно, ничего не ломая, встроить в Windows свои криптографические «изюминки». К таким «изюминкам», в первую очередь, относится более надежное место хранения секретного ключа, оригинальные алгоритмы шифрования, надежный генератор случайных чисел, проверка оригинальных параметров (у корейцев в Internet Banking проверяется национальный ID, аналог нашего ИНН) и т.п. А Microsoft Base Cryptographic Provider хорошо использовать в каких-то бытовых целях, например, в Outlook при шифровании писем к girlfriend.

Вот вкратце и все общие сведения о CSP. Разработчик, создавший свой оригинальный CSP в строгом соответствии с канонами MS, в качестве бонуса получает возможность его использования в огромной гамме приложений под Windows: IE, Outlook, VPN, IPSEC, WinLogOn, Adobe Acrobat и прочая, прочая, прочая... Любимым развлечением у моих корейцев была демонстрация потенциальным покупателям возможностей SmartCard CSP в встроенной в Windows Vista системе шифрования файлов (EFS) – после подсоединения Smart Card и ввода PIN-кода автоматически расшифровывалась и выдавалась на экран такая картинка



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

Subscribe

  • Отрывок из книги "КРИПТОГРАФИЯ И СВОБОДА - 3"

    Глава 1.2. Цифровизация «Цифровизация – наше светлое будущее» - такой лозунг все чаще можно слышать сейчас где угодно. А что…

  • КРИПТОГРАФИЯ И СВОБОДА - 3

    Вся книга в формате PDF Содержание ПРЕДИСЛОВИЕ. Часть 1. Дружить со Стекляшкой. Глава 1.1. Российские криптографические алгоритмы..…

  • Криптография и Свобода - 2

    12 мая 1943 года Я долго не решался писать эту главу. Не был уверен в том, что у меня есть моральное право в такой книге рассказывать о…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments