Шифрование 64 битов; 128 битов. В реальной жизни текст, который будет зашифрован, имеет переменный размер и обычно намного больший, чем 64 или 128 битов. Режимы работы были изобретены, чтобы зашифровать текст любого размера, используя либо DES, либо
(рис 11.1) Режимы работы Самый простой режим работы назван режимом электронной кодовой книги (ECB — ELECTRONIC CODEBOOK). Исходный текст разделен на N блоков. Размер блока — n бит. Этот размер исходного текста не является кратным числом размера блока, текст дополняется, чтобы сделать последний блок по размеру таким же, как другие блоки. Один и тот же ключ используется, чтобы зашифровать и расшифровывать каждый блок. Рисунок 11.2 показывает шифрование и дешифрование в этом режиме.
(рис 11.2) Режим электронной кодовой книги (ECB)Соотношение между исходным и зашифрованным текстами показано ниже:
Шифрование: Ci = EK(Pi) Дешифрование: Pi = DK(Ci)
Пример 11.1
Этот пример показывает, как можно обеспечить, что каждый блок, посланный Алисой, может быть точно восстановлен на стороне Боба. Здесь используется то, что шифрование и дешифрование инверсны друг другу.
Pi = DK (Ci) = Pi = DK (EK (Pi))
Пример 11.2
Этот режим называется режимом электронной кодовой книги, потому что он может быть представлен 2K кодовыми книгами (одной на каждый кодовый ключ). Каждая кодовая книга имеет 2n входов и две колонки. Каждый вход сопоставляет исходному тексту соответствующий зашифрованный текст. Однако если K и n очень велики, кодовая книга будет слишком велика и ее компоновка и эксплуатация — неудобны.
В режиме
1, 5 и 10 одинаковы, она поймет, что блоки исходного текста 1, 5 и 10 — тоже одинаковые. Это —"дырочка" в безопасности. Например, Ева может выполнить исчерпывающий поиск и расшифровать только один из этих блоков, чтобы найти содержание всех их.8 всегда передает некоторую заданную информацию, она может заменить этот блок соответствующим блоком в предварительно перехваченном сообщении.Пример 11.3
Предположим, что Ева работает в компании месяц, несколько часов в неделю (ее ежемесячная оплата очень низкая). Она знает, что компания использует несколько блоков информации для каждого служащего, в котором седьмой блок является суммой денег, которая будет депонирована в учетной записи служащего. Ева может прервать зашифрованный текст, передаваемый банку в конце месяца, заменить блок информацией о ее оплате с копией блока с информацией об оплате полной рабочей недели её коллеги. Каждый месяц Ева может получать больше денег, чем она этого заслуживает.
Единственный бит ошибки в передаче может создать ошибки в нескольких битах (обычно половине битов или всех битах) в соответствующих блоках. Однако ошибка не имеет никакого воздействия на другие блоки.
Для шифрования или дешифрования могут быть написаны простые алгоритмы. Алгоритм 11.1 содержит процедуру, написанную в EK зашифровывает только один единственный блок и может быть одним из шифров, рассмотренных в главах 6 или 7 (DES или
ECB_Encryption (K,Plaintext bloks)
{
for(i = 1 to N)
{
Ci <- EK (Pi),
}
return Cliphertext blocks
}
В режиме может потребоваться дополнение, которое добавляется к последнему блоку, если он содержит менее n бит. Такое дополнение не всегда возможно. Например, рассмотрим ситуацию, когда зашифрованный текст должен быть сохранен в буфере, где до этого был предварительно сохранен исходный текст. В этом случае исходный текст и зашифрованный текст должны быть одинаковой длины. Техника, которая называется захват зашифрованного текста (CTS — CipherText Stealing) позволяет использовать режим без указанного выше дополнения. В этой методике последние два блока исходного текста PN-1 и PN, зашифрованы раздельно по-другому и в другом порядке, как показано ниже. Предположим, что PN-1 имеет n бит, а PN имеет m бит, где m < n.
X = EK(PN-1) -> CN = headm(X) Y = PN|tailn-m(X) -> CN-1 = EK(Y)
где headm — функция, отделяющая крайние левые m бит, tailn-m — функция, отделяющая крайние правые n-m бит.
Режим работы не рекомендуется для шифрования сообщений, содержащих больше чем один блок, который будет передан через несекретный канал. Если сообщение достаточно коротко, чтобы передать его в одном блоке, проблемы безопасности и распространения ошибок терпимы.
Одна область, где независимость между блоками зашифрованного текста полезна, — это там, где информация будет зашифрована прежде, чем она будет сохранена в базе данных, или расшифрована прежде, чем она будет извлечена из памяти. Поскольку порядок шифрования и дешифрования блоков не важен, в этом режиме доступа к базе данных он может быть случаен, если каждая запись — блок или множество блоков. Запись может быть извлечена из середины, расшифрована, и зашифрована, не затрагивая другие записи. Другое преимущество этого режима — это то, что мы можем использовать
Следующая эволюция в работе режимов — режим сцепления блоков шифрованного текста (CBC — Cipher Block Chaining). В режиме каждый блок исходного текста, прежде чем быть зашифрованным, обрабатывается с помощью проведения операции ИСКЛЮЧАЮЩЕЕ ИЛИ с предыдущим блоком шифра. Когда блок зашифрован, блок передают, но копия сохраняется в памяти, которая используется в шифровании следующего блока. Читатель может задать вопрос о начальном блоке, поскольку перед первым блоком нет блока зашифрованного текста. В этом случае используется фальшивый блок, называемый вектор инициализации (IV). Передатчик и приемник согласуют заданный заранее IV. Другими словами, IV используется вместо несуществующего C0. Рисунок 11.3 показывает режим . На передающей стороне операция ИСКЛЮЧАЮЩЕЕ ИЛИ проводится перед шифрованием; а на стороне приемника дешифрование проводится перед операцией ИСКЛЮЧАЮЩЕЕ ИЛИ.
(рис 11.3) Режим цепочки блоков шифротекста Соотношение между исходным текстом и зашифрованным текстом показано ниже:
$$Шифрование: \\ C_{0} = IV \\ C_{i} = E_{K}(P_{i} \oplus C_{i-1}) \\ Дешифрование: \\ C_{0} = IV \\ P_{i} = D_{K}(C_{i}) \oplus C_{i-1}$$Пример 11.4
Можно доказать, что каждый блок исходного текста на стороне Алисы может быть точно восстановлен на стороне Боба — потому что шифрование и дешифрование инверсны друг другу.
$$P_{i} = D_{K}(C_{i}) \oplus C_{i-1} = D_{K} (E_{K}(P_{i} \oplus C_{i-1})) \oplus C_{i-1} = P_{i} \oplus C_{i-1} \oplus C_{i-1} = P_{i}$$Вектор инициализации (IV) должен быть известен передатчику и приемнику. Хотя сохранение этого вектора в тайне не требуется, целостность вектора играет важную роль в безопасности режима ; IV помогает сохранить безопасность изменения информации. Если Ева может изменить значения бит IV, это может изменить значения бит первого блока.
Для того чтобы использовать IV, рекомендовано несколько методов. Передатчик может выбрать ). Фиксированное значение может быть согласовано Алисой и Бобом как IV, когда ключ засекречивания установлен. Это может быть часть ключа засекречивания, и так далее.
В режиме имеются следующие две проблемы безопасности.
IV. Фактически, если первые M блоков в двух различных сообщениях равны и IV совпадает, они будут зашифрованы в одинаковые блоки. По этой причине некоторые специалисты рекомендуют использование для IV метки времени.В режиме единственный бит ошибки в блоке Cj зашифрованного текста в процессе передачи — в процессе дешифрования может создать ошибку в большинстве битов блока Pj исходного текста. Однако эта одиночная ошибка изменяет только один бит в исходном тексте блока Pj+1 (бит в том же самом местоположении). Доказательство этого факта оставляем как упражнение. Исходный текст блоков от Pj+2 до PN не затрагивается этим единственным битом ошибки. Единственный бит ошибки в зашифрованном тексте — самовосстанавливаемый.
Алгоритм 11.2 дает
CBC_ Encryption (IV,K, Plaintext bloks)
{
C0 <- IV
for (i=1 to N)
{
Temp <- Pi ⊕ Ci-1
Ci <- EK (Temp)
}
return Ciphertext blocks
}
Методика захвата зашифрованного текста, рассмотренная для режима
Функция head — та же самая, что описана в режиме
Режим работы
n, определяется принятым шифром. Например, n = 64 для DES и n = 128 для 8 -битового ASCII, вы не захотели бы использовать один из традиционных шифров, обсужденных в лекции 4, потому что они ненадежны. Решение состоит в том, чтобы применить DES или n, но размер исходного текста или блока зашифрованного текста — r, где r <n.
Идея состоит в том, что DES или S, размером n. Шифрование сделано с применением операции ИСКЛЮЧАЮЩЕЕ ИЛИ к r -битовому блоку исходного текста с r -битовым r -битовому блоку зашифрованного текста с r -битовым Si выполняет сдвиг регистра Si-1 (предыдущий r бит влево, заполняя самые правые r битов с Ci-1. Тогда Si зашифрован в Ti. Только самые правые r битов Ti обрабатываются с помощью ИСКЛЮЧАЮЩЕГО ИЛИ с исходным текстом, из блока Pi получая Ci. Обратите внимание, что Si, для первого блока — это IV — не сдвигается.
Рисунок 11.4 показывает режим Pi ) и блоков зашифрованного текста ( Ci ) меняются местами. Обратите внимание, что шифрование и дешифрование используют функцию шифрования основного
(рис 11.4) Шифрование в режиме кодированной обратной связи Соотношение между исходным текстом и блоками зашифрованного текста показано ниже:
$$Шифрование: C_{i} = P_{i} \oplus SelectLeft_{r} \{ E_{K} [ShiftLeft_{r} (S_{i-1}) | C_{i-1})]\} \\ Дешифрование: P_{i} = C_{i} \oplus SelectLeft_{r} \{ E_{K} [ShiftLeft_{r} (S_{i-i}) | C_{i-i})]\}$$где ShiftLeft — процедура, которая сдвигает содержание ее параметра на r бит влево (крайние левые r -биты отбрасываются). Оператор | показывает конкатенацию (последовательное соединение). SelectLeft -процедура выбирает только крайние левые r -битов параметра. Возможно доказать, что каждый блок исходного текста на стороне Алисы может быть точно восстановлен на стороне Боба. Это доказательство оставляем как упражнение.
Интересно, что в этом режиме не требуется дополнение блоков, потому что размер блоков, r, обычно выбирается так, чтобы удовлетворить размеру блока данных, который нужно зашифровать (например, символ). Интересное также другое — что система не должна ждать получения большого блока данных ( 64 бита или 128 битов) для того, чтобы начать шифрование. Процесс шифрования выполняется для маленького блока данных (таких как символ), Эти два преимущества приводят к двум недостаткам. r.
Хотя
(рис 11.5) Шифрование в режиме кодированной обратной связи как шифр потока Рисунок 11.5 показывает, что основной шифр (DES или 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
}
}
В режиме
IV должно быть изменено для каждого сообщения. Это означает, что Алиса должна использовать различные IV каждый раз, когда она передает сообщение.В Cj в процессе передачи создает единственный бит ошибки (в той же самой позиции) в исходном тексте блока Pj. Однако большинство битов в следующих блоках исходного текста будут с ошибкой (с 50 -процентной вероятностью), пока биты Cj все еще находятся в
Режим работы 8 для символа или 1 для бита).
Если блоки в тексте и в основном шифре — одного и того же размера ( n = r ), шифрование/дешифрование становится более простым, но построение диаграммы и алгоритм оставляем как упражнение.
Режим внешней обратной связи (OFB — OUTPUT FEEDBACK) очень похож на режим
(рис 11.6) Шифрование в режиме внешней обратной связи
(рис 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
}
}
В режиме
Единственная ошибка в зашифрованном тексте затрагивает только соответствующий бит в исходном тексте.
Если блоки в тексте и основном шифре имеют один тот же размер ( n = r ), шифрование/дешифрование становится более простым, но мы оставляем диаграммы и алгоритм как упражнение.
В режиме счетчика (CTR — Counter) нет информации обратной связи. Псевдослучайный ключевой поток достигается с помощью счетчика. Счетчик на n бит инициализируется в заранее определенное значение ( IV ) и увеличивается по основному и заранее определенному правилу ( mod 2n ). Чтобы обеспечивать случайность, величина приращения может зависеть от номера блока. Исходный текст и блок зашифрованного текста имеют один и тот же размер блока, как и основной шифр (например, DES или n исходного текста зашифрованы так, чтобы создать зашифрованный текст с блоком размера n. Рисунок 11.8 показывает шифрование в режиме счетчика.
(рис 11.8) Шифрование в режиме счетчика Отношение между исходным текстом и блоками зашифрованного текста показано ниже.
$$Шифрование: C_{i}=P_{i} \oplus E_{ki} (Счетчик) \\ Дешифрование: P_{i}=C_{i} \oplus E_{ki} (Счетчик)$$EK ) и для шифрования, и для дешифрования. Достаточно легко доказать, что блок Pi исходного текста может быть восстановлен из зашифрованного текста Ci. Это мы оставляем как упражнение.
Мы можем сравнить режим n -битовый зашифрованный текст, блоки которого независимы друг от друга — они зависят только от значений счетчика. Отрицательной стороной этого свойства является то, что режим n -разрядный блок данных. Положительная сторона этого свойства та, что режим, подобно режиму
(рис 11.9) Шифрование в режиме счетчика как шифр потока
Алгоритм 11.5 содержит процедуру в IV, IV + 1, IV + 3, IV + 6, и так далее. Предполагается, что все N -блоки исходного текста готовы до начала шифрования, но алгоритм может быть переписан, чтобы избежать этого предположения.
Проблемы безопасности для режима
Единственная ошибка в зашифрованном тексте затрагивает только соответствующий бит в исходном тексте.
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.1 сравнивает пять различных режимов работы, рассмотренных в этой лекции.
| Режим работы | Описание | Тип результата | Размер блока |
|---|---|---|---|
| Каждый n-битовый блок шифруется независимо тем же самым ключом | n | ||
| То же самое, что и в |
n | ||
| Каждый r-битовый блок складывается (ИСКЛЮЧАЮЩЕЕ ИЛИ) с r-битовым ключом, который является частью предыдущего текста шифра | Шифр потока | r $$\le$$ n | |
| То же самое, что и в |
Шифр потока | r $$\le$$ n | |
| То же самое, как в |
Шифр потока | n |
Хотя эти пять режимов работы допускают использование
RC4 — потоковый шифр, который был разработан в 1984 г. Рональдом Ривестом.
8 битов) исходного текста складывается (ИСКЛЮЧАЮЩЕЕ ИЛИ) с байтом ключа, чтобы получить байт зашифрованного текста. Ключ засекречивания, из которого сгенерированы однобайтовые ключи в потоке ключей, может содержать от 1 до 256 байтов.
256 байтов активизируется, из нее случайным образом выбирается один байт, чтобы служить ключом для шифрования
Идея может быть показана в виде массива байтов:
S [0] S [l] S [2] ••• S [255]
Заметим, что индексы диапазона элементов — между 0 и 255. Содержание каждого элемента — байт ( 8 битов), который может интерпретироваться как целое число от 0 до 255.
Рисунок 11.10 показывает идею
(рис 11.10) Идея шифра потока RC4Инициализация. Инициализация делается в два шага.
1. На первом шаге матрица состояний инициализируется для значений 0, 1..., 255. Создается также массив ключей K [0], K [1] ..., K [255]. Если ключ засекречивания имеет точно 256 байтов, байты копируются в массив K ; иначе — байты повторяются, пока не заполнится массив K.
for (i = 0 to 255)
{
S[i] <- i
K[i] <- Key [i mod Key Length]
}
2. На втором шаге инициализированная матрица проходит перестановку (скрэмблирование элементов), основанную на значении байтов в K[i]. Ключевой байт используется только на этом шаге, чтобы определить, какие элементы должны быть заменены. После этого шага байты матрицы полностью перетасованы.
j <- 0
for (i = 0 to 255)
{
j <- (1 + S[i] + K[i]) mod 256
swap (S[i] , S[j])
}
Генерация ключевого потока. Ключи k в ключевом потоке генерируются один другим. Сначала элементы матрицы состояний переставляются на основе значений своих элементов и значений двух индивидуальных переменных i и j. Затем значения двух элементов матрицы состояний в позициях i и j используются, чтобы определить индекс элемента матрицы состояний, который служит как ключ k. Следующий код повторяется для каждого байта исходного текста, чтобы создать новый ключевой элемент в ключевом потоке. Переменные i и j инициализируются в 0 прежде, чем будет проведена первая итерация, но значение копируется от одной итерации к следующей.
i <- (i +1) mod 256 j <- (j +S[i]mod256 swap (S [i] , S[j]) k <- S [(S[i] + S[j]) mod 256]
Шифрование или дешифрование. После того как k были создан, байт исходного текста зашифровывается с помощью k, чтобы создать байт зашифрованного текста. Дешифрование представляет собой обратный процесс.
Алгоритм 11.6 показывает процедуру, написанную на
RC4_Encryption (K)
{
// Создание начальной матрицы состояний и ключевых байтов
for (i = 0 to 255)
{
S[i] <- i
K[i] <- Key [i mod Key Length]
}
// Перестановка байтов матрицы состояний на основе значений байта ключа
j <- 0
for (i = 0 to 255)
{
j <- (j+ S[i] + K[i] mod 256
замена (S[i] , S[j])
//Непрерывная перестановка байтов, генерация ключей и шифрование
i <- 0
j <- 0
while (пока есть байты для шифрования)
i <- (i + 1) mod 256
j <- (j +S[i]) mod 256
swap(S[i],S[j])
k <- S[(S[i]+S[j])mod256]
//Ключ готов, шифрование
input P
C <- P ⊕ k
output C
}
}
Пример 11.5
Чтобы показать случайность ключа потока, мы используем ключ засекречивания со всеми нулевыми байтами. Ключевой поток для 20 значений A: (222, 24, 137, 65, 163, 55, 93, 58, 138, 6, 30, 103, 87, 110, 146, 109, 199, 26, 127, 163).
Пример 11.6
Повторим пример 11.5, но пусть ключ засекречивания будет пять байтов (15, 202, 33, 6, 8). Ключевой поток — (248, 184, 102, 54, 212, 237, 186, 133, 51, 238, 108, 106, 103, 214, 39, 242, 30, 34, 144, 49). Снова случайность в ключевом потоке очевидна.
Известно, что шифр безопасен, если размер ключа — по крайней мере, 128 битов ( 16 байтов). Это подтверждается сообщениями о некоторых атаках для малых размеров ключей (меньше, чем 5 байтов). Протоколы, которые сегодня использует
В этом разделе мы вводим шифр потока, который использует линейный 228 битов, при этом каждый кадр длится 4,6 миллисекунды. A5/1 создает поток бит, исходя из ключа на 64 бита. Разрядные потоки собраны в буфере по 228 битов, чтобы складывать их по модулю два с кадром на 228 битов, как показано на рис. 11.11.
(рис 11.11) Общий вид A5/1A5/1 используются три 19,22,23 бита.
(рис 11.12) Три линейных регистра сдвига для AS/5Однобитовый выход обеспечивает тактовыми импульсами буфер на 228 битов, который используется для шифрования (или дешифрования).
Инициализация. Инициализация выполняется для каждого кадра шифрования (или дешифрования). Она использует ключ засекречивания на 64 бита и 22 бита соответствующего номера кадра. Следующие шаги:
1. Сначала все биты в трех линейных регистрах сдвига устанавливаются в 0.
2. Второй: ключ на 64 бита смешивается со значением регистра согласно следующему коду. Каждый линейный регистр смещается на один шаг ( синхронизация ).
For (i = 0 to 63)
{
Сложение по модулю 2 K[i] с крайними левыми битами всех трех регистров.
Синхронизация всех трех линейных регистров сдвига
}
3. Повторить предыдущий процесс, но использовать 22 -битовый кадр.
for (i = 0 to 22)
{
Сложение по модулю 2 номера кадра [i] с крайними левыми битами всех трех регистров.
Синхронизация всех трех линейных регистров сдвига
}
4. В течение 100 циклов синхронизируется весь генератор. При этом используется мажоритарная функция (см. следующий абзац), для того чтобы определить, какой линейный
for (i = 0 to 99)
{
Синхронизация всего генератора, на основе мажоритарной функции
}
Мажоритарная функция. Значение мажоритарной функции ( majority ) с параметрами ( b1 b 2, b3 ) равно 1, если значение большинства битов — 1 ; если это — 0, то ее значение — 0. Например, majority (1, 0, 1) = 1, но majority (0, 0, 1) = 0. Значение мажоритарной функции определяется перед поступлением тактового импульса; три входных бита названы синхронизирующими битами: если самый правый бит равен нулю, это — биты линейных регистров LFSR1 [10], LFSR2 [11] и LFSR3 [11]. Обратите внимание, что в литературе эти биты 8, 10 и 10 отсчитывают слева (как это показано на рис. 11.12). Мы будем рассматривать 10, 11 и 11, считая справа. Это соглашение соответствует месту бита в характеристическом полиноме.
Ключевые биты потока. Генератор ключей создает ключевой поток в один бит при каждом тактовом импульсе. Прежде чем ключ создан, вычисляется мажоритарная функция. Затем каждый линейный
Пример 11.7
В некоторый момент времени биты синхронизации — 1, 0 и 1. Какой должен быть
Решение
Результат Majority (1, 0, 1) = 1. LFSR1 и LAFS3 сдвигаются, а LFSR2 — нет.
Разрядные потоки, созданные генератором ключей, записываются в буфер, чтобы потом сформировать ключ на 228 битов, который затем складывает по модулю два с кадром исходного текста, чтобы создать кадр зашифрованного текста. В один момент времени делается шифрование/дешифрование одного кадра.
Хотя 248 шагами. В 2003 Экдахи и Джонсон (Ekdahi и Johannson) опубликовали атаку, которая вскрывала A5/1 за несколько минут, используя анализ исходного текста в течение 2-5 минут. Имея в виду некоторые новые атаки
Шифрование, которое использует блоки с
Алиса и Боб должны совместно использовать секретный ключ, чтобы иметь надежную связь с использованием шифра с n объектов в сообществе, каждый из которых хочет связаться с n – 1 другим объектом, то тогда необходимы n (n – 1) ключей засекречивания. Однако при шифровании n (n – 1)/2 ключей. Если n — приблизительно миллион, то должны быть выданы почти пятьсот миллионов ключей. Поскольку это нереально, то были найдены несколько других решений. Первое: каждый раз, когда Алиса и Боб хотят связаться, они могут создать между собой сеансовый (временный) ключ. Второе: могут быть установлены один или более
Другая проблема в шифровании
Нижеследующие книги и сайты дают более детальную информацию о предметах, рассмотренных в этой лекции. Пункты, приведенные в квадратных скобках, содержатся в списке в конце книги.
[Sch99], [Sta06], [PHS03], [Sti06], [MOV97] и [KPS02] рассматривают режимы работы. [Vau06] и [Sta06] дают полные сведения о шифрах потока.
Нижеследующие сайты содержат больше информации о темах, обсужденных в этой лекции.
N блоков. Размер блока — n бит. Каждый блок использует для шифрования и дешифрования один и тот же ключ.IV ), чтобы складывать его по модулю два с первым блоком зашифрованного текста.n битов инициализируется установкой заранее заданного значения ( IV ) и увеличивается по заранее заданному правилу.8 битов) исходного текста надо сложить по модулю два с байтом ключа, чтобы создать байт зашифрованного текста. Секретный ключ, из которого генерируются однобайтовые ключи в ключевом потоке, может содержать от 1 до 256 байтов. Ключевой генератор потока базируется на перестановке 256 байтов.64 бита, используя три линейных 17 в зашифрованном тексте блока 8 разрушен в течение передачи. Найдите возможные разрушенные биты в исходном тексте.17 и 18 в зашифрованном тексте блока 9 в процессе передачи были разрушены. Найдите возможные разрушенные биты в исходном тексте.3-6 в зашифрованном тексте блока 11 разрушены ( r = 8 ). Найдите возможные разрушенные биты в исходном тексте.3 и 4 полностью разрушены. Найдите возможные разрушенные биты в исходном тексте.11 разрушен ( r = 8 ). Найдите возможные разрушенные биты в исходном тексте.r = n.r = n.20 элементов ключевого потока, если ключ засекречивания — 7 байтов со значениями 1, 2, 3, 4, 5, 6 и 7. Вы можете при желании написать маленькую программу.16 -байтовый ключ засекречивания. Ключ засекречивания изменяется каждый раз, используя K = (Ki-1+Ki-1 )mod 2128. Покажите, сколькими сообщениями они могут обменяться перед тем, как текст начнет повторяться.Majority (1, 0, 0)Majority (0, 1, 1)Majority (0, 0, 0)Majority (1, 1, 1)shiftleft -процедуры, используемой в алгоритме 11.4.selectleft -процедуры, используемой в алгоритме 11.4.Шифрование 64 битов; 128 битов. В реальной жизни текст, который будет зашифрован, имеет переменный размер и обычно намного больший, чем 64 или 128 битов. Режимы работы были изобретены, чтобы зашифровать текст любого размера, используя либо DES, либо
(рис 11.1) Режимы работы Самый простой режим работы назван режимом электронной кодовой книги (ECB — ELECTRONIC CODEBOOK). Исходный текст разделен на N блоков. Размер блока — n бит. Этот размер исходного текста не является кратным числом размера блока, текст дополняется, чтобы сделать последний блок по размеру таким же, как другие блоки. Один и тот же ключ используется, чтобы зашифровать и расшифровывать каждый блок. Рисунок 11.2 показывает шифрование и дешифрование в этом режиме.
(рис 11.2) Режим электронной кодовой книги (ECB)Соотношение между исходным и зашифрованным текстами показано ниже:
Шифрование: Ci = EK(Pi) Дешифрование: Pi = DK(Ci)
Пример 11.1
Этот пример показывает, как можно обеспечить, что каждый блок, посланный Алисой, может быть точно восстановлен на стороне Боба. Здесь используется то, что шифрование и дешифрование инверсны друг другу.
Pi = DK (Ci) = Pi = DK (EK (Pi))
Пример 11.2
Этот режим называется режимом электронной кодовой книги, потому что он может быть представлен 2K кодовыми книгами (одной на каждый кодовый ключ). Каждая кодовая книга имеет 2n входов и две колонки. Каждый вход сопоставляет исходному тексту соответствующий зашифрованный текст. Однако если K и n очень велики, кодовая книга будет слишком велика и ее компоновка и эксплуатация — неудобны.
В режиме
1, 5 и 10 одинаковы, она поймет, что блоки исходного текста 1, 5 и 10 — тоже одинаковые. Это —"дырочка" в безопасности. Например, Ева может выполнить исчерпывающий поиск и расшифровать только один из этих блоков, чтобы найти содержание всех их.8 всегда передает некоторую заданную информацию, она может заменить этот блок соответствующим блоком в предварительно перехваченном сообщении.Пример 11.3
Предположим, что Ева работает в компании месяц, несколько часов в неделю (ее ежемесячная оплата очень низкая). Она знает, что компания использует несколько блоков информации для каждого служащего, в котором седьмой блок является суммой денег, которая будет депонирована в учетной записи служащего. Ева может прервать зашифрованный текст, передаваемый банку в конце месяца, заменить блок информацией о ее оплате с копией блока с информацией об оплате полной рабочей недели её коллеги. Каждый месяц Ева может получать больше денег, чем она этого заслуживает.
Единственный бит ошибки в передаче может создать ошибки в нескольких битах (обычно половине битов или всех битах) в соответствующих блоках. Однако ошибка не имеет никакого воздействия на другие блоки.
Для шифрования или дешифрования могут быть написаны простые алгоритмы. Алгоритм 11.1 содержит процедуру, написанную в EK зашифровывает только один единственный блок и может быть одним из шифров, рассмотренных в главах 6 или 7 (DES или
ECB_Encryption (K,Plaintext bloks)
{
for(i = 1 to N)
{
Ci <- EK (Pi),
}
return Cliphertext blocks
}
В режиме может потребоваться дополнение, которое добавляется к последнему блоку, если он содержит менее n бит. Такое дополнение не всегда возможно. Например, рассмотрим ситуацию, когда зашифрованный текст должен быть сохранен в буфере, где до этого был предварительно сохранен исходный текст. В этом случае исходный текст и зашифрованный текст должны быть одинаковой длины. Техника, которая называется захват зашифрованного текста (CTS — CipherText Stealing) позволяет использовать режим без указанного выше дополнения. В этой методике последние два блока исходного текста PN-1 и PN, зашифрованы раздельно по-другому и в другом порядке, как показано ниже. Предположим, что PN-1 имеет n бит, а PN имеет m бит, где m < n.
X = EK(PN-1) -> CN = headm(X) Y = PN|tailn-m(X) -> CN-1 = EK(Y)
где headm — функция, отделяющая крайние левые m бит, tailn-m — функция, отделяющая крайние правые n-m бит.
Режим работы не рекомендуется для шифрования сообщений, содержащих больше чем один блок, который будет передан через несекретный канал. Если сообщение достаточно коротко, чтобы передать его в одном блоке, проблемы безопасности и распространения ошибок терпимы.
Одна область, где независимость между блоками зашифрованного текста полезна, — это там, где информация будет зашифрована прежде, чем она будет сохранена в базе данных, или расшифрована прежде, чем она будет извлечена из памяти. Поскольку порядок шифрования и дешифрования блоков не важен, в этом режиме доступа к базе данных он может быть случаен, если каждая запись — блок или множество блоков. Запись может быть извлечена из середины, расшифрована, и зашифрована, не затрагивая другие записи. Другое преимущество этого режима — это то, что мы можем использовать
Следующая эволюция в работе режимов — режим сцепления блоков шифрованного текста (CBC — Cipher Block Chaining). В режиме каждый блок исходного текста, прежде чем быть зашифрованным, обрабатывается с помощью проведения операции ИСКЛЮЧАЮЩЕЕ ИЛИ с предыдущим блоком шифра. Когда блок зашифрован, блок передают, но копия сохраняется в памяти, которая используется в шифровании следующего блока. Читатель может задать вопрос о начальном блоке, поскольку перед первым блоком нет блока зашифрованного текста. В этом случае используется фальшивый блок, называемый вектор инициализации (IV). Передатчик и приемник согласуют заданный заранее IV. Другими словами, IV используется вместо несуществующего C0. Рисунок 11.3 показывает режим . На передающей стороне операция ИСКЛЮЧАЮЩЕЕ ИЛИ проводится перед шифрованием; а на стороне приемника дешифрование проводится перед операцией ИСКЛЮЧАЮЩЕЕ ИЛИ.
(рис 11.3) Режим цепочки блоков шифротекста Соотношение между исходным текстом и зашифрованным текстом показано ниже:
$$Шифрование: \\ C_{0} = IV \\ C_{i} = E_{K}(P_{i} \oplus C_{i-1}) \\ Дешифрование: \\ C_{0} = IV \\ P_{i} = D_{K}(C_{i}) \oplus C_{i-1}$$Пример 11.4
Можно доказать, что каждый блок исходного текста на стороне Алисы может быть точно восстановлен на стороне Боба — потому что шифрование и дешифрование инверсны друг другу.
$$P_{i} = D_{K}(C_{i}) \oplus C_{i-1} = D_{K} (E_{K}(P_{i} \oplus C_{i-1})) \oplus C_{i-1} = P_{i} \oplus C_{i-1} \oplus C_{i-1} = P_{i}$$Вектор инициализации (IV) должен быть известен передатчику и приемнику. Хотя сохранение этого вектора в тайне не требуется, целостность вектора играет важную роль в безопасности режима ; IV помогает сохранить безопасность изменения информации. Если Ева может изменить значения бит IV, это может изменить значения бит первого блока.
Для того чтобы использовать IV, рекомендовано несколько методов. Передатчик может выбрать ). Фиксированное значение может быть согласовано Алисой и Бобом как IV, когда ключ засекречивания установлен. Это может быть часть ключа засекречивания, и так далее.
В режиме имеются следующие две проблемы безопасности.
IV. Фактически, если первые M блоков в двух различных сообщениях равны и IV совпадает, они будут зашифрованы в одинаковые блоки. По этой причине некоторые специалисты рекомендуют использование для IV метки времени.В режиме единственный бит ошибки в блоке Cj зашифрованного текста в процессе передачи — в процессе дешифрования может создать ошибку в большинстве битов блока Pj исходного текста. Однако эта одиночная ошибка изменяет только один бит в исходном тексте блока Pj+1 (бит в том же самом местоположении). Доказательство этого факта оставляем как упражнение. Исходный текст блоков от Pj+2 до PN не затрагивается этим единственным битом ошибки. Единственный бит ошибки в зашифрованном тексте — самовосстанавливаемый.
Алгоритм 11.2 дает
CBC_ Encryption (IV,K, Plaintext bloks)
{
C0 <- IV
for (i=1 to N)
{
Temp <- Pi ⊕ Ci-1
Ci <- EK (Temp)
}
return Ciphertext blocks
}
Методика захвата зашифрованного текста, рассмотренная для режима
Функция head — та же самая, что описана в режиме
Режим работы
n, определяется принятым шифром. Например, n = 64 для DES и n = 128 для 8 -битового ASCII, вы не захотели бы использовать один из традиционных шифров, обсужденных в лекции 4, потому что они ненадежны. Решение состоит в том, чтобы применить DES или n, но размер исходного текста или блока зашифрованного текста — r, где r <n.
Идея состоит в том, что DES или S, размером n. Шифрование сделано с применением операции ИСКЛЮЧАЮЩЕЕ ИЛИ к r -битовому блоку исходного текста с r -битовым r -битовому блоку зашифрованного текста с r -битовым Si выполняет сдвиг регистра Si-1 (предыдущий r бит влево, заполняя самые правые r битов с Ci-1. Тогда Si зашифрован в Ti. Только самые правые r битов Ti обрабатываются с помощью ИСКЛЮЧАЮЩЕГО ИЛИ с исходным текстом, из блока Pi получая Ci. Обратите внимание, что Si, для первого блока — это IV — не сдвигается.
Рисунок 11.4 показывает режим Pi ) и блоков зашифрованного текста ( Ci ) меняются местами. Обратите внимание, что шифрование и дешифрование используют функцию шифрования основного
(рис 11.4) Шифрование в режиме кодированной обратной связи Соотношение между исходным текстом и блоками зашифрованного текста показано ниже:
$$Шифрование: C_{i} = P_{i} \oplus SelectLeft_{r} \{ E_{K} [ShiftLeft_{r} (S_{i-1}) | C_{i-1})]\} \\ Дешифрование: P_{i} = C_{i} \oplus SelectLeft_{r} \{ E_{K} [ShiftLeft_{r} (S_{i-i}) | C_{i-i})]\}$$где ShiftLeft — процедура, которая сдвигает содержание ее параметра на r бит влево (крайние левые r -биты отбрасываются). Оператор | показывает конкатенацию (последовательное соединение). SelectLeft -процедура выбирает только крайние левые r -битов параметра. Возможно доказать, что каждый блок исходного текста на стороне Алисы может быть точно восстановлен на стороне Боба. Это доказательство оставляем как упражнение.
Интересно, что в этом режиме не требуется дополнение блоков, потому что размер блоков, r, обычно выбирается так, чтобы удовлетворить размеру блока данных, который нужно зашифровать (например, символ). Интересное также другое — что система не должна ждать получения большого блока данных ( 64 бита или 128 битов) для того, чтобы начать шифрование. Процесс шифрования выполняется для маленького блока данных (таких как символ), Эти два преимущества приводят к двум недостаткам. r.
Хотя
(рис 11.5) Шифрование в режиме кодированной обратной связи как шифр потока Рисунок 11.5 показывает, что основной шифр (DES или 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
}
}
В режиме
IV должно быть изменено для каждого сообщения. Это означает, что Алиса должна использовать различные IV каждый раз, когда она передает сообщение.В Cj в процессе передачи создает единственный бит ошибки (в той же самой позиции) в исходном тексте блока Pj. Однако большинство битов в следующих блоках исходного текста будут с ошибкой (с 50 -процентной вероятностью), пока биты Cj все еще находятся в
Режим работы 8 для символа или 1 для бита).
Если блоки в тексте и в основном шифре — одного и того же размера ( n = r ), шифрование/дешифрование становится более простым, но построение диаграммы и алгоритм оставляем как упражнение.
Режим внешней обратной связи (OFB — OUTPUT FEEDBACK) очень похож на режим
(рис 11.6) Шифрование в режиме внешней обратной связи
(рис 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
}
}
В режиме
Единственная ошибка в зашифрованном тексте затрагивает только соответствующий бит в исходном тексте.
Если блоки в тексте и основном шифре имеют один тот же размер ( n = r ), шифрование/дешифрование становится более простым, но мы оставляем диаграммы и алгоритм как упражнение.
В режиме счетчика (CTR — Counter) нет информации обратной связи. Псевдослучайный ключевой поток достигается с помощью счетчика. Счетчик на n бит инициализируется в заранее определенное значение ( IV ) и увеличивается по основному и заранее определенному правилу ( mod 2n ). Чтобы обеспечивать случайность, величина приращения может зависеть от номера блока. Исходный текст и блок зашифрованного текста имеют один и тот же размер блока, как и основной шифр (например, DES или n исходного текста зашифрованы так, чтобы создать зашифрованный текст с блоком размера n. Рисунок 11.8 показывает шифрование в режиме счетчика.
(рис 11.8) Шифрование в режиме счетчика Отношение между исходным текстом и блоками зашифрованного текста показано ниже.
$$Шифрование: C_{i}=P_{i} \oplus E_{ki} (Счетчик) \\ Дешифрование: P_{i}=C_{i} \oplus E_{ki} (Счетчик)$$EK ) и для шифрования, и для дешифрования. Достаточно легко доказать, что блок Pi исходного текста может быть восстановлен из зашифрованного текста Ci. Это мы оставляем как упражнение.
Мы можем сравнить режим n -битовый зашифрованный текст, блоки которого независимы друг от друга — они зависят только от значений счетчика. Отрицательной стороной этого свойства является то, что режим n -разрядный блок данных. Положительная сторона этого свойства та, что режим, подобно режиму
(рис 11.9) Шифрование в режиме счетчика как шифр потока
Алгоритм 11.5 содержит процедуру в IV, IV + 1, IV + 3, IV + 6, и так далее. Предполагается, что все N -блоки исходного текста готовы до начала шифрования, но алгоритм может быть переписан, чтобы избежать этого предположения.
Проблемы безопасности для режима
Единственная ошибка в зашифрованном тексте затрагивает только соответствующий бит в исходном тексте.
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.1 сравнивает пять различных режимов работы, рассмотренных в этой лекции.
| Режим работы | Описание | Тип результата | Размер блока |
|---|---|---|---|
| Каждый n-битовый блок шифруется независимо тем же самым ключом | n | ||
| То же самое, что и в |
n | ||
| Каждый r-битовый блок складывается (ИСКЛЮЧАЮЩЕЕ ИЛИ) с r-битовым ключом, который является частью предыдущего текста шифра | Шифр потока | r $$\le$$ n | |
| То же самое, что и в |
Шифр потока | r $$\le$$ n | |
| То же самое, как в |
Шифр потока | n |
Хотя эти пять режимов работы допускают использование
RC4 — потоковый шифр, который был разработан в 1984 г. Рональдом Ривестом.
8 битов) исходного текста складывается (ИСКЛЮЧАЮЩЕЕ ИЛИ) с байтом ключа, чтобы получить байт зашифрованного текста. Ключ засекречивания, из которого сгенерированы однобайтовые ключи в потоке ключей, может содержать от 1 до 256 байтов.
256 байтов активизируется, из нее случайным образом выбирается один байт, чтобы служить ключом для шифрования
Идея может быть показана в виде массива байтов:
S [0] S [l] S [2] ••• S [255]
Заметим, что индексы диапазона элементов — между 0 и 255. Содержание каждого элемента — байт ( 8 битов), который может интерпретироваться как целое число от 0 до 255.
Рисунок 11.10 показывает идею
(рис 11.10) Идея шифра потока RC4Инициализация. Инициализация делается в два шага.
1. На первом шаге матрица состояний инициализируется для значений 0, 1..., 255. Создается также массив ключей K [0], K [1] ..., K [255]. Если ключ засекречивания имеет точно 256 байтов, байты копируются в массив K ; иначе — байты повторяются, пока не заполнится массив K.
for (i = 0 to 255)
{
S[i] <- i
K[i] <- Key [i mod Key Length]
}
2. На втором шаге инициализированная матрица проходит перестановку (скрэмблирование элементов), основанную на значении байтов в K[i]. Ключевой байт используется только на этом шаге, чтобы определить, какие элементы должны быть заменены. После этого шага байты матрицы полностью перетасованы.
j <- 0
for (i = 0 to 255)
{
j <- (1 + S[i] + K[i]) mod 256
swap (S[i] , S[j])
}
Генерация ключевого потока. Ключи k в ключевом потоке генерируются один другим. Сначала элементы матрицы состояний переставляются на основе значений своих элементов и значений двух индивидуальных переменных i и j. Затем значения двух элементов матрицы состояний в позициях i и j используются, чтобы определить индекс элемента матрицы состояний, который служит как ключ k. Следующий код повторяется для каждого байта исходного текста, чтобы создать новый ключевой элемент в ключевом потоке. Переменные i и j инициализируются в 0 прежде, чем будет проведена первая итерация, но значение копируется от одной итерации к следующей.
i <- (i +1) mod 256 j <- (j +S[i]mod256 swap (S [i] , S[j]) k <- S [(S[i] + S[j]) mod 256]
Шифрование или дешифрование. После того как k были создан, байт исходного текста зашифровывается с помощью k, чтобы создать байт зашифрованного текста. Дешифрование представляет собой обратный процесс.
Алгоритм 11.6 показывает процедуру, написанную на
RC4_Encryption (K)
{
// Создание начальной матрицы состояний и ключевых байтов
for (i = 0 to 255)
{
S[i] <- i
K[i] <- Key [i mod Key Length]
}
// Перестановка байтов матрицы состояний на основе значений байта ключа
j <- 0
for (i = 0 to 255)
{
j <- (j+ S[i] + K[i] mod 256
замена (S[i] , S[j])
//Непрерывная перестановка байтов, генерация ключей и шифрование
i <- 0
j <- 0
while (пока есть байты для шифрования)
i <- (i + 1) mod 256
j <- (j +S[i]) mod 256
swap(S[i],S[j])
k <- S[(S[i]+S[j])mod256]
//Ключ готов, шифрование
input P
C <- P ⊕ k
output C
}
}
Пример 11.5
Чтобы показать случайность ключа потока, мы используем ключ засекречивания со всеми нулевыми байтами. Ключевой поток для 20 значений A: (222, 24, 137, 65, 163, 55, 93, 58, 138, 6, 30, 103, 87, 110, 146, 109, 199, 26, 127, 163).
Пример 11.6
Повторим пример 11.5, но пусть ключ засекречивания будет пять байтов (15, 202, 33, 6, 8). Ключевой поток — (248, 184, 102, 54, 212, 237, 186, 133, 51, 238, 108, 106, 103, 214, 39, 242, 30, 34, 144, 49). Снова случайность в ключевом потоке очевидна.
Известно, что шифр безопасен, если размер ключа — по крайней мере, 128 битов ( 16 байтов). Это подтверждается сообщениями о некоторых атаках для малых размеров ключей (меньше, чем 5 байтов). Протоколы, которые сегодня использует
В этом разделе мы вводим шифр потока, который использует линейный 228 битов, при этом каждый кадр длится 4,6 миллисекунды. A5/1 создает поток бит, исходя из ключа на 64 бита. Разрядные потоки собраны в буфере по 228 битов, чтобы складывать их по модулю два с кадром на 228 битов, как показано на рис. 11.11.
(рис 11.11) Общий вид A5/1A5/1 используются три 19,22,23 бита.
(рис 11.12) Три линейных регистра сдвига для AS/5Однобитовый выход обеспечивает тактовыми импульсами буфер на 228 битов, который используется для шифрования (или дешифрования).
Инициализация. Инициализация выполняется для каждого кадра шифрования (или дешифрования). Она использует ключ засекречивания на 64 бита и 22 бита соответствующего номера кадра. Следующие шаги:
1. Сначала все биты в трех линейных регистрах сдвига устанавливаются в 0.
2. Второй: ключ на 64 бита смешивается со значением регистра согласно следующему коду. Каждый линейный регистр смещается на один шаг ( синхронизация ).
For (i = 0 to 63)
{
Сложение по модулю 2 K[i] с крайними левыми битами всех трех регистров.
Синхронизация всех трех линейных регистров сдвига
}
3. Повторить предыдущий процесс, но использовать 22 -битовый кадр.
for (i = 0 to 22)
{
Сложение по модулю 2 номера кадра [i] с крайними левыми битами всех трех регистров.
Синхронизация всех трех линейных регистров сдвига
}
4. В течение 100 циклов синхронизируется весь генератор. При этом используется мажоритарная функция (см. следующий абзац), для того чтобы определить, какой линейный
for (i = 0 to 99)
{
Синхронизация всего генератора, на основе мажоритарной функции
}
Мажоритарная функция. Значение мажоритарной функции ( majority ) с параметрами ( b1 b 2, b3 ) равно 1, если значение большинства битов — 1 ; если это — 0, то ее значение — 0. Например, majority (1, 0, 1) = 1, но majority (0, 0, 1) = 0. Значение мажоритарной функции определяется перед поступлением тактового импульса; три входных бита названы синхронизирующими битами: если самый правый бит равен нулю, это — биты линейных регистров LFSR1 [10], LFSR2 [11] и LFSR3 [11]. Обратите внимание, что в литературе эти биты 8, 10 и 10 отсчитывают слева (как это показано на рис. 11.12). Мы будем рассматривать 10, 11 и 11, считая справа. Это соглашение соответствует месту бита в характеристическом полиноме.
Ключевые биты потока. Генератор ключей создает ключевой поток в один бит при каждом тактовом импульсе. Прежде чем ключ создан, вычисляется мажоритарная функция. Затем каждый линейный
Пример 11.7
В некоторый момент времени биты синхронизации — 1, 0 и 1. Какой должен быть
Решение
Результат Majority (1, 0, 1) = 1. LFSR1 и LAFS3 сдвигаются, а LFSR2 — нет.
Разрядные потоки, созданные генератором ключей, записываются в буфер, чтобы потом сформировать ключ на 228 битов, который затем складывает по модулю два с кадром исходного текста, чтобы создать кадр зашифрованного текста. В один момент времени делается шифрование/дешифрование одного кадра.
Хотя 248 шагами. В 2003 Экдахи и Джонсон (Ekdahi и Johannson) опубликовали атаку, которая вскрывала A5/1 за несколько минут, используя анализ исходного текста в течение 2-5 минут. Имея в виду некоторые новые атаки
Шифрование, которое использует блоки с
Алиса и Боб должны совместно использовать секретный ключ, чтобы иметь надежную связь с использованием шифра с n объектов в сообществе, каждый из которых хочет связаться с n – 1 другим объектом, то тогда необходимы n (n – 1) ключей засекречивания. Однако при шифровании n (n – 1)/2 ключей. Если n — приблизительно миллион, то должны быть выданы почти пятьсот миллионов ключей. Поскольку это нереально, то были найдены несколько других решений. Первое: каждый раз, когда Алиса и Боб хотят связаться, они могут создать между собой сеансовый (временный) ключ. Второе: могут быть установлены один или более
Другая проблема в шифровании
Нижеследующие книги и сайты дают более детальную информацию о предметах, рассмотренных в этой лекции. Пункты, приведенные в квадратных скобках, содержатся в списке в конце книги.
[Sch99], [Sta06], [PHS03], [Sti06], [MOV97] и [KPS02] рассматривают режимы работы. [Vau06] и [Sta06] дают полные сведения о шифрах потока.
Нижеследующие сайты содержат больше информации о темах, обсужденных в этой лекции.
N блоков. Размер блока — n бит. Каждый блок использует для шифрования и дешифрования один и тот же ключ.IV ), чтобы складывать его по модулю два с первым блоком зашифрованного текста.n битов инициализируется установкой заранее заданного значения ( IV ) и увеличивается по заранее заданному правилу.8 битов) исходного текста надо сложить по модулю два с байтом ключа, чтобы создать байт зашифрованного текста. Секретный ключ, из которого генерируются однобайтовые ключи в ключевом потоке, может содержать от 1 до 256 байтов. Ключевой генератор потока базируется на перестановке 256 байтов.64 бита, используя три линейных 17 в зашифрованном тексте блока 8 разрушен в течение передачи. Найдите возможные разрушенные биты в исходном тексте.17 и 18 в зашифрованном тексте блока 9 в процессе передачи были разрушены. Найдите возможные разрушенные биты в исходном тексте.3-6 в зашифрованном тексте блока 11 разрушены ( r = 8 ). Найдите возможные разрушенные биты в исходном тексте.3 и 4 полностью разрушены. Найдите возможные разрушенные биты в исходном тексте.11 разрушен ( r = 8 ). Найдите возможные разрушенные биты в исходном тексте.r = n.r = n.20 элементов ключевого потока, если ключ засекречивания — 7 байтов со значениями 1, 2, 3, 4, 5, 6 и 7. Вы можете при желании написать маленькую программу.16 -байтовый ключ засекречивания. Ключ засекречивания изменяется каждый раз, используя K = (Ki-1+Ki-1 )mod 2128. Покажите, сколькими сообщениями они могут обменяться перед тем, как текст начнет повторяться.Majority (1, 0, 0)Majority (0, 1, 1)Majority (0, 0, 0)Majority (1, 1, 1)shiftleft -процедуры, используемой в алгоритме 11.4.selectleft -процедуры, используемой в алгоритме 11.4.Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.