
- •Содержание
- •Введение
- •1Анализ технического задания
- •1.1Описание предметной области
- •1.2Методы создания сайта
- •1.3Выбор и сравнение программных платформ
- •2Проектирование
- •2.1Разработка структуры
- •2.2Модель сайта
- •2.3Разработка дизайна
- •3Реализация сайта
- •3.1Установка и настройка Joomla!
- •3.2Настройка расширений
- •3.3Выбор хостинга
- •4Безопасность системы
- •4.1Основные понятия и виды информационной безопасности
- •4.2Правовые основы защиты информации
- •4.3Аппаратно-программные способы и средства обеспечения информационной безопасности веб-сайта
- •4.4Использование алгоритмов шифрования данных
- •5Экономическая часть
- •5.1Цели и задачи экономической части
- •5.2Календарный план работы
- •5.3Расчет заработной платы программиста
- •5.4Расчёт расходов на энергопотребление
- •5.5Расчёт амортизационных отчислений
- •5.6Общие затраты на создание информационного сайта
- •5.7Определение отпускной цены программы
- •Заключение
- •Библиографический список
4.4Использование алгоритмов шифрования данных
Шифрование является наиболее широко используемым криптографическим методом сохранения конфиденциальности информации, он защищает данные от несанкционированного ознакомления с ними. Для начала рассмотрим основные методы криптографической защиты информации. Словом, криптография - наука о защите информации с использованием математических методов. Существует и наука, противоположная криптографии и посвященная методам вскрытия защищенной информации - криптоанализ. Совокупность криптографии и криптоанализа принято называть криптологией. Криптографические методы могут быть классифицированы различным образом, но наиболее часто они подразделяются в зависимости от количества ключей, используемых в соответствующих криптоалгоритмах:
бесключевые, в которых не используются какие-либо ключи;
одноключевые - в них используется некий дополнительный ключевой параметр - обычно это секретный ключ;
двухключевые, использующие в своих вычислениях два ключа: секретный и открытый.
Рисунок 28 – Криптоалгоритмы
Шифрование является основным методом защиты; рассмотрим его подробно далее.
Остальные криптографические методы:
Электронная подпись используется для подтверждения целостности и авторства данных. Целостность данных означает, что данные не были случайно или преднамеренно изменены при их хранении или передаче.
Алгоритмы электронной подписи используют два вида ключей:
секретный ключ используется для вычисления электронной подписи;
открытый ключ используется для ее проверки.
При использовании криптографически сильного алгоритма электронной подписи и при грамотном хранении и использовании секретного ключа (то есть при невозможности использования ключа никем, кроме его владельца) никто другой не в состоянии вычислить верную электронную подпись какого-либо электронного документа.
Аутентификация позволяет проверить, что пользователь (или удаленный компьютер) действительно является тем, за кого он себя выдает. Простейшей схемой аутентификации является парольная - в качестве секретного элемента в ней используется пароль, который предъявляется пользователем при его проверке. Такая схема доказано является слабой, если для ее усиления не применяются специальные административно-технические меры. А на основе шифрования или хэширования можно построить действительно сильные схемы аутентификации пользователей.
Существуют различные методы криптографического контрольного суммирования:
o ключевое и бесключевое хэширование;
o вычисление имитоприставок;
o использование кодов аутентификации сообщений.
Фактически, все эти методы различным образом из данных произвольного размера с использованием секретного ключа или без него вычисляют некую контрольную сумму фиксированного размера, однозначно соответствующую исходным данным.
Такое криптографическое контрольное суммирование широко используется в различных методах защиты информации, например:
o для подтверждения целостности любых данных в тех случаях, когда использование электронной подписи невозможно (например, из-за большой ресурсоемкости) или является избыточным;
o в самих схемах электронной подписи - "подписывается" обычно хэш данных, а не все данные целиком;
o в различных схемах аутентификации пользователей.
Генераторы случайных и псевдослучайных чисел позволяют создавать последовательности случайных чисел, которые широко используются в криптографии, в частности:
o случайные числа необходимы для генерации секретных ключей, которые, в идеале, должны быть абсолютно случайными;
o случайные числа применяются во многих алгоритмах электронной подписи;
o случайные числа используются во многих схемах аутентификации.
Не всегда возможно получение абсолютно случайных чисел - для этого необходимо наличие качественных аппаратных генераторов. Однако, на основе алгоритмов симметричного шифрования можно построить качественные генераторы псевдослучайных чисел.
Алгоритм симметричного шифрования
Шифрование информации - это преобразование открытой информации в зашифрованную (которая чаще всего называется шифртекстом или криптограммой), и наоборот. Первая часть этого процесса называется зашифрованием, вторая - расшифрованием.
Можно представить зашифрование в виде следующей формулы:
С = Ek1(M), (4.1)
где M (message) - открытая информация;
С (cipher text) - полученный в результате зашифрования шифртекст;
E (encryption) - функция зашифрования, выполняющая криптографические преобразования над M;
k1 (key) - параметр функции E, называемый ключом зашифрования.
В стандарте ГОСТ 28147-89 (стандарт определяет отечественный алгоритм симметричного шифрования) понятие ключ определено следующим образом: "Конкретное секретное состояние некоторых параметров алгоритма криптографического преобразования, обеспечивающее выбор одного преобразования из совокупности всевозможных для данного алгоритма преобразований".
Ключ может принадлежать определенному пользователю или группе пользователей и являться для них уникальным. Зашифрованная с использованием конкретного ключа информация может быть расшифрована только с использованием только этого же ключа или ключа, связанного с ним определенным соотношением.
Аналогичным образом можно представить и расшифрование:
M' = Dk2(C), (4.2)
где M'- сообщение, полученное в результате расшифрования;
D (decryption) - функция расшифрования; так же, как и функция зашифрования, выполняет криптографические преобразования над шифртекстом;
k2 - ключ расшифрования.
Для получения в результате расшифрования корректного открытого текста (то есть того самого, который был ранее зашифрован: M' = M), необходимо одновременное выполнение следующих условий:
функция расшифрования должна соответствовать функции зашифрования;
ключ расшифрования должен соответствовать ключу зашифрования.
При отсутствии верного ключа k2 получить исходное сообщение M' = M с помощью правильной функции D невозможно. Под словом "невозможно" в данном случае обычно понимается невозможность вычисления за реальное время при существующих вычислительных ресурсах.
Алгоритмы шифрования можно разделить на две категории (рисунок 28):
алгоритмы симметричного шифрования;
алгоритмы асимметричного шифрования.
В алгоритмах симметричного шифрования для расшифрования обычно используется тот же самый ключ, что и для зашифрования, или ключ, связанный с ним каким-либо простым соотношением. Последнее встречается существенно реже, особенно в современных алгоритмах шифрования. Такой ключ (общий для зашифрования и расшифрования) обычно называется просто ключом шифрования.
В асимметричном шифровании ключ зашифрования k1 легко вычисляется из ключа k2 таким образом, что обратное вычисление невозможно. Например, соотношение ключей может быть таким:
k1 = ak2 mod p, (4.3)
где a и p - параметры алгоритма шифрования, имеющие достаточно большую размерность.
Такое соотношение ключей используется и в алгоритмах электронной подписи.
Основной характеристикой алгоритма шифрования является криптостойкость, которая определяет его стойкость к раскрытию методами криптоанализа. Обычно эта характеристика определяется интервалом времени, необходимым для раскрытия шифра.
Симметричное шифрование менее удобно из-за того, что при передаче зашифрованной информации кому-либо необходимо, чтобы адресат заранее получил ключ для расшифрования информации. У асимметричного шифрования такой проблемы нет (поскольку открытый ключ можно свободно передавать по сети), однако, есть свои проблемы, в частности, проблема подмены открытого ключа и медленная скорость шифрования. Наиболее часто асимметричное шифрование используется в паре с симметричным - для передачи ключа симметричного шифрования, на котором шифруется основной объем данных. Впрочем, схемы хранения и передачи ключей - это тема отдельной статьи. Здесь же позволю себе утверждать, что симметричное шифрование используется гораздо чаще асимметричного, поэтому остальная часть статьи будет посвящена только симметричному шифрованию.
Симметричное шифрование бывает двух видов:
Блочное шифрование - информация разбивается на блоки фиксированной длины (например, 64 или 128 бит), после чего эти блоки поочередно шифруются. Причем, в различных алгоритмах шифрования или даже в разных режимах работы одного и того же алгоритма блоки могут шифроваться независимо друг от друга или "со сцеплением" - когда результат зашифрования текущего блока данных зависит от значения предыдущего блока или от результата зашифрования предыдущего блока.
Поточное шифрование - необходимо, прежде всего, в тех случаях, когда информацию невозможно разбить на блоки - скажем, некий поток данных, каждый символ которых должен быть зашифрован и отправлен куда-либо, не дожидаясь остальных данных, достаточных для формирования блока. Поэтому алгоритмы поточного шифрования шифруют данные побитно или посимвольно. Хотя стоит сказать, что некоторые классификации не разделяют блочное и поточное шифрование, считая, что поточное шифрование - это шифрование блоков единичной длины.