Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2_23.doc
Скачиваний:
5
Добавлен:
14.05.2015
Размер:
228.35 Кб
Скачать
  1. 2.23

    1. 2.23.1 Шифрование данных

Шифрование– процесс преобразования порции информации в непонятный вид. Исходную информацию называютоткрытым текстом(plaintext), а результат преобразования –зашифрованным текстом(ciphertext) иликриптограммой. Обратный процесс преобразования зашифрованного текста в открытый называетсярасшифровкой. Алгоритмы шифрования и расшифровки параметризуются с помощьюкриптографических ключей. Алгоритмы шифрования и расшифровки, а так же описание формата сообщений и ключей образуюткриптосистему.

    1. 2.23.2 Перестановочные шифры

Преобразуют сообщение, переставляя его элементы, но не изменяя их. Пусть все элементы исходного сообщения являются буквами алфавита Z26, b – фиксированное положительное целое число, представляющее собой размер блока сообщения, P = C = (Z26)bи K – множество всевозможных перестановок чисел (1, 2, ..., b).

В этом случае перестановка π = (π(1), π(2), ..., π(b)) – ключ, поскольку . Для блока исходного сообщенияалгоритм шифрования с помощью перестановочного шифра выглядит следующим образом:

Обозначим через π-1оборажение, обратное к отображению π, т.е. π-1(π(i)) = i при i = 1, 2, ..., b. Тогда соответствующий алгоритм расшифровки с помощью подстановочного шифра имеет вид

Если длина сообщения больше, чем размер блока b, сообщение разбивается на несколько блоков, к которым применяется одна и та же процедура.

    1. 2.23.3 Подстановочные шифры

В подстановочном шифре алгоритм шифрования представляет собой функцию подстановки, которая заменяет каждое сообщение соответствующим текстом. Функция подстановки зависит от секретного ключа k. Алгоритм дешифровки представляет собой обратную подстановку.

Простой подстановочный шифр– замена одинаковых букв исходного сообщения одинаковыми буквами. Подверженчастотному анализу, использующему тот факт, что естественные языки чрезвычайно избыточны.

Частный случай – сдвиговый шифр– Ek(m) = m + k(mod N), Dk(c) = c – k(mod N), где N = #M. Пример –шифр Цезаря– при k = 3.

Подстановочный шифр называется полиалфавитным, если если элемент исходного сообщения в пространстве P можно заменить несколькими элементами пространства зашифрованных сообщений C.

Пример – шифр Виженера– выполняем сложение по модулю с очередной буквой ключа.

    1. 2.23.4 Блочные шифры

Блочный шифр предназначен для шифрования сообщений, разбитых на блоки фиксированной длины. Каждый блок рассматривается как отдельное сообщение, принадлежащее пространствуMилиC.

Примеры – DES(M=C={0, 1}64,K={0, 1}56),AES(Rijndael)

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

Удаление статистических зависимостей в открытом тексте возможно с помощью предварительного архивирования, но оно не решает задачу полностью, так как в файле остается служебная информацияархиватора, и не всегда технически допустимо.

Существует несколько стандартных методик модификации блочных шифров так, чтобы результат шифрования каждого блока был уникален вне зависимости от шифруемых данных.

Electronic Code Book (ECB)

Сообщение делится на блоки. Каждый блок шифруется отдельно. Расшифровка по той же схеме. Недостатки:

  • идентичные блоки открытого текста шифруются в идентичные блоки зашифрованного текста. Таким образом, это не может скрыть образцы данных хорошо. Этот метод не рекомендуется к использованию в криптографических протоколах.

Cipher Block Chaining (CBC)

Для сцепления используется механизм обратной связи, поскольку результат шифрации предыдущих блоков используется для шифрации текущего блока. Таким образом любой блок шифра зависит не только от исходного текста, но и от всех предыдущих блоков текста. В Cipher Block Chaining (CBC) текст XOR’ится с предыдущим шифр. блоком перед шифрацией. Дешифрация проводится аналогично. Математическая запись:

Ci = Ek (Pi XOR Ci-1)

Pi = Ci-1 XOR Dk(Ci)

При этом в начале кодирования используется вектор инициализации для того, чтобы любое сообщение было по - настоящему уникальным (иначе будут трудности со стандартным заголовком). Вектор инициализации должен быть случайным числом. Его не обязательно хранить в секрете, можно передавать его вместе с сообщением. Большинство сообщений не делятся нацело на 64-битные блоки, обычно остается короткий блок в конце. Можно по-разному бороться с этим. Простейший метод – padding (дополнение до полного блока). Если надо потом убирать мусор, то достаточно просто последним байтом обозначить количество лишних байтов. Можно также обозначать последний байт текста символом конца файла. Это не всегда можно сделать (напр., если надо расшифровать блок и поставить его куда - нибудь в память). Тогда применяется следующая схема шифрования: предположим, в последнем блоке j бит. После зашифровки последнего целого блока, зашифруем шифрованный блок еще раз, выберем j начальных битов полученного текста и по XOR’им с исходным текстом. Это и есть шифр для неполного блока.

Cipher Feedback (CFB)

Режим (CFB) обратной связи шифра, близкий родственник CBC, превращает блочный шифр в самосинхронизирующийся шифр потока. Операция очень похожа на предыдущую; в частности расшифровка CFB почти идентична расшифровке CBC, выполненной наоборот:

C0=IV

где IV - вектор инициализации

Как режим CBC, изменения в открытом тексте распространяется повсюду в зашифрованном тексте, и в кодировании нельзя найти что-либо подобное. Также как и в CBC, в расшифровке можно найти что-либо подобное. Расшифровывая, однобитовое изменение в зашифрованном тексте затрагивает два блока открытого текста: однобитовое изменение в соответствующем блоке открытого текста, и полном искажении следующего блока открытого текста. Более поздние блоки открытого текста будут расшифрованы как обычно.

Поскольку каждая стадия режима CFB зависит от зашифрованного значения предыдущего зашифрованного текста операцией сложения с текущим значением открытого текста, форма конвейерной обработки возможна, начиная с единственного шага кодирования, который требует, чтобы открытый текст был конечный операцией XOR. Это полезно для приложений, которые требуют малого времени ожидания между прибытием открытого текста и вывода соответствующего зашифрованного текста, типа определенных приложений потоковых мультимедиа.

CFB совместно использует два преимущества перед режимом CBC с режимами OFB шифра потока и CTR: блочный шифр только когда-либо используется в направлении шифровки, и сообщение не должно быть дополнено к кратному числу размера блока шифра.

Output Feedback (OFB)

Режим (OFB) обратной связи вывода превращает блочный шифр в синхронный шифрпотока: это генерирует ключевые блоки, которые являются результатом сложения с блоками открытого текста, чтобы получить зашифрованный текст. Так же, как с другими шифрами потока, зеркальное отражение в зашифрованном тексте производит зеркально отраженный бит в открытом тексте в том же самом местоположении. Это свойство позволяет многим кодам с исправлением ошибок функционировать как обычно, даже когда исправление ошибок применено перед кодированием.

Из-за симметрии операции сложения, кодирование и расшифровка похожи:

Oi=Ek(Oi − 1)

O0=IV

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]