Цілісність інформації та ресурсів

Застосування криптографічного захисту інформації від випадкової чи навмисної її модифікації, поняття цілісності інформації та ресурсів. Розповсюдженням електронного документообігу, застосування цифрового підпису, характеристика методів шифрування.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 01.03.2012
Размер файла 140,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

Размещено на http://www.allbest.ru

Вступ

Цілісність інформації та ресурсів - це властивість захищеності інформації від випадкової чи навмисної її модифікації, яка забезпечується за рахунок застосування криптографічного захисту інформації.

На даний момент розвитку криптографії, значного розповсюдження набув електронний документообіг. А з його появою з'явилася необхідність у забезпеченні автентичності інформації. А основою теорії автентичності є забезпечення цілісності та справжності інформації та ресурсів.

Автентифікація здійснюється за рахунок застосування систем паролювання, кодів автентифікації системи, електронних підписів та електронних цифрових підписів.

Один з цих методів і розглядається в данній курсовій роботі, а саме створення електронно цифрового підпису EC-DSA.

1. Цифровий підпис (Digital Signature Algorithm, DSA)

У серпні 1991 року Національний інститут стандартів і техніки (National Institute of Standards and Technology, NIST) запропонував для використання в своєму Стандарті цифрового підпису (Digital Signature Standard, DSS) Алгоритм цифрового підпису (Digital Signature Algorithm, DSA). Згідно Federal Register [538]:

Пропонується Федеральний стандарт обробки інформації (Federal Information Processing Standard, FIPS) для Стандарту цифрового підпису (Digital Signature Standard, DSS). У цьому стандарті визначається алгоритм цифрового підпису з відкритим ключем (DSA), придатний для федеральних застосувань, що вимагають цифрового підпису. Запропонований DSS використовує відкритий ключ для перевірки одержувачем цілісності отриманих даних і особи відправника. DSS також може бути використаний третьою стороною для перевірки правильності підпису і пов'язаних з нею даних.

У цьому стандарті приймається схема підпису з відкритим ключем, що використовує пару перетворень для створення і перевірки цифрового значення, званого підписом.

Запропонованим стандартом є результат оцінки різних методик цифрового підпису. Ухвалюючи рішення, NIST слідував положенню розділу 2 Акти про комп'ютерну безпеку (Computer Security Act) 1987 року про те, що NIST розробляє стандарти"... що забезпечують рентабельну безпеку і секретність Федеральної інформації, вибираючи з технологій, що пропонують порівнянний ступінь захисту, ту, яка володіє найбільш відповідними робочими і експлуатаційними характеристиками".

Серед чинників, розглянутих в процесі ухвалення рішення були рівень забезпечуваної безпеки, простота апаратної і програмної реалізації, простота експорту за межі США, застосовність патентів, вплив на національну безпеку і забезпечення правопорядку, а також ступінь ефективності як функції підпису, так і функції перевірки. Здавалося, що забезпечити відповідний захист Федеральним системам можна багатьма способами. Вибраний задовольняє наступним вимогам:

NIST чекає, що його можна буде використовувати безкоштовно. Широке використання цієї технології, обумовленою його доступністю, послужить до економічної вигоди уряду і суспільства.Вибрана технологія забезпечує ефективне використання операцій підпису в додатках, пов'язаних з використанням інтелектуальних карток. У цих додатках операції підпису виконуються в слабкому обчислювальному середовищі інтелектуальних карток, а процес перевірки реалізується в могутнішому обчислювальному середовищі, наприклад, на персональному комп'ютері, в апаратному криптографічному модулі або на комп'ютері мейнфреймі. Перш, ніж все зовсім заплутається, дозвольте мені розібратися з назвами: DSA - це алгоритм, а DSS стандарт. Стандарт використовує алгоритм. Алгоритм є частиною стандарту.

1.1 Генерація простих чисел DSA

Ленстра і Хабер вказали, що зламати деякі модулі набагато легше, ніж інші. Якщо хто-небудь змусить користувачів мережі використовувати один з таких слабких модулів, то їх підписи буде легко підроблювати. Проте це не представляє проблеми по двох причинах: такі модулі легко виявити, і вони такі рідкісні, що вірогідність випадково використовувати одного з них нехтує мала, менше, ніж вірогідність випадково отримати складене число на виході імовірнісної процедури генерації простих чисел.NIST рекомендував конкретний метод генерації двох простих чисел, p і q, де q є дільником p-1. Довжина простого числаp - між 512 і 1024 і кратна 64 -бітам. Хай L-1= 160n+b, де L - це довжина p, а n і b - два числа, причому b менше 160.

Виберемо довільну послідовність, принаймні, 160 бітів і назвемо її S. Хай g - це довжина S в бітах.

Обчислимо U = SHA(S) © SHA((S + 1) mod 2g).

Утворюємо q, встановивши найбільший і найменший значущі біти Ub 1.

Перевіримо, чи є q простим.

якщо q не є простим, то повернемося на этап (1).

Хай C=0 и N=2.

Для k=0,l,...,n, пусть Vk=SHA((S+N+k) mod 2g)

Хай W - ціле число W = V0 + 2160V1 +...+ 2160(n-1) Vn-1 + 2160 (Vn mod 2b) и пусть X = W + 2L-1. Звернете увагу, що X - це L - бітове число.

Хай Р = X - ((X mod 2q) - 1). Звернете увагу, що p конгруентний 1 mod 2q.

10. Хай p < 2L-1, то перейдем на этап (13).

11. Перевіримо, чи є p простим числом.

12. Якщо p - простое, перейдем к этапу (15).

13. Хай C=C+1 и N=N+n+l.

14. Якщо C = 4096, повернемося до этапу (1). Інакше перейдемо на этап (7).

15. Збережемо значення S и C використані для генерації p и q.

Сенс цієї вправи в тому, що воно є опублікованим способом генерації p і q. Для всіх практичних застосувань цей метод дозволяє уникнути слабких значень p і q. Якщо хтось вручить вам якісь p і q, вас може зацікавити, як отримані ці числа. Проте, якщо ви отримаєте значення S і C, використані при генерації випадкових p і q, ви зможете повторити всю процедуру самостійно. Використання однонаправленої хэш-функции (у стандарті використовується SHA) не дозволяє отримати S і C по значеннях p і q.

Ця безпека краща, ніж забезпечувана RSA. У RSA прості числа зберігаються в секреті. Будь-хто може генерувати фальшиве просте число або число, форма якого спрощує розкладання на множники. Не знаючи закритого ключа, це ніколи не перевіриш. У DSA, навіть якщо закритий ключ невідомий, можна переконатися, що p і q генерувалися випадковим чином.

1.2 Шифрування ElGamal з DSA

Затверджувалося, що DSA так подобається уряду, тому що його не можна використовувати як алгоритм шифрування. Проте можна використовувати виклик функції DSA для шифрування EIGamal. Хай алгоритм реалізований як виклик однієї функції

DSAsign(p,q,g,k,x,h,r,s)

Задавши вхідні значення p, q, g, до, xn h, можна отримати параметри підпису: r і s.

Для шифрування повідомлення m алгоритмом EIGamal за допомогою відкритого ключа у виберемо випадкове число до і викличемо

DSAsign(p,p,g,k,0,0,r,s)

Повернене значення r і буде а з схеми EIGamal. Відкинемо s. Потім викличемо, call

DSAsign(p,p,y,k,0,0,r,s)

Перейменуємо значення r в u, відкинемо s. Викличемо

DSAsign(p,p,m,1,u,0,r,s)

Відкинемо r. Повернене значення s і буде b в схемі EIGamal. Тепер у вас є шифротекст, а і b. Дешифрування також просто. Використовуючи закритий ключ x і шифротекст повідомлень, а і b, викличемо

DSAsign(p,p,a,x,0,0,r,s)

Значення r - це ах mod р. Назвемо його e. Потім викличемо

DSAsign(p,p,1,e,b,0,r,s)

Значення s і буде відкритим текстом повідомлення, m.

Цей спосіб працює не зі всіма реалізаціями DSA - в деяких з них можуть бути зафіксовані значення і q або довжини деяких інших параметрів. Проте, якщо реалізація є достатньо загальною, то можна шифрувати повідомлення, не використовуючи нічого, окрім функції цифрового підпису

1.3 Шифрування RSA з DSA

Шифрування RSA ще простіше. Використовуючи модуль n, повідомлення m і відкритий ключ e, викличемо

DSAsign(n,n,m,e,0,0,r,s)

Повернене значення r і є шифротекст. Дешифрування RSA є таким самим. Якщо d - закритий ключ, то

DSAsign(n,n,m,d,0,0,r,s)

повертає відкритий текст як значення r.

1.4 Безпека DSA

З 512 бітами DSA недостатньо надійний для тривалої безпеки, але він цілком надійний при 1024 бітах. У своїй першій заяві на цю тему NSA так коментувало затвердження Джо Ебернеті (Joe Aber-nathy) з The Houston Chronicle з приводу лазівки в DSS [363]:

Що стосується передбачуваної лазівки в DSS. Ми вважаємо, що термін "лазівка" вводить в оману, так він припускає, що через лазівку можна якось розшифрувати (прочитати) зашифровані повідомлення, що підписуються за допомогою DSS, без дозволу відправника.

DSS не шифрує ніяких даних. По суті питанням є, чи не може хтось за допомогою DSS підроблювати підпис, і, таким чином, дискредитувати всю систему. Ми категорично заявляємо, що вірогідність, що хто-небудь - включаючи NSA зможе підроблювати підпис DSS, при правильному використанні стандарту нескінченно мала.

Більш того, припущення про чутливість до лазівки справедливо для будь-якої системи перевірки достовірності з відкритими ключами, включаючи RSA. Твердження, що це впливає тільки на DSS (аргумент, популярний в пресі), повністю невірно. Питання в реалізації і способі вибору простих чисел. Ми закликаємо вас приділити увагу недавній конференції EUROCRYPT, де "за круглим столом" обговорювалося питання лазівок в DSS. Одним з учасників обговорення був один з дослідників з Bellcore, що затверджував про можливість лазівки, і по нашому розумінню учасники дискусії - включаючи цього дослідника з Bellcore - прийшли до висновку, що питання про лазівку в DSS не представляє проблеми. Більш того, всіма було визнано, що питання про лазівку є тривіальним і був роздутий пресою. Проте, намагаючись на прохання NIST відповісти на звинувачення про лазівку, ми розробили процес генерації простих чисел, що дозволяє уникнути вибору одного з відносно невеликого числа слабких простих чисел, використання яких послаблює DSS. Крім того, NIST наполягає на використанні модулів більшої довжини, аж до 1024, що дозволяє не користуватися розробленим процесом генерації простих чисел, уникаючи слабких простих чисел. Дуже важливим додатковим моментом, на який часто не звертають увагу, є те, що при використанні DSS прості числа загальнодоступні і, отже, можуть бути предметом відкритого вивчення. Не всі системи з відкритими ключами здатні пройти подібну перевірку.

Цілісність будь-якої системи захисту інформації вимагає звернути увагу на реалізацію. Враховуючи уразливість систем з мільйонами рівноправних користувачів, NSA за традицією наполягає на використанні централізованих довірених центрів як на способі мінімізувати ризик в системі. Хоча ми на прохання NIST і розробили ряд технічних модифікацій DSS, що дозволяють реалізувати менш централізований підхід, все ж таки потрібно виділити ту частину оголошення про DSS в Federal Register, в якій мовиться:

"Хоча цей стандарт повинен забезпечити загальні вимоги безпеки генерації цифрових підписів, відповідність стандарту не забезпечує безпека конкретної реалізації. Відповідальна особа в кожному департаменті або управлінні повинна гарантувати, що загальна реалізація гарантує прийнятний рівень безпеки. NIST продовжить роботу з урядовими користувачами, забезпечуючи правильність реалізацій."

Нарешті ми вивчили всі твердження про небезпеку DSS, і вони нас не переконали. DSS був ретельно вивчений в NSA, що дозволило нашому Директорові по безпеці інформаційних систем дозволити використовувати цей стандарт для підпису несекретних даних, що обробляються в певних розвідувальних системах, і навіть для підпису секретних даних у ряді систем. Ми вважаємо, що подібне визнання свідчить про неможливість якого-небудь вірогідного розтину безпеки, забезпечуваною DSS при його правильній реалізації і використанні. Грунтуючись на вимогах уряду США до техніки і безпеки цифрових підписів, ми вважаємо, що DSS є кращим вибором. Насправді, DSS виступає як пілотний проект Системи захисту повідомлень (Defense Message System), покликаний гарантувати достовірність електронних повідомлень для життєво важливих команд і контрольної.

1.5 Небезпеки загального модуля

Хоча DSS не визначає застосування користувачами загального модуля, різні реалізації можуть скористатися такою можливістю. Наприклад, Податкове управління розглядає використання DSS для електронної податків. Що якщо ця організація зажадає, щоб всі платники податків країни використовували загальні p і q? Загальний модуль дуже легко стає мішенню для криптоаналізу. Поки дуже рано обговорювати різні реалізації DSS, але причини для неспокою є.

Гус Симмонс (Gus Simmons) відкрив в DSA підсвідомий канал (див. розділ 23.3). Цей підсвідомий канал дозволяє вбудовувати в підпис таємне повідомлення, яке може бути прочитане тільки тим, у кого є ключ. Згідно Симмонсу, це "чудовий збіг", що "всі очевидні недоліки підсвідомих каналів, що використовують схему ElGamal, можуть бути усунені" в DSS, і що DSS "на сьогодні забезпечує найбільш відповідне середовище для підсвідомих комунікацій ". NIST і NSA не коментували цей підсвідомий канал, ніхто навіть не знає, чи здогадувалися вони про таку можливість. Оскільки цей підсвідомий канал дозволяє при недобросовісній реалізації DSS передавати з кожним підписом частину закритого ключа. Ніколи на користуйтеся реалізацією DSS, якщо ви не довіряєте розробникові реалізації.

1.6 Патенти

Девід Кравіц (David Kravitz), що раніше працював в NSA, володіє патентом DSA. Згідно NIST на користь суспільства прагне зробити технологію DSS доступною безкоштовно по всьому світу. Ми вважаємо, що ця технологія може бути запатентована, і що ніякі інші патенти не застосовні до DSS, але ми не можемо дати твердих гарантій цього до отримання патенту.

Не дивлячись на це, три власники патентів стверджують, що DSA порушує їх патенти: Diffie-Hellman (див. розділ 2.2.1) [718], Merkle-Hellman (див. розділ 19.2.) [720] і Schnorr (див. розділ 21.3) [1398]. Патент Schnorr є джерелом найбільших складнощів. Термін дії два інших патентів закінчується 1997 року, а патент Schnorr дійсний до 2008 року. Алгоритм Schnorr був розроблений не на урядові гроші. На відміну від патентів PKP у уряду США немає прав на патент Schnorr, і Шнорр запатентував свій алгоритм по всьому світу. Навіть якщо суди США винесуть ухвалу на користь DSA, неясно, яке рішення ухвалять суди в інших країнах. Чи зможе міжнародна корпорація прийняти стандарт, який законний в одних країнах і порушує патентне законодавство в інших? Потрібний час, щоб вирішити цю проблему, до моменту написання цієї книги це питання не вирішене навіть в Сполучених Штатах.

У червні 1993 року NIST запропонував видати PKP виняткову патентну ліцензію на DSA [541]. Угода провалилася після протестів громадськості і стандарт вийшов в світ без всяких угод.

NIST заявив: - NIST розглянув заяви про можливе порушення патентів і зробив вивід, що ці заяви несправедливі.

Отже стандарт офіційно прийнятий, в повітрі пахне судовими процесами, і ніхто не знає, що робити. NIST заявив, що він допоможе захиститися людям, звинуваченим в порушенні патентного законодавства при використанні DSA в роботі по урядовому контракту. Останні, по видимому, повинні піклуватися про себе самі. Проект банківського стандарту, використовуючого DSA, висунутий ANSI [60]. NIST працює над введенням стандарту DSA в урядовому апараті. Shell Oil зробила DSA своїм міжнародним стандартом. Про інші запропоновані стандарти DSA мені невідомо.

1.7 Варіанти DSA

Цей варіант робить простішим обчислення, необхідні для підпису, не примушуючи обчислювати k-1. Всі використовувані параметри - такі ж, як в DSA. Для підпису повідомлення m Аліса генерує два випадкові числа, до u d, менші q. Процедура підпису виглядає так

r = (gk mod p) mod q

s = (H(m) + xr) * d mod q

t = kd mod q

Боб провіряє підпис, обчислюючи

w = t/s mod q

u1 = (H(m) * w) mod q

u2 = (rw) mod q

якщо r = ((gu1 *yu2) mod p) mod q, то підпис павильний

Наступний варіант спрощує обчислення при перевірці підпису. Всі використовувані параметри - такі ж, як в DSA. Для підпису повідомлення m Аліса генерує випадкове число до, менше q. Процедура підпису виглядає так

r = (gk mod p) mod q

s = k (H(m) + xr)-1 mod

Боб провіряє підпис, обчислюючи

u1 = (H(m) *s) mod q

u2 = (sr) mod

якщо r = ((gu1 *yu2) mod p) mod q, то підпис правильний.

Ще один варіант DSA вирішує пакетну перевірку, Боб може перевіряти підписи пакетами. Якщо всі підписи правильні, то робота Боба закінчена. Якщо одна з них неправильна, то йому ще потрібно зрозуміти, яка. До нещастя, це небезпечно. Що або підписує, або перевіряючий може легко створити набір фальшивих підписів, який задовольняє критерію перевірки пакету підписів.

Існує також варіант генерації простих чисел для DSA, який включає q і використовувані для генерації простих чисел параметри всередину р. чи Впливає ця схема на безпеку DSA, все ще невідомо. Існує також варіант генерації простих чисел для DSA, який включає q і використовувані для генерації простих чисел параметри всередину р. чи Впливає ця схема на безпеку DSA, все ще невідомо.

Виберемо довільну послідовність, принаймні, 160 бітів і назвемо її S. Хай g - це довжина S в бітах.

Обчислимо U = SHA(S)© SHA((S + 1) mod 2g), де SHA описаний в розділі 18.7.

Утворюємо q, встановивши найбільший і найменший значущі біти Uв 1.

Перевіримо, чи є q простим.

Хай p - це об'єднання q, S, C і SHA(S). C є 32 нульовими бита.

P = p-(p mod q)+l.

P = p+q.

Якщо C в p рівне 0x7fffffff, повернемося на етап (1).

Перевіримо, чи є p простим.

10. Якщо p - складене, повернемося на етап (7).

Перевагою цього варіанту є те, що вам не потрібно зберігати значення C і S, використані для генерації p і q. Вони включені до складу р. Для додатків, що працюють в умовах браку пам'яті, наприклад, для інтелектуальних карток, це може бути важливо.

1.8 Порядок застосування електронного цифрового підпису органами державної влади, органами місцевого самоврядування, підприємствами, установами та організаціями державної форми власності

1. Цей Порядок визначає вимоги до застосування електронного цифрового підпису органами державної влади, органами місцевого самоврядування, підприємствами, установами та організаціями державної форми власності (далі - установи).

2. Установа застосовує електронний цифровий підпис лише за умови використання надійних засобів електронного цифрового підпису, що повинне бути підтверджено сертифікатом відповідності або позитивним висновком за результатами державної експертизи у сфері криптографічного захисту інформації, отриманим на ці засоби від Адміністрації Держспецзв'язку, та наявності посилених сертифікатів відкритих ключів у своїх працівників - підписувачів. (пункт 2 із змінами, внесеними згідно з постановою Кабінету Міністрів України від 08.12.2006 р. N 1700)

3. Установа застосовує електронний цифровий підпис для вчинення правочинів за участю інших юридичних та фізичних осіб лише за наявності у них посилених сертифікатів відкритих ключів.

4. Установа не застосовує електронний цифровий підпис:

· для складання електронних документів, які не можуть бути оригіналами у випадках, передбачених законодавством;

· для вчинення правочинів на суму, що перевищує 1 млн. гривень.

5. Установа отримує на договірних засадах послуги, пов'язані з електронним цифровим підписом, від акредитованого центру сертифікації ключів. При цьому установа може отримувати такі послуги лише від одного акредитованого центру сертифікації ключів. Використання підписувачами особистих ключів, відповідні відкриті ключі яких засвідчені іншими акредитованими центрами сертифікації ключів, забороняється.

6. Граничні ціни (тарифи) на послуги, пов'язані з електронним цифровим підписом, що надаються установам акредитованими центрами сертифікації ключів, установлюються Мінтрансзв'язку за погодженням з Мінекономіки.

7. Установа здійснює обмін інформацією з акредитованим центром сертифікації ключів через телекомунікаційні мережі.

8. Відповідальність за організацію застосування електронного цифрового підпису в установі несе її керівник, якщо інше не встановлено законодавством.

9. Застосування електронного цифрового підпису в установі забезпечує підрозділ інформаційних технологій, а у разі відсутності такого - підрозділ, що виконує відповідні функції (далі - відповідальний підрозділ), або працівник, спеціально визначений наказом керівника цієї установи. Зазначений підрозділ (працівник) забезпечує:

· підготовку та надання акредитованому центру сертифікації ключів інформації, необхідної для формування посилених сертифікатів відкритих ключів підписувачів;

· надання допомоги підписувачам під час генерації їх особистих та відкритих ключів;

· подання до акредитованого центру сертифікації ключів звернень про скасування, блокування або поновлення посилених сертифікатів відкритих ключів підписувачів;

· доступ підписувачів через телекомунікаційні мережі до акредитованих центрів сертифікації ключів у разі неможливості здійснення ними такого доступу із своїх робочих місць;

· ведення обліку засобів електронного цифрового підпису, що використовуються в установі;

· ведення обліку носіїв особистих ключів підписувачів;

· зберігання документів, на підставі яких було сформовано посилені сертифікати відкритих ключів підписувачів;

· контроль за використанням підписувачами засобів електронного цифрового підпису та зберіганням ними особистих ключів.

10. Порядок надання працівникам установи права застосування електронного цифрового підпису, ведення обліку, зберігання та знищення їх особистих ключів, а також надання акредитованому центру сертифікації ключів інформації, необхідної для формування, скасування, блокування або поновлення посилених сертифікатів відкритих ключів підписувачів установи, визначається наказом її керівника, якщо інше не встановлено законодавством.

11. Генерація особистого та відкритого ключів здійснюється підписувачем безпосередньо в установі або в акредитованому центрі сертифікації ключів, що її обслуговує. У разі потреби під час генерації ключів підписувачеві надається допомога персоналом відповідального підрозділу (спеціально визначеним працівником) або персоналом акредитованого центру сертифікації ключів.

12. У посиленому сертифікаті відкритого ключа підписувача додатково зазначається його належність до установи та посада, яку він займає.

13. У разі коли згідно із законодавством необхідне засвідчення печаткою справжності підпису на документах та відповідності копій документів оригіналам, установа застосовує спеціально призначений для таких цілей електронний цифровий підпис (далі - електронна печатка).

· Установа застосовує електронну печатку лише за наявності у неї відповідної печатки, що застосовується для документів на папері.

· У посиленому сертифікаті відкритого ключа, що використовується установою для електронної печатки, додатково зазначається спеціальне призначення електронного цифрового підпису та сфера його застосування, а також відтворюється текстова інформація, розміщена на відповідній печатці.

14. Право проставлення електронної печатки на електронних документах надається лише тому працівнику установи, який проставляє відповідну печатку на документах на папері.

· Отримання в акредитованому центрі сертифікації ключів посиленого сертифіката відкритого ключа для забезпечення застосування електронної печатки, а також генерація відповідних ключів здійснюється в тому ж порядку, що й для електронного цифрового підпису.

15. Підписувач може застосовувати електронний цифровий підпис лише після отримання установою від акредитованого центру сертифікації ключів посиленого сертифіката його відкритого ключа.

· Після звільнення підписувача установа звертається до акредитованого центру сертифікації ключів для скасування посиленого сертифіката його відкритого ключа, а особистий ключ знищується методом, що не допускає можливості його відновлення.

16. Підписувач використовує у процесі виконання своїх функцій лише особистий ключ, отриманий в установі. Використання особистого ключа у випадках, не пов'язаних з діяльністю установи, забороняється.

17. Підписувач на один і той самий момент часу може мати і використовувати лише один особистий ключ, якому відповідає відкритий ключ з чинним посиленим сертифікатом, отриманим установою. Це обмеження не стосується електронної печатки.

18. Підписувач несе відповідальність за зберігання особистого ключа.

19. Копіювання особистих ключів та/або передача їх іншим особам забороняється.

20. Справжність електронного цифрового підпису, накладеного на електронний документ або інші електронні дані, та цілісність цього документа (даних) перевіряється з дотриманням таких вимог:

· електронний цифровий підпис повинен бути підтверджений з використанням посиленого сертифіката ключа за допомогою надійних засобів цифрового підпису;

· під час перевірки повинен використовуватися посилений сертифікат ключа, чинний на момент накладення електронного цифрового підпису;

· особистий ключ підписувача повинен відповідати відкритому ключу, зазначеному у сертифікаті;

· на час перевірки повинен бути чинним посилений сертифікат відкритого ключа акредитованого центру сертифікації ключів та/або посилений сертифікат відкритого ключа відповідного засвідчувального центру.

21. Контроль за виконанням в установах вимог цього Порядку здійснює Адміністрація Держспецзв'язку

2. Алгоритм електронного цифрового підпису EC-DSA

Алгоритм електронного цифрового підпису EC-DSA є аналогом електронного цифрового підпису DSA на еліптичних кривих. Він забезпечує вироблення електронного цифрового підпису з доповненням.

2.1 Параметри домену та параметри користувачів

Бітова довжина модуля повинна бути більше ніж бітова довжина вихідного значення функції гешування .

Особистий і відкритий ключі суб'єкта А, і повинні бути вироблені відповідно до процедури 6.1, що визначена в ДСТУ ISO/IEC 15946-1.

2.2 Вироблення електронного цифрового підпису

Вхідними даними для вироблення електронного цифрового підпису є наступні:

- параметри домену;

- особистий ключ суб'єкта А, що підписує повідомлення;

- повідомлення , що підписується.

Вихідними даними алгоритму вироблення електронного цифрового підпису є пара , що складає електронний цифровий підпис повідомлення , який виробляється суб'єктом A.

2.2.1 Обчислення геш-значення

1. Обчислення геш-значення .

2.2.2 Обчислення на еліптичних кривих (арифметичні операції в базовому полі)

2. Генерування або вибір випадкового цілого числа в інтервалі .

3. Обчислення точки на еліптичній кривій .

2.2.3 Обчислення за модулем порядку підгрупи, що дорівнює порядку базової точки (арифметичні операції в полі )

4. Обчислення .

5. Обчислення в полі .

6. Обчислення .

Якщо при виробленні електронного цифрового підпису , або , тоді обчислення електронного цифрового підпису необхідно повторити з новим випадковим значенням . (Необхідно зважити, що ймовірність того, що або є надзвичайно малою, якщо обрано відповідно до 6.2.2 та 4.2.1).

Примітка. У зв'язку з тим, що обчислене значення не залежить від повідомлення, що підписується, число може обчислюватися попередньо, і надалі зберігатися та використовуватися під час вироблення електронного цифрового підпису.

2.3 Електронний цифровий підпис

Пара цілих чисел , є електронним цифровим підписом повідомлення , що виробляється суб'єктом А.

2.4 Перевіряння електронного цифрового підпису

Перевіряння електронного цифрового підпису здійснюється за 4 кроки: перевіряння розміру електронного цифрового підпису; відображення повідомлення у геш-значення за допомогою функції гешування; обчислення на еліптичних кривих та, безпосередньо, перевіряння електронного цифрового підпису.

Далі наведені вхідні дані, що використовуються при перевірянні електронного цифрового підпису:

- параметри домену;

- відкритий ключ суб'єкта А;

- одержане повідомлення ;

- одержаний електронний цифровий підпис повідомлення , представлений двома цілими числами та .

Перевіряння електронного цифрового підпису суб'єкта А повідомлення , виконується суб'єктом В у такій послідовності.

2.4.1 Перевіряння розміру електронного цифрового підпису

1. Перевіряння того, що довжини значень електронного цифрового підпису задовольняють умовам та . Якщо хоч одна умова не виконуються, то електронний цифровий підпис відхиляється.

2.4.2 Обчислення геш-значення

2. Обчислення геш-значення , використовуючи функцію гешування .

2.4.3 Обчислення на еліптичній кривій

3. Обчислення

4. Обчислення та .

5. Обчислення точки на еліптичній кривій .

2.4.4 Перевіряння електронного цифрового підпису

6. Обчислення .

Якщо , тоді електронний цифровий підпис визнається дійсним. Якщо , тоді електронний цифровий підпис відхиляється

3. Реалізація ЕЦП EC-DSA

Перед початком сеансу вироблення ключів та безпосередньо створення цифрового підпису задаються загальні параметри:

· Використовується крива y2=x3+x+1

· Базова точка G=(13,7);

· Порядок базової точки n=7;

· Z та t які використовуються для формування особистого ключа.

Вироблення ключів. Оскільки n=7, то ключем може бути будь-яке ціле 1?d?n-1=6 Особистий ключ dA формується, як лишок від суми z і t по модулю n тобто.

z*t=d(mod n) = 141*3=3(mod 7).

Тоді відкритий ключ Q=dA G(mod p)=3(13,7)mod23

Тобто:

Q=((13,7)+(13,7)+(13,7))mod23

Використовуючи афінний базис, спочатку визначаємо 2G,тобто здійснюємо подвоєння точки. Потім складуємо 2G+G і т. д. Отримали: Q=(17,3);

РЕЗУЛЬТАТ

· Особистий ключ dA =3

· Відкритий ключ Q=(17,3);

Виробка ЕЦП.

1. Вибираємо k=4

2. Обчислимо (x1,y1)=k G=4(13,7)=(17,20);

3. Знаходимо x1=17;

4. Обчислюємо перший компонент ЕЦП

с=х1=17;

r=h(c)

замість хеш-функції виконаємо операцію приведення по модулю r=17(mod7)=3;

5. Обчислюємо другий компонент ЕЦП:

Задається значення хеш функції від тексту що буде передаватися - е = 6.

Обчислюється:

S= k-1(e+rdA)mod n =4-1(6+3*3)mod7=2;

Таким чином: (r,s)=(3,2).

Здійснимо перевірку ЕЦП.

Нехай (r,s)=(3,2).

1. Відкритий ключ Q=(17,3)

2. Отримане е=6;

3. Обчислимо

w = (s/)-1 mod n = (2/)-1 mod 7 =4

4. Обчислимо

u1=e/*w(mod n)= 6 * 4(mod 7) =3

u2=r/*w(mod n)= 3 * 4(mod 7) =5

5. Знаходимо точку u1*G + u2*Q =3G + 5Q =3(13,7) + 5(17,3)=(17,20).

6. Знайдемо x1=17.

7. Обчислимо

v=x1(mod n) =17 (mod 7)=3.

8. Оскільки v = r/ =3, то повідомлення цілісне та справжнє.

4. Опис програми

4.1 Загальні відомості

Програма складається з одного файла - EC-DSA.exe, розміром 232 КБ; її код приведений в додатку А.

Програма перевірялася на сумісність з операційною системою Windows XP SP2. Характеристика комп'ютера, на якому проведений тест Процесор AMD Atxlon(tm) XP 2500+ 1.8 GHz; оперативна пам'ять 512 mb; відеокарта NVIDIA GeForse4 MX 440 with agp 8x.

Программа написана на мові програмування С++.

4.2 Функцiональне призначення

Програма призначена для виготовлення особистого та відкритого ключів, а також підпису повідомлень за допомогою ЕЦП EC-DSA, а також їх перевірки на цілісність і справжність.

4.3 Вхiднi даннi

Користувач повинен ввести любі цілі числа z і t, для формування особистого ключа d.

Також потрібно задати значення геш функції ek і сеансового ключа k, які користувач повинен вибрати з інтервалі де n порядок базавої точки G.

4.4 Вихідні данні

Вихідними даними алгоритму вироблення електронного цифрового підпису є пара (r,s), що складає електронний цифровий підпис повідомлення , який виробляється користувачем.

4.5 Опис алгоритму

Програма складається з семи основних частин. В першій частині наведена функція elem яка рахує зворотній елемент. В ній є два параметри a і b в перший ми поміщаєм саме число, а вдругий модуль по якому потрібно знаходити.

В другій частині у на присутня функція void main де описані слідуючі параметри:

int p=23;int n=7;int X1=13, Y1=7;int d=0; int z=0; int t=0; Де p - модуль, n - порядок базової точки, X1, Y1- координати точки G, d - особистий ключ, z та t параметри необхідні для формування ключа d. Також використовуються формули для подвоєння та сумування точок. В цій чатині сворюється особистий та відкритий ключ, дані які потрібно ввети є z і t.

В третій частині присутні такі параметри як: int w, ek, rk, sk; Де w - використовується, як перемінна для знадження зворотнього елемента від значення k w=elem(k,n),ek - значення хеш функції, rk,sk - пара яка утворює ЕЦП. В rk ми записуєм х- координату точки, яку ми отримали внаслідок скалярного добутку k*G(x,y). А sk отримали з рівняння sk=w*(ek+d*rk);

В четвертій частині є такі параметри, як: int s1,h1,r1,w1,u1,u2. Де s1,r1 - значення які користувач отримав і хоче перевірити,h1 - значення хеш функції,w1 - змінна куди записується значення зворотньго елементу від s1,u1 - це рівняння в яке треба підставити значення хеш функції та w1тобто u1=h1*w1%n; u2 - аналогічно до попередньго тільки підставляти треба r1 замість h1 тобто u2=r1*w1%n; Причому рівняння u1 відповідає за подвоєння базової точки, а рівняння u2 за подвоєння відкритого ключа. В цій частині починається перевірка ЕЦП.

В п'ятій частині виконується скалярне множення на базову точку тобто u1*G(x,y).

Операції ті самі, що і в третій частині - подвоєння та сумування.

В шостій частині виконується скалярне множення на відкритий ключ u2*Q(x,y).

Операції аналогічні до попередньої частини.

В сьомій частині виконується сумування точок отриманих після виконяння п'ятої та шостої частини, тобто G+Q після їх подвоєння та сумування. Також виконується перевірка повідомлення на цілісність та справжність. Тут з'являється новий параметр v- в який записується x- координата отримана після сумування точок. Перевірка проходить успішно тоді коли v=rk, якщо перевірка пройшла успішно програма видасть відповідне повідомлення в іншому випадку програма видасть також повідомленняв якому буде сказано, що первірка не виконана, так як v не дорівнює r.

4.6 Результати роботи програм

Рисунок 4.6.1- Результати виконання програми

інформація криптографічний захист цифровий підпис шифрування

Висновок

В даній курсовій роботі розглянутий один з методів забезпечення автентичності - електронно цифровий підпис в групі точок еліптичної кривої. Як приклад такого підпису взято алгоритм EC-DSA.

Під час роботи була написана програма, яка наведена в Додатку А. За допомогою цієї програми можна підписувати та провряти повідомлення та виробляти ключі.

Розроблена програма виготовляє відкриті ключі та особисті ключі, а також підписує повідомлення відповідно до алгоритму цифрового підпису EC-DSA.

Перелік посилань

1. ДСТУ ISO15946-2 від 17.07.2005.

2. Брюc Шнайер. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си. Изд. Триумф. М., 2003 г. 815с.

3. Горбенко І.Д. „Криптографічний захист інформації”. Навч. посібник Харків, ХНУРЕ, 2004 р.

4. Постанова КМУ № 1700 от 08.12.2006 "Про внесення змін до деяких актів Кабінету Міністрів України".

Додаток А

Код програми яка створює ЕЦП

# include <iostream.h>

#include <math.h>

//Зворотній елемент 1

int elem (int a,int b){

int r[100];

int m;

r[0]=1;

for(int i=0;i<100;i++)

{if (b!=1){

r[i]=b/a;

int t=b%a;

b=a;

a=t;

m=i;

}

else break;}

int kol[3];

kol[0]=r[0];

kol[1]=r[0]*r[1]+1;

if ((m-1)>1){

for (int k=2; k<m; k++)

{kol[k]=kol[k-1]*r[k]+kol[k-2];

}

}

int y=pow(-1,m)*kol[m-1];

return (y);

}

//ключі особистий і відкритий 2

void main (){

int p=23;int n=7;int X1=13, Y1=7;int d=0; int z=0; int t=0;

cout<<"Enter any integers values for z and t"<<endl;

cin>>z;

cin>>t;

d=z*t%n;

cout<<"Private key="<<d<<endl;

int X2,Y2;

int yr=((3*X1*X1)+1);

yr=yr%p;

int l;

int e=(2*Y1)%p;

l=yr*elem(e,p);

X2=(l*l-2*X1);

X2=X2%p;

Y2=(l*(X1-X2)-Y1);

Y2=Y2%p;

if (d>2){

for (int i=1;i<d-1;i++)

{

int yr2=(Y1-Y2);

yr2=yr2%p;

int l2;

int o=0;

o=X1-X2;

o=o%p;

if (o<0) o=p+o;

l2=yr2*elem(o,p);

l2=l2%p;

X2=(l2*l2-X1-X2);

X2=X2%p;

Y2=(l2*(X1-X2)-Y1);

Y2=Y2%p;

}

}

if (X2<0) X2=p+X2;

if (Y2<0) Y2=p+Y2;

cout<<"Public key=("<<X2<<","<<Y2<<")"<<endl;

//ЕЦП 3

int w, ek, rk, sk;

cout<<"Enter the hesh value of message"<<endl;

cin>>ek;

ek=ek%n;

int k=0;

cout<<"Enter the session key from 1 to 7"<<endl;

cin>>k;

k=k%n;

int X22,Y22;

int yr1=((3*X1*X1)+1);

yr1=yr1%p;

if (yr1<0) yr1=p+yr1;

int l1;

int e1=(2*Y1)%p;

l1=yr1*elem(e1,p);

X22=(l1*l1-2*X1);

X22=X22%p;

if (X22<0) X22=p+X22;

Y22=(l*(X1-X22)-Y1);

Y22=Y22%p;

if (Y22<0) Y22=p+Y22;

if (k>2){

for (int j=1;j<k-1;j++)

{

int yr22=(Y1-Y22);

yr22=yr22%p;

int l22;

int o2=0;

o2=X1-X22;

o2=o2%p;

if (o2<0) o2=p+o2;

l22=yr22*elem(o2,p);

l22=l22%p;

if (X22<0) X22=p+X22;

X22=(l22*l22-X1-X22);

X22=X22%p;

if (X22<0) X22=p+X22;

Y22=(l22*(X1-X22)-Y1);

Y22=Y22%p;

if (Y22<0) Y22=p+Y22;

}

}

rk=X22;

rk=rk%n;

cout<<"Digital signature EC-DSA"<<endl;

if (rk==0) cout<<"please close the program and repeat once again"<<endl;

cout<<"r="<<rk<<endl;

w=elem(k,n);

sk=w*(ek+d*rk);

sk=sk%n;

if (sk<0) sk=n+sk;

if (sk==0) cout<<"please close the program and repeat once again"<<endl;

cout<<"s="<<sk<<endl;

cout<<"------------------ verification -----------------------" <<endl;

//4

int s1,h1,r1,w1,u1,u2;

cout<<"enter value s"<<endl;

cin>>s1;

cout<<"enter value h"<<endl;

cin>>h1;

cout<<"enter value r"<<endl;

cin>>r1;

w1=elem(s1,n);

w1=w1+n;

u1=h1*w1%n;

u2=r1*w1%n;

// 3*G 5

int X33,Y33;

int yr2=((3*X1*X1)+1);

yr2=yr2%p;

if (yr2<0) yr2=p+yr2;

int l2;

int e2=(2*Y1)%p;

l2=yr2*elem(e2,p);

X33=(l2*l2-2*X1);

X33=X33%p;

if (X33<0) X33=p+X33;

Y33=(l2*(X1-X33)-Y1);

Y33=Y33%p;

if (Y33<0) Y33=p+Y33;

if (u1>2){

for (int j=1;j<u1-1;j++)

{

int yr33=(Y1-Y33);

yr33=yr33%p;

int l33;

int o3=0;

o3=X1-X33;

o3=o3%p;

if (o3<0) o3=p+o3;

l33=yr33*elem(o3,p);

l33=l33%p;

if (X33<0) X33=p+X33;

X33=(l33*l33-X1-X33);

X33=X33%p;

if (X33<0) X33=p+X33;

Y33=(l33*(X1-X33)-Y1);

Y33=Y33%p;

if (Y33<0) Y33=p+Y33;

}

}

cout<<"doubling base poit G =("<<X33<<","<<Y33<<")"<<endl;

//5*Q 6

int X55,Y55;

int yr5=((3*X2*X2)+1);

yr5=yr5%p;

if (yr5<0) yr5=p+yr5;

int l5;

int e5=(2*Y2)%p;

l5=yr5*elem(e5,p);

X55=(l5*l5-2*X2);

X55=X55%p;

if (X55<0) X55=p+X55;

Y55=(l5*(X2-X55)-Y2);

Y55=Y55%p;

if (Y55<0) Y55=p+Y55;

if (u2>2){

for (int j=1;j<u2-1;j++)

{

int yr55=(Y2-Y55);

yr55=yr55%p;

int l55;

int o5=0;

o5=X2-X55;

o5=o5%p;

if (o5<0) o5=p+o5;

l55=yr55*elem(o5,p);

l55=l55%p;

if (X55<0) X55=p+X55;

X55=(l55*l55-X2-X55);

X55=X55%p;

if (X55<0) X55=p+X55;

Y55=(l55*(X2-X55)-Y2);

Y55=Y55%p;

if (Y55<0) Y55=p+Y55;

}

}

cout<<"doubling pablik key Q =("<<X55<<","<<Y55<<")"<<endl;

//G+Q 7

int X66,Y66; int v;

{

int yr66=(Y55-Y33);

yr66=yr66%p;

int l66;

int o6=0;

o6=X55-X33;

o6=o6%p;

if (o6<0) o6=p+o6;

l66=yr66*elem(o6,p);

l66=l66%p;

if (X66<0) X66=p+X66;

X66=(l66*l66-X33-X55);

X66=X66%p;

if (X66<0) X66=p+X66;

Y66=(l66*(X33-X66)-Y33);

Y66=Y66%p;

if (Y66<0) Y66=p+Y66;

}

cout<<"sum points G+Q =("<<X66<<","<<Y66<<")"<<endl;

v=X66%n;

cout<<"v="<<v<<","<<"r="<<rk<<endl;

if (v==rk) cout<<"if v=r so, a message is unit and real"<<endl;

else cout<<"a message is not unit and real"<<endl;

cin.get();

cin.get();

}

Размещено на Allbest.ru


Подобные документы

  • Задачі інформаційних систем криптографічного захисту інформації. Принципи шифрування даних на основі використання хеш-функцій. Розробка програмних компонентів інформаційних систем криптографічного захисту інформації. Види криптографічних алгоритмів.

    курсовая работа [2,7 M], добавлен 23.01.2012

  • Функції систем захисту інформації, основні терміни та визначення. Введення в криптологію, нормативно-правова база захисту інформації. Впровадження новітніх інформаційних телекомунікаційних системи. Використання та здійснення електронного документообігу.

    реферат [24,0 K], добавлен 03.10.2010

  • Загальна характеристика ТОВ "WED". Програмне забезпечення і система документообігу підприємства. Технічні засоби охорони об’єктів від витоку інформації. Резервне копіювання інформації. Встановлення антивірусу. Впровадження криптографічного захисту.

    курсовая работа [697,1 K], добавлен 01.06.2010

  • Дослідження криптографічних методів захисту даних від небажаного доступу. Основи безпеки даних в комп'ютерних системах. Класифікаційні складові загроз безпеки інформації. Характеристика алгоритмів симетричного та асиметричного шифрування інформації.

    курсовая работа [245,8 K], добавлен 01.06.2014

  • Основи електронного юридично значимого документообігу в процесі створення цифрового підпису. Використання схеми криптографічних ключів. Створення сертифіката з локальною генерацією ключової пари. Асиметричні алгоритми шифрування. Криптосистема Ель-Гамаля.

    дипломная работа [414,9 K], добавлен 12.01.2016

  • Принципи побудови захисту електронних банківських документів. Забезпечення автентифікації адресата та відправника міжбанківських електронних розрахункових документів і службових повідомлень. Апаратно-програмні засоби криптографічного захисту інформації.

    контрольная работа [54,9 K], добавлен 26.07.2009

  • Побудова комплексної системи захисту інформації на OOO "Віпіком". Забезпечення інженерно-технічними заходами конфіденційності, цілісності та доступності інформації. Своєчасне виявлення і протидія загрозам безпеці інформації з обмеженим доступом.

    курсовая работа [343,5 K], добавлен 05.01.2014

  • Принципи, цілі та завдання, напрямки робіт із захисту інформації. Суб'єкти системи захисту інформації у Російській Федерації. Основні організаційно-технічні заходи, об'єкти та засоби захисту інформації. Види загроз безпеки, матеріальні носії інформації.

    реферат [23,6 K], добавлен 27.03.2010

  • Основи безпеки даних в комп'ютерних системах. Розробка програми для забезпечення захисту інформації від несанкціонованого доступу: шифрування та дешифрування даних за допомогою криптографічних алгоритмів RSA та DES. Проблеми і перспективи криптографії.

    дипломная работа [823,1 K], добавлен 11.01.2011

  • Визначення криптографічних методів захисту інформації як способів шифрування та кодування даних, які потребують ключа і оберненого перетворення. Характеристика принципу гаммування. Криптоаналіз лінійних конгруентних генераторів псевдовипадкових чисел.

    курсовая работа [242,4 K], добавлен 01.02.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.