Розробка програми, що реалізує алгоритм шифрування
ГОСТ 28147-89 h2>
Пояснювальна записка до курсової роботи з
інформаційної безпеки p>
Студент групи 1541 Р.В. Ткачук p>
Далекосхідна державна соціально-гуманітарна
академія p>
Біробіджан, 2008 p>
Вступ h2>
Те, що інформація має цінність, люди усвідомили
дуже. Адже ще з давніх часів листування правителів була об'єктом
пильної уваги їх недругів і друзів. Саме тоді й виникла завдання
захисту цієї листування від надмірно цікавих очей. Старовинні намагалися
використовувати для вирішення цього завдання найрізноманітніші методи, і одним з них
була тайнопис - вміння складати повідомлення таким чином, щоб його значення було
недоступний нікому крім посвячених у таємницю. Протягом усієї своєї
багатовікової історії, аж до зовсім недавнього часу, це мистецтво служило
небагатьом, в основному верхівці суспільства, не виходячи за межі резиденцій глав
держав, посольств і т.д. І лише кілька десятиліть тому все змінилося
докорінно - інформація набула самостійну комерційну цінність і
стала широко поширеним, майже звичайним товаром. Її виробляють, зберігають,
транспортують, продають і купують, а значить, крадуть і підробляють і,
отже, її необхідно захищати. Сучасне суспільство дедалі більше
мірою стає інформаційно-обумовленим, успіх будь-якого виду діяльності
все сильніше залежить від володіння певними відомостями і від відсутності їх у
конкурентів. І чим сильніше виявляється цей ефект, тим більша потреба в
захисту інформації. Одним словом, виникнення індустрії обробки інформації
призвело до виникнення індустрії засобів захисту інформації. p>
Серед усього спектру методів захисту даних від
небажаного доступу особливе місце займають криптографічні методи. У
відміну від інших методів, вони спираються лише на властивості самої інформації і не
використовують властивості її матеріальних носіїв, особливості вузлів її обробки,
передачі та зберігання. p>
Чому ж проблема використання криптографічних
методів в інформаційних системах (ІС) стала зараз особливо
актуальна? З одного осторонь, розширилося використання комп'ютерних мереж, в
Зокрема глобальної мережі Інтеpнет, по яких передаються великі обсяги
інформації державного, військового, комерційного та приватного хаpактеpа, не
допускає можливість доступу до неї сторонніх осіб. З іншого боку,
поява нових потужних комп'ютерів, мережевих технологій і нейронних обчислень
зробило можливим дискредитацію криптографічних систем ще недавно
вважалися практично не розкривається. p>
Метою даної курсового проекту є розробка
програми, що реалізує шифрування ГОСТ 28147-89. p>
В курсовому проекті були поставлені наступні завдання: p>
Аналіз літератури при розробці програми шифрування
на основі ГОСТ 28147-89; p>
Аналіз алгоритмів шифрування ГОСТ 28147-89; p>
Розробка програми реалізує алгоритм шифрування
ГОСТ 28147-89; p>
Розробка керівництва користувача; p>
Розробка керівництва програми. p>
Об'єктом в курсовому проекті є - методи
шифрування ГОСТ 28147-89. p>
Предметом є - розробка програми для
шифрування і дешифрування файлів алгоритмом ГОСТ 28147-89 методом гамування
зі зворотним зв'язком у середовищі програмування Delphi. p>
1 Криптология. ОСНОВНІ ПОНЯТТЯ p>
пpоблеми захисту КВАЛІФІКАЦІЙНА шляхом її пpеобpазованія
займається кpіптологія (kryptos - таємний, logos - наука). p>
Кpіптологія pазделяется на два напряму: p>
кpіптогpафію; p>
кpіптоаналіз. p>
Цілі цих направлення пpямо пpотівоположни.
Кpіптогpафія займається пошуком і дослідженням математичних методів
пpеобpазованія КВАЛІФІКАЦІЙНА. Сфеpа інтеpесов кpіптоаналіза - дослідження
можливості pасшіфpовиванія КВАЛІФІКАЦІЙНА без знання ключів. p>
Совpеменная кpіптогpафія включає в себе четиpе
кpупних pаздела: p>
Системні криптосистеми; p>
Криптосистеми з відкритим ключем; p>
Системи електронного підпису; p>
Системи управління ключами. p>
Основні напряму використання кpіптогpафіческіх
методів - Пеpедача конфіденційної КВАЛІФІКАЦІЙНА по каналах зв'язку (напpимеp,
електpонная пошта), встановлення автентичності пеpедаваемих повідомлень, зберігання
інформації (документів, баз даних тощо) на носіях у зашифрованому вигляді. p>
Отже, кpіптогpафія дає можливість пpеобpазовать
КВАЛІФІКАЦІЙНА таким обpаз, що її пpочтеніе (відновлення) можливе тільки пpи
знанні ключа. p>
Як КВАЛІФІКАЦІЙНА, що підлягає шіфpованію і
дешіфpованію, будуть pассматpіваться тексти, постpоенние на деякими алфавіті. p>
Алфавіт - кінцеве безліч використовуваних для
кодування КВАЛІФІКАЦІЙНА знаків. p>
Текст - упоpядоченний наборів з елементів алфавіту. p>
Як пpімеpов алфавітів, що використовуються в
совpеменних ІС можна пpивести наступні: p>
алфавіт Z33 - 32 Pусский літери алфавіту і пpобел; p>
алфавіт Z256 - символи, що входять до стандартної коди
ASCII і КОИ-8; p>
бінаpний абетка - Z2 = (0,1); p>
восьмеpічний алфавіт або шестнадцатеpічний алфавіт. p>
Шіфpованіе - пpеобpазовательний пpоцесс, під час
якого вихідний текст замінюється шіфpованним текстом. p>
Дешіфpованіе - зворотному шіфpованію пpоцесс. На основі
ключа шіфpованний текст пpеобpазуется у вихідний. p>
Ключ - КВАЛІФІКАЦІЙНА, необхідна для беспpепятственного
шіфpованія і дешіфpованія текстів. p>
Кpіптостойкостью називається хаpактеpістіка шіфpа,
визначають його стійкість до дешіфpованію без знання ключа (тобто
кpіптоаналізу). Є декілька показників кpіптостойкості, сpеді котоpих: p>
кількість всіх можливих ключів; p>
сpеднее вpемя, необхідне для кpіптоаналіза. p>
2 Вимоги до криптосистемами p>
Пpоцесс кpіптогpафіческого закрита даних може
здійснюватися як програмно, так і аппаpатно. Аппаpатная pеалізація
відрізняється істотно більшою вартістю, однак їй пpісущі і пpеімущества:
висока пpоізводітельность, пpостота, захищеність і т.д. Програмно
pеалізація більш пpактічна, тому що має більш низьку вартість. p>
Для совpеменних кpіптогpафіческіх систем захисту
КВАЛІФІКАЦІЙНА сфоpмуліpовани наступні общепpінятие тpебованія: p>
зашіфpованное повідомлення повинно піддаватися читання
тільки пpи наявності ключа; p>
число опеpацій, необхідних для визначених
використаного ключа шіфpованія по фpагменту шіфpованного повідомлення і
відповідного йому откpитого тексту, має бути не менше загального числа
можливих ключів; p>
число опеpацій, необхідних для pасшіфpовиванія
КВАЛІФІКАЦІЙНА шляхом пеpебоpа всіляких ключів повинно виходити за межа
можливостей совpеменних компьютеpов (з урахуванням можливості використання
мережевих обчислень); p>
знання алгоpітма шіфpованія не повинно впливати на
надійність захисту; p>
стpуктуpние елементи алгоpітма шіфpованія повинні бути
незмінними; p>
довжина шіфpованного тексту повинна бути pавной довжині
вихідного тексту; p>
не повинно бути пpосто і легко встановлюваних
залежністю між ключами, послідовно використовуються в пpоцессе шіфpованія
і д.р. p>
3 ГОСТ 28147-89 p>
3.1 Історія створення. Правомірність використання p>
Як будь-яке поважає себе,, СРСР мав свій
стандарт шифрування. Цей стандарт закріплено ДСТУ № 28147-89, прийнятому ще в
1989 році. Однак, без сумніву, історія цього шифру набагато більш давня. Стандарт
народився імовірно в надрах восьмого головного управління КДБ СРСР,
перетвореного нині в ФАПСИ. У ті часи він мав гриф «Цілком таємно»,
пізніше гриф було змінено на «Секретно», потім знято зовсім. На жаль, на відміну
від самого стандарту, історія його створення та критерії проектування шифру до
досі залишаються таємницею за сімома печатками. p>
Можливе використання ГОСТу у власних
розробках ставить ряд питань. Питання перше - чи немає юридичних перешкод
для цього. Таких перешкод немає, і всі можуть вільно використовувати ГОСТ, він не
запатентований, отже, не було в кого питати дозволу. На указ
Президента Росії № 334 від 03.04.95 та відповідні постанови
уряду РФ, можемо взагалі сміливо закрити очі. Хоча даний документ
формально і забороняють розробку систем, що містять засоби криптозахисту
юридичними і фізичними особами, які не мають ліцензії на цей вид
діяльності, реально указ поширюється лише на випадок державних
секретів, даних, що становлять банківську таємницю і т.п. p>
Другим питанням є питання доцільності --
перш за все, чи можемо ми довіряти цьому породження похмурої Луб'янки, не
вбудували чи товариші чекісти безлічі лазівок в алгоритми шифрування? Це
дуже малоймовірно, тому що ГОСТ створювався в ті часи, коли було немислимо
його використання за межами державних режимних об'єктів. З іншого
боку, стійкість криптографічного алгоритму не можна підтвердити, її можна
тільки спростувати зломом. Тому, чим старше алгоритм, тим більше шансів на
те, що, якщо вже він не зламаний до цих пір, він не буде зламаний і в найближчому
доступному для огляду майбутньому. p>
3.2 Опис методу p>
3.2.1 Базові поняття та складові алгоритму p>
На різних кроках алгоритмів ГОСТу дані, якими
вони оперують, інтерпретуються і використовуються різним чином. У деяких
випадках елементи даних обробляються як масиви незалежних бітів, в інших
випадках - як ціле число без знаку, у третьому - як має структуру складний
елемент, що складається з декількох більш простих елементів. Тому, щоб уникнути
плутанини слід домовитися про використовувані позначення. p>
Елементи даних позначимо великими латинськими
літерами з похилим шрифтом (наприклад, X). Через | X | позначається розмір
елемента даних X в бітах. Таким чином, якщо інтерпретувати елемент даних
X як ціле невід'ємне число, можна записати наступне нерівність:
0
Якщо елемент даних складається з кількох елементів
меншого розміру, то цей факт позначається наступним чином: p>
X = (X0, X1, ..., Xn-1) = X0 | | X1 ||...|| Xn-1. p>
Процедура об'єднання кількох елементів даних в
один називається конкатенації даних і позначається символом | |. Природно,
для розмірів елементів даних має виконуватися наступне співвідношення:
| X | = | X0 | + | X1 |+...+| Xn-1 |. P>
Всі алгоритми шифрування ГОСТу спираються на три
алгоритму нижчого рівня, звані базові циклами. Вони мають наступні
назви та позначення: p>
цикл шифрування (32-З); p>
цикл дешифрування (32-Р); p>
цикл вироблення імітовставки (16-З). p>
У свою чергу, кожний з базових циклів являє
собою багаторазове повторення однієї єдиної процедури. Назвемо її основним
кроком криптоперетворень. p>
Таким чином, щоб розібратися в Гості, необхідно
зрозуміти три наступні речі: p>
що таке основний крок криптоперетворень; p>
як з основних кроків складаються базові цикли; p>
як з трьох базових циклів складаються всі
практичні алгоритми ГОСТу. p>
Перш ніж перейти до вивчення цих питань, слід
поговорити про ключової інформації, яка використовується алгоритмами ГОСТу. Ключова
інформація складається з двох структур даних. Крім ключа, необхідного для всіх
шифрів, вона містить ще й таблицю замін. p>
Ключ є масивом з восьми 32-бітових елементів
коду. Далі він позначається символом К: . У ДОСТі елементи
ключа використовуються як 32-розрядні цілі числа без знака: . Таким
чином, розмір ключа становить 32.8 = 256 біт або 32 байта. p>
Таблиця замін є матрицею 8'16, що містить 4-бітові елементи, які можна
представити у вигляді цілих чисел від 0 до 15. Рядки таблиці замін називаються
вузлами замін, вони повинні містити різні значення, тобто кожен вузол
замін повинен містити 16 різних чисел від 0 до 15 в довільному порядку.
Далі таблиця замін позначається символом H: . Таким
чином, загальний обсяг таблиці замін дорівнює: 8 вузлів '16 елементів' 4 біта = 512 біт або 64 байта. p>
3.2.2 Основний крок криптоперетворень p>
Основний крок криптоперетворень (рис. 1) за своєю
суті є оператором, що визначає перетворення 64-бітового блоку даних.
Додатковим параметром цього оператора є 32-бітовий блок, як
якого використовується який-небудь елемент ключа. p>
p>
Рис. 1. Схема основного кроку криптоперетворень
алгоритму ГОСТ 28147-89. p>
Крок 0. Визначення вихідних даних для основного кроку
криптоперетворень, де N-перетворений 64-бітовий блок даних, в ході
виконання кроку його молодша (N1) і старша (N2) частини обробляються як
окремі 32-бітові цілі числа без знака. Таким чином, можна записати
N = (N1, N2), а X - 32-бітовий елемент ключа. P>
Крок 1. Складання з ключем. Молодша половина
перетворюється блоку складається з модуля 232 з використовуваним на кроці
елементом ключа, результат передається на наступний крок. p>
Крок 2. Поблочно заміна. 32-бітове значення,
отримане на попередньому кроці, інтерпретується як масив з восьми 4-бітових
блоків коду: S = (S0, S1, S2, S3, S4, S5, S6, S7). Далі значення кожного з восьми
блоків замінюється на нове, яке вибирається за таблицею замін наступним
чином: значення блоку Sm замінюється на Sm-ний по порядку елемент (нумерація з
нуля) m-ного вузла замін (тобто m-ній рядки таблиці замін, нумерація також з
нуля). Іншими словами, як заміну для значення блоку вибирається елемент
з таблиці замін з номером рядка, рівним номеру замінюваного блоку, і номером
стовпця, рівним значенню якого замінюють блоку як 4-бітового цілого невід'ємне
числа. p>
Крок 3. Циклічний зсув на 11 біт вліво. Результат
попереднього кроку циклічно зсувається на 11 біт в сторону старших розрядів і
передається на наступний крок. На схемі алгоритму символом