Принцип шифрования гаммированием заключается в генерации гаммы шифра с помощью датчика псевдослучайных чисел и наложении полученной гаммы шифра на открытые данные обратимым образом (например, используя операцию сложения по модулю 2). Процесс дешифрования сводится к повторной генерации гаммы шифра при известном ключе и наложении такой же гаммы на зашифрованные данные.
Полученный зашифрованный текст является достаточно трудным для раскрытия в том случае, если гамма шифра не содержит повторяющихся битовых последовательностей и изменяется случайным образом для каждого шифруемого слова. Если период гаммы превышает длину всего зашифрованного текста и неизвестна никакая часть исходного текста, то шифр можно раскрыть только прямым перебором (подбором ключа). В этом случае криптостойкость определяется размером ключа.
Метод гаммирования становится бессильным, если известен фрагмент исходного текста и соответствующая ему шифрограмма. В этом случае простым вычитанием по модулю 2 получается отрезок псевдослучайной последовательности и по нему восстанавливается вся эта последовательность.
Шифрование данных с помощью датчика псевдослучайных чисел (псч)
Линейные конгруэнтные датчики ПСЧ
Чтобы получить линейные последовательности элементов гаммы, длина которых не превышает размер шифруемых данных, используют датчики ПСЧ. Одним из хороших конгруэнтных генераторов является линейный конгруэнтный датчик ПСЧ. Он вырабатывает последовательности псевдослучайных чисел T(i), описываемые соотношением
T( i+1) = ( A * T( i ) + C ) mod M ,
где A и C - константы, T(0) - исходная величина, выбранная в качестве порождающего числа. Очевидно, что эти три величины и образуют ключ.
Такой датчик ПСЧ генерирует псевдослучайные числа с определенным периодом повторения, зависящим от выбранных значений A и C. Значение M обычно устанавливается равным 2b , где b -длина машинного слова в битах. Необходимо выбирать числа A и C так, чтобы период M был максимальным.
Как показано Д.Кнуттом, линейный конгруэнтный датчик имеет максимальную длину M тогда, когда C нечетное и A mod 4 = 1.
В качестве примера использования линейного конгруэнтного датчика ПСЧ рассмотрим процесс шифрования исходного текста “абв”. Пусть b = 5, тогда в соответствии с номером алфавите: буква “а” имеет двоичный код 00001; буква “б” имеет двоичный код 00010; буква “в” имеет двоичный код 00011. Исходный текст будет представлен в виде последовательности 00001 00010 00011.
Для формирования гаммы шифра выберем параметры датчика ПСЧ: A=5; C=3; T(0)=7; M=2b; b=5; M=25=32. Сформируем три псевдослучайных числа:
T(1) = (5*7+3) mod 32 = 6 (00110);
T(2) = (5*6+3) mod 32 = 1 (00001);
T(3) = (5*1+3) mod 32 = 8 (01000).
Полученная гамма шифра 00110 00001 01000. Зашифрованный текст получается путем наложения гаммы шифра на исходный текст (путем сложения по модулю 2):
00001 00010 00011
00110 00001 01000
00111 00011 01011
что соответствует шифрограмме “жвк”, “ж” (седьмая буква в алфавите) имеет код 00111, “в” (третья буква в алфавите) имеет код 00011, “к” (одиннадцатая буква в алфавите) имеет код 01011.
Дешифрование производится путем наложения той же гаммы на зашифрованный текст:
00001 00010 00011
00110 00001 01000
00111 00011 01011
Метод гаммирования с обратной связью
Заключается в том, что для получения сегмента гаммы используется контрольная сумма определенного участка шифруемых данных. Например, если рассматривать гамму шифра как объединение непересекающихся множеств H(j), то процесс шифрования можно пердставить следующими шагами:
1. Генерация сегмента гаммы H(1) и наложение его на соответствующий участок шифруемых данных.
2. Подсчет контрольной суммы участка, соответствующего сегменту гаммы H(1).
3. Генерация с учетом контрольной суммы уже зашифрованного участка данных следующего сегмента гамм H(2).
4. Подсчет контрольной суммы участка данных, соответствующего сегменту данных H(2) и т.д.
Под контрольной суммой понимают функцию f(t(1), ... t(n)), где t(i) - i-е слово шифруемых данных.
Зашифруем исходный текст “абв”, представленный в виде последовательности 00001 00010 00011. Пусть A=5; C=3;b=5; M=32;T(0)=7. Тогда:
T(1)=(5*7+3) mod 32 = 6 (00110).
В качестве контрольной суммы участка данных, выберем количество единиц на этом участке. Тогда сегменту H(1) соответствует участок 00001, количество единиц равно 1.
T(2)=(5*1+3) mod 32 = 8 (01000).
Контрольная сумма следующего участка (00010) равна 1.
T(3)=(5*1+3) mod 32 = 8 (01000).
Полученная шифрограмма:
00001 00010 00011
00110 00001 01000
00111 00011 01011
что соответствует тексту “еик”.
0 коммент.:
Отправить комментарий