- •1. Общие положения
- •1.2. Когда и зачем нужно защищать информацию?
- •1.3. Язык сообщения
- •1.4. Тайнопись
- •1.5. Коды и их назначение
- •1.6. Криптография и криптоанализ
- •1.7. Основной объект криптографии
- •1.8. Что такое ключ
- •1.10. Сложность вскрытия шифра
- •1.9. Атака на шифр. Стойкость шифра
- •1.11. Принцип Кирхгофа
- •2. Древняя история криптографии
- •3. Современная криптография
- •3.1. Классификация криптографических систем
- •3.2. Основные классы симметричных криптосистем
- •3.3. Шифр замены
- •3.4. Шифр перестановки
- •3.5. Шифр Энигмы
- •4. Блочные шифры
- •4.1. Общие сведения о блочных шифрах
- •4.2. Сеть Фейштеля
- •4.3. Шифр взбивания. Стандарт des
- •4.3.1. Описание алгоритма
- •4.3.2. Анализ эффективности алгоритма
- •4.4. Отечественный стандарт шифрования данных
- •4.4.1. Режим простой замены
- •4.4.2. Режим гаммирования
- •4.4.3. Режим гаммирования с обратной связью
- •4.5. Режимы применения блочных шифров
- •5. Новый криптостандарт блочного шифрования сша
- •5.1. Общие сведения о конкурсе aes
- •5.1.1. Финалист aes – шифр mars
- •5.1.2. Финалист aes – шифр rc6
- •5.1.3. Финалист aes – шифр Serpent
- •5.1.4. Финалист aes – шифр TwoFish
- •5.2. Победитель aes – шифр Rijndael
- •6. Поточные шифры
- •6.1. Регистры сдвига с обратной связью
- •6.2. Шифр a5
- •6.3. Шифр rc4
- •6.4. Шифр seal
- •7. Асимметричные криптосистемы
- •7.1. Общие сведения об асимметричных криптоалгоритмах
- •7.2. Односторонние функции и функции-ловушки
- •7.3. Алгоритм rsa
- •Длина ключа
- •Применение rsa
- •7.4. Криптосистема Эль-Гамаля
- •7.5. Алгоритм Диффи-Хелмана
- •7.6. Механизм распространения открытых ключей
- •7.6.1. Обмен ключами по алгоритму Диффи-Хеллмана
- •8. Сравнительная характеристика шифров
- •9. Электронные цифровые подписи
- •9.1. Постановка задачи
- •9.2. Алгоритмы электронной цифровой подписи
- •9.2.1. Цифровые подписи, основанные на асимметричных криптосистемах
- •9.2.2. Стандарт цифровой подписи dss
- •9.2.3. Стандарт цифровой подписи гост р 34.10-94
- •9.3. Цифровые подписи, основанные на симметричных криптосистемах
- •9.4. Функции хэширования
- •9.4.1. Функция хэширования sha
- •9.4.2. Функция хэширования гост р 34.11-94
- •9.4.3. Функция хэширования md5
- •Библиографический список
- •Оглавление
7.6.1. Обмен ключами по алгоритму Диффи-Хеллмана
Данный параграф посвящен еще одному интересному алгоритму, который достаточно трудно классифицировать. Он помогает обмениваться секретным ключом для симметричных криптосистем, но использует метод, очень похожий на асимметричный алгоритм RSA. Алгоритм назван по фамилиям его создателей Диффи (Diffie) и Хеллмана (Hellman).
Определим круг его возможностей. Предположим, что двум абонентам необходимо провести конфиденциальную переписку, а в их распоряжении нет первоначально оговоренного секретного ключа. Однако, между ними существует канал, защищенный от модификации, то есть данные, передаваемые по нему, могут быть прослушаны, но не изменены (такие условия имеют место довольно часто). В этом случае две стороны могут создать одинаковый секретный ключ, ни разу не передав его по сети, по следующему алгоритму.
Предположим, что обоим абонентам известны некоторые два числа v и n. Они, впрочем, известны и всем остальным заинтересованным лицам. Например, они могут быть просто фиксированно "зашиты" в программное обеспечение. Для того, чтобы создать неизвестный более никому секретный ключ, оба абонента генерируют случайные или псевдослучайные простые числа : первый абонент – число x, второй абонент – число y. Затем первый абонент вычисляет значение (vx) mod n и пересылает его второму, а второй вычисляет (vy) mod n и передает первому. Злоумышленник получает оба этих значения, но модифицировать их (вмешаться в процесс передачи) не может. На втором этапе первый абонент на основе имеющегося у него x и полученного по сети (vy) mod n вычисляет значение (((vy) mod n)x)mod n, а второй абонент на основе имеющегося у него y и полученного по сети (vx) mod n вычисляет значение (((vx) mod n)y)mod n. На самом деле операция возведения в степень переносима через операцию взятия модуля по простому числу (то есть коммутативна в конечном поле), то есть у обоих абонентов получилось одно и то же число : ((vx*y) mod n. Его они и могут использовать в качестве секретного ключа, поскольку здесь злоумышленник снова встретится с проблемой RSA при попытке выяснить по перехваченным (vx) mod n и (vy) mod n сами числа x и y – это очень и очень ресурсоемкая операция, если числа v,n,x,y выбраны достаточно большими.
Необходимо еще раз отметить, что алгоритм Диффи-Хеллмана работает только на линиях связи, надежно защищенных от модификации. Если бы он был применим на любых открытых каналах, то давно снял бы проблему распространения ключей и, возможно, заменил собой всю асимметричную криптографию. Однако, в тех случаях, когда в канале возможна модификация данных, появляется очевидная возможность вклинивания в процесс генерации ключей "злоумышленника-посредника" по той же самой схеме, что и для асимметричной криптографии.
8. Сравнительная характеристика шифров
Определим некоторое число характерных признаков, которые можно использовать для установления различия между шифрами. Примем также, что каждый блок или знак сообщения шифруется отдельно в определенном порядке. При этом условии выделяют 4 характерных признака классификации криптографических систем.
Нужно определить, над какими объектами исходного текста производятся криптографические преобразования: над отдельными битами, байтами или блоками. Например, в шифре Энигмы операции производятся побайтно, а в DES оперируют одновременно со множеством бит, называемом блоком. Свойство системы использовать блоки бит называется блочностью.
Функции шифрования могут зависеть от знаков сообщения. Зависимость функции сообщения от знаков сообщения называется сверточностью. В системах, обладающих свойством сверточности, будет наблюдаться размножение ошибок: если при передаче исказится хотя бы один бит шифровки, то после расшифровывания текст будет содержать некоторое количество ошибок.
Шифрование отдельных знаков сообщения может зависеть от их положения в тексте. В приведенном примере сверточного шифрования различные знаки сообщения шифруются с учетом их положения. Поэтому потеря при передаче любой части текста шифровки приведет к неправильному расшифровыванию всех последующих частей сообщения. Независимость знаков шифра от их положения в исходном тексте называется транзитивностью.
Системы шифрования могут быть как симметричными, с одним ключом, так и асимметричными, с разными ключами для шифрования и расшифровывания. Основное отличие между ними состоит в том, что в асимметричной системе знание одного ключа недостаточно для раскрытия соответствующего ему второго ключа.
Тип систем |
Блочность |
Сверточность |
Транзитивность |
Симметричность |
Потоковые |
- |
- |
- |
+ |
Блочные |
+ |
- |
+ |
- |
С открытым ключом |
+ |
- |
+ |
+ |
Сверточные |
+ |
+ |
+ |
+ |
В данной таблице приведены свойства систем шифрования. Для реализации потокового шифрования нужно сконструировать генератор ключевой последовательности, выход которого используется для познакового шифрования открытого текста. К преимуществам потоковых шифров относятся отсутствие размножения ошибок, простая реализация и высокая скорость шифрования. Основным недостатком является необходимость передачи информации синхронизации перед заголовком сообщения, которая должна быть принята до расшифровывания любого сообщения. Это связано с тем, что если два различных сообщения шифруются на одном и том же ключе, то для расшифровывания этих сообщений должна использоваться одна и та же ключевая последовательность. Это может создать угрозу криптографической стойкости системы. Поэтому всегда необходимо применять дополнительный, случайно выбираемый ключ, который передается в начале сообщения и используется для модификации основного ключа шифровки.
Потоковые шифры широко используются в военных системах для шифрования данных и преобразования в цифровую форму речевых сигналов. Кроме этого, потоковые шифры используются в системах шифрования каналов передачи данных, где их непрерывное действие препятствует эффективному криптоанализу.
Стандартным методом потокового шифрования является вариант шифрования DES. Известные следующие продукты: микросхема HS3447 Cipher I фирмы Harris Semiconductor, алгоритм B152 в приборе B-CRYPT фирмы British Telecom, за $1000 Mesa432 фирмы Western DataCom, реализующий стандарт передачи данных V.32 и за $5000 Secure фирмы Cylink со стандартом X.25.
Главное свойство блочного шифрования состоит в том, что каждый бит блока текста шифровки является функцией почти всех бит соответствующего блока открытого текста, и никакие два блока открытого текста не могут быть представлены одним и тем же блоком текста шифровки. Основное преимущество простого блочного шифрования состоит в том, что в хорошо сконструированной системе небольшие изменения открытого текста или ключа вызывает большие и непредсказуемые изменения в тексте шифра.
Но есть и недостатки.
Если ко всем блокам применить один и тот же ключ, то даже при сравнительно большой длине блока (как в DES) возможен криптоанализ "со словарем". Блок небольшого размера может повторяться в сообщении вследствии большой избыточности открытого текста. Это может привести к тому, что идентичные блоки открытого текста в сообщении будут представлены идентичными блоками текста шифровки. Это даст шанс криптоаналитику в угадывании текста и атаке на ключ.
Размножение ошибок внутри блока. Результатом изменения одного бита в принятом блоке шифровки будет неправильное расшифрование всего блока.
Поэтому простейшие блочные шифры не употребляются для шифрования длинных сообщений. Но в финансовых учреждениях, где сообщения состоят из одного-двух блоков, блочные шифры типа DES широко применяются в простейшем варианте. Т.к. использование этого варианта связано с необходимостью частой смены ключа шифрования, то вероятность шифрования двух идентичных блоков открытого текста на одном и том же ключе мала.
Возможно образование смешанных систем потокового и блочного шифрования с использованием лучших свойств каждого из этих шифров. В таких системах потоковое шифрование комбинируется с перестановками бит в блоках. Открытый текст сначала шифруется как при обычном потоковом шифровании. Затем полученный текст шифровки разбивается на блоки фиксированного размера и в каждом блоке дополнительно производится перестановка под управлением ключа. В результате получается шифр, не размножающий ошибки, но обладающий дополнительным свойством, которого нет у потокового шифра замены на основании XOR: перехватчик не знает, какому биту открытого текста соответствует бит текста шифровки. Поэтому зашифрованное таким образом сообщение становится труднее вскрыть.
Криптографическая система с открытым ключом представляет собой систему блочного шифрования, оперирующей с блоками большой длины. Это обусловлено тем, что криптоаналитик, знающий открытый ключ шифрования, мог бы предварительно вычислить и составить таблицу соответствующих блоков открытого текста и шифровки. Если длина блока мала, то число возможных блоков будет небольшим и может быть составлена полная таблица, дающая возможность моментального расшифрования любого шифрованного сообщения с использованием известного открытого ключа. Ни один алгоритм шифрования с открытым ключом не может быть применен для каналов с большой скоростью. Это значит, что использование таких систем для блочного шифрования ограничено лишь распределением ключей, аутентификацией и формированием цифровой подписи.
Системы шифрования на основе свертки встречаются в различных практических вариантах. Применение криптографических систем блочного шифрования в сочетании со сверткой дает ряд преимуществ.
Возможность использования для обнаружения манипуляций с сообщениями, производимых активными перехватчиками. При этом используется факт размножения ошибок, а также способность этих систем генерировать код аутентификации сообщений.
Такие шифры, в отличие от блочных, могут не требовать начальной синхронизации. Это значит, что если какая-то часть сообщения будет пропущена при приеме, то оставшаяся часть его все равно может быть расшифрована.
Недостатки:
Размножение ошибок. Один ошибочный бит при передаче вызовет блок ошибок в расшифрованном тексте. При этом требование увеличения зависимости одного знака текста шифровки от как можно более длинного его предшествующего участка повышает криптографическую стойкость, но противоречит требованию надежности, связанному с размножением ошибок.
Разработка и реализация систем шифрования с обратной связью оказывается более трудным, чем систем потокового шифрования.
Размножение ошибок может быть и положительным свойством, если важно, чтобы данные принимались точно и даже одна ошибка в них недопустима. Т.к. сплошной поток ошибок может быть обнаружен несравненно легче, чем одиночный сбой, то в данном случае размножение ошибок уже не является недостатком шифра.
Стоит упомянуть особый вид сверточного шифрования, представляющий большой практический интерес. В простейшем случае имеем код со скоростью X. Это означает, что каждый бит сообщения ti на выходе схемы кодирования заменяется на два бита, например, ti+ti-1 и ti+ti-1+ti-2. Декодирование этого кода сложно и осуществляется обычно методом динамического программирования. При этом достаточно сохранять в памяти лишь четыре варианта возможных входных последовательностей. В процессе декодирования сохраняются лишь те варианты, которые лучше согласованы с входными данными. Для сверточных кодов со скоростью k/n на k входных бит приходится n выходных комбинаций этих бит. Есть возможность случайным образом управлять этими комбинациями, что и приводит к особому виду шифрования. Его свойства следующие.
Декодирование этого шифра сложно, но может быть выполнено в реальном времени с минимальной задержкой.
Есть возможность создания шифров, устраняющих ошибки.
Можно управлять размножением ошибок. Например, выбор выходных комбинаций бит ti+ti-1 и ti+ti-2 в коде со скоростью X при двух искажениях в трех последовательных битах приводит к тому, что ошибки начнут катастрофически размножаться.
Таким образом, существует возможность реализации в одном алгоритме целого набора шифров, резко различающихся по своим свойствам. К недостаткам таких шифров относят увеличение объема сообщения с преобразованием его в шифровку и сложность схемы декодирования при больших значениях n. Однако эти недостатки не настолько серьезны, чтобы исключить возможность применения указанной схемы в связных коммуникациях или аппаратуре ЭВМ.
Вывод. В большинстве практических криптографических систем применяются алгоритмы или потокового шифрования, или шифрования со сверткой. Большинство систем потокового шифрования использует оригинальные алгоритмы для коммерческого сектора или секретные правительственные алгоритмы. Такое положение сохранится в ближайшие годы.
Возможно, что большинство систем шифрования со сверткой будет основано на применении алгоритмов блочного шифрования в специальном варианте (например, DES).
О других методах шифрования можно сказать, что они еще не полностью выдержали испытания временем, хотя обойтись без них уже нельзя (речь идет о системах с открытым ключом). Следовательно, приходится выбирать между системами потокового шифрования и системами шифрования со сверткой, основанными на применении алгоритмов блочного шифрования типа DES. Но существуют области применения (например, финансовые операции), где вполне возможно использование методов простейшего блочного шифрования.
Выбор криптографического алгоритма зависит от его назначения. Данные, которыми можно руководствоваться при выборе типа криптографической системы, приведены в следующей таблице.
Тип систем |
Размножение ошибок |
Аутентификация |
Алгоритм |
Скорость |
Потоковые |
Нет |
Нет |
Нет типовых |
Большая |
Блочные |
Есть |
Нет |
DES и аналоги |
Большая |
С открытым ключом |
Есть |
Есть |
RSA, ЭльГамаля |
Очень низкая |
Сверточные |
Есть |
Есть |
Делаются на основе блочных |
Большая |
К характеристикам, влияющим на выбор типа криптографической системы, в первую очередь относится требуемая скорость шифрования (например, при допустимой низкой скорости можно использовать систему RSA). Системы блочного шифрования в программном варианте относятся к низкоскоростным, но в аппаратном варианте (например, по алгоритму DES) может работать почти с любыми скоростями.
Если требуются очень высокие скорости, то лучшей может быть система потокового шифрования с высоким быстродействием как в программном, так и в аппаратном вариантах.
Если требуется аутентификация, то должны применяться системы со сверткой текста шифровки или открытым ключом.
Если имеющийся канал связи относится к каналам, подверженным ошибкам, которые не должны размножаться криптографической системой, то выбору системы потокового шифрования нет альтернативы.
