Рефераты. Защита информационной системы криптографическими алгоритмами

1. Тайнопись.

Отправитель и получатель производят над сообщением преобразования, известные только им двоим. Сторонним лицам неизвестен сам алгоритм шифрования. Некоторые специалисты считают, что тайнопись не является криптографией вообще.

2. Криптография с ключом.

Алгоритм воздействия на передаваемые данные известен всем сторонним лицам, но он зависит от некоторого параметра - "ключа", которым обладают только отправитель и получатель.

- Симметричные криптоалгоритмы.

Для зашифровки и расшифровки сообщения используется один и тот же блок информации (ключ). Симметричные криптоалгоритмы выполняют преобразование блока данных в зависимости от ключа таким образом, что прочесть исходное сообщение можно только зная этот секретный ключ.

Любой криптоалгоритм с ключом можно превратить в тайнопись, просто "зашив" в исходном коде программы некоторый фиксированный ключ.

- Асимметричные криптоалгоритмы.

Алгоритм таков, что для зашифровки сообщения используется один ("открытый") ключ, известный всем желающим, а для расшифровки - другой ("закрытый"), существующий только у получателя.

В зависимости от характера воздействий, производимых над данными, алгоритмы подразделяются на:

- Перестановочные.

Блоки информации (байты, биты, более крупные единицы) не изменяются сами по себе, но изменяется их порядок следования, что делает информацию недоступной стороннему наблюдателю.

- Подстановочные.

Сами блоки информации изменяются по законам криптоалгоритма. Подавляющее большинство современных алгоритмов принадлежит этой группе. Любые криптографические преобразования не увеличивают объем информации, а лишь изменяют ее представление. Поэтому, если программа шифрования значительно увеличивает объем выходного файла, то в ее основе лежит неоптимальный, а возможно и вообще некорректный криптоалгоритм. Уменьшение объема закодированного файла осуществляется при помощи встроенного алгоритма архивации в криптосистеме и при условии сжимаемости информации (так, например, архивы, музыкальные файлы формата MP3, видеоизображения формата JPEG сжиматься более чем на 2-4% не будут).

В зависимости от размера блока информации криптоалгоритмы делятся на:

- Потоковые шифры.

Единицей кодирования является один бит. Результат кодирования не зависит от прошедшего ранее входного потока. Схема применяется в системах передачи потоков информации, то есть в тех случаях, когда передача информации начинается и заканчивается в произвольные моменты времени и может случайно прерываться. Наиболее распространенными представителями поточных шифров являются скремблеры.

- Блочные шифры

Единицей кодирования является блок из нескольких байтов. Результат кодирования зависит от всех исходных байтов этого блока.
Блочные шифры шифруют целые блоки информации как единое целое - это значительно увеличивает стойкость преобразований к атаке полным перебором и позволяет использовать различные математические и алгоритмические преобразования.

На сегодняшний день разработано достаточно много стойких блочных шифров. Практически все алгоритмы используют для преобразований определенный набор биективных (обратимых) математических преобразований Характерной особенностью блочных криптоалгоритмов является тот факт, что в ходе своей работы они производят преобразование блока входной информации фиксированной длины и получают результирующий блок того же объема, но недоступный для прочтения сторонним лицам, не владеющим ключом. Таким образом, схему работы блочного шифра можно описать функциями Z=EnCrypt(X,Key) и X=DeCrypt(Z,Key) Ключ Key является параметром блочного криптоалгоритма и представляет собой некоторый блок двоичной информации фиксированного размера. Исходный (X) и зашифрованный (Z) блоки данных также имеют фиксированную разрядность, равную между собой, но необязательно равную длине ключа. Блочные шифры являются основой, на которой реализованы практически все криптосистемы. Методика создания цепочек байт, зашифрованных блочными алгоритмами, позволяет шифровать пакеты информации неограниченной длины. Криптоалгоритм разрабатываемой программы является блочным шифром.

2.3 Разработка криптографической программы R CRYPTO

В качестве основного средства для разработки программного обеспечения была выбрана среда визуального программирования C++ BUILDER 6.

C++ BUILDER 6 - это комбинация нескольких важнейших технологий:

- Высокопроизводительный компилятор в машинный код;

- Объектно-ориентированная модель компонент;

- Визуальное (а, следовательно, и скоростное) построение приложений.

Компилятор, встроенный в C++ BUILDER 6, обеспечивает высокую производительность, необходимую для построения приложений. Этот компилятор в настоящее время является самым быстрым в мире. Он предлагает легкость разработки и быстрое время проверки готового программного блока, и в то же время обеспечивает качество кода. Кроме того, C++ BUILDER 6 обеспечивает быструю разработку без необходимости писать вставки на Си или ручного написания кода (хотя это возможно). В процессе построения приложения разработчик выбирает из палитры компонент готовые компоненты как художник, делающий крупные мазки кистью. Еще до компиляции он видит результаты своей работы - после подключения к источнику данных их можно видеть отображенными на форме, можно перемещаться по данным, представлять их в том или ином виде. В этом смысле проектирование в C++ BUILDER 6 мало чем отличается от проектирования в интерпретирующей среде, однако после выполнения компиляции мы получаем код, который исполняется в 10 - 20 раз быстрее, чем то же самое, сделанное при помощи интерпретатора. Кроме того, компилятор компилятору рознь. В C++ BUILDER 6 компиляция производится непосредственно в родной машинный код. В то время как существуют компиляторы, превращающие программу в так называемый p-код, который затем интерпретируется виртуальной p-машиной. Это не может не сказаться на фактическом быстродействии готового приложения. Объектно-ориентированная модель программных компонент заключается в максимальном реиспользовании кода. Это позволяет разработчикам строить приложения весьма быстро из заранее подготовленных объектов, а также дает им возможность создавать свои собственные объекты для среды C++ BUILDER 6. Никаких ограничений по типам объектов, которые могут создавать разработчики, не существует. Действительно, все в C++ BUILDER 6 написано на нем же, поэтому разработчики имеют доступ к тем же объектам и инструментам, которые использовались для создания среды разработки. В результате нет никакой разницы между объектами, поставляемыми BORLAND или третьими фирмами, и объектами, которые вы можете создать. В стандартную поставку C++ BUILDER 6 входят основные объекты, которые образуют удачно подобранную иерархию.

Требования к разрабатываемой программе:

1. Удобный графический пользовательский интерфейс (GUI)

2. Простота в обращении

3. Обеспечение шифрования всех типов файлов

4. Надежность функционирования

5. Невысокая стоимость

6. Способность к изменению и дополнению

7. Наличие справочной системы

2.4 Описание программы R CRYPTO

R CRYPTO - это криптографическая программа, предназначенная для шифрования файлов всех типов. «Сердцем» криптографической программы является криптоалгоритм. Разработанная криптографическая программа является завершенной комплексной моделью, способной производить двусторонние криптопреобразования над данными произвольного объема.

Программа R CRYPTO выполняет следующие функции:

- Шифрование файлов,

- Сжатие файлов,

- Добавление электронной цифровой подписи,

- Расшифровка зашифрованных файлов,

- Усиление защищенности данных,

- Облегчение работы с криптоалгоритмом со стороны человека,

- Обеспечение совместимости потока данных с другим программным обеспечением.

Программа R CRYPTO имеет два вида интерфейса: Классический вид и Интерфейс R CRYPTO. При первом запуске программы появляется окно с предложением выбора вида интерфейса. При первом использовании программы рекомендуется выбирать Классический вид, так как он наиболее приближен к стандартному интерфейсу программ под WINDOWS. В процессе работы программы вид интерфейса можно сменить в любой момент. Шифрование файлов осуществляется по оригинальному алгоритму с использованием симметричного ключа, который формируется на основании пароля, введенного пользователем. Минимальная длина пароля - 10 символов. В результате хеширования пароля ключ достигает необходимой длины. Алгоритм шифрования является блочным шифром, то есть информация шифруется блоками определенной длины (255 байт). Шифрование каждого последующего блока данных зависит от всех предыдущих. В процессе шифрования происходит также сжатие данных, что обеспечивает еще большую надежность шифрования, так как между зашифрованными блоками данных отсутствует корреляционная зависимость. Временная задержка в проверке пароля не позволяет злоумышленникам узнавать пароль методом полного перебора. Кроме того, к зашифрованному файлу добавляется электронная цифровая подпись, которая позволяет проверять целостность информации. Размер исходного файла дожжен быть не меньше 100 байт. Зашифрованный файл имеет расширение r_cr. Расшифровка зашифрованного файла возможна только при правильно введенном пароле, который использовался при шифровании этого файла. Экранные формы программы R CRYPTO представлены в приложении Г, фрагмент листинга программы представлен в приложении Д.

2.5 Блок-схема алгоритма

На первом этапе создания программы программист должен определить последовательность действий, которые необходимо выполнить, чтобы решить поставленную задачу, то есть разработать алгоритм. Алгоритм - это точное предписание, определяющее процесс перехода от исходных данных к результату.

Нужно понимать, что предписание считается алгоритмом, если оно обладает тремя следующими свойствами:

- Однозначностью,

- Массовостью,

- Результативностью.

Под однозначностью алгоритма понимается единственность толкования правил и порядка выполнения действий. Таким образом, алгоритм не должен оставлять место произволу при его выполнении. Массовость алгоритма означает возможность применения алгоритма для решения класса задач, предполагает его правильную работу при меняющихся в заданных пределах значениях исходных данных. Результативность алгоритма предполагает, что выполнение алгоритма должно приводить к получению определенного результата.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.