2.2 Cast-256
Этот алгоритм основан на более раннем алгоритме CAST-128. Оба шифра построены на основе методологииCAST, предложенной Карлайлом Адамсом (англ.Carlisle Adams) и Стаффордом Таваресом (англ.Stafford Tavares), первые две буквы имени которых формируют название методологии. В создании «дизайна» шифра принимали участие такжеХейз Говарди Майкл Винер. [2]
CAST-256 построен из тех же элементов, что и CAST-128, включая S-боксы, но размер блока увеличен вдвое и равен 128 битам. Это влияет на диффузионные свойства и защиту шифра.
В RFC 2612указано, что CAST-256 можно свободно использовать по всему миру в коммерческих и некоммерческих целях.
Алгоритм шифрует информацию 128-битными блоками и использует несколько фиксированных размеров ключа шифрования: 128, 160, 192, 224 или 256 битов.
В алгоритме CAST-256 48 раундов. Рассмотрим первую половину шифра. 128-битный входной блок может быть разделен на четыре 32-битных субблока Ain, Bin, Cinи Din. Субблок Cinскладывается по модулю 2 с Din, видоизмененного в зависимости от раундовой функции f. В результате, получаем субблок Dout. После сдвига входных субблоков вправо на одну позицию, получаем четыре выходных субблока: Aout, Bout, Coutи Dout. Для второй половины шифра рассматривается сдвиг субблоков на одну позицию влево.
Нелинейные функции Sj(где 1 < j < 4) являются подстановками из таблицы (S-бокс) 8x32(в результате, происходит замена 8-битного входного значения на 32-битное). Из-за нелинейной природы, S-функции являются неотъемлемой составляющей безопасности шифра.
Операции
«b», «c», и «d» представляют собой операции
сложения и вычитания, которые выполняются
с 32-битными операндами по модулю
.
Операция «a» представляет собой наложение
входного 32-битного субблока и 32-битного
подключа (который называется маскирующим
подключом). Эта операция, используя одну
из 3 операций(«b», «c», или «d»), производит
вращение в зависимости от 5-битного
подключа (который называется подключом
сдвига). Раундовые функции CAST-256 отличаются
между раундами, потому что объединение
операций, используемых для «a», «b», «c»
и «d», различно.
Математически, типичная раундовая функция выглядит следующим образом:
![]()
![]()
где
Xiпредставляет входные 32-бита
данных, Wjвходные 8-бит данных
в Sjфункции, Kmiи
Kriпредставляют маскирующий
подключ и подключ сдвига соответственно,
Yi, есть выходные 32-бита данных,
после воздействия раундовой функции,
«
»
операции «+» и «-», представляют собой
сложение и вычитание соответственно
по модулю 2. Обозначение «
»
представляет левый сдвиг V по отношению
к U. W, Xi, Yiи Kmi, все
они представляют собой 32-битные субблоки.
Kriимеет длину 5 бит. Расшифровывание
осуществляется по аналогии с шифрованием,
с той лишь разницей, что подключи
используются в обратной последовательности.
Дифференциальные свойства
Важным критерием криптографического шифра, есть невырожденность: свойство, что все выходные биты зависят от всех входных битов, и наоборот. Влияния входных битов на выходные биты называется диффузией. Невырожденность раундовой функции вероятна, так как каждая S-функция невырожденная.
Отметим, что XOR операция не невырождена, так как только один бит из каждого субблока влияет на выходной бит. При рассмотрении дифференциальных свойств CAST-256, получаем, что выходной субблок Doutв первом раунде зависит от всех входных бит субблока Din. Выходные биты субблоков Aout, Boutи Coutне зависят от соответствующих входных бит субблоков Ain, Binи Cin.
После одного раунда биты, соответствующие P3субблока открытого текста теперь невырождены в биты преобразованного открытого текста субблока P4. Аналогично после двух раундов субблок P2невырожден в биты преобразованных P3и P4. После 4 раунда субблок, соответствующий субблоку P4, зависит от всех бит всех субблоков текста. После 7 раунда получаем полную зависимость выходных битов от входных, так как все четыре субблока P1, P2, P3и P4зависят от всех бит преобразованного открытого текста.
Защита от линейного криптоанализа
Линейный криптоанализиспользует построение соотношений между открытым текстом, шифротекстом и ключом, которые справедливы с высокой вероятностью в раундовой функции повторного шифрования. Основным принципом линейного криптоанализа является поиск аппроксимаций в виде:
![]()
где i1, i2,…, iaпозиции бит открытого текста P,j1, j2,…, jbпозиции зашифрованного текста C иk1, k2,…, kcпозиции ключа К. Вероятность соотношений для раундов шифра оценивается следующим образом:
![]()
где pLвероятность того, что линейное выражение (2) выполнено,pBвероятность наилучшей линейной аппроксимации любой S-функции, иaколичество S-функций, участвующих в линейном аппроксимации. Стойкость к линейному криптоанализу строго зависит от общего линейного выражения, ограничивающей вероятность (которое также называют «линейной оболочкой»). Линейные атаки строятся на основе линейного выражения, включающего биты открытого текста и шифротекста(как показано в левой части (2)). В правой части равенства (2) вычисляется XOR сумма битов ключа. Для этого требуется, примерно, следующее число открытых текстов:
![]()
Наилучшую линейную аппроксимацию определяет:
![]()
где m количество бит входных текстов и NLminнелинейность S-функции. Для S-функций CAST-256, m = 8 и NLmin= 74. В каждом раунде выходной бит данных раундовой функции равен XOR сумме всех бит 4-х входных подблоков данных(каждый подблок размером m). Поэтому линейная аппроксимация выходных бит должна состоять из линейных аппроксимаций бит всех входных подблоков. На практике вероятность линейных аппроксимаций CAST-256 гораздо больше 1/2.
Пусть
для r-раундого шифра a = r. При r = 48, NLmin=
74, число известных открытых текстов,
которое требуется для линейного
криптоанализа, составляет около
.
Заметим, что это почти равно общему
числу заданных открытых текстов (
)
и выступает практичности против линейного
нападения на этот шифр.
Более
точную оценку числа открытых текстов,
для линейного криптоанализа шифра CAST,
можно получить, рассматривая объединение
S-функций в раундовой функции. За счет
объединения S-функций в результате XOR
операции нелинейность NLminS-бокса
(который состоит из S-функций) выше 74.
Рассмотрим 32х32 S-бокс, тогда m=32 и а=r/4(так
как мы аппроксимируем раундовые функции
каждый 4-й раунд). Таким образом, получаем
число открытых текстов, необходимых
для линейного криптоанализа 48-раундового
шифра, более чем
(больше
чем количество заданных открытых
текстов). Экспериментальные данные
свидетельствуют о том, что объединение
S-функции, используя такие операции, как
сложение или вычитание, а не XOR, может
увеличить нелинейность S-бокса ещё
больше.
