Page 1 Страница 1
COMPUTER КОМПЬЮТЕРНЫЕ
SECURITY БЕЗОПАСНОСТЬ
Recommendation for Block Рекомендация для блока
Cipher Modes of Operation: Cipher Режимы работы:
Three Variants of Ciphertext Три варианта зашифрованный текст
Stealing for CBC Mode Кража на работу в режиме CBC
Morris Dworkin Моррис Дворкин
Draft Addendum to Проект Дополнение к
NIST Special Publication 800-38A NIST Special 800-38A публикации
June, 2010 Июня 2010

Page 2 Страница 2

Page 3 Page 3
Computer Security Division Отдел компьютерной безопасности
Information Technology Laboratory Лаборатория информационных технологий
National Institute of Standards and Technology Национальный институт стандартов и технологий
Gaithersburg, MD 20899-8930 Gaithersburg, MD 20899-8930
June 2010 Июнь 2010
US Department of Commerce Министерство торговли США
Gary Locke, Secretary Гэри Лок, секретарь
National Institute of Standards and Technology Национальный институт стандартов и технологий
Patrick Gallagher, Director Патрик Галлахер, директор
Draft Addendum to Проект Дополнение к
NIST Special Publication 800-38A NIST Special 800-38A публикации
Recommendation for Block Рекомендация для блока
Cipher Modes of Operation: Cipher Режимы работы:
Three Variants of Ciphertext Три варианта зашифрованный текст
Stealing for CBC Mode Кража на работу в режиме CBC
Morris Dworkin Моррис Дворкин
COMPUTER КОМПЬЮТЕРНЫЕ
SECURITY БЕЗОПАСНОСТЬ

Page 4 Страница 4
Draft Addendum to NIST Special Publication 800-38A Проект Дополнение к NIST Специального 800-38A публикации
Reports on Information Security Technology Отчеты о безопасности информационных технологий
The Information Technology Laboratory (ITL) at the National Institute of Standards and Technology Техническая лаборатория Информация (ITL) в Национальном институте стандартов и технологий
(NIST) promotes the US economy and public welfare by providing technical leadership for the Nation’s (NIST) способствует американскую экономику и общественное благосостояние путем предоставления технической лидерство для страны
measurement and standards infrastructure. инфраструктура измерения и стандартов. ITL develops tests, test methods, reference data, proof of ITL разрабатывает тесты, методы испытаний, справочные данные, доказательство
concept implementations, and technical analyses to advance the development and productive use of Концепция реализации, и технический анализ для продвижения развития и продуктивного использования
information technology. информационные технологии. ITL's responsibilities include the development of technical, physical, Обязанности ITL включают разработку технической, физической,
administrative, and management standards and guidelines for the cost-effective security and privacy of административные и управленческие стандарты и руководящие принципы для рентабельной безопасности и конфиденциальности
sensitive unclassified information in Federal computer systems. чувствительны несекретные сведения в федеральных компьютерных систем. This Special Publication 800-series Это Special Publication 800-серия
reports on ITL's research, guidance, and outreach efforts in computer security, and its collaborative отчеты о научно-исследовательских, руководство, и информационно-пропагандистской деятельности ITL в области компьютерной безопасности, и его совместная
activities with industry, government, and academic organizations. деятельность с промышленностью, правительством и научными организациями.
Certain commercial entities, equipment, or materials may be identified in this document in order Некоторые коммерческие организации, оборудование или материалы могут быть идентифицированы в данном документе для того,
to describe an experimental procedure or concept adequately. описать экспериментальный порядок или понятие адекватно. Such identification is not intended Такая идентификация не предназначен
to imply recommendation or endorsement by the National Institute of Standards and Technology, подразумевает рекомендацию или одобрение со стороны Национального института стандартов и технологий,
nor is it intended to imply that the entities, materials, or equipment are necessarily the best а также не подразумевает, что лица, материалы или оборудование обязательно лучшим
available for the purpose. средства для этой цели.
Addendum Добавление
National Institute of Standards and Technology Special Publication 800-38A Национальный институт стандартов и технологии Специальный 800-38A публикации
12 pages (June 2010) 12 страниц (июнь 2010)
CODEN: NSPUE2 CODEN: NSPUE2

Page 5 Страница 5
Draft Addendum to NIST Special Publication 800-38A Проект Дополнение к NIST Специального 800-38A публикации
Table of Contents Содержание
1 1
INTRODUCTION ВВЕДЕНИЕ ..............................................................................................................................................1
2 2
SPECIFICATION OF CBC-CS1 СПЕЦИФИКАЦИЯ CBC-CS1 ......................................................................................................................2
3 3
SPECIFICATION OF CBC-CS2 СПЕЦИФИКАЦИЯ CBC-CS2 ......................................................................................................................4
4 4
SPECIFICATION OF CBC-CS3 СПЕЦИФИКАЦИЯ CBC-CS3 ......................................................................................................................6
REFERENCES.............................................................................................................................................................8
List of Figures Список иллюстраций
Figure 1: Рисунок 1: CBC-CS1-Encrypt.......................................................................................................... 3 3
Figure 2: CBC-CS1-Decrypt Рисунок 2: CBC-CS1-Расшифровать ......................................................................................................... 4 4

Page 6 Page 6
Draft Addendum to NIST Special Publication 800-38A Проект Дополнение к NIST Специального 800-38A публикации

Page 7 Страница 7
Draft Addendum to NIST Special Publication 800-38A Проект Дополнение к NIST Специального 800-38A публикации
1 1
1 Introduction 1 Введение
A limitation to Cipher Block Chaining (CBC) mode, as specified in NIST SP 800-38A, Ограничение в режим Cipher Block Chaining (CBC), как указано в NIST SP 800-38A,
Ref. Ссылка. [1], is that the plaintext input must consist of a sequence of blocks. [1], является то, что открытый текст ввода должна состоять из последовательности блоков. (In the rest of (В остальной части
this publication, a block is called a “complete block” to emphasize the contrast with a эта публикация, блок называется "полный блок", чтобы подчеркнуть контраст с
“partial block” whose bit length is smaller than the block size.) Although Appendix A of "Частичного блока" длина которого немного меньше, чем размер блока). Хотя Приложение А
Ref. Ссылка. [1] describes how padding methods can be used to meet this requirement, in such [1] описывает, как методы обивка может быть использован для удовлетворения этого требования, в таких
cases, the length of the resulting ciphertext expands over the length of the unpadded случаи, длина результирующего зашифрованного текста расширяется по всей длине без ведущего
plaintext by the number of padding bits. открытого текста на количество битов заполнения.
This addendum to Ref. Это дополнение к Ref. [1] specifies three variants of CBC mode that accept any plaintext [1] определяет три варианта режиме CBC, которые принимают любую открытый текст
input whose bit length is greater than or equal to the block size, whether or not the length вход которого немного длина больше или равен размеру блока, или нет длины
is a multiple of the block size. является кратным размеру блока. Unlike the padding methods discussed in Ref. В отличие от методов обивка обсуждаемых в работе. [1], these [1], эти
variants avoid ciphertext expansion. варианты избежать расширение зашифрованного текста.
These variants are denoted CBC-CS1, CBC-CS2, and CBC-CS3, where “CS” indicates Эти варианты обозначаются CBC-CS1, CBC-CS2 и CBC-CS3, где "CS" указывает
“ciphertext stealing,” because when padding bits are needed in these variants, they are "Зашифрованного текста воровства", потому что, когда обивка бита необходимы в этих вариантах, они
taken from the penultimate ciphertext block. взяты из предпоследнего блока зашифрованного текста. The variants differ only in the ordering of Варианты отличаются только в упорядочении
the ciphertext bits. шифртекста бит. CBC-CS1 was specified as a suggestion on the NIST Computer CBC-CS1 был указан в качестве предложения на NIST Computer
Security Resource Center web site. Центр обеспечения безопасности ресурсов веб-сайт. CBC-CS2 is specified, for example, in Ref. CBC-CS2 указано, например, в работе. [3]. [3].
CBC-CS3 is the variant specified for Kerberos 5 in Ref. CBC-CS3 является вариант, указанный для Kerberos 5 в работе. [2]. [2].
Below are the specifications for encryption and decryption using CBC-CS1, CBC-CS2, Ниже приведены спецификации для шифрования и дешифрования с использованием CBC-CS1, CBC-CS2,
and CBC-CS3, building on the specification of the CBC encryption and decryption in и CBC-CS3, опираясь на спецификации шифрования CBC и дешифрования в
Ref. Ссылка. [1]. [1]. Diagrams are given for CBC-CS1 encryption and decryption. Схемы приведены для шифрования CBC-CS1 и дешифрования. Each variant Каждый вариант
inherits the relevant requirements of Ref. наследует соответствующие требованиям Реф. [1], eg, on the underlying block cipher, the [1], например, на блочного шифра,
key, and the initialization vector. ключ и вектор инициализации.
The following notational conventions apply to the specifications below: Следующие условные обозначения применяются спецификацию ниже:
• Bit strings are denoted with upper case letters; • строки Bit обозначены заглавными буквами; integers with lower case letters. целые числа, строчными буквами.
• The block size of the underlying block cipher is denoted b . • размер блока блочного шифра обозначается б.
• For a bit string X , the bit length of X is denoted len( X ). • Для битовую строку X, немного длина X обозначается LEN (X).
• For a bit string X and a positive integer r that does not exceed len( X ), the string • Для битовой строки X и натурального г, что не превышает Len (X), струнного
consisting of the leftmost r bits of X is denoted MSB состоящий из левых г битов X обозначается MSB
r г
( X ), and the string consisting (X), и строка, состоящая
of the rightmost r bits of X is denoted LSB из правых г битов X обозначается LSB
r г
( X ). (Х).
• For an input block B and key K , the output block of the cipher function • Для входного блока B и ключа К, выходного блока шифра функции
(“encryption”) is denoted CIPH ("Шифрование") обозначается CIPH
K K
( B ), and the output block of the inverse cipher (В), а на выходе блока обратного шифра
function (“decryption”) is denoted CIPH Функция ("расшифровки") обозначается CIPH
-1 -1
K K
( B ). (Б).
In principle, the input strings to encryption and decryption for each of the variants may be В принципе, входные строки в шифрования и дешифрования для каждого из вариантов может быть
any string whose length is not less than b bits, but typically an implementation is любая строка, длина которой составляет не менее б битов, но, как правило, реализация
designed to accept a restricted set of lengths. предназначен для приема ограниченный набор длин. For example, the set of lengths may be Например, множество длин может быть

Page 8 Страница 8
Draft Addendum to NIST Special Publication 800-38A Проект Дополнение к NIST Специального 800-38A публикации
2 2
restricted to multiples of 8, so that the input strings may be represented with bytes/octets. ограничивается кратных 8, так, что входные последовательности могут быть представлены с байтами / октетов.
The input lengths that an implementation allows are called the valid lengths. Длины вход, что реализация позволяет называются допустимые длины.
2 Specification of CBC-CS1 2 Спецификация CBC-CS1
Algorithm: CBC-CS1-Encrypt Алгоритм: CBC-CS1-Шифрование
Input : Вход:
plaintext P , such that len( P ) is valid, including that len( P )≥ b ; открытого текста P, например, что лен (P) справедливо, в том числе той LEN (P)B;
initialization vector IV ; Вектор инициализации IV;
key K . ключ К.
Output : Выход:
ciphertext C , such that len( C )=len( P ). С зашифрованного текста, таким образом, что LEN (C) = Len (Р).
Steps : Шаги:
1. 1.
Let n be the smallest integer such that nb ≥len( P ), let d= len( P )-( n -1)⋅ b , and let P Пусть п наименьшее целое такое, что пб ≥len (P), Пусть D = Len (P) - (п-1)б, и пусть P
1 1
, ,
P P
2 2
, … , P , ..., Р
n -1 П -1
, P , Р
n н
* *
be the unique sequence of bit strings such that: быть уникальная последовательность битовых строк таких, что:
a) а)
P = P Р = Р
1 1
|| P || P
2 2
||…|| P || ... || P
n -1 П -1
|| P || P
n н
* *
; ; and и
b) б)
P P
1 1
, P , Р
2 2
, … and P , ... И P
n -1 П -1
are complete blocks. полные блоки.
Consequently, len( P Следовательно, длина (P
n н
* *
)= d , and 1≤ db , so that P ) = D, и 1≤ дВ, поэтому, что P
n н
* *
is either a complete block or a либо полный блок или
nonempty partial block. пусто частичная блок.
2. 2.
If d = b , ie, P Если D = B, то есть, P
n н
* *
is a complete block, then полный блок, затем
a) apply CBC encryption with initialization vector IV and key K to the а) применять шифрование CBC с вектором инициализации IV и ключа К к
plaintext ( P открытый текст (P
1 1
, P , Р
2 2
, … P , ... P
n -1 П -1
, P , Р
n н
* *
) to produce ( C ) С получением (C
1 1
, C , С
2 2
, … C , ... С
n -1 П -1
, C , С
n н
); );
b) б)
return C Возвращение C
1 1
|| C || C
2 2
|| … || C || ... || C
n -1 П -1
|| C || C
n н
. . STOP. СТОП.
If d < b , ie, P Если D <б, то есть, P
n н
* *
is a partial block, go to Step 3. представляет собой частичную блок, перейдите к шагу 3.
3. 3.
Let PAD be the bit string consisting of bd '0' bits, and let P Пусть PAD быть немного строка, состоящая из BD "0" бит, и пусть P
n н
= P = P
n н
* *
|| PAD . || PAD.
4. 4.
Apply CBC encryption to the plaintext ( P Применить шифрование CBC к открытому тексту (P
1 1
, P , Р
2 2
, … P , ... P
n -1 П -1
, P , Р
n н
) with initialization ) С инициализации
vector IV and key K to produce ( C вектор IV и ключ К для производства (C
1 1
, C , С
2 2
, … C , ... С
n -1 П -1
, C , С
n н
). ).
5. 5.
Let C Пусть C
n -1 П -1
* *
= MSB = MSB
d д
( C
n -1 П -1
). ).
6. 6.
Return C Вернуться C
1 1
|| C || C
2 2
||…|| C || ... || C
n -2 П -2
|| C || C
n -1 П -1
* *
|| C || C
n н
. .
Diagram : Figure 1 below illustrates the CBC-CS1-Encrypt algorithm for the case that Схема: На рисунке 1 ниже иллюстрирует CBC-CS1-Шифрование алгоритм для случая, когда
d < b . г <б. The bolded rectangles contain the inputs and outputs. В полужирный прямоугольники содержат входы и выходы. The dotted rectangles Пунктирные прямоугольники
provide alternate representations of two blocks in order to illustrate the role of the обеспечить альтернативное представление двух блоков, чтобы проиллюстрировать роль
“stolen” ciphertext. "Украдены" зашифрованный текст.
In particular, the string of the b - d rightmost bits of C В частности, строка из си - ре правые биты C
n -1 П -1
, denoted C , Обозначается C
n -1 П -1
** **
, becomes the , Становится
padding for the input block to the final invocation of the block cipher. Подушка входного блока до конечного вызова блочного шифра. The ciphertext Зашифрованный текст
that is returned in Step 6 above omits C что возвращается в шаге 6 выше опускает C
n -1 П -1
** **
, because it can be recovered from C , Потому что он может быть извлечен из С
n н
during во
decryption. расшифровки.

Page 9 Страница 9
Draft Addendum to NIST Special Publication 800-38A Проект Дополнение к NIST Специального 800-38A публикации
3 3
Figure 1: CBC-CS1-Encrypt Рисунок 1: CBC-CS1-Шифрование
Algorithm: CBC-CS1-Decrypt Алгоритм: CBC-CS1-Расшифровать
Input : Вход:
ciphertext C , such that len( C ) is valid, including that len( C )≥ b ; С зашифрованного текста, таким образом, что LEN (C) действует, в том числе LEN (C)B;
initialization vector IV ; Вектор инициализации IV;
key K . ключ К.
Output : Выход:
plaintext P , such that len( P ) = len( C ). открытого текста Р, таким образом, что Len (Р) = Len (С).
Steps : Шаги:
1. 1.
Let n be the smallest integer such that nb ≥len( C ), let d= len( C )-( n -1)⋅ b , and let C Пусть п наименьшее целое такое, что пб ≥len (C), пусть D = Len (C) - (п-1)б, и пусть C
1 1
, ,
C C
2 2
, … , C , ..., C
n -2 П -2
, C , С
n -1 П -1
* *
, C , С
n н
be the unique sequence of bit strings such that быть уникальная последовательность битовых строк такое, что
a) а)
C = C С = С
1 1
|| C || C
2 2
||…|| C || ... || C
n -2 П -2
|| C || C
n -1 П -1
* *
|| C || C
n н
; ;
b) б)
C C
n н
is a complete block; является полная блокада; and и
c) в)
If n >2, then C Если N> 2, то С
1, 1,
…, C ..., C
n -2 П -2
, are complete blocks. , Полные блоки.
Consequently, len( C Следовательно, LEN (C
n -1 П -1
* *
)= d , and 1≤db , so that C ) = D, и 1≤dВ, поэтому, что C
n -1 П -1
* *
is either a complete block or либо полный блок или
a nonempty partial block. непустое частичная блок.
2. 2.
If d = b , ie, C Если D = B, то есть, C
n -1 П -1
* *
is a complete block, then полный блок, затем
a) а)
apply CBC decryption to ( C применить расшифровку CBC в (C
1 1
, C , С
2 2
, … , C , ..., C
n -2 П -2
, C , С
n -1 П -1
* *
, C , С
n н
) with ) С
initialization vector IV and key K to produce ( P вектор инициализации IV и ключ К для производства (P
1 1
, P , Р
2 2
, … P , ... P
n -1 П -1
, P , Р
n н
); );
b) б)
return P вернуться P
1 1
|| P || P
2 2
||…|| P || ... || P
n -1 П -1
|| P || P
n н
. . STOP. СТОП.
If d < b , ie, C Если D <б, то есть, C
n -1 П -1
* *
is a partial block, then go to Step 3. представляет собой частичную блок, затем перейдите к шагу 3.
3. 3.
Let Z Пусть Z
* *
=MSB = MSB
d д
(CIPH (CIPH
-1 -1
K K
( C
n н
)), and Z )), И Z
** **
=LSB = LSB
b - d б - д
(CIPH (CIPH
-1 -1
K K
( C
n н
)). )).

Page 10 Страница 10
Draft Addendum to NIST Special Publication 800-38A Проект Дополнение к NIST Специального 800-38A публикации
4 4
4. 4.
Let C Пусть C
n -1 П -1
=C = С
n -1 П -1
* *
|| Z || Z
** **
. .
5. 5.
Apply CBC decryption to ( C Применить расшифровку CBC в (C
1 1
, C , С
2 2
, … , C , ..., C
n -1 П -1
) with initialization vector IV and key ) С вектор инициализации IV и ключ
K to produce ( P К производить (P
1 1
, P , Р
2 2
, … P , ... P
n -1 П -1
). ).
6. 6.
Let P Пусть P
n н
* *
=C = С
n -1 П -1
* *
Z Z
* *
. .
7. 7.
Return P Вернуться P
1 1
|| P || P
2 2
||…|| P || ... || P
n -1 П -1
|| P || P
n н
* *
. .
Diagram : Схема:
Figure 2 below illustrates the CBC-CS1-Decrypt algorithm for the case that d < b . На рисунке 2 показано алгоритм CBC-CS1-Расшифровать для случая, когда г <р. As in Как и в
the previous diagram, the bolded rectangles contain the inputs and outputs. предыдущая схема, что жирным шрифтом прямоугольники содержат входы и выходы.
Figure 2: CBC-CS1-Decrypt Рисунок 2: CBC-CS1-Расшифровать
3 Specification of CBC-CS2 3 Спецификация CBC-CS2
Algorithm: CBC-CS2-Encrypt Алгоритм: CBC-CS2-Шифрование
Input : Вход:
plaintext P , such that len( P ) is valid, including that len( P )≥ b ; открытого текста P, например, что лен (P) справедливо, в том числе той LEN (P)B;
initialization vector IV ; Вектор инициализации IV;
key K . ключ К.
Output : Выход:
ciphertext C , such that len( C ) = len( P ). С зашифрованного текста, таким образом, что LEN (C) = Len (Р).
P P
1 1
C C
1 1
P P
2 2
C C
2 2
P P
n -1 П -1
C C
n н
IV IV
CIPH CIPH
-1 -1
K K
CIPH CIPH
-1 -1
K K
CIPH CIPH
-1 -1
K K
...
C C
n -1 П -1
Z Z
** **
C C
n -1 П -1
* *
P P
n н
* *
CIPH CIPH
-1 -1
K K
Z Z
* *
Z Z
** **

Page 11 Страница 11
Draft Addendum to NIST Special Publication 800-38A Проект Дополнение к NIST Специального 800-38A публикации
5 5
Steps : Шаги:
1. 1.
Let n be the smallest integer such that nb ≥len( P ), let d= len( P )-( n -1)⋅ b , and let P Пусть п наименьшее целое такое, что пб ≥len (P), Пусть D = Len (P) - (п-1)б, и пусть P
1 1
, ,
P P
2 2
, … , P , ..., Р
n -1 П -1
, P , Р
n н
* *
be the unique sequence of bit strings such that: быть уникальная последовательность битовых строк таких, что:
a) а)
P = P Р = Р
1 1
|| P || P
2 2
||…|| P || ... || P
n -1 П -1
|| P || P
n н
* *
; ; and и
b) б)
P P
1 1
, P , Р
2 2
, … and P , ... И P
n -1 П -1
are complete blocks. полные блоки.
Consequently, len( P Следовательно, длина (P
n н
* *
)= d , and 1≤ db , so that P ) = D, и 1≤ дВ, поэтому, что P
n н
* *
is either a complete block or a либо полный блок или
nonempty partial block. пусто частичная блок.
2. 2.
If d = b , ie, P Если D = B, то есть, P
n н
* *
is a complete block, then полный блок, затем
a) apply CBC encryption with initialization vector IV and key K to the а) применять шифрование CBC с вектором инициализации IV и ключа К к
plaintext ( P открытый текст (P
1 1
, P , Р
2 2
, … P , ... P
n -1 П -1
, P , Р
n н
* *
) to produce ( C ) С получением (C
1 1
, C , С
2 2
, … C , ... С
n -1 П -1
, C , С
n н
); );
b) б)
return C Возвращение C
1 1
|| C || C
2 2
||… C || ... C
n -1 П -1
|| C || C
n н
. . STOP. СТОП.
If d < b , ie, P Если D <б, то есть, P
n н
* *
is a partial block, go to Step 3. представляет собой частичную блок, перейдите к шагу 3.
3. 3.
Let PAD be the bit string consisting of bd '0' bits, and let P Пусть PAD быть немного строка, состоящая из BD "0" бит, и пусть P
n н
=P = P
n н
* *
|| PAD . || PAD.
4. 4.
Apply CBC encryption to the plaintext ( P Применить шифрование CBC к открытому тексту (P
1 1
, P , Р
2 2
, … P , ... P
n -1 П -1
, P , Р
n н
) with initialization ) С инициализации
vector IV and key K to produce ( C вектор IV и ключ К для производства (C
1 1
, C , С
2 2
, … C , ... С
n -1 П -1
, C , С
n н
). ).
5. 5.
Let C Пусть C
n -1 П -1
* *
=MSB = MSB
d д
( C
n -1 П -1
). ).
6. 6.
Return C Вернуться C
1 1
|| C || C
2 2
||…|| C || ... || C
n -2 П -2
|| C || C
n н
|| C || C
n -1 П -1
* *
. .
Note that the output in Step 6 of CBC-CS2-Encrypt is almost identical to the output in Обратите внимание, что выход в Шаге 6 CBC-CS2-Шифрование практически идентичен выходу в
Step 6 of CBC-CS1-Encrypt. Пункт 6 CBC-CS1 зашифровать. The only difference is the ordering of the final b + d bits; Разница лишь в том упорядочение окончательных B + D бит; in в
particular, C частности, C
n н
precedes C предшествует C
n -1 П -1
* *
instead of following it. вместо того чтобы следовать его.
Algorithm: CBC-CS2-Decrypt Алгоритм: CBC-CS2-Расшифровать
Input : Вход:
ciphertext C , such that len( C ) is valid, including that len( C )≥ b ; С зашифрованного текста, таким образом, что LEN (C) действует, в том числе LEN (C)B;
initialization vector IV ; Вектор инициализации IV;
key K . ключ К.
Output : Выход:
plaintext P , such that len( P )=len( C ). открытого текста Р, таким образом, что Len (Р) = Len (С).
Steps : Шаги:
1. 1.
Let n be the smallest integer such that nb ≥len( C ), let d= len( C )-( n -1)⋅ b , and let C Пусть п наименьшее целое такое, что пб ≥len (C), пусть D = Len (C) - (п-1)б, и пусть C
1 1
, ,
C C
2 2
, … , C , ..., C
n -2 П -2
, C , С
n -1 П -1
, C , С
n н
* *
be the unique sequence of bit strings such that быть уникальная последовательность битовых строк такое, что
a) а)
C = C С = С
1 1
|| C || C
2 2
||…|| C || ... || C
n -2 П -2
|| C || C
n -1 П -1
|| C || C
n н
* *
; ;
b) б)
C C
n -1 П -1
is a complete block; является полная блокада; and и
c) в)
If n >2, then C Если N> 2, то С
1, 1,
…, C ..., C
n -2 П -2
, are complete blocks. , Полные блоки.
Consequently, len( C Следовательно, LEN (C
n н
* *
)= d , and 1 ≤ db , so that C ) = D, и 1 ≤ DB, C таким образом, чтобы
n н
* *
is either a complete block or либо полный блок или
a nonempty partial block. непустое частичная блок.

Page 12 Страница 12
Draft Addendum to NIST Special Publication 800-38A Проект Дополнение к NIST Специального 800-38A публикации
6 6
2. 2.
If d = b , ie, C Если D = B, то есть, C
n н
* *
is a complete block, then полный блок, затем
a) а)
apply CBC decryption to ( C применить расшифровку CBC в (C
1 1
, C , С
2 2
, … , C , ..., C
n -1 П -1
, C , С
n н
* *
) with initialization ) С инициализации
vector IV and key K to produce ( P вектор IV и ключ К для производства (P
1 1
, P , Р
2 2
, … , P , ..., Р
n -1 П -1
, P , Р
n н
); );
b) б)
return P вернуться P
1 1
|| P || P
2 2
||…|| P || ... || P
n -1 П -1
|| P || P
n н
. . STOP. СТОП.
If d < b , ie, C Если D <б, то есть, C
n н
* *
is a partial block, then go to Step 3. представляет собой частичную блок, затем перейдите к шагу 3.
3. 3.
Apply Steps 3-6 of CBC-CS1-Decrypt to C Применить шаги 3-6 из CBC-CS1-Расшифровать в C
1 1
|| C || C
2 2
||…|| C || ... || C
n -2 П -2
|| C || C
n н
* *
|| C || C
n -1 П -1
to return P вернуться P
1 1
|| P || P
2 2
||…|| P || ... || P
n -1 П -1
|| P || P
n н
* *
. .
Note that in Step 3, C Обратите внимание, что на шаге 3, C
n н
* *
precedes C предшествует C
n -1 П -1
in order to undo the corresponding swap within the , чтобы отменить соответствующий обмен в рамках
ciphertext in Step 6 of CBC-CS2-Encrypt. зашифрованный текст в Шаге 6 CBC-CS2-Encrypt.
4 Specification of CBC-CS3 4 Спецификация CBC-CS3
Algorithm: CBC-CS3-Encrypt Алгоритм: CBC-CS3-Шифрование
Input : Вход:
plaintext P , such that len( P ) is valid, including that len( P )≥ b ; открытого текста P, например, что лен (P) справедливо, в том числе той LEN (P)B;
initialization vector IV ; Вектор инициализации IV;
key K . ключ К.
Output : Выход:
ciphertext C , such that len( C )=len( P ). С зашифрованного текста, таким образом, что LEN (C) = Len (Р).
Steps : Шаги:
1. 1.
Let n be the smallest integer such that nb ≥len( P ), let d= len( P )-( n -1)⋅ b , and let P Пусть п наименьшее целое такое, что пб ≥len (P), Пусть D = Len (P) - (п-1)б, и пусть P
1 1
, ,
P P
2 2
, … , P , ..., Р
n -1 П -1
, P , Р
n н
* *
be the unique sequence of bit strings such that: быть уникальная последовательность битовых строк таких, что:
a) а)
P = P Р = Р
1 1
|| P || P
2 2
||…|| P || ... || P
n -1 П -1
|| P || P
n н
* *
; ; and и
b) б)
P P
1 1
, P , Р
2 2
, … and P , ... И P
n -1 П -1
are complete blocks. полные блоки.
Consequently, len( P Следовательно, длина (P
n н
* *
)= d , and 1≤ db , so that P ) = D, и 1≤ дВ, поэтому, что P
n н
* *
is either a complete block or a либо полный блок или
nonempty partial block. пусто частичная блок.
2. 2.
If d = b , ie, P Если D = B, то есть, P
n н
* *
is a complete block, then полный блок, затем
a) apply CBC encryption with initialization vector IV and key K to the а) применять шифрование CBC с вектором инициализации IV и ключа К к
plaintext ( P открытый текст (P
1 1
, P , Р
2 2
, … P , ... P
n -1 П -1
, P , Р
n н
* *
) to produce ( C ) С получением (C
1 1
, C , С
2 2
, … C , ... С
n -1 П -1
, C , С
n н
); );
b) б)
return C Возвращение C
1 1
|| C || C
2 2
||…|| C || ... || C
n -2 П -2
|| C || C
n н
|| C || C
n -1 П -1
. . STOP. СТОП.
If d < b , ie, P Если D <б, то есть, P
n н
* *
is a partial block, go to Step 3. представляет собой частичную блок, перейдите к шагу 3.
3. 3.
Let PAD be the bit string consisting of bd '0' bits, and let P Пусть PAD быть немного строка, состоящая из BD "0" бит, и пусть P
n н
=P = P
n н
* *
|| PAD . || PAD.
4. 4.
Apply CBC encryption to the plaintext ( P Применить шифрование CBC к открытому тексту (P
1 1
, P , Р
2 2
, … P , ... P
n -1 П -1
, P , Р
n н
) with initialization ) С инициализации
vector IV and key K to produce ( C вектор IV и ключ К для производства (C
1 1
, C , С
2 2
, … C , ... С
n -1 П -1
, C , С
n н
). ).
5. 5.
Let C Пусть C
n -1 П -1
* *
=MSB = MSB
d д
( C
n -1 П -1
). ).
6. 6.
Return C Вернуться C
1 1
|| C || C
2 2
||…|| C || ... || C
n -2 П -2
|| C || C
n н
|| C || C
n -1 П -1
* *
. .

Page 13 Страница 13
Draft Addendum to NIST Special Publication 800-38A Проект Дополнение к NIST Специального 800-38A публикации
7 7
Note that in Step 6 of CBC-CS3-Encrypt, as in CBC-CS2-Encrypt, the positions of C Обратите внимание, что в Шаге 6 CBC-CS3-Шифрование, как в CBC-CS2-Шифрование, позиции C
n -1 П -1
* *
and C и С
n н
are swapped in comparison to Step 6 of CBC-CS1-Encrypt. меняются местами по сравнению пункт 6 CBC-CS1 зашифровать. For CBC-CS3- Для CBC-CS3-
Encrypt, the analogous swap also occurs in the case that P Шифрование, аналогично подкачки также происходит в том случае, если Р
n н
* *
is a complete block. полный блок. In В
particular, within the output of Step 2 for CBC-CS3-Encrypt, C частности, в выходе шаг 2 для CBC-CS3 зашифровать, C
n н
precedes C предшествует C
n -1 П -1
, in contrast , В отличие
to the output of Step 2 for CBC-CS1-Encrypt and CBC-CS2-encrypt, where C к выходу шаг 2 для CBC-CS1-шифрования и CBC-CS2-шифрования, где С
n н
follows следующим образом
C C
n -1 П -1
. .
Algorithm: CBC-CS3-Decrypt Алгоритм: CBC-CS3-Расшифровать
Input : Вход:
ciphertext C , such that len( C ) is valid, including that len( C )≥ b ; С зашифрованного текста, таким образом, что LEN (C) действует, в том числе LEN (C)B;
initialization vector IV ; Вектор инициализации IV;
key K . ключ К.
Output : Выход:
plaintext P , such that len( P )=len( C ). открытого текста Р, таким образом, что Len (Р) = Len (С).
Steps : Шаги:
1. 1.
Let n be the smallest integer such that nb ≥len( C ), let d= len( C )-( n -1)⋅ b , and let C Пусть п наименьшее целое такое, что пб ≥len (C), пусть D = Len (C) - (п-1)б, и пусть C
1 1
, ,
C C
2 2
, … , C , ..., C
n -2 П -2
, C , С
n -1 П -1
, C , С
n н
* *
be the unique sequence of bit strings such that быть уникальная последовательность битовых строк такое, что
a) а)
C = C С = С
1 1
|| C || C
2 2
||…|| C || ... || C
n -2 П -2
|| C || C
n -1 П -1
|| C || C
n н
* *
; ;
b) б)
C C
n -1 П -1
is a complete block; является полная блокада; and и
c) в)
If n >2, then C Если N> 2, то С
1, 1,
…, C ..., C
n -2 П -2
, are complete blocks. , Полные блоки.
Consequently, len( C Следовательно, LEN (C
n н
* *
)= d , and 1≤db , so that C ) = D, и 1≤dВ, поэтому, что C
n н
* *
is either a complete block or a либо полный блок или
nonempty partial block. пусто частичная блок.
2. 2.
Apply the CBC-CS1-Decrypt algorithm with initialization vector IV and key K to Применить алгоритм CBC-CS1-Расшифровать с вектором инициализации IV и ключа К к
C C
1 1
|| C || C
2 2
||… || C || ... || C
n -2 П -2
|| C || C
n н
* *
|| C || C
n -1 П -1
to return P вернуться P
1 1
|| P || P
2 2
||…|| P || ... || P
n -1 П -1
|| P || P
n н
* *
. .
Note that in Step 2, C Следует отметить, что на стадии 2, С
n н
* *
precedes C предшествует C
n -1 П -1
in order to undo the corresponding swaps within the , чтобы отменить соответствующие свопы внутри
ciphertexts in Steps 2b and 6 of CBS-CS3-Encrypt. шифртексты на этапах 2b и 6 КОС-CS3 зашифровать.

Page 14 Страница 14
Draft Addendum to NIST Special Publication 800-38A Проект Дополнение к NIST Специального 800-38A публикации
8 8
References Ссылки
[1] [1]
Dworkin, M., NIST Special Publication 800-38A, 2001 Edition : Recommendation Дворкин, М., NIST Special 800-38A публикации, издание 2001: Рекомендации
for Block Cipher Modes of Operation, Methods and Techniques , December 2001, для блочного шифра режимах работы, методы и приемы, декабрь 2001,
Natl. Natl. Inst. Ин-т. Stand. Стенд. Technol. Technol. [Web page], http://www.csrc.nist.gov/publications/ [Веб страница], http://www.csrc.nist.gov/publications/
nistpubs/800-38a/sp800-38a.pdf . nistpubs / 800-38a / sp800-38a.pdf.
[2] [2]
Raeburn, K., Request for Comments 3962 : Advanced Encryption Standard (AES) Raeburn, К., Запрос на комментарии 3962: Advanced Encryption Standard (AES)
Encryption for Kerberos 5 , Internet Engineering Task Force, February 2005. Шифрование для Kerberos 5, Internet Engineering Task Force, февраль 2005.
[3] [3]
Schneier, B., Applied Cryptography, Second Edition: protocols, algorithms, and Шнайер Б. Прикладная криптография, Second Edition: протоколы, алгоритмы, и
source code in C. исходный код на языке C. New York: Wiley, 1996. Нью-Йорк: Wiley, 1996.