faqs.org.ru

 Главная > Программирование > Общие алгоритмы и методики >

FAQ по криптографии

Секция 2 из 3 - Предыдущая - Следующая
Все секции - 1 - 2 - 3

Абонент B, желающий ЗАШИФРОВАТЬ сообщение для абонента А, выполняет следующие
действия:
    - открытый текст разбивается на блоки, каждый из которых представляется как
      число m, 0 <= m <= (n-1), и преобразуется в блок c, 0 <= c <= (n-1),
      шифрованного текста с = E(n,e,m) = m^e (mod n).
Для РАСШИФРОВАНИЯ абонент А выполняет следующие действия:
    - вычисляет m' = E(n,d,c) = c^d (mod n).

A2:
Если приводить к фундаментальным математическим
проблемам, то все существующие алгоритмы с открытым ключём стремятся
построить таким образом что бы они были похожи на полиномиальные для
владельца секретного ключа и на NP-полные проблемы для всех остальных.
В [1.2, pp. 461-482] приведено
9 таких систем (ну, скажем, популярные ныне элипические кривые это просто
смена конечного поля, ещё парочку можно свести к другим, но 6 принципиально
разных алгоритмов имеется).
В тоже время доказательств NP-полноты нет ни у большинства из них, а про RSA
имеются серьёзные подозрения на его полиномиальность.
Всех их можно использовать для шифрования, но большинство (кроме RSA) можно
использовать для одновременной аутентификации за те же деньги. Поэтому более
корректно сказать, что RSA можно использовать только для шифрования (в нём
даже ЭЦП является формой шифрования, так и пишут: encrypted digest :)


IV. Хэш-функция.

Q: Что такое хэш-функция (hash, hash-function)?

A: Это преобразование, получающее из данных произвольной длины некое значение
(свертку) фиксированной длины. Простейшими примерами являются контрольные
суммы (например, crc32). Бывают криптографические и программистские хэши.
Криптографический хэш отличается от программистского следующими
двумя свойствами: необратимостью и свободностью от коллизий.
Обозначим m -- исходные данные, h(m) -- хэш от них. Необратимость
означает, что если известно число h0, то трудно подобрать m такое,
что h(m) = h0. Свободность от коллизий означает, что трудно
подобрать такие m1 и m2, что m1 != m2, но h(m1) = h(m2).
Криптографические хэш-функции разделяются на два класса:
 - хэш-функции без ключа (MDC (Modification (Manipulation) Detect Code) - коды),
 - хэш-функции c ключом (MАC (Message Authentication Code) - коды).
Хэш-функции без ключа разделяются на два подкласса:
 - слабые хэш-функции,
 - сильные хэш-функции.
Слабой хэш-функцией назывется односторонняя функция H(x), удовлетворяющая
следующим условиям:
    1) аргумент х может быть строкой бит произвольной длины;
    2) значение H(x) должно быть строкой бит фиксированной длины;
    3) значение H(x) легко вычислить;
    4) для любого фиксированного x вычислительно невозможно найти другой
       x' != x, такой что H(x')=H(x).
Пара x' != x, когда H(x')=H(x) называется коллизией хэш-функции.
Сильной хэш-функцией называется односторонняя функция H(x), удовлетворяющая
условиям 1-3 для слабой хэш-функции и свойству 4':
    4') вычислительно невозможно найти любую пару x' != x, такой что
        H(x')=H(x).
Поскольку из свойств 1-2 следует, что множество определения хэш-функции
значительно шире множества значений, то коллизии должны существовать.
Свойство 4 требует, чтобы найти их для заданного значения х было практически
невозможно. Требование 4' говорит о том, что у сильной хэш-функции
вычислительно невозможно вообще найти какую-либо коллизию.


Хэш-функцией с ключом (MAC) называется функция H(k,x) удовлетворяющая
свойствами:
    1) аргумент х функции H(k,x) может быть строкой бит произвольной длины;
    2) значение H(k,x) должно быть строкой бит фиксированной длины;
    3) при любых k и x легко вычислить H(k,x);
    4) для любого х должно быть трудно вычислить H(k,x) не зная k;
    5) должно быть трудно определить k даже при большом числе неизвестных
       пар {x, H(k,x)} при выбранном наборе х или вычислить по этой информации
       H(k,x') для x' != x.


Q: А зачем она нужна?

A: Дело в том, что многие криптографические преобразования (в частности,
вычисление и проверка электронной цифровой подписи, ЭЦП) выполняются над
данными фиксированного размера. Поэтому перед простановкой электронной
подписи под многомегабайтным файлом обычно рассчитывают значение хэш-функции
от него, а уже от этого значения считают ЭЦП. Кроме того, удобно, например,
пароли в базе хранить не в открытом виде, а в хэшированном (так сделано
во всех юниксах).


Q: А какие есть алгоритмы хэш-функций?

A: Вот некоторые из них:

MD2
Автор: RFC 1319, "The MD2 Message Digest Algorithm", Burt Kaliski, 1992.
Размер: 128 бит.

MD4
Автор: RSA Data Security
Размер: 128 бит.

MD5
Капитально переделанный MD4.
Каждая итерация алгоритма состоит из 64 операций.
Недавно обнаружена нестойкость к обнаружению коллизий [2.1.9, 2.1.10, 2.1.11],
но пока не построена настоящая атака на эту функцию.
Автор: RSA Data Security
Размер: 128 бит.

SHA (Secure Hash Standard)
Один из (относительно) новых алгоритмов свертки.
Функция предложена в качестве национального стандарта США.
Каждая итерация алгоритма состоит из 80 операций.
Автор: NIST (National Institut of Standards and Technology)
FIP-180 (Federal Information Processing Standards Publication 180)
ANSI X9.30-2, "American National Standard, Public-Key Cryptography Using
Irreversible Algorithms for the Financial Services Industry", 1993.
FIPS PUB 180, "Secure Hash Standard", 1993
FIPS PUB 180-1, "Secure Hash Standard", 1994
Размер: 160 бит.

ГОСТ Р34.11-94
Российский алгоритм. Размерность получаемого значения очень удобна
для формирования по паролю ключа для ГОСТ 28147-89.
Автор: Стандарт ГОСТ Р 34.11-94 разработан ГУБС
ФАПСИ и ВНИИС, внесён ТК 22 "Информационная технология" и ФАПСИ, принят и
введён в действие Госстандартом России 23.05.94.
Размер: 256 бит.


V. Электронная цифровая подпись.

Q: Что такое электронная цифровая подпись (ЭЦП)?

A: ЭЦП - это для автора документа способ убедить читателей в том,
что автор - именно он. Способ работает примерно так.
Вначале автор документа (файла и т.п.) должен сгенерировать
пару ключей, один секретный, один открытый. Секретный ключ
он оставляет при себе, открытый - передает всем потенциальным
читателям (под роспись, или по другому доверенному каналу).
Теперь при необходимости послать документ автор вычисляет
некоторое число (ЭЦП), которое зависит от самого файла и от
секретного ключа. Без знания секретного ключа это число подобрать
крайне сложно.
Получатель вычисляет другое число на основе полученного файла,
полученной ЭЦП и открытого ключа. Если получилась 1 - значит,
документ не был искажен, и автор соответствует предполагаемому.
Если получился 0 - значит, это подделка.
Несложно понять, что эту систему правильнее было бы назвать
"Электронная цифровая печать", так как подпись - это нечто
индивидуальное. А печать (как и секретный ключ) можно
украсть, со всеми вытекающими.

RSA.
ПРЕДВАРИТЕЛЬНО:
     - те же предварительные действия что и для криптосистемы RSA.
ВЫЧИСЛЕНИЕ ПОДПИСИ:
    - c = H(m)^d (mod n) (H(m) - результат хэширования сообщения m);
ПРОВЕРКА ПОДПИСИ:
    - проверка равества H(m) == c^e (mod n).
      ('==' - операция сравнения (это не больше или меньше :-)))
Авторы: Рональд Райвест (R. Rivest), Ади Шамир (A. Shamir)
и Леонард Аделман (L. Adleman)
Размеры ключей: любые, размер модуля выбирается обычно не менее
2048 бит (соответственно сумма длин e и d примерно равна длине n)
Размер подписи: Равен длине модуля.

ElGamal
ПРЕДВАРИТЕЛЬНО:
1. Во всей сети выбираются простое число p, p=2q+1, q - простое число и Alfa -
образующая поля GF(p).
При специальном выборе параметров p и Alfa становится возможным подделывать
подписи. Это доказывается в [3.4.2].
Этот факт может быть использован, если параметры системы порождаются
централизованно. Тогда тот, кто их порождает, может подделывать подписи всех
обслуживаемых им участников.
2. Во всей сети выбирается хэш-функция H со значениями в поле GF(p)
3. Абонент случайным образом генерирует свой секретный ключ x из интервала
   {2,...,p-1}, который сохраняет в тайне.
4. Абонент вычисляет свой открытый ключ y=Alfa^x (mod p), который рассылает
   своим корреспондентам.

ВЫЧИСЛЕНИЕ ПОДПИСИ:
1. Абонент выбирает случайное число k {1,...,p-1}, взаимно простое с p-1
2. Абонент вычисляет r=Alfa^k (mod p)
3. Абонент вычисляет s=(1/k)*(H(m)-rx) (mod (p-1)), где H(m) - хэш-функция
   от подписываемого сообщения.
4. Абонент уничтожает k.
5. Абонент посылает свое сообщение m вместе с подписью (r,s).

ПРОВЕРКА ПОДПИСИ:
1. Корреспондент проверяет r и s принадлежат {1,...,p-1}
2. Корреспондент проверяет сравнение Alfa^H(m) == (y^r)*(r^s) (mod p)
Если хотя бы одно из условий проверки не выполнено, то считается что
подпись неверна.
Автор: El Gamal
Размеры ключей: зависят от реализации
Размер подписи: подпись состоит из двух чисел, каждое из которых имеет длину,
равную длине секретного элемента

DSS
Стандарт США DSS (Digital Signature Standard) [3.4.3] является развитием
схемы Эль Гамаля, но при той же надежности в смысле дискретного логарифма
требует возведения в меньшую степень.
Кроме того, при разработке стандарта были учтены другие недостатки схемы
Эль Гамаля, например, упомянутый выше способ подбора ненадежных параметров
системы. Еще одним побудительным мотивом при разработке DSS явилось желание
сократить время создания подписи за счет времени проверки
(как раз наоборот по сравнению с RSA).
Замечание: В отличие от схем RSA и Эль Гамаля, одна и та же подпись может
соответствовать сообщениям с различной хэш-суммой.
Замечание: Поскольку для простых чисел специального вида существуют
эффективные алгоритмы вычисления дискретного логарифма, участник, выбирающий
для других участников параметры системы, может выбрать их так, чтобы
впоследствии найти их секретные ключи.
Размеры ключей: 512-1024 с шагом 64 бита.
Размер подписи: Два числа примерно по 160 бит.

ГОСТ Р34.10
Российский федеральный стандарт на цифровую подпись [3.4.5] во многом аналогичен
стандарту DSS и основан на алгоритме Эль-Гамаля.
ПРЕДВАРИТЕЛЬНО:
1. Во всей сети выбираются простые числа p и q : p-1 делится на q.
2. Во всей сети выбирается целое число Alfa, такое что:
1 < Alfa < p-1, Alfa^q(mod p) = 1
3. Во всей сети выбирается хэш-функция H со значениями {1,...,q-1}
(алгоритм вычисления функции хэширования установлен в ГОСТ Р 34.11.)
4. Абонент случайным образом генерирует свой секретный ключ x из интервала
   {1,...,q-1}, который сохраняет в тайне.
5. Абонент вычисляет свой открытый ключ y=Alfa^x (mod p), который рассылает
   своим корреспондентам.

ВЫЧИСЛЕНИЕ ПОДПИСИ:
1. Вычислить h(M) - значение хэш-функции h от сообщения M.
   Если h(M)(mod q) = 0, присвоить h(M) значение 1.
2. Выработать целое число k, 0 < k < q.
3. Вычислить два значения:
   r = a**k(mod p) и r' = r(mod q).
Если r' = 0, перейти к этапу 2 и выработать другое значение числа k
4. С использованием секретного ключа x пользователя (отправителя сообщения)
вычислить значение s = (x*r' + k*h(M)) (mod q).
Если s = 0, перейти к этапу 2, в противном случае закончить работу алгоритма.

Подписью для сообщения M является вектор <r'>(256 бит)||<s>(256 бит).


ПРОВЕРКА ПОДПИСИ:
1. Проверить условия: 0 < s < q и 0 < r' < q
Если хотя бы одно из этих условий не выполнено, то подпись считается
не действительной.
2. Вычислить h(M1) - значение хэш-функции h от полученного сообщения M1.
Если h(M1)(mod q) = 0, присвоить h(M1) значение 1.
3. Вычислить значение v = (h(M1))**(q-2) (mod q).
4. Вычислить значения z1 = s*v (mod q) и z2 = (q - r')*v (mod q)
5. Вычислить значение u = (a**z1 * y**z2 (mod p)) (mod q).
6. Проверить условие: r' = u


Автор: ГУБС ФАПСИ и ВНИИС - авторы стандарта. Сам алгоритм (ядро стандарта) -
T. ElGamal
Размеры ключей: Размеры секретного ключа 256 бит.
Размеры открытого ключа 512 бит и 1024 бит. ФАПСИ сертифицирует 512 бит
только до 2002 года (ввод в эксплуатацию), соотвественно плюс от 3 до 10 лет
гарантированного качества.
Размер подписи: 2 числа по 256 бит


Q: Получается, что открытый ключ никак не защищен? Как проверяющий подпись
может быть уверен, что имеющийся у него для проверки открытый ключ
действительно принадлежит автору сообщения?
A: Для этого используются не просто открытые ключи, а их сертификаты,
формируемые Центром Сертификации Ключей (Центром Распределения Ключей,
Certificate Authority). В качестве центра сертификации выбирается организация,
которой доверяют все участники обмена и которой они лично предъявляют свои
открытые ключи. Центр формирует из собранных ключей сертификаты путем
подписания их своей электронной подписью. После этого каждый участник получает
сертификат (собственный открытый ключ, подписанный центром) и открытый ключ
центра. Теперь при установлении связи корреспонденты обмениваются не просто
открытыми ключами, а сертификатами, что дает возможность однозначно
идентифицировать второго участника обмена путем проведения процедуры проверки
электронной подписи центра под его сертификатом.
Существуют рекомендации X.509, в которых описано, что должен в себя включать
сертификат.
Содержание сертификата по рекомендации X.509:
- номер сертификата;
- имя владельца сертификата;
- имя Центра сертификации, выдавшего сертификат;
- идентификатор алгоритма подписи, используемого для подтверждения
  подлинности сертификата;
- открытый ключ (собственно, то, ради чего весь этот цирк :) );
- срок действия сертификата;
- подпись всей этой информации на секретном ключе Центра сертификации.
См. также ответ на вопрос про fingerprint.


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: Насколько стойким является шифрование ZIP-архива с паролем?

A: Как доказал Paul Kocher, его стойкость оценивается в 2^38
   операций. Подробнее см. статью "A Known Plaintext Attack on
   the PKZIP Stream Cipher" (Eli Biham, Paul C. Kocher).
   (http://www.unix-ag.uni-kl.de/~conrad/krypto/pkcrack.html)


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: Ответ на этот вопрос сложно зафиксировать, т.к. очень быстро меняется
производительность техники. Развитие методов криптоанализа тоже не стоит на
месте. Вобщем, лучше почитать статью Ю.Пудовченко на эту тему и перевод FAQ`а
Thomas Pornin. Оба материала доступны на страничке "Криптографический ликбез"
Длины ключей считаются по-разному для симметричных и несимметричных алгоритмов
(и вообще для разных алгоритмов). Правильнее было бы говорить о мощности
ключевого пространства. Так вот, для хороших симметричных алгоритмов в
настоящее время считается достаточной длина ключа в 256 бит (ГОСТ, AES). Если
полностью перебирать все возможные варианты (их придется перебрать в среднем
около 10^77), даже если мы возьмем для этого 10 миллиардов компьютеров, каждый
из которых способен перебрать 10 миллиардов ключей в секунду, то нам
потребуется около 10^49 лет, чтобы найти ключ. Разговор про стойкость
несимметричных алгоритмов, основанных на задаче факторизации, может идти
начиная с ключей длиной 2048 бит (лучше 4096:).


VIII. Практическая эксплуатация.

Q: А зачем вообще эти юридические заморочки? Шифруется и ладно!
A: Математические абстpакции (из коих в частности выpосла кpиптогpафия с
откpытыми ключами) используются в пpикладных вещах, где используются для
доказательства достовеpности сообщения, подтвеpждения автоpства, etc.
после чего включаются законы данной стpаны.

Q: А вот закон об ЭЦП пока не принят, как мне грамотно организовать ее
использование?
A: Придется потрудиться :)
Между тобой и клиентом pисуется (пpимеpное название, можешь обозвать
"пpотоколом", "договоpом" или еще более умно 8-)) "соглашение о пpизнании
данного способа защиты инфоpмации". Высокие договаpивающиеся стоpоны _пpизнают_
данный способ обмена инфоpмацией между собой достовеpным и
_пpинимают_документы_, пеpеданные данным способом _к_ _исполнению_ (будь то
платежки, договоpы, записки "пошли пива нажpемся"), пpи выполнении следующих
условий... (или вытащи это в пpиложение) начинается самая суpьезная часть, где
оговаpиваются такие моменты:

* администpативно - оpганизационные: отдельное, помещение с огpаниченным
доступом, дискеты с ключами только в сейфе - у пpедседателя в своем у главбуха
в своем (это для фоpмиpования ЭЦП), тут за тpемя печатями спpятан эталонный
обpазец софта. откpытые ключи pаспечатаны в двух экземляpах, подписаны и синимя
печятямя 8-)) пpопечатаны. вот этот и этот специальный мужик, ответственны со
своих стоpон за эксплуатацию. вот тута к договоpу пpилагаем ихие должностные
инстpукции (покоpмил собак и ниче не тpогай). поpядок смены (даже в случае
только подозpения о компpометации) ключей и ответственности за их
неpазглашение. особенно оговаpивается, что ежели где чего сдохло в pезультате
чего-то не пpедусмотpенного, то создается комиссия из пpедставителей
заинтеpесованных стоpон и "базаp pазводят по понятиям без стволов и гнилых
базаpов в суде" 8-)) - тpетейский суд или пеpеговоpы (вpоде так это юpидически)

* технические и софтвеpные особенности эксплуатации ТВОЕГО кpиптокомплекса.
типа - балалайка - пень с установленным ДОСом, "СупеpКpиптоСофт", пpогpамма для
мудема и ВСЕ!!

* _особенно_ оговаpивается, что оpигиналы и соответствующие им кpиптотексты
хpанятся "стоко-то" (если пункта нет, то хpани 3 года, в соответствии с ГК),
после чего все пpетензии стоpон посылаются к...


Q: Ну, а если всеже по электронному документу возник спор, что делать?

A: Пpимеpный "поpядок pазpешения конфликтов".
// "непpокоцаный тикет - повод для гнилого базаpа" 8-))
если одна из стоpон чего то начинает опpотестовывать - "не писали, в тексте
д.б. 100 тыщев, а не сто pублев", создается комиссия (+ желательно независимый
экспеpт. это не обязательно кpиптогpаф, если все опеpации в данном документе
пpописаны). и пошли по пунктам: достали эталонный софт, пpовеpили печати на
пакете, вскpыли, установили, взяли опpотестованный документ... далее ваpианты -
либо пpовеpили эцп, pасшифpовав из аpхива и сpавнив с откpытым текстом либо
зашифpовали и сpавнили с вытащенным из аpхива либо... (пpидумай сам - не знаю я
для чего ты всю эту хpень использовать собpался) 8-)) составляем акт: мы,
комиссия в составе... в соответствии с... пpоизвели пpовеpку..., каковая
показала, что козлом является тот-то. дата подпись. этот акт, как пpавило,
является достаточным условием для почти любого аpбитpажного суда.
Эталонную копию софта можно заложить на хранение к нотариусу. А с принятием
"Закона об ЭЦП" и появлением у нас удостоверяющих центров, весь этот разбор
полетов можно (и нужно) будет осуществлять у них. Во-первых, меньше головных
болей, во-вторых, для удостоверения идентичности электронной цифровой подписи
необходимо будет иметь лицензию ФАПСИ.


Q: Так что получается, что для использования ЭЦП мне нужна лицензия?

A: Нет, если вы не собираетесь:
- быть удостоверяющим центром для сторонних организаций;
- распространять средства ЭЦП;
- осуществлять техническое обслуживание средств ЭЦП (у сторонних организаций);
- изготавливать и распространять ключи ЭЦП  для сторонних организаций;
В каких случаях нужна лицензия ФАПСИ читайте в постановлении Правительства
РФ N326 от 11.04.2000. Вопрос о том, требуется ли лицензия для "предоставления
услуг ЭЦП" или нет, не достаточно чётко изложен в действующем законодательстве.


IX. Криптографическое программное обеспечение (ссылки и краткое описание).

Q: Я не хочу глубоко вникать во все эти тонкости, где найти готовое?

A: Неистребимую жажду халявы гасит интернет:
куча библиотек на все вкусы:
http://www.pscs.umich.edu/LAB/Doc/SwarmStuff/swarm-1.3.1-docs/refbook/swarm.random.sgml.reference.html
Ranlib:   ftp://odin.mda.uth.tmc.edu/pub/source
и зеркало ftp://odin.mda.uth.tmc.edu/pub/msdos
RngPack: аналогично на Java: http://www.honeylocust.com/RngPack/
если хочется взять просто последовательность, то по ФТП можно вытянуть
сидюк целиком или любой из 60 ~10М файлов с "хорошими" случайными
последовательностями. всего на CDROM ок 4.8 миллиардов случайных бит:
ftp://stat.fsu.edu/pub/diehard/cdrom/


Q: Ну, это реализации и библиотеки. А что-нибудь для укрепления теоретических
знаний?
A: Для начала рекомендуется посетить приведенные ниже странички. На них уйма
материала и ссылок. Приведены именно эти, т.к. они живут давно и
устойчиво, в то время как другие периодически появляются и исчезают.
- страничка А.Винокурова о блочных шифрах:
  http://www.enlight.ru/crypto
- страничка П.Семьянова "Криптографический ликбез"
  http://www.ssl.stu.neva.ru/psw/crypto.html
- http://home.od.ua/~blackw/Crypt/crypt.html


Q: А у меня напряги с интернетом. В бумажном виде что посоветуете?

A: Вот список, разбитый по разделам:

        1. Литература общего характера

1. Gilles Brassard. Modern Cryptology. - Berlin etc.: Springer-Verlag, 1988.
(Lecture Notes in Computer Science; 325).

2. Bruce Schneier Applied Cryptography: Protocols, Algorithms and Source Code
in C. - John Wiley & Sons, 1993. - 618 p.

3. Мафтик С. Механизмы защиты в сетях ЭВМ: Пер. с англ. - М.: Мир, 1993. - 216
с.

4. Дориченко С.А., Ященко В.В.: 25 этюдов о шифрах. - М.: Теис, 1994. - 71 с. -
(Математические основы криптологии).

5. Жельников В. Криптография от папируса до компьютера. - М.: ABF, 1996. - 335
с. ISBN 5-87484-054-0

6. Петров А.А. "Компьютерная безопасность. Криптографические методы",
М., "ДМК", 2000, ISBN 5-89818-064-8

7. Под общ. pед. В. В. Ященко, "Введение в кpиптогpафию"
М.: МЦНМО, 2000, 288 c., ISBN 5-900916-65-0, Тиpаж 3000 экз.

8. Варфоломеев А.А., Пеленицын М.Б. "Методы криптографии и их применение в
банковских технологиях",
М.: МИФИ, 1995, 116 с., УДК 681.3.004.4
(тираж 500 экз.)

        2. Криптосистемы с секретным ключом (симметричные)

1. FIPS publication 46 Data Encryption Standard // Federal Information
Processing Standards Publ. - 1977.

2. Eli Biham, Adi Shamir. Differential Cryptanalysis of DES-like cryptosystems
// Journal of Cryptology. - 1991. - + 4(1). - P. 3-72.

3. Eli Biham, Adi Shamir. Differential Cryptanalysis of the full 16-round DES
// Advances in Cryptology - CRYPTO'92. - Berlin etc.: Springer-Vergal, 1993.
(Lecture Notes in Computer Science; 740).

4. Matsui Mitsuru. Linear Cryptoanalysis Method for DES Cipher // Advances in
Cryptology - EUROCRYPT'93. - Berlin ect.: Springer-Vergal, 1994. (Lecture Notes
in Computer Science; 765). - P. 380-397.

5. K.W. Campbell, M.J. Wiener. DES is Not a Group // Advances in Cryptology -
CRYPTO'92. - Berlin etc.: Springer-Vergal, 1993. (Lecture Notes in Computer
Science; 740). - P. 512-520.

6. Merkle R.C., Hellman M.E. On the security of multiple encryption //
Communications of the ACM. - 1981. - Vol. 24. - P. 465-467.

7. ГОСТ 28147-89. Системы обработки информации. Защита криптографическая.
Алгоритм криптографического преобразования.

8. Винокуров А. ГОСТ не прост..., а очень прост! // Монитор. - 1995. - +1. -
С. 60-73.

9. Xuejia Lai, James L. Massey A proposal for a New Block Encryption Standard
// Advances in Cryptology - EUROCRYPT'90. - Berlin ect.: Springer-Vergal, 1991.
(Lecture Notes in Computer Science; 473). - P. 389-404.

10. Willi Meier On the security of the IDEA Block Cipher // Advances in
Cryptology - EUROCRYPT'93. - Berlin ect.: Springer-Vergal, 1994. (Lecture Notes
in Computer Science; 765). - P. 371-385.

    2.1. Аутентификация и идентификация с помощью симметричных криптосистем

1. Yvo Desmedt. Unconditionally secure authentification schemes and practical
and theoretical consequences // Advances in Cryptology - CRYPTO'85. - Berlin
ect.: Springer-Vergal, 1986. (Lecture Notes in Computer Science; 218). -
P.42-55.

2. Robert R. Jueneman. A High Speed Manipulation Detection Code // Advances in
Cryptology - CRYPTO'86. - Berlin ect.: Springer-Vergal, 1987. (Lecture Notes in
Computer Science; 263). - P. 327-346.

3. Bart Preneel, Paul C. van Oorshot. MDx- MAC and Building Fast MACs from
Hash Functions // Advances in Cryptology - CRYPTO'95. - Berlin ect.:
Springer-Vergal, 1995. (Lecture Notes in Computer Science; 963). - P. 1-14.

4. Mihir Bellaro, Joe Kilian, Philip Rogaway. The Security of Cipher Block
Chaining. // Advances in Cryptology - CRYPTO'95. - Berlin ect.:
Springer-Vergal,
1995. (Lecture Notes in Computer Science; 963). - P. 341-358.

5. Bart Preneel, Paul C. van Oorschot. On the Security of Two MAC Algorithms

Секция 2 из 3 - Предыдущая - Следующая

Вернуться в раздел "Общие алгоритмы и методики" - Обсудить эту статью на Форуме
Главная - Поиск по сайту - О проекте - Форум - Обратная связь

© faqs.org.ru