Автор работы: Пользователь скрыл имя, 07 Мая 2013 в 17:50, курсовая работа
Створення розвиненого і захищеного інформаційного середовища є невід’ємною умовою розвитку суспільства та держави. Використання комп’ютерних мереж розширило можливості комп’ютерів, так як вони стали не лише засобами обробки інформації, але й засобами обміну цією інформацією підвищуючи продуктивність роботи всієї організації та полегшенням взаємодії різних ланок при процесі виробництва та контролю.
Алгоритм DES використовує найпростіші операції при шифруванні і роз-шифруванні:
- шифри заміни (підстановки);
- шифри перестановки;
- операції циклічного зсуву;
- операції додавання даних за модулем 2.
Алгоритм шифрування даних DES ітераційного типу.
Для розсіювання і перемішування даних (шифрування та розшифрування даних) у ньому використовується шістнадцять раундів (ітерацій).
Процес шифрування полягає:
- у формуванні
16 раундових ключів для
- у початковій
перестановці бітів 64-
- у шістнадцяти раундах шифрування (розшифрування);
- у кінцевій перестановці бітів 64-бітового блоку даних.
У деяких реалізаціях DES блоки відкритого повідомлення, перед тим, як вони будуть завантажені в регістри самого пристрою шифрування, проходять процедуру початкової перестановки.
Ключ має довжину 56 біт (як правило, ключ має довжину 64 біти, де кожний 8-й біт є бітом паритету, крім того, ці контрольні біти можуть бути винесені в останній байт ключа). Ключем може бути довільна 56-бітна комбінація, яка може бути змінена у будь-який момент часу. Частина цих комбінацій вважається слабкими ключами, оскільки може бути легко визначена. Безпечність алгоритму базується на безпечності ключа.
На найнижчому рівні алгоритм є ніщо інше, ніж поєднання двох базовних технік шифрування: перемішування і підстановки. Цикл алгоритму, з яких і складається DES є комбінацією цих технік, коли в якості об'єктів перемішування виступають біти тексту, ключа і блоків підстановок.
1.2 Процеси шифрування та дешифрування в DES
Процес криптографічного перетворення даних в алгоритмі DES включає наступні три основних етапи.
1) 64 біта вхідних даних P підлягають початковій IP перестановки.
Потім отриманий вектор двійкових даних p0 = IP(P) представляється у вигляді
p0 = L0 || R0,
де L0 - ліва (left) і R0 - права (right) послідовності бітів; || - конкатенація (об’єднання) лівої L0 і правої R0 послідовності бітів. Послідовності L0 й R0 мають однакову довжину, яка дорівнює 32 бітам.
2) Вектор (послідовність) бітів p0 = L0 || R0, підлягає перетворюванню далі шістнад-цять разів за так називаною схемою Фейстеля.
Ітераційне формування послідовності бітів здійснюється з використанням виразу.
Li = Ri-1, Ri = Li-1 F(Ri-1, ki), i = 1, 2…16 (1.2)
де F – функція Фейстеля, що шифрує; ki - розклад ключів; - операція побітового додавання по модул. 2.
Зверніть увагу на те, як два блоки міняються місцями після проведен-ня 16 раундів шифрування (розшифруван-ня) перед IP-1 перестановкою алгоритму.
В результаті чого формується послі-довність бітів
ps = Rs || Ls.
Ця заміна ніяк не впливає на стійкість шифру, і користувачі часто задавалися пи-танням: навіщо її взагалі робити? Один зі членів творчого колективу, що розробив DES, затверджував, що вона полегшує апа-ратну реалізацію процедури шифрування.
3) Послідовність бітів
ps = Rs || Ls
підлягають перемішуванню підстановкою IP-1:
C = IP-1(ps) = IP-1(Rs||Ls)
C є зашифроване повідомлення, довжина якого 64 біта. 64 біта вихідних даних pS підлягають кінцевій перестановки IP-1.
1.3 Математична модель створення ключів алгоритму в DES
Як неважко помітити, в кожному з 16-ти циклів (раундах) використовується нове значення ключа ki (раундового ключа) довжиною 48 біт. Значення раундових ключ ki обчислюється з початкового ключа K, рівного 64-м бітам
Ключ K представляє собою 64-х бітовий блок з 8-ма бітами контролю за пар-ністю, які розташовані в позиціях 08, 16, 24, 32, 40, 48, 56, 64. Ці біти не впливають на шифрування. Перераховані біти ключа відповідають за те, щоб кожен байт ключа складався з непарного числа одиничних біт.
Таким чином, в дійсності ключ шифру є 56-ти двійковим. Для видалення конт-рольних бітів і підготовки ключа до роботи використовується функція G початкової підготовки ключа.
Результатом виконання функції G буде перестановка послідовності бітів ключа K. Ре-зультат перетворення G(K) розбивається на дві половини C0 і D0 по 28 біт кожна.
Перші два рядки визначають, як вибираються біти послідовності C0 (пер-шим бітом C0 буде 57-й біт ключа шифру, потім 49-й біт та ін., а останніми бітами - 44-й і 36-й біт ключа).
Наступні два рядки визначають, як вибираються біти послідовності D0 (тобто послідовність D0 буде складатися з бітів 63, 55, 47, ..., 12, 4 ключа шифру).
Після формування послідовностей C0 і D0 рекурсивно визначаються по-послідовності Ci і Di для кожного раунду з 16-ти (i = 1 ... 16).
Як випливає з у функції шифрування F використовує раундові ключі ki, який формується з 56-ти бітного ключа, записаного в два 28-ми бітних циклічних ре-гістра зсуву, що переміщують їх зміст вліво в кожному такті (раунді) на кількість біт, залежне від номера раунду.
Операції зсуву виконуються для послідовностей Ci і Di незалежно. Наприклад, послідовність C3 виходить за допомогою циклічного зсуву вліво на дві позиції послідовності C2, а послідовність D3 - за допомогою зсуву вліво на дві позиції послідовності D2.
Послідовності C16 і D16 виходять з C15 і D15 відповідно за допомогою їх циклічного зсуву вліво на одну позицію.
Ключ ki, що визначається на кожному кроці ітерації, є результат вибору певних бітів із 56-ти бітової послідовності Ci || Di та їх перестановками. Іншими словами, ключ
ki = H(Ci || Di)
де H - функція, що завершує обробку ключа довжиною 48 біт.
Результатом виконання функції H буде перестановка.
Як випливає першим бітом раундового ключа ki буде 14-й біт послідовності Ci || Di, другим - 17-й біт, 47-м бітом раундового ключа ki буде 29-й біт Ci || Di, а 48-м бітом - 32-й біт Ci || Di.
Таким чином, алгоритм формування раундових ключів шифрування (розшифрування) дозволяє отримати з одного секретного ключа K довжиною 64 біта 16 клю-чів довжиною 48 бітів кожний.