Криптографическая защита информации. Ведение Криптографическая защита информации
Скачать 0.84 Mb.
|
Шифрование методом гаммированияОписание задачиСуть этого метода состоит в том, что символы шифруемого текста последовательно складываются с символами некоторой специальной последовательности, которая называется гаммой. Иногда такой метод представляют как наложение гаммы на исходный текст, поэтому он получил название "гаммирование". Процедуру наложения гаммы на исходный текст можно осуществить двумя способами. При первом способе символы исходного текста и гаммы заменяются цифровыми эквивалентами, которые затем складываются по модулю k, где k – число символов в алфавите, т.е. Тш = (То + Тг) mod k, где Tш, Tо, Tг – символы соответственно зашифрованного, исходного текста и гаммы. При втором методе символы исходного текста и гаммы представляются в виде двоичного кода, затем соответствующие разряды складываются по модулю 2. Вместо сложения по модулю 2 при гаммировании можно использовать и другие логические операции, например преобразование по правилу логической эквивалентности или логической неэквивалентности. Такая замена равносильна введению еще одного ключа, которым является выбор правила формирования символов зашифрованного сообщения из символов исходного текста и гаммы. Стойкость шифрования методом гаммирования определяется главным образом свойствами гаммы – длительностью периода и равномерностью статистических характеристик. Последнее свойство обеспечивает отсутствие закономерностей в появлении различных символов в пределах периода. Обычно разделяют две разновидности гаммирования – с конечной и бесконечной гаммами. При хороших статистических свойствах гаммы стойкость шифрования определяется только длиной периода гаммы. При этом, если длина периода гаммы превышает длину шифруемого текста, то такой шифр теоретически является абсолютно стойким, т.е. его нельзя вскрыть при помощи статистической обработки зашифрованного текста. Это, однако, не означает, что дешифрование такого текста вообще невозможно: при наличии некоторой дополнительной информации исходный текст может быть частично или полностью восстановлен даже при использовании бесконечной гаммы. В качестве гаммы может быть использована любая последовательность случайных символов, например, последовательность цифр числа пи, числа е и т.п. При шифровании с помощью ЭВМ последовательность гаммы формируется с помощью датчика псевдослучайных чисел. В настоящее время разработано несколько алгоритмов работы таких датчиков, которые обеспечивают удовлетворительные характеристики гаммы. Описание логической структуры#include #include #include unsigned char otext[255]; unsigned char ztext[255]; void main() { unsigned i; unsigned char key; clrscr(); for (i=0; i<255; i++) { otext[i]=0; ztext[i]=0; }; printf("Введите английский текст: "); i=0; do { key=bioskey(0); if (key==32) { otext[i]='*'; printf("%c",key); i++; }; key=key & 0xDF; if (key==32) { otext[i]='*'; printf("%c",key); i++; }; if (key!=13) if ((key>'@') && (key<'[')) { otext[i]=key; printf("%c",key); i++; }; } while ((i<255) && (key!=13)); i=0; do { if (otext[i]!=0) { ztext[i]=otext[i] ^ 0x69; i++; }; } while (otext[i]!=0); printf("\nЗашифрованный текст: "); i=0; do { if (ztext[i]!=0) printf("%c",ztext[i]); else i=254; i++; } while (i<255); bioskey(0); Шифрование с помощью аналитических преобразованийОписание задачиДостаточно надежное закрытие информации может быть обеспечено при использовании для шифрования некоторых аналитических преобразований. Для этого можно использовать методы алгебры матриц, например, умножение матрицы на вектор по правилу: . Если матрицу |Aij| использовать в качестве ключа, а вместо компонента вектора Вj подставить символы исходного текста, то компоненты вектора Cj будут представлять собой символы зашифрованного текста. Приведем пример использования такого метода, взяв в качестве ключа квадратную матрицу третьего порядка Заменим буквы алфавита цифрами, соответствующими их порядковому номеру в алфавите: А - 0, Б - 1, В - 3, и т.д. Тогда отрывку текста "ВАТАЛА" (текст взят произвольно) будет соответствовать последовательность 3, 0, 19, 0, 12, 0. По принятому алгоритму шифрования выполним необходимые действия: При этом зашифрованный текст будет иметь вид: 99, 62, 28, 96, 60, 24. Расшифрование осуществляется с использованием того же правила умножения матриц на вектор, только в качестве основы берется матрица, обратная той, с помощью которой осуществляется закрытие, а в качестве вектора-сомножителя – соответствующее количество символов закрытого текста; тогда значениями вектора-результата будут цифровые эквиваленты знаков открытого текста. Обратной к данной, как известно, называется матрица, получающаяся из так называемой присоединенной матрицы делением всех ее элементов на определитель данной матрицы. В свою очередь присоединенной называется матрица, составленная из алгебраических дополнений А, к элементам данной матрицы, которые вычисляются по формуле: , где Dij – определитель матрицы, получаемый вычеркиванием i-ой ее строки и j-го столбца. Определителем же, как известно, называется алгебраическая сумма n! членов (для определителя n-го порядка), составленная следующим образом: членами служат всевозможные произведения n элементов матрицы, взятых по одному в каждой строке и в каждом столбце, причем член суммы берется со знаком плюс, если его индексы составляют четную подстановку, и со знаком минус – в противном случае. Для матрицы третьего порядка, например, определитель вычисляется по следующей формуле: Вычисленная по данной формуле матрица, обратная к принятой нами за основу для закрытия, будет иметь вид: Тогда в условиях нашего примера процесс раскрытия будет выглядеть так: Таким образом, получили следующую последовательность знаков раскрытого текста: 3, 0, 19, 0, 12, 0, что соответствует исходному тексту. Нетрудно видеть, что и этот метод шифрования является формализованным, что позволяет легко реализовать его программными средствами. Описание логической структурыДля шифрования текста с помощью аналитических преобразований, выполним следующие действия: Вводим шифруемый текст; Создаем ключ; Вычисляем количество знаков в тексте; Вычисляем, какое количество раз будем обращаться к ключу; Преобразуем шифруемый текст в байтовый массив; Выводим шифрованный текст (код).
В ходные и выходные данныеВходными данными являются 30 буквенный алфавит, ключ и шифруемый текст. Выходными данными являются перемешанный алфавит, текст в виде последовательности биграмм, шифр текст и шифр текст без пробелов. |