Основы ИТ-безопасности
Виды хеш-функций
Основной интерес для нас представляет набор хеш-функций (называемых также алгоритмами сообщение-свертка), которые мы описали, а именно MD5 и SHA-1. Для исторической справки и для того, чтобы объяснить необходимость существования MD5 и SHA-1, мы упомянем также MD2, MD4 и SHA.
- MD2 и MD5 – алгоритмы типа сообщение-свертка, разработанные Ривестом, буква R в аббревиатуре RSA. Они предназначены для приложений с цифровыми подписями, в которых большое сообщение должно быть "сжато" шифратором до того, как будет подписано закрытым ключом. Все эти алгоритмы берут сообщение произвольной длины и генерируют его 128-битовую свертку. Описания и исходные коды этих алгоритмов можно найти в интернет-стандартах RFC 1319-1321. В отличие от них алгоритм хеша безопасности (SHA, Secure Hash Algorithm) был разработан NIST и определен в стандарте хеша безопасности (SHS, FIPS 180, Secure Hash Standard).
- MD2 был разработан в 1989 г. Сообщение сначала дополняется пробелами, так, чтобы его длина в байтах была кратна 16. Затем к сообщению приписывается 16-байтовая контрольная сумма и по всему этому вычисляется хеш-значение. Было обнаружено, что, если опустить вычисление контрольной суммы, в MD2 могут возникнуть нестыковки. Это, пожалуй, единственное, что известно о результатах криптоанализа MD2.
- MD5 был разработан в 1991 г. По большей части это MD4 с "поясом безопасности", и хотя он слегка более медленный, чем MD4, зато более безопасный. Алгоритм состоит из четырех проходов, каждый из которых слегка отличается по своему дизайну от MD4.
- SHA-1 – это ревизия SHA, который был опубликован в 1994 г. Ревизия подправила неопубликованный недочет в SHA. По своему дизайну он очень похож на хеш-функции семейства MD4. SHA-1 описан также в стандарте ANSI X9.30 (часть 2). Алгоритм берет сообщение длиной менее 264 бит и создает по нему 160-битовую свертку. Этот алгоритм немного медленнее, чем MD5, но больший размер свертки сообщения делает его более надежным против атак грубой силой и методом перестановок.
Относительно используемых хеш-алгоритмов остаются открытыми несколько вопросов, на которые мы с удовольствием ответим. Если используются MD2 и MD5, значит ли это, что были и MD1, MD3 и MD4? Ответ: были.
MD (первоначальный алгоритм Message Digest, разработанный RSADSI) был запатентован и никогда не использовался. MD3 был заменен MD4 еще даже до того, как был опубликован или начал использоваться. MD4 создан был, но в двух из трех его проходов были обнаружены слабые места. Они не разбивали алгоритм, но заставили Рона Ривеста достаточно понервничать, чтобы он решил укрепить его, и так был создан MD5, задокументированный в RFC 1321.
Хорошо, ну а если есть SHA-1, был ли SHA-0? Ответ: да. SHA – это стандартная хеш-функция NIST. Он был изобретен NSA в 1993 г. в основном под влиянием MD4. В 1995-м NSA изменило стандарт (новая версия называется SHA-1; старая же сейчас имеет название SHA-0). Агентство утверждало, что это изменение было сделано с целью исправления одного недостатка, хотя никаких подтверждений этому дано не было.
Да, и еще, время от времени в кругах специалистов безопасности и в различных дискуссиях на тему безопасности вам доводилось слышать термин "MAC". В таком контексте MAC (message authentication code) – это не что иное, как просто зашифрованный хеш. Не стоит путать его с уровнем контроля медиадоступа (Media Access Control Layer) в семиуровневой сетевой модели OSI.
Вопросы доверия цифровым подписям
Цифровые подписи неидеальны, поскольку остается проблема доказательства того, "кто" действительно подписал, так как доверие, по сути дела, относится к компьютеру, поставившему цифровую подпись, а не к человеку.
Если компьютер скомпрометирован или если скомпрометирован закрытый ключ человека, вполне возможно выдать себя за этого человека и поставить за него цифровую подпись. Таким образом, доверие должно быть направлено на подписывающий компонент (машина, код и т. д.).
Исходя из общей безопасности подписывающего устройства (т. е. компьютера пользователя) и практики помещения ключей на депонент (где они технически доступны администраторам и менеджерам организации), цифровые подписи представляют не большую юридическую ценность для судебной практики. Следовательно, вопрос доверия цифровым подписям в настоящее время следует уравновесить пониманием того факта, что они не способны дать полной и абсолютной гарантии при определении авторства.
1.4.6 Сертификаты открытого ключа
Мы уже видели, каким образом криптография открытого ключа решает проблему необходимости передачи секрета от отправителя к получателю. И хотя ключ все равно еще надо посылать, но это уже открытый ключ, который можно видеть кому угодно, поскольку он полезен для взломщика только в том случае, если у последнего есть и соответствующий закрытый ключ. Однако это обходит стороной один критический элемент доверия: как вы можете быть уверены в том, что открытый ключ действительно пришел от того, от кого вы думаете?
Одно решение состоит в том, чтобы передавать открытые ключи только тем, кого вы знаете. Боб и Алиса знают друг друга долгое время (фактически люди уже начали разговаривать), поэтому они могли бы обменяться своими открытыми ключами на дискетах. Но для других случаев жизни вам понадобится некий способ быть уверенными в том, что открытый ключ является аутентифицированным.
Механизмом для реализации этого является сертификат открытого ключа. Это такая структура данных, в которой содержится открытый ключ плюс информация о его владельце, все подписанное цифровой подписью доверенной третьей стороны. И сейчас, когда Алиса хочет выслать Бобу свой открытый ключ, на самом деле она посылает сертификат. Боб получает сертификат и проверяет подпись. Если подпись подписавшего принадлежит тому, кому он доверяет, значит, можно принять за истину, что это действительно ключ Алисы.
Сертификаты в реальной жизни намного сложнее по сравнению с этим. Описания того, как они используются в различных ситуациях, приведены в последующих лекциях этого курса в разделах, подробно рассказывающих об SSL и системе безопасности Notes.
1.4.7 Стандарты криптографии открытого ключа
Во всех этих криптографических инструментах и техниках немного пользы набора соответствующих, хорошо согласованных стандартов для обеспечения базиса для функциональной совместимости. Эти стандарты называются стандартами криптографии открытого ключа (PKCS, Public Key Cryptographic Standards).
PKCS является набором неофициальных независимых от поставщика стандартов, разработанных в 1991 г. компанией RSA Laboratories при участии Apple, Digital, Lotus, Microsoft, MIT, Northern Telecom, Novell и Sun. С самого момента своего опубликования в июне 1991 г. PKCS стал частью нескольких стандартов и продуктов, включая Notes и Domino.
Эти стандарты охватывают RSA шифрование, соглашение о ключах Диффи–Хелмана, шифрование паролем, синтаксис расширенного сертификата, синтаксис криптографического сообщения и синтаксис запроса сертификата, а также выделяемые атрибуты.
В настоящее время определены следующие стандарты:
- PKCS #1: стандарт шифрования RSA;
- PKCS #2: (см. примечание ниже);
- PKCS #3: стандарт соглашения о ключах Диффи–Хелмана;
- PKCS #4: (см. примечание ниже);
- PKCS #5: стандарт шифрования паролем;
- PKCS #6: стандарт синтаксиса расширенного сертификата;
- PKCS #7: стандарт синтаксиса криптографического сообщения;
- PKCS #8: стандарт синтаксиса информации о закрытом ключе;
- PKCS #9: типы выделяемых атрибутов;
- PKCS #10: стандарт синтаксиса запроса сертификата;
- PKCS #11: стандарт интерфейса криптографического жетона;
- PKCS #12: стандарт синтаксиса обмена персональной информацией;
- PKCS #13: стандарт криптографии эллиптической кривой;
- PKCS #15 (Чек): стандарт формата информации на криптографическом жетоне.
Примечание. PKCS-2 и PKCS-4 входят в PKCS-1.
В этом курсе для нас особый интерес представляют PKCS #1, PKCS #7, PKCS #10, PKCS #11 и PKCS #12.
PKCS #1 описывает метод шифрования данных при помощи криптосистемы открытого ключа RSA. Он предназначен для построения цифровых подписей и цифровых упаковок, которые описаны в PKCS #7. Также PKCS #1 описывает синтаксис открытого и закрытого ключей RSA. Синтаксис открытого ключа по PKCS #1 идентичен описанному в стандарте X.509.
PKCS #7 описывает стандарт синтаксиса криптографического сообщения. Он определяет синтаксис нескольких видов криптографически защищенных сообщений, включая зашифрованные сообщения и сообщения с цифровыми подписями. PKCS #7 стал базисом для стандарта безопасного многоцелевого расширения интернет-почты (SMIME, Secure Multipurpose Internet Mail Extension), который дает унифицированный метод шифрования браузерной электронной почты. У PKCS #7 есть и другие применения, такие, как использование в PKCS #12.
PKCS #10 описывает синтаксис для запросов сертификата. Запрос сертификата состоит из уникального имени, открытого ключа и из дополнительного набора атрибутов на выбор. Все это подписывается содержимым запрашиваемого сертификата. Запросы на сертификат посылаются сертификационному специалисту, который преобразует полученный запрос в сертификат открытого ключа X.509.
PKCS #12 описывает синтаксис импорта-экспорта личной идентификационной информации, в которую входят закрытые ключи, сертификаты, различные секреты и расширения. Этот стандарт поддерживается такими приложениями, как Web-браузеры, что позволяет пользователям импортировать и экспортировать один и тот же набор идентификационной информации. Этот стандарт также полезен для импортирования и экспортирования данных со смарт-карт и смарт-жетонов.
Полную информацию о PKCS, включая детальные описания каждого стандарта, можно найти на сайте RSA по следующему адресу:
http://www.rsasecurity.com/products/bsafe/whitepapers/IntroToPKCSstandards.pdf
Она является частью замечательного, всеобъемлющего FAQ13ЧАВО – ЧАсто задаваемые ВОпросы (FAQ, Frequently Asked Questions). поддерживаемого компанией RSA Security Inc., озаглавленного "Часто задаваемые вопросы лаборатории RSA по сегодняшней криптографии, версия 4.1" и находящегося по адресу:
http://www.rsasecurity.com/rsalabs/faq/index.html
1.5 Резюме
В этой лекции мы прошлись по основам ИТ-безопасности и затронули те основные темы, которые необходимы нам для дальнейшего успешного продвижения по остальному материалу курса.
Мы коснулись следующих тем:
- базовая терминология ИТ-безопасности, включая определения основных понятий, таких, как компьютерная система, компьютерная сеть, ИТ-инфраструктура, компьютерная безопасность и классификация информации;
- службы компьютерной безопасности, включая смысл целостности данных, конфиденциальности, идентификации и аутентификации, контроля доступа и подтверждения авторства (невозможность отказа);
- криптографические техники, включая определение криптографии и обсуждения алгоритмов симметричного ключа, алгоритмов асимметричного ключа, гибридного решения, цифровых подписей, сертификатов открытого ключа и стандартов криптографии открытого ключа.
Теперь мы готовы изучить рецепты построения должной инфрастуктуры безопасности, т. е. методологии дизайна систем безопасности. Эти методологии полностью охватываются в следующей лекции и основаны на тех знаниях, которые вы получили в настоящей лекции.