Опубликован: 19.01.2010 | Уровень: специалист | Доступ: платный
Лекция 11:

Шифрование, использующее современные шифры с симметричным ключом

CFB как шифр потока

Хотя CFB — режим, предназначенный для того, чтобы использовать блочные шифры, такие как DES или AES, — он может быть шифром потока. Фактически, это несинхронный шифр потока, в котором ключевой поток зависит от зашифрованного текста. Рисунок 11.5 показывает процесс дешифрования и шифрования и генератор ключей.

 Шифрование в режиме кодированной обратной связи как шифр потока

Рис. 11.5. Шифрование в режиме кодированной обратной связи как шифр потока

Рисунок 11.5 показывает, что основной шифр (DES или AES), ключ шифра ( K ) и предыдущий блок шифра ( Ci ) используются только для того, чтобы создать ключевые потоки ( ki1 k2..., kN ).

Алгоритм

Алгоритм 11.3 дает процедуру для шифрования. Он вызывает несколько других процедур, детали которых оставляем как упражнения. Обратите внимание, что мы написали алгоритм так, чтобы показать характер режима потока (обработка в реальном масштабе времени). Алгоритм выполняется, пока блоки исходного текста не будут зашифрованы.

CFB_Encryption (IV, K, r)
{
  i <- 1
  while (more blocks to encrypt)
  {
  input (Pi) 
  (if i=l)
    S <- IV
  else
    {
    Temp <- shiftLeft(S)
    S <- concatenate (Temp, Ci-1)
    }
  T <- EK(S)
  k <- selectLeftr(T) 
  Ci <- Pi ⊕ ki
  output (Ci)
  i <- i + 1
  }
}
11.3. Алгоритм шифрования кодированной обратной связи
Проблемы безопасности

В режиме CFB есть три первичных проблемы безопасности.

  1. Точно так же как CBC, образцы на уровне блока не сохраняются. Одинаковые блоки исходного текста, принадлежащие одному и тому же самому сообщению, зашифровываются в различные блоки.
  2. Одним и тем же ключом может быть зашифровано больше чем одно сообщение, но тогда значение IV должно быть изменено для каждого сообщения. Это означает, что Алиса должна использовать различные IV каждый раз, когда она передает сообщение.
  3. Ева может добавить некоторый блок зашифрованного текста к концу потока зашифрованного текста.
Распространение ошибки

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

Приложение

Режим работы CFB может использоваться, чтобы зашифровать блоки небольшого размера, такие как один символ или бит. Нет необходимости в дополнении, потому что размер блока исходного текста обычно устанавливается ( 8 для символа или 1 для бита).

Специальный случай

Если блоки в тексте и в основном шифре — одного и того же размера ( n = r ), шифрование/дешифрование становится более простым, но построение диаграммы и алгоритм оставляем как упражнение.

Режим внешней обратной связи (OFB)

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

 Шифрование в режиме внешней обратной связи

Рис. 11.6. Шифрование в режиме внешней обратной связи
OFB как шифр потока

OFB, так же как и CFB, может создать поточный шифр на базе основного шифра. Однако ключ потока не зависит от исходного текста или зашифрованного текста; значит, шифр потока — синхронный, как это обсуждалось в "Введение в основы современных шифров с симметричным ключом" . Рисунок 11.7 показывает шифрование и дешифрование, а также генератор ключей.

 Шифрование в режиме внешней  обратной связи как шифрование потока

Рис. 11.7. Шифрование в режиме внешней обратной связи как шифрование потока
Алгоритм

Алгоритм 11.4 дает процедуру шифрования. Этот алгоритм последовательно вызывает другие процедуры, детали которых мы оставляем как упражнение. Заметим, что алгоритм написан так, чтобы показать режим потока (ситуация реального времени). Алгоритм работает, пока все блоки исходного текста не будут зашифрованы.

OFB_Encryption (IV, K, r)
{
  i <- 1
  while (more blocks to encrypt)
  {
  input (Pi)
  if (i=l)
    S <- IV
  else
    {
    Temp <- shiftLeftr(S)
    S <- concatenate (Temp, ki-1)
    }
  T <- Ek(s)
  k, <- selectLeftr (T)
  Ci <- Pi ⊕ ki
  output (Ci)
  i <- i + 1
  }
}
11.4.
Проблемы безопасности

В режиме OFB имеются следующие две проблемы безопасности.

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

Единственная ошибка в зашифрованном тексте затрагивает только соответствующий бит в исходном тексте.

Специальный случай

Если блоки в тексте и основном шифре имеют один тот же размер ( n = r ), шифрование/дешифрование становится более простым, но мы оставляем диаграммы и алгоритм как упражнение.

Режим счетчика (CTR)

В режиме счетчика (CTR — Counter) нет информации обратной связи. Псевдослучайный ключевой поток достигается с помощью счетчика. Счетчик на n бит инициализируется в заранее определенное значение ( IV ) и увеличивается по основному и заранее определенному правилу ( mod 2n ). Чтобы обеспечивать случайность, величина приращения может зависеть от номера блока. Исходный текст и блок зашифрованного текста имеют один и тот же размер блока, как и основной шифр (например, DES или AES). Блоки размера n исходного текста зашифрованы так, чтобы создать зашифрованный текст с блоком размера n. Рисунок 11.8 показывает шифрование в режиме счетчика.

 Шифрование в режиме счетчика

Рис. 11.8. Шифрование в режиме счетчика

Отношение между исходным текстом и блоками зашифрованного текста показано ниже.

Шифрование:   C_{i}=P_{i} \oplus  E_{ki} (Счетчик)
\\
Дешифрование: P_{i}=C_{i} \oplus  E_{ki} (Счетчик)

CTR использует функцию шифрования основного блочного шифра ( EK ) и для шифрования, и для дешифрования. Достаточно легко доказать, что блок Pi исходного текста может быть восстановлен из зашифрованного текста Ci. Это мы оставляем как упражнение.

Мы можем сравнить режим CTR с режимами OFB и ECB. Подобно OFB, CTR создает ключевой поток, который независим от предыдущего блока зашифрованного текста, но CTR не использует информацию обратной связи. Так же как ECB, CTR создает n -битовый зашифрованный текст, блоки которого независимы друг от друга — они зависят только от значений счетчика. Отрицательной стороной этого свойства является то, что режим CTR, подобно режиму ECB, не может использоваться для обработки в реальном масштабе времени. Алгоритм шифрования ждет перед шифрованием законченный n -разрядный блок данных. Положительная сторона этого свойства та, что режим, подобно режиму ECB, может использоваться, чтобы зашифровать и расшифровывать файлы произвольного доступа, и значение счетчика может быть связано номером записи в файле.

CTR как шифр потока

CFB, OFB и CTR — фактически шифры потока. Рисунок 11.9 показывает шифрование и дешифрование i-того блока данных.

 Шифрование в режиме счетчика как шифр потока

Рис. 11.9. Шифрование в режиме счетчика как шифр потока
Алгоритм

Алгоритм 11.5 содержит процедуру в псевдокоде для шифрования; алгоритм для дешифрования оставляем как упражнение. Здесь значение приращения зависит от номера блока. Другими словами, значения счетчика — IV, IV + 1, IV + 3, IV + 6, и так далее. Предполагается, что все N -блоки исходного текста готовы до начала шифрования, но алгоритм может быть переписан, чтобы избежать этого предположения.

Безопасность

Проблемы безопасности для режима CTR те же самые, что и для режима OFB.

Распространение ошибки

Единственная ошибка в зашифрованном тексте затрагивает только соответствующий бит в исходном тексте.

CTR_Encryption (IV, K, Plaintext blocks)
{
  Counter <-  IV 
  for(i= 1 to N)
  {
    Counter <- (Counter + i - 1)mod 2N 
    ki <- EK (Counter)
    Ci <- Pi ⊕ ki
   } 
  return Ciphertext blocks
 }
11.5. Алгоритм шифрования CTR
Сравнение различных режимов

Таблица 11.1 сравнивает пять различных режимов работы, рассмотренных в этой лекции.

Таблица 11.1. Итоги режимов работы
Режим работы Описание Тип результата Размер блока
ECB Каждый n-битовый блок шифруется независимо тем же самым ключом Блочный шифр n
CBC То же самое, что и в ECB, но каждый блок сначала складывается (ИСКЛЮЧАЮЩЕЕ ИЛИ) с предыдущим зашифрованным текстом Блочный шифр n
CFB Каждый r-битовый блок складывается (ИСКЛЮЧАЮЩЕЕ ИЛИ) с r-битовым ключом, который является частью предыдущего текста шифра Шифр потока r \le n
OFB То же самое, что и в CFB, но регистр сдвига модифицирован с помощью предыдущего r-битового ключа Шифр потока r \le n
CTR То же самое, как в OFB, но счетчик используется вместо регистра сдвига Шифр потока n
Евгений Виноградов
Евгений Виноградов

Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа?

Илья Сидоркин
Илья Сидоркин

Добрый день! Подскажите пожалуйста как и когда получить диплом, после сдичи и оплаты?????

Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Олег Волков
Олег Волков
Россия, Балаково, МБОУ СОШ 19