Смекни!
smekni.com

Шпаргалки по криптографии (стр. 5 из 8)

Q: Получается, что открытый ключ никак не защищен? Как проверяющий подпись

может быть уверен, что имеющийся у него для проверки открытый ключ

действительно принадлежит автору сообщения?

A: Для этого используются не просто открытые ключи, а их сертификаты,

формируемые Центром Сертификации Ключей (Центром Распределения Ключей,

Certificate Authority). В качестве центра сертификации выбирается организация,

которой доверяют все участники обмена и которой они лично предъявляют свои

открытые ключи. Центр формирует из собранных ключей сертификаты путем

подписания их своей электронной подписью. После этого каждый участник получает

сертификат (собственный открытый ключ, подписанный центром) и открытый ключ

центра. Теперь при установлении связи корреспонденты обмениваются не просто

открытыми ключами, а сертификатами, что дает возможность однозначно

идентифицировать второго участника обмена путем проведения процедуры проверки

электронной подписи центра под его сертификатом.

Существуют рекомендации X.509, в которых описано, что должен в себя включать

сертификат.

Содержание сертификата по рекомендации X.509:

- номер сертификата;

- имя владельца сертификата;

- имя Центра сертификации, выдавшего сертификат;

- идентификатор алгоритма подписи, используемого для подтверждения

подлинности сертификата;

- открытый ключ (собственно, то, ради чего весь этот цирк :) );

- срок действия сертификата;

- подпись всей этой информации на секретном ключе Центра сертификации.

VI. Криптографические протоколы.

DH

Diffie-Hellman. Протокол передачи секретных ключей с использованием

алгоритмов на открытом ключе. Для шифрования данных не используется.

Если обозначить секретный ключ абонента как X, открытый ключ как Y и

установить соответствие между ними как Y=A^X (A в степени X, где A

является константой), то приближенно получение общего секретного

ключа можно записать так.

Каждый участник вычисляет K на основе своего секретного ключа и открытого

ключа другого абонента:

K=Y2^X1=(A^X2)^X1= A^X2X1

K=Y1^X2=(A^X1)^X2= A^X1X2

Как видим, вычисленное на обоих концах канала связи значение K одинаково, при

этом по каналу передавались только значения Y1 и Y2, на основании которых

потенциальный злоумышленник, прослушивавший канал, не сможет вычислить X1 и

X2, равно как и общий секрет K.

KEA

Key Exchange Algorithm. Вариации на тему Diffie-Hellman.

Q: Что такое Perfect Forward Secrecy?

A1. Если мне не изменяет мой склероз, Perfect Forward Secrecy -- это

свойство протокола, заключающееся в том, что захват противником

_криптографических_ параметров не приводит к нарушению

конфиденциальности данных, передаваемых _после_ события захвата.

Пример.

Рассмотрим протокол, в котором передача очередного сообщения

осуществляется следующим образом.

1. Обе стороны генерируют пару секретный ключ - открытый

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

_неконфиденциальному_ каналу, свой открытый ключ.

2. Передающая сторона генерирует свой секретный сеансовый ключ.

3. По протоколу открытого распределения ключей Диффи-Хеллмана

сеансовый ключ передается стороне-получателю.

4. Отправитель шифрует сообщение на сеансовом ключе, отправляет

получателю, а тот расшифровывает его.

5. Каждая из сторон уничтожает все ключи, а именно сеансовый ключ

и свой секретный.

Передача одного сообщения должна являться одной транзакцией.

В этом протоколе ни до, ни после передачи сообщения стороны

не владеют секретной информацией, которая может привести

к раскрытию сообщения или ключей.

A2. Согласно IPSEC, Perfect Forward Secrecy -- это следующее свойство

протокола: компрометация ключа приводит к раскрытию только тех

данных, которые были зашифрованы на этом ключе.

VII. Криптоанализ.

Q: Какие есть методы криптоанализа, атаки на шифры?

A: Распространена следующая классификация: FIXME!

* ciphertext only attack (атака с известным шифртекстом).

* known plaintext attack (атака с известным открытым текстом)

* chosen plaintext attack (атака с выбором открытого текста)

* adaptive chosen plaintext attack (адаптивная атака с выбором открытого текста)

* chosen ciphertext attack (атака с выбором шифртекста)

* adaptive chosen ciphertext attack (адаптивная атака с выбором шифртекста)

* chosen text attack (атака с выбором текста)

* chosen key attack (атака с выбором ключа)

* physical attack - атака, при которой используются физические методы перехвата;

например, так секретный ключ из смарт-карт вынимали - измеряя ток потребления

при шифровании или облучая их гамма-излучением для того, чтобы сбросить ключ

в ноль;

* social engineering attack - позвонить по телефону и грозным голосом приказать

немедленно принести дискетку с ключом по такому-то адресу; :)

* man-in-the-middle attack (атака "человек посередине") - злоумышленник

"разрывает" канал связи и взаимодействует с каждым из участников обмена от

имени другого. Применяется, в частности, против алгоритма распределения ключей

Диффи-Хэллмана. Легко нейтрализуется использованием вместо открытых ключей их

сертификатов.

Рассмотрим подробнее:

Допустим есть два законных абонента A и B, при этом у противника есть два

варианта атаки:

- противник С выдает себя за абонета А и от его имени говорит с B;

- противник C вклинивается между A и B и в протоколе с А выдает себя

за В, а в протоколе с В выдет себя за А, то есть пропускает разговор

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

информацию.

Решение этой проблемы - центр доверия, куда помещаются открытые ключи абонентов

сети. Центру доверия все верят. Предполагается, что Центр доверия не подвержен

атакам.

В частности для рассылки открытых ключей предложена система сертификатов.

Рекомендация X.509 ITU-T описывает эти структуры и предложения по их

использованию.

Q: Hасколько стойким является шифрование ZIP-архива с паролем?

A: Как доказал Paul Kocher, его стойкость оценивается в 2^38

операций. Подробнее см. статью "A Known Plaintext Attack on

the PKZIP Stream Cipher" (Eli Biham, Paul C. Kocher).

Q: А как дешифровать пароли в UNIX, WINDOWS, NetWare? Насколько хорошо они

защищены?

A: В этих системах они защищены по-разному.

Если рассматривать проблему укрупненно, то можно выделить два основных

подхода к хранению паролей, и, соответственно, к используемой схеме

аутентификации.

Первый подход заключается в защищенном хранении паролей на сервере.

При этом, в случае хищения базы с паролями, злоумышленник не сможет

воспользоваться этими данными непосредственно, ему понадобится

произвести некоторое количество преобразований (подчас весьма

сложных), так как пароли преобразованы односторонней функцией, и

узнать их можно только "прогоняя" различные варианты паролей через эту

функцию и сравнивая результат; в данной ситуации, это - единственный

способ дешифрования. Очевидно, что при таком подходе пользователь

должен предъявлять серверу пароль в открытом виде, чтобы последний,

произведя над ним соответствующее преобразование, сравнил полученный

результат с записью в базе паролей. Ну, а коль скоро пароль

предъявляется в открытом виде, возможен его перехват при передаче по

каналам связи. Конечно, если использовать даже самую сложную функцию

вида:

y=f(x) (1)

где x - пароль, а y - значение односторонней функции (как правило, в

качестве односторонней используется хэш-функция, которая должна

обладать, как минимум, следующими характеристиками: ее значение имеет

фиксированный размер независимо от размера параметра, а подбор

параметра под заданное значение является сложной задачей), то

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

Злоумышленнику в этом случае достаточно будет один раз обработать

большой словарь и в дальнейшем просто определять пароль по значению

функции. Чтобы устранить эти недостатки в процесс вычисления вводят

дополнительный элемент - salt, который для каждой генерации пароля

выбирается случайным образом, после чего формула (1) приобретает вид:

y=f(salt,x) (2)

а в базе паролей на сервере хранится пара чисел (salt,y). Такой подход

к защите паролей применяется в большинстве UNIX-систем. В качестве

преобразования (2) используется алгоритм шифрования DES (x выступает в

роли ключа шифрования), либо алгоритм хэширования MD5.

Другой подход направлен на невозможность перехвата пароля при его

передаче. В этом случае пользователь доказывает серверу, что ему

известен правильный пароль, не путем предъявления его в открытом виде,

а путем вычисления над предложенным сервером числом некоей функции,

зависящей также и от пароля. В простейшем случае это может быть

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

пароль. Естественно, что для проверки значения функции, присланного

пользователем, серверу необходимо повторить данное преобразование, а

для этого, в свою очередь, он должен обладать паролем в открытом виде.

Схема похожа на предыдущую, изменяется только место вычисления

односторонней функции, а роль salt играет высылаемое сервером число.

Очевидно, что при этом способе осуществления аутентификации,

необходимо принять меры по недопущению несанкционированного доступа к

базе паролей на сервере. Такой подход применяется в семействе ОС

Novell NetWare, а также Windows NT.

Про атаки типа brute-force лучше прочитать отдельно для каждой системы.

Для unix-подобных систем (и не только) см. программу John-The-Ripper.

(primary site http://www.false.com/security/john/)

Для windows (pwl) - PWLCrack

(primary site http://www.geocities.com/SiliconValley/Hills/7827)

Для NetWare 3.x - http://cybervlad.port5.com/nwpass/index.html (или более

полную версию - netware.pdf, там же).

Q: Какова минимально безопасная длина ключа?

A: Ответ на этот вопрос сложно зафиксировать, т.к. очень быстро меняется

производительность техники. Развитие методов криптоанализа тоже не стоит на