.
Криптографические методы защиты
При наличии простых средств хранения и передачи информации существовали и не потеряли значения и сегодня следующие методы ее защиты от преднамеренного доступа:
· ограничение доступа;
· разграничение доступа;
· разделение доступа (привилегий);
· контроль и учет доступа;
· законодательные меры;
· криптографическое преобразование информации.
С увеличением объемов, сосредоточением информации, увеличением количества пользователей и другими причинами повышается вероятность преднамеренного несанкционированного доступа к данным (НСД). В связи с этим развиваются старые и возникают новые дополнительные методы защиты информации в вычислительных системах:
· методы функционального контроля, обеспечивающие обнаружение и диагностику отказов, сбоев аппаратуры и ошибок человека, а также программные ошибки;
· методы повышения достоверности информации;
· методы защиты информации от аварийных ситуаций;
· методы контроля доступа к внутреннему монтажу аппаратуры, линиям связи;
· методы разграничения и контроля доступа к информации;
· методы идентификации и аутентификации пользователей, технических средств, носителей информации и документов;
· методы защиты от побочного излучения и наводок информации.
Криптографическая защита информации - преобразование исходной
информации с целью ее недоступности для ознакомления и использования лицами, не
имеющими на это полномочий. Процесс маскировки сообщения способом, позволяющим
скрыть его суть, называется зашифрованием. Зашифрованное сообщение называется
шифртекстом. Процедура обратного превращения шифртекста в открытый текст
называется расшифрованием (дешифрование). На основе ключа шифрованный текст
преобразуется в исходный. Исходное сообщение называется открытым текстом.
.1 Последовательность зашифрования и расшифрования
Криптосистемы разделяются на симметричные и с открытым ключом.
В симметричных криптосистемах и для шифрования, и для расшифрования используется один и тот же ключ.
В системах с открытым ключом используется два ключа - открытый и закрытый, которые математически связаны друг с другом. Информация шифруется с помощью открытого ключа, который доступен всем желающим, а расшифровывается с помощью закрытого ключа, известного только получателю сообщения.
Известны различные подходы к классификации методов криптографического преобразования информации. По виду воздействия на исходную информацию методы криптографического преобразования информации могут быть разделены на четыре группы.
.2 Шифрование методом SAFER K-64
Аббревиатура SAFER K-64 означает Secure And Fast Encryption Routine with a Key of 64 bits (стойкая и быстрая программа шифрования 64-битовым ключом). Этот алгоритм, не находящийся в частной собственности, разработан Джеймсом Мэсси (James Massey) для корпорации Cylink и используется в некоторых ее продуктах. Правительство Сингапура собирается использовать этот алгоритм (но с 128-битовым ключом) в широком спектре приложений. Использование алгоритма не ограничено патентом, авторскими правами или чем-то еще.
Алгоритм работает с 64-битовым блоком и 64-битовым ключом. В отличие от DES, этот алгоритм представляет собой итеративный блочный шифр, а не сеть Файстеля. Иными словами, в некоторых раундах применяется одна и та же функция. В каждом раунде используются два 64-битовых подключа. Алгоритм оперирует только байтами.
Рассмотрим описание алгоритма SAFER K-64.
Блок открытого текста разделяется на восемь байтовых подблоков: B1, B2,..., B7, B8. Затем подблоки обрабатываются в r раундах алгоритма. Наконец подблоки подвергаются заключительному преобразованию. На каждом раунде используются два подключа: K2i-1 и K2i.
На рис. 2.6 показан раунд алгоритма SAFER K-64. Сначала над подблоками выполняется либо операция XOR, либо сложение с байтами подключа К2r-1. Затем восемь подблоков подвергаются одному из двух нелинейных преобразований (см. формулы 2.1, 2.2):
Эти операции выполняются в конечном поле GF(257), причем 45 - примитивный корень этого поля. В практических применениях SAFER K-64 эти операции эффективнее реализовать с помощью таблицы подстановок вместо постоянных вычислений новых результатов.
Далее подблоки либо подвергаются операции XOR, либо
складываются с байтами подключа K2r. Результат этой операции
проходит через три уровня линейных операций, предназначенных для усиления
лавинного эффекта.
. 2.6 Раунд алгоритма SAFER
Каждая операция называется псевдоадамаровым преобразованием
(Pseudo-Hadamard Transform - РНТ). Если на вход РНТ подать a1 и a2,
то выходом будут (см. формулы 2.3 и 2.4):
После r раундов выполняется заключительное преобразование. Оно совпадает с первым этапом каждого раунда. Над В1, В4, В5 и В8 выполняется операция XOR с соответствующими байтами последнего подключа, а В2, В3, В6 и В7 складываются с соответствующими байтами последнего подключа. В результате и получается шифртекст.
Расшифрование представляет собой обратный процесс: сначала
выполняется заключительное преобразование (с вычитанием вместо сложения), затем
r инвертированных райндов. Обратное преобразование РНТ (Inverse РНТ- IPHT)
представляет собой (см. формулы 2.5 и 2.6):
Мэсси рекомендует использовать 6 раундов, но для большей безопасности число раундов можно увеличить.
Генерировать подключи совсем не трудно. Первый подключ К1
- это просто ключ пользователя. Последующие ключи генерируются следующей
процедурой (см. формулу 2.7):
Символ "<<<" обозначает циклический сдвиг
влево. Сдвиг выполняется побайтово, а сi - константа раунда. Если сij
- это j-ый байт константы i-го раунда, то для расчета всех констант раундов
можно использовать формулу 2.8:
Обычно эти значения хранятся в таблице.
Описание алгоритма SAFER K-128.
Этот альтернативный способ развертки ключа разработан Министерством внутренних дел Сингапура, а затем встроен Мэсси в алгоритм SAFER. В данном случае используются два ключа, Кa и Кb, по 64 бит каждый. Тонкость состоит в том, что генерируются две параллельные последовательности подключей, которые затем используются поочередно. Это означает, что при выборе Кa = Кb 128-битовый ключ совместим с 64-битовым ключом Кa.
Рассмотрим стойкость алгоритма SAFER K-64.
Мэсси показал, что при использовании 8 раундов алгоритм SAFER K-64 абсолютно стоек к дифференциальному криптоанализу, а 6 раундов - достаточно стоек. При использовании всего 3-х раундов против этого алгоритма становится неэффективным и линейный криптоанализ.
Кнудсен (Knudsen) обнаружил слабое место в развертке ключей:
практически для каждого ключа существует не менее одного (иногда даже девять)
других ключей, который при шифровании какого-то другого открытого текста
превращают его в тот же шифртекст. Количество различных открытых текстов,
которые оказываются одинаковыми шифртекстами, находится в промежутке от 222
до 228. Хотя такое вскрытие не может повлиять на надежность SAFER
как алгоритма шифрования, оно значительно уменьшает его стойкость при
использовании в качестве однонаправленной хэш-функции. В любом случае Кнудсен
рекомендует использовать не менее 8 раундов.
4. Графическая часть программы SAFER K-64
.1 Инструкция по работе с программой SAFER K-64
· В поле "Key" вводится ключ для шифрование (8 значный)
· В поле "Rounds" выбирается количество раундов (от 1 до 10)
· В поле "Путь" указывается путь до шифруемого файла
· В "Левом окне" показывается накопительные устройства подключенные к компьютеру, для просмотро содержимого диска кликаем на значок "+"
· В "Правом окне (Главное окно)" выводится список файлов/документов, кликая левой кнопкой мыши, выбираем документ для зашифровки
· Кнопка "Encrypt" зашифровывает указанный файл/документ, используя вводимый ключ и количество раундов. После зашифровки, в той же папке создается файл с именем "имя_файла.формат_файла.safer"
· Кнопка "Decrypt" служит для дешифровки файла. При дешифровке нужна заново ввести тот же ключ и количество раундов, который был использован при шифровании. В противном случае, расшифровка документа будет невозможен!
4.2 Презентация работы программы SAFER K-64
Содержимое текстового документ для зашифровки (TEST.txt)
Зашифровка текстового документа (TEST.txt)
Содержимое текстового документа TEST.txt после зашифровывание
Дешифрока текстового документа TEST.txt
Заключение
Все большее значение в нашем быстро изменяющемся мире приобретает защита информации. Основным методом защиты информации на текущий момент является использование криптографии (шифрования). Однако сегодня методы криптографии используются не только для шифрования. Важной задачей также является установление подлинности - аутентификация (например, при подписании документов). Поскольку все большее значение приобретают электронные документы, то возникает необходимость в электронных методах установления подлинности, которые предлагает криптография.
Цифровая подпись связывает подписанный документ с владельцем определенного ключа, а цифровая дата связывает документ со временем его создания. Эти криптографические методы уже используются в финансовых операциях, а также и для многих других задач.
Методы стенографии позволяют скрыть не только смысл скрываемой информации, но и сам факт хранения этой информации. Комплексное использование стенографии и шифрования значительно повышает сложность обнаружения и раскрытия защищаемой информации.
Анализ тенденций развития компьютерной стеганографии показывает, что в ближайшие годы интерес к развитию ее методов будет усиливаться все больше и больше.
Предпосылки к этому уже сформировались сегодня. В частности, общеизвестно, что актуальность проблемы информационной безопасности постоянно растет и стимулирует поиск новых методов защиты информации. С другой стороны, бурное развитие информационных технологий обеспечивает возможность реализации этих новых методов защиты. И конечно, сильным катализатором этого процесса является лавинообразное развитие Internet, в том числе, такие нерешенные противоречивые проблемы Internet, как защита авторского права, защита прав на личную тайну, организация электронной торговли, компьютерная преступность и т.д.
информация защита криптографический
Список используемых источников
1) Бармен Скотт. Разработка правил информационной безопасности. М.: Вильямс, 2002. - 208 с. - ISBN 5-8459-0323-8, ISBN 1-5787-0264-X.
) Домарев В. В. Безопасность информационных технологий. Системный подход - К.: ООО ТИД Диа Софт, 2004. - 992 с.
) Запечников С. В., Милославская Н. Г., Толстой А. И., Ушаков Д. В. Информационная безопасность открытых систем. В 2-х тт.
) Панасенко С. Алгоритмы шифрования. Специальный справочник. - БХВ- Петербург, 2009
) Фергюсон Н., Шнайдер Б. Практическая криптография. - Вильямс, 2005
) Зубов А.Ю. Криптографические методы защиты информации. Совершенные шифры: Учебное пособие. - М.: Гелиос АРВ, 2005
) Ростовцев А.Г., Маховенко Е.Б. Теоретическая криптография. - СПб.: НПО «Профессионал», 2004
) Исагулиев К.П. Справочник по криптологии. - Новое знание, 2004
) Аграновский А.В., Девятин П.Н., Хади Р.А., Черемушкин А.В. Основы компьютерной стеганографии, 2003
) Завгородний В.И. Комплексная защита информации в компьютерных системах: Учебное пособие. - М.: Логос, 2001
) http://www.microtest.ru/solutions/cmd/2575/
) http://ru.wikipedia.org/wiki/Информационная_безопасность
) http://www.cryptography.strongdisk.ru/
Приложения A
Исходный код программы Safer K-64: Язык программирование - С#
System;System.Collections.Generic;System.Text;WindowsApplication1
{Safer
{string text;string key;int RoundValue;int Round
{{ return RoundValue; }{ RoundValue = value; }
}string Text
{{ return text; }{ text = value; }
}string Key
{{(key.Length!= 8)
{new Exception("Encryption key must have 8 bytes");
}key;
}{(value.Length!= 8)
{new Exception("Encryption key must have 8 bytes");
}= value;
}
}
// left cycling byte shift. For example, 111001 left cycling shift on 2 bytes = 100111uint LeftCicle(uint value, int count)
{(value >> count) + (((value << (32 - count)) >> (32 - count)) << count);
}
// get advanced encryption keybyte[] GetKey(int round, byte[] key)
{[,] b = new char[round + 1, 8];(int i = 0; i < round + 1; i++)
{
// const for advancing[i, 0] = '1';[i, 1] = '6';[i, 2] = '7';[i, 3] = '3';[i, 4] = '3';[i, 5] = 'B';[i, 6] = '1';[i, 7] = 'E';
}(int i = 2; i <= round; i++)
{(int j = 0; j < key.Length; j++)
{uByte = LeftCicle(Convert.ToUInt32(key[j]), 3);specB = Convert.ToUInt32(Convert.ToByte(b[i, j]));
// addition modulo 256[j] = Convert.ToByte((uByte + specB) % 256);
}
}key;
}
// get 8 byte ration unencrypted databyte[] GetTextBlock8Byte(string source, int blockNumber)
{eight = 8;[] b = Encoding.Default.GetBytes(source);[] resultBlock = new byte[eight];firstByte = blockNumber * eight;j = 0;(int i = firstByte; i < firstByte + eight; i++)
{(i >= b.Length)[j] = 0;[j] = b[i];++;
}resultBlock;
}int GetTextBlockLength(string source)
{[] b = Encoding.Default.GetBytes(source);(b.Length % 8 == 0)b.Length / 8;b.Length / 8 + 1;
}
// XORbyte XOR(byte text, byte key)
{Convert.ToByte(Convert.ToInt32(text) ^ Convert.ToInt32(key));
}
// addition modulo 256byte Mod256(byte text, byte key)
{Convert.ToByte((Convert.ToInt32(text) + Convert.ToInt32(key)) % 256);
}
// reverse for addition modulo 256byte DiffMod256(byte text, byte key)
{y = Convert.ToInt32(text);k = Convert.ToInt32(key);(y < k)+= 256;Convert.ToByte(y - k % 256);
}
// operation E. using matrix map value.byte E(byte text)
{[] replacement = new int[256] { 1, 45, 226, 147, 190, 69, 21, 174, 120, 3, 135, 164, 184, 56, 207, 63, 8, 103, 9, 148, 235, 38, 168, 107, 189, 24, 52, 27, 187, 191, 114, 247, 64, 53, 72, 156, 81, 47, 59, 85, 227, 192, 159, 216, 211, 243, 141, 177, 255, 167, 62, 220, 134, 119, 215, 166, 17, 251, 244, 186, 146, 145, 100, 131, 241, 51, 239, 218, 44, 181, 178, 43, 136, 209, 153, 203, 140, 132, 29, 20, 129, 151, 113, 202, 95, 163, 139, 87, 60, 130, 196, 82, 92, 28, 232, 160, 4, 180, 133, 74, 246, 19, 84, 182, 223, 12, 26, 142, 222, 224, 57, 252, 32, 155, 36, 78, 169, 152, 158, 171, 242, 96, 208, 108, 234, 250, 199, 217, 0, 212, 31, 110, 67, 188, 236, 83, 137, 254, 122, 93, 73, 201, 50, 194, 249, 154, 248, 109, 22, 219, 89, 150, 68, 233, 205, 230, 70, 66, 143, 10, 193, 204, 185, 101, 176, 210, 198, 172, 30, 65, 98, 41, 46, 14, 116, 80, 2, 90, 195, 37, 123, 138, 42, 91, 240, 6, 13, 71, 111, 112, 157, 126, 16, 206, 18, 39, 213, 76, 79, 214, 121, 48, 104, 54, 117, 125, 228, 237, 128, 106, 144, 55, 162, 94, 118, 170, 197, 127, 61, 175, 165, 229, 25, 97, 253, 77, 124, 183, 11, 238, 173, 75, 34, 245, 231, 115, 35, 33, 200, 5, 225, 102, 221, 179, 88, 105, 99, 86, 15, 161, 49, 149, 23, 7, 58, 40 };t = Convert.ToInt32(text);Convert.ToByte(replacement[t]);
}
// operation L. using matrix map value.byte L(byte text)
{[] replacement = new int[256] { 128, 0, 176, 9, 96, 239, 185, 253, 16, 18, 159, 228, 105, 186, 173, 248, 192, 56, 194, 101, 79, 6, 148, 252, 25, 222, 106, 27, 93, 78, 168, 130, 112, 237, 232, 236, 114, 179, 21, 195, 255, 171, 182, 71, 68, 1, 172, 37, 201, 250, 142, 65, 26, 33, 203, 211, 13, 110, 254, 38, 88, 218, 50, 15, 32, 169, 157, 132, 152, 5, 156, 187, 34, 140, 99, 231, 197, 225, 115, 198, 175, 36, 91, 135, 102, 39, 247, 87, 244, 150, 177, 183, 92, 139, 213, 84, 121, 223, 170, 246, 62, 163, 241, 17, 202, 245, 209, 23, 123, 147, 131, 188, 189, 82, 30, 235, 174, 204, 214, 53, 8, 200, 138, 180, 226, 205, 191, 217, 208, 80, 89, 63, 77, 98, 52, 10, 72, 136, 181, 86, 76, 46, 107, 158, 210, 61, 60, 3, 19, 251, 151, 81, 117, 74, 145, 113, 35, 190, 118, 42, 95, 249, 212, 85, 11, 220, 55, 49, 22, 116, 215, 119, 167, 230, 7, 219, 164, 47, 70, 243, 97, 69, 103, 227, 12, 162, 59, 28, 133, 24, 4, 29, 41, 160, 143, 178, 90, 216, 166, 126, 238, 141, 83, 75, 161, 154, 193, 14, 122, 73, 165, 44, 129, 196, 199, 54, 43, 127, 67, 149, 51, 242, 108, 104, 109, 240, 2, 40, 206, 221, 155, 234, 94, 153, 124, 20, 134, 207, 229, 66, 184, 64, 120, 45, 58, 233, 100, 31, 146, 144, 125, 57, 111, 224, 137, 48 };t = Convert.ToInt32(text);Convert.ToByte(replacement[t]);