Реферат
Курсова робота містить 37 сторінки, 6 рисунків, 4 додатки, включаючи дампи екрану і схеми та код додатку. При розробці використовувалося 10 джерел.
Основним об'єктом дослідження є проектування java - додатка використовує набір стандартних бібліотек (JDK security API). Для реалізації шифровки, дешифрування файлів, а також для створення і перевірки цифрового підпису. Дані бібліотеки в даний момент широко використовуються в більшості великих і потребують захисту додатків. Автор не висуває нових підходів до реалізації алгоритмів шифрування і оформленню програми. Основний упор робиться на стабільність і надійність роботи програми. З точки зору користувача дана програма має навчальний і комерційний характер.
Ключові слова: криптографія, АЛГОРИТМИ, ЦИФРОВИЙ ПІДПИС, ПУБЛІЧНИЙДОГОВІР КЛЮЧ, JAVA, JDK SECURITY API
Зміст
Введення
1. Аналіз предметної області
1.1 Опис завдання
2.Реалізація проекту
2.1 Реалізація цифровий підмалюйте файлів
2.2 Реалізація алгоритму DES для шифрування і розшифровки файлу
2.3 Запис ключів в клас за допомогою серіалізациі
2.4 Стандартні діалогові вікна відкриття та збереження файлу
3. Робота з додатком
3.1 Шифрування файлу
3.2 Розшифровка закодірованого файлу
3.3 Створення цифрового підпису файлу
3.4 Перевірка цифрового підпису файлу
Перелік посилань
Додаток А
Додаток Б
Додаток В
Додаток Г
Введення
симметрический шифрування цифровий файл
У міру переходу від епохи індустріальної цивілізації до переважно інформаційної роль накопичених і відповідним чином оброблених знань помітно зростає. Поява ж та стрімкий розвиток комп'ютерних мереж забезпечило ефективні способи передачі даних і швидкий доступ до інформації як для окремих людей, так і для великих організацій. Однак локальні і глобальні комп'ютерні мережі, втім, як і інші способи передачі інформації, можуть представляти загрозу для безпеки даних, особливо за відсутності адекватних заходів їх захисту від несанкціонованого доступу.
Таким чином, зараз, по мірі становлення інформаційного суспільства засоби захисту стають одними з основних інструментів. Вони забезпечують конфіденційність, секретність, довіру, авторизацію, електронні платежі, корпоративну безпеку і незліченну безліч інших важливих атрибутів сучасного життя.
У зв'язку з цим наявність вбудованих механізмів захисту інформації та ефективність їх роботи в прикладних системах усі частіше набуває визначальне значення при виборі споживачами оптимального рішення. Тому даним питанням вже давно приділяють увагу розробники програмних засобів. Належний рівень захисту можуть забезпечити криптографічні методи.
Існує декілька підходів до вирішення поставленого завдання.
перше, можна спробувати створити абсолютно надійний і недоступний іншим канал зв'язку. На жаль, досягти цього вкрай складно, принаймні, на існуючому рівні сучасного розвитку науки і техніки, які надають методи і засоби не тільки передачі інформації, але і несанкціонованого до неї доступу.
Другим підходом є використання загальнодоступних каналів зв'язку і приховування самого факту передачі будь-якої інформації. Даним напрямком займається наука стенографія. На жаль, методи стенографії не можуть гарантувати високий рівень конфіденційності інформації.
Третій спосіб - це використовувати загальнодоступний канал зв'язку, але передавати дані в перетвореному вигляді, так щоб відновити їх міг лише адресат. Розробкою методів перетворення інформації, забезпечує її шифрування, і займається криптографія.
Варто відзначити, що криптосистема працює за певною методологією (процедурою).
Ця методологія передбачає використання:
п‚· одного або більш алгоритмів шифрування, які можна виразити у вигляді математичних формул;
п‚· ключів, використовуваних даними алгоритмами шифрування,
п‚· системи управління ключами,
п‚· незашифрованого тексту,
п‚· зашифрованого тексту (шифртексту).
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 параметри - довжину в бітах і джерело випадковості.
keyGen.initialize (1024, random);
Останнім етапом є власне генерація пари ключів (метод generateKeyPair ()) і виділення двох окремих ключів (Методи getPrivate () і getPublic ()).
KeyPair pair = keyGen.generateKeyPair ();
PrivateKey privKey = Pair.getPrivate ();
PublicKey pubKey = pair.getPublic ();
Створення підпису.
В першу чергу необхідно створити об'єкт класу Signature, викликавши метод getInstance ():
Signature dsa = Signature.getInstance ("SHA1withDSA", "SUN");
У даному випадку використовується алгоритм DSA з SHA1 (хеш-функція). Потім йде процес ініціалізації підпису ключем. На цьому етапі використовується закритий ключ, отриманий раніше:
dsa.initSign (privKey);
Після цього необхідно звести підпис і самі дані. Для цього викликається метод update (), одержуваний у якості параметра байтовий масив даних...