Курсовая работа: Анализ предметной области
Вторым подходом является использование общедоступных каналов связи и скрытие самого факта передачи какой-либо информации. Данным направлением занимается наука стенография. К сожалению, методы стенографии не могут гарантировать высокий уровень конфиденциальности информации.
Третий способ — это использовать общедоступный канал связи, но передавать данные в преобразованном виде, так чтобы восстановить их мог лишь адресат. Разработкой методов преобразования информации, обеспечивающей ее шифрование, и занимается криптография.
Стоит отметить, что криптосистема работает по определенной методологии (процедуре).
Эта методология предусматривает использование:
одного или более алгоритмов шифрования, которые можно выразить в виде математических формул;
ключей, используемых данными алгоритмами шифрования,
системы управления ключами,
незашифрованного текста,
зашифрованного текста (шифртекста).
1. Анализ предметной области
1.1 Описание задачи
В связи с явной сетевой направленностью языка Java потребовалось уделить должное внимание средствам защиты. В первую очередь это касается пересылки важных данных между, например, клиентом и сервером, а также запуска программ или апплетов. Такие средства были разработаны и встроены в набор стандартных библиотек (JDK security API).
Примером необходимости защиты может служить желание пользователя-получателя иметь возможность верификации, что дает определенные гарантии подлинности документа или кода.. В качестве подписываемого объекта могут выступать апплеты, которые широко распространены в Интернете. В результате у получателя появляется уверенность, что информация получена именно от ожидаемого отправителя, а не возможного злоумышленника, и не была изменена в процессе пересылки. Для обеспечения такого рода безопасности служат цифровые подписи и сертификаты.
Симметрическое шифрование - способ шифрования, в котором для (за)шифрования и расшифрования применяется один и тот же криптографический ключ.
В данной курсовой работе мы рассмотрим реализацию алгоритма симметрического шифрования в java на примере алгоритма DES. И создание, и проверку цифровой подписи алгоритмом DSA.
2.Реализация проекта
2.1 Реализация цифровой подриси файлов
Рисунок 2.1 – Схема действий при генерации подписи
Работа отправителя
Генерация ключей
Программист, не вникая в математические формулы и особенности их реализации, может использовать уже доступные готовые алгоритмы и методы криптографии. Они предоставляются определенными организациями, так называемыми провайдерами (provider). По умолчанию встроенные средства Java поставляет провайдер "SUN". Таким образом, единственное, что необходимо делать, это указывать собственно алгоритм и провайдера.
В первую очередь необходимо сгенерировать пару ключей - public key и private key. Для этого используется класс KeyPairGenerator. Для получения конкретного объекта этого класса необходимо вызвать static factory метод getInstance(). В качестве аргументов передаются строки с указанием алгоритма и провайдера. Например, для использования DSA (Digital Signature Algorithm) и провайдера SUN необходимо писать:
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA", "SUN");
В связи с тем, что большинство криптографических алгоритмов являются вероятностными, необходимо создать вероятностный источник — объект класса SecureRandom. При этом существует возможность использовать разные методы, например, SHA1PRNG (pseudo-random-number generation algorithm).
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
Теперь необходимо проинициализировать объект keyGen, передав ему 2 параметра — длину в битах и источник случайности.