Анимация
JavaScript
|
Главная Библионтека ные ошибки передачи, хотя ошибки других типов исправляются не так легко. Теперь кратко опишем каждый из этих режимов. За более подробными сведениями обращайтесь к [278, 142]. Несмотря на то, что мы будем рассматривать все режимы только с использованием DES, должно быть очевидно, что они могут применяться точно так же и в любой другой криптографической системе, основанной на пространстве сообщений, в котором все блоки имеют заданный размер. В режиме сцепления блоков шифра (СВС) секретным ключом является 64-разрядный DES-ключ к (точнее его секретная 56-битовая часть) и некий 64-битовый блок со (при этом секретность со не является обязательной). Открытый текст га разбивается на блоки, длиной по 64 бита каждый, таким образом, что га = mim2 ... m„. Для i = 1, 2, ..., n блок с,- шифртекста вычисляется по формуле с,- = 0Е5к{т, ф c, i), где через ф обозначена операция поразрядного исключающего или (ОфО = О, Оф1 = 1,1фО=1и1ф1=0). В результате получается шифртекст с = ciC2 ... Сп. Для заданного шифртекста при знании fc и Со дешифрование осуществляется посредством вычисления mi для г = 1, 2, ..., n по формуле га,- = c,- i ф DES{ci). Из нее становится понятно, почему не распространяются ошибки при использовании режима СВС - ведь каждый блок открытого текста т, зависит только от двух блоков c,- i и Cj шифртекста. Поэтому одна ошибка при передаче может привести к неправильному дешифрованию только двух блоков открытого текста. Этот режим может (и должен) использоваться также в криптографических системах с открытым ключом (в частности в RSA, которая обсуждается в § 4.4), когда размер шифруемого сообщения больше, чем размер блока. В режиме обратной связи по шифртексту (CFB) открытый текст разбивается не обязательно на 64-битовые блоки. Размер блока задается с помощью числового параметра t, 1 t 64. Открытый текст га в этом случае представляется в виде га = raim2 .. .га„, где каждая его часть raj является t-битовым блоком. С самого начала в сдвиговый 64-разрядный регистр записывается некоторое значение so, которое может быть либо частью секретного ключа, либо пересылаться в открытом виде перед передачей шифртекста сообщения (таким образом, чтобы его можно было каждый раз менять). Затем для г = 1, 2, n блок с,- шифртекста вычисляется как с,- = т,- ф р,-, где через р,-обозначены t старших битов DESk{ci-i). Содержимое сдвигового регистра изменяется отбрасыванием t значений его старших разрядов и конкатенацией к ним справа с,-, согласно формуле Si - (2sj i -Ь Cj) mod 2. Аналогичным образом осуществляется и дешифрование: для г = 1, 2, ..., n точно таким же способом вычисляются Pi и Si, после чего га,- восстанавливаются как га,- = с,- фр,-. Отметим, что при этом самые младшие 64 -i битов каждого результата DES-шифрования отбрасываются. В режиме обратной связи по выходу (OFB) также имеется блок переменного размера t и сдвиговый регистр, который инициализируется некоторым значением so- Однако на этот раз при каждом новом использовании системы должны применяться разные So, и поэтому перед началом передачи шифртекста их необходимо пересылать в открытом виде (таким образом, секретной здесь является только 56-битовая часть ключа к самого алгоритма DES). Пусть га, как обычно, представляется в виде гахгаг .. .га„. Тогда для г = 1, 2, ..., n блок Ci вычисляется точно так же, как и в режиме CFB: с,- = га,- фрг, где через р,-обозначены t значений старших разрядов DESk{si-i). Отличие от CFB заключается в том, что меняется содержимое сдвигового регистра. Официально утвержденная в NBS версия режима OFB устанавливает, что s,- = (2*s,- i + Pi) mod 2, однако в [135, 226] описываются слабости, существующие в этой схеме. Таким образом, при получении pi лучше всего использовать < 8, хотя для обеспечения обратной связи предпочтительнее, тем не менее, использовать t - 64. Поэтому, чтобы совместить эти два противоречивых требования, надежнее всего будет использовать вариант, основанный на «официальной» версии OFB режима: pi и с,- должны вычисляться так, как это уже было указано выше (с небольшим значением t), но при этом необходимо просто заменять S,- на DESfe(s,- i) - обратите внимание, что тогда нам уже не нужен сдвиговый регистр. В рассматриваемом режиме DES применяется для генерации псевдослучайной последовательности pip2 - Pn, которая тем самым используется как одноразовый шифр для открытого текста (см. § 4.5). Поскольку эта последовательность не зависит от открытого текста, то всякий раз, когда к ш So фиксированы, будет вырабатываться один и тот же шифр-текст. Вот почему So каждый раз необходимо менять. Проце- дура дешифрования должна быть очевидна. Хотя этот режим и не является самосинхронизирующимся, зашифрованный в нем с помонцэЮ DES открытый текст прекрасно вс)сстанавливс1ется, даже если какой-то из блоков соответствующего шифртекста был получен с ошибками. Уитфилд Диффи предложил некоторую модификацию режима OFB: так называемый режим счетчика. Этот режим отличается от OFB только тем, что в нем вместо сдвигового регистра используется счетчик, а изменения задаются простой формулой =: 1 -- s, i, где «-Ь» обозначает обычное арифметическое сложение. Если DES действительно является хорошим алгоритмом шифрования, то режим счетчика должен быть ничуть не слабее, чем OFB. Более того, если при работе в таком режиме в DES возникает какая-нибудь случайная ошибка, то при этом неправильно расшифровывается только один блок. Несмотря на свою слабость, использование режима ЕСВ скорее всего неизбежно в прикладных программах бг13 данных, когда требуется произвольный доступ для чтения/записи к различным полям. Тем не менее, если произвольным должен быть только доступ для чтения, то последовательно зашифрованный файл может создаваться либо в СВС, либо в CFB режиме. Однако никогда не следует использовать ни режим OFB, ни режим счетчика, если шифруемый файл восприимчив к изменениям посредством добавления или стирания записей - смотрите упражнение 3.1 в [142]. Отметим, что в режимах CFB и OFB, а также в режиме счетчика, криптографическая система, которая лежит в основе их обсуждения (в нашем случае - это криптосистема DES), использу-тется только для шифрования. По этой причине, криптографические системы с открытым ключом (см. § 4.3) типа RSA (см. § 4.4) должны использоваться только в режиме СВС, при условии, что необходимость в произвольном доступе для чтения/записи не вынудит использовать их в режиме ЕСВ. 0 1 2 3 4 5 6 7 8 9 10 [ 11 ] 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |