Криптография и Свобода - 2. Международные криптографические стандарты

Oct 13, 2016 09:20

Оригинал взят у mikhailmasl в Криптография и Свобода - 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

Previous post Next post
Up