Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #61, ДЕКАБРЬ 2005 г.

Старые добрые пластиковые карты

Андрей Межутков

Спецвыпуск: Хакер, номер #061, стр. 061-036-6


Из-за того, что DES продемонстрировал массу своих недостатков, используется его вариация – режим 3DES, который может использовать два или три ключа. Режим зашифрования на 3 ключах (168 бит ключа и 112 эффективных бит): С=Е(К3,Е(К2,Е(К1,М))). Где С – криптотекст, М – открытый текст, Кn –ключи, Е- режим зашифрования. Расшифрование производится в обратном порядке: М=D(K1, D(K2, D(K3,C))). С аналогичной стойкостью можно использовать всего два ключа (112 эффективных бит ключа). Схема выглядит следующим образом. Режим зашифрования: С=Е(К1,D(К2,Е(К1,М))); расшифрования: M=D(K1, E(K2, D(K1, C))). Единственное ограничение на использование этих режимов (впрочем, как и для одноразового использования) - это проверка используемых ключей на вырожденность или полувырожденность.

Однако все эти ключи известны, и достаточно сделать всего несколько дополнительных проверок при формировании ключей. Для зашифрования и расшифрования используются одни и те же ключи. Вот почему для применения симметричных криптографических алгоритмов критичным является защищенный канал передачи ключей, поскольку их дискредитация приводит к дискредитации всех (!) сообщений, защищенных этими ключами. При этом ввод в действие ключей должен быть одновременным на обоих концах защищаемого канала.

Вторая сложность при использовании симметричных алгоритмов в общем случае - это необходимость иметь множество ключей. Действительно, использование единственного ключа для всех абонентов сети позволяет каждому абоненту читать все сообщения, а при увеличении межабонентских связей число ключей растет в геометрической прогрессии (проблема доставки ключей).

Хэш - это преобразование, получающее из данных произвольной длины некое значение (свертку) фиксированной длины. Простейшими примерами являются контрольные суммы (например crc32).

Бывают криптографические и программистские хэши. Криптографический хэш отличается от программистского двумя свойствами: необратимостью и свободностью от коллизий. Обозначим: m - исходные данные, h(m) - хэш от них. Hеобратимость означает, что если известно число h0, то трудно подобрать m такое, что h(m) = h0. Свободность от коллизий означает, что трудно подобрать такие m1 и m2, что m1 != m2, но h(m1) = h(m2).

Криптографические хэш-функции разделяются на два класса:

1. Хэш-функции без ключа, MDC-коды (Modification/Manipulation Detect Code).

2. Хэш-функции c ключом, MАC-коды (Message Authentication Code).

Хэш-функции без ключа разделяются на два подкласса:

1. Слабые хэш-функции.

2. Сильные хэш-функции.

Слабой хэш-функцией называется односторонняя функция 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 для слабой хэш-функции и свойству:

Назад на стр. 061-036-5  Содержание  Вперед на стр. 061-036-7