Дипломная работа: Шифрование и дешифрование данных при помощи симметричных криптографических алгоритмов
Шифрование по магическому квадрату производилось следующим образом. Например, требуется зашифровать фразу: "Приезжаю сегодня". Буквы этой фразы вписываются последовательно в квадрат согласно записанным в них числам, а в пустые клетки ставится точка.
16. | 3 И | 2 Р | 13 Д |
5 З | 10 Е | 11 Г | 8 Ю |
9 С | 6 Ж | 7 А | 12 О |
4 Е | 15 Я | 14 Н | 1 П |
После этого шифрованный текст записывается в строку:
БИРДЗЕГЮСЖАОЕЯНП
При расшифровывании текст вписывается в квадрат, и открытый текст читается в последовательности чисел "магического квадрата"
Программа должна генерировать «магические квадраты» и по ключу выбирать необходимый. Размер квадрата больше чем 3х3.
Метод "спутанной шины"
Ключом является трехбайтовая последовательность. Этот ключ разбивается на 8 зон по 3 бита, каждая зона хранит адрес этого бита в новом байте (см. рис)
Байт 1 Байт 2 Байт 3
|
Бит1 Бит2 Бит3 Бит4 Бит5 Бит6 Бит7 Бит8 |
Для удобства реализации и для увеличения быстродействия метода можно использовать массив масок вместо сдвигов байт.
Многомерная перестановка
В 1991 г. В.М.Кузьмч предложил схему перестановки, основанной на кубике Рубика. Согласно этой схеме открытый текст записывается в ячейки граней куба по строкам. После осуществления заданного числа заданных поворотов слоев куба считывание шифртекста осуществляется по столбикам. Сложность расшифрования в этом случае определяется количеством ячеек на гранях куба и сложностью выполненных поворотов слоев. Перестановка, основанная на кубике Рубика, получила название объемной (многомерной) перестановки.
В 1992-1994 г.г. идея применения объемной перестановки для шифрования открытого текста получила дальнейшее развитие. Усовершенствованная схема перестановок по принципу кубика Рубика, в которой наряду с открытым текстом перестановке подвергаются и функциональные элементы самого алгоритма шифрования, легла в основу секретной системы "Рубикон". В качестве прообразов пространственных многомерных структур, на основании объемных преобразований которых осуществляются перестановки, в системе "Рубикон" используются трехмерные куб и тэтраэдр. Другой особенностью системы "Рубикон" является генерация уникальной версии алгоритма и ключа криптографических преобразований на основании некоторого секретного параметра (пароля). Это обеспечивает как дополнительные трудности для криптоанализа перехваченных сообщений нарушителем (неопределенность примененного алгоритма), так и возможность априорного задания требуемой криптостойкости. Криптостойкость данной системы определяется длиной ключа, криптостойкостью отдельных функциональных элементов алгоритма криптографических преобразований, а также количеством таких преобразований.
Шифр взбивания
Результат шифрования можно ощутимо улучшить, если вместо перестановки использовать линейное преобразование: s=L*t
где L - невырожденная матрица случайного линейного преобразования бит, или, что то же самое, детерминант L не равен нулю. И хотя расшифровывание в этом случае придется осуществлять решением систем линейных уравнений, но каждый бит шифровки начинает уже зависеть от каждого бита текста. Шифры на основе этого преобразования называют скрамблерами или взбивалками. К сожалению, доля невырожденных матриц с увеличением их размера стремительно убывает. Детерминант матрицы L, как и ее элементы, может быть равен либо 0, либо 1. Если det(L)=0, то матрица вырождена.
для матрицы, составленной из квадратных подматриц А, В, С и D, имеем:
¦А В¦
¦ ¦ =det(A)det(B)-det(C)-det(D)
¦C D¦
Для того, чтобы матрица L была невырожденной, случайной и при расшифровании не нужно было производить много вычислений, американскими криптографами был предложен алгоритм, легший в основу стандартного криптографического преобразования DES. Суть его одного шага можно описать следующей схемой. Входной блок данных делится пополам на левую L' и правую R' части. После этого формируется выходной массив так, что его левая часть L" представлена правой частью R' входного, а правая R" формируется как сумма L' и R' операцией XOR. Далее, выходной массив шифруется перестановкой с заменой. Можно убедиться, что все проведенные операции могут быть обращены и расшифровывание осуществляется за число операций, линейно зависящее от размера блока. В то же самое время, после нескольких таких взбиваний можно считать, что каждый бит выходного блока шифровки может зависеть от каждого бита сообщения. С увеличением числа взбиваний порча единственного бита в шифровке делает нечитаемой половину текста, что обусловлено побайтовой перестановкой. Если бы перестановка была побитовая, то весь текст от ошибки в единственном бите перестал бы читаться.
'------программа шифрования взбиванием
DEFINT I-N: DEFSTR S
RANDOMIZE 231
CLS: LOCATE 1, 1
Lot = 5
s$ = ""
FOR i=1 TO 64:s$=s$+CHR$(65+25*RND):NEXT
PRINT s$; " - text": sav = s$
s$ = ""
FOR i=1 TO 192: s$=s$+CHR$(255*RND): NEXT
'---------------------шифрование