
- •Алгоритм Евкліда
- •1.3 Взаємно прості числа
- •1.4 Прості числа
- •1.5 Функція Ейлера
- •1.6 Порівняння в кільці цілих чисел
- •Властивості порівнянь, що залежать від модуля m
- •1.7 Теореми Ферма та Ейлера
- •Теорема Ферма
- •Теорема Ейлера
- •Шифри перестановки
- •3.1.1 Шифр перестановки “Сциталла”
- •3.1.2 Таблиці для шифрування
- •Застосування магічних квадратів
- •3.2 Шифри простої заміни
- •Математичний аналіз шифру простої заміни (підстановки)
- •3.2.1 Полібіанський квадрат
- •3.2.2 Система шифрування Цезаря
- •Криптоаналіз шифру Цезаря
- •3.2.3 Аффінна система підстановок Цезаря
- •3.2.4 Система Цезаря із ключовим словом
- •3.2.5 Таблиці Трисемуса
- •Криптографічний аналіз системи одноалфавітної заміни
- •3.2.6 Біграмний шифр Плейфейра
- •3.2.7 Криптосистема Хілла
- •3.2.8 Система омофонів
- •3.3 Шифри складної заміни
- •3.3.1 Шифр Гронсфельда
- •Криптоаналіз шифру Гронсфельда
- •3.3.2 Система шифрування Віженера
- •3.3.3 Шифр “Подвійний квадрат Уітстона”
- •3.3.4 Одноразова система шифрування
- •3.3.5 Шифрування методом Вернама
- •3.4 Блочні шифри
- •3.4.1 Алгоритм des
- •Обчислення значень ключів
- •Аналіз ефективності алгоритму des
- •5.1 Алгоритм шифрування Діффі - Хеллмана
Введемо деякі поняття, необхідні в подальшому розгляді курсу криптології:
Алфавіт – кінцева множина використовуваних для шифрування інформації знаків.
Текст – упорядкований набір з елементів алфавіту.
Шифр або криптографічний алгоритм – сукупність оборотних перетворень множини відкритих даних на множину зашифрованих даних, заданих алгоритмом криптографічного перетворення. Інакше кажучи, криптоалгоритм – це математична функція, що використовується для шифрування та розшифрування інформації.
Зашифрування – перетворення відкритих даних у закриті (зашифровані) за допомогою певних правил, які визначені в шифрі.
Розшифрування – процес, зворотний зашифруванню.
Розкриття (зламування) шифру – процес перетворення закритих даних у відкриті при невідомому ключі й (або) невідомому алгоритмі.
Ключ – це змінний елемент шифру, який застосовують для закриття окремого повідомлення. Інакше кажучи, ключ – це конкретний секретний стан параметрів криптоалгоритма, що забезпечує вибір одного варіанта перетворення із сукупності можливих.
Саме ключем визначається в першу чергу безпека інформації, що шифрується, і саме тому перетворення, які застосовуються в надійних шифрах, залежать від ключа. А функції зашифрування та розшифрування мають такий вигляд:
EK(M)=C, (2.1)
DK(M)=M, (2.2)
де
М – відкритий текст повідомлення;
ЕК – процес зашифрування із ключем K.
DК – процес розшифрування із ключем К.
При цьому справедлива така рівність
DK(EK(M))=М; (2.3)
Рівності 2.1 – 2.3 справедливі для симетричних криптосистем або криптосистем із закритим ключем. Ці алгоритми вимагають, щоб перед початком передачі таємних повідомлень учасники обміну погодили, який ключ буде використаний.
Захист інформації в даних криптосистемах забезпечується таємністю ключа. Це означає, що як тільки ключ буде розкритий, секретною інформацією може скористатися будь-хто. Процес зашифрування та розшифрування в симетричних криптосистемах виглядає так, як показано на рис 2.1.
Рисунок 2.1 – Симетричні криптосистеми
В асиметричних криптосистемах для шифрування та розшифрування використовуються різні ключі. Для асиметричних криптосистем справедливі рівності 2.4-2.6:
(2.4)
(2.5)
При цьому справедлива така рівність:
, (2.6)
де
– ключ шифрування;
– ключ розшифрування.
Процес зашифрування та розшифрування в асиметричних криптосистемах виглядає так, як показано на рис 2.2
Рисунок 2.2 – Асиметричні криптосистеми
Шифрування – процес зашифрування або розшифрування.
Криптосистема складається із простору ключів, простору відкритих текстів, простору шифротекстів та алгоритмів зашифрування і розшифрування.
Розкриття криптоалгоритма – результат роботи криптоаналітика, що приводить до можливості ефективного визначення будь-якого зашифрованого за допомогою даного алгоритму відкритого тексту.
Стійкість криптоалгоритма – здатність шифру протистояти всіляким спробам його розкриття, тобто атакам на нього.
Усі сучасні шифри базуються на принципі Кірхгофа, відповідно до якого таємність шифру забезпечується таємністю ключа, а не таємністю алгоритму шифрування.
Якщо захист інформації, що забезпечується алгоритмом, засновано на таємності самого алгоритму, то криптоалгоритм називають обмеженим. Такі алгоритми мають масу недоліків, так, наприклад, алгоритм повинен бути замінений:
при виході користувача із групи, якщо група використає такий алгоритм;
якщо сторонній випадково довідається секрет групи.
Групи, що використовують обмежені алгоритми, не можуть використовувати відкриті апаратні або програмні продукти, оскільки зловмисник може придбати такий продукт і розкрити секрет. Крім того, такі алгоритми погано піддаються стандартизації та контролю, вони звичайно не проходять оцінки надійності й т.д. Але, незважаючи на це, такі алгоритми дуже популярні в програмних додатках з низьким рівнем захисту.
Тому аналіз надійності таких систем завжди повинен проводитися виходячи з того, що супротивник має всю інформацію про криптоалгоритм, який був застосований, і для нього невідомо тільки значення реально використаного ключа. У зв’язку з вищевикладеним можна сформулювати загальне правило: при створенні або при аналізі стійкості криптосистем не слід недооцінювати можливості супротивника.
До найбільш часто використовуваних на практиці методів оцінки якості криптоалгоритмів можна віднести:
будь-які спроби розкриття криптоалгоритмів. Тут багато чого залежить від кваліфікації, досвіду, інтуїції криптоаналітика і від правильної оцінки можливостей супротивника;
аналіз складності алгоритму дешифрування. Складність обчислювальних алгоритмів можна оцінювати числом виконуваних елементарних операцій при цьому природно, необхідно враховувати їхню вартість і витрати на їхнє виконання. Якісний шифр неможливо розкрити способом більш ефективним, ніж повний перебір по всьому ключовому простору. При цьому криптограф повинен розраховувати тільки на те, що в супротивника не вистачить ні часу, ні ресурсів, щоб це зробити;
оцінка статистичної безпеки шифру. Надійна криптосистема з погляду супротивника є "чорним ящиком", вхідна та вихідна інформаційні послідовності якого взаємно незалежні, при цьому вихідна зашифрована послідовність є псевдовипадковою. Тому зміст випробувань полягає в проведенні статистичних тестів, що встановлюють залежність змін у зашифрованому тексті від змін символів або бітів у вихідному тексті, або ключі, а також аналізують, наскільки вихідна зашифрована послідовність за своїми статистичними властивостями наближається до істинно випадкової послідовності.
Відзначимо необхідні умови стійкості будь-якої криптосистеми, що перевіряють статистичними методами:
відсутність статистичної залежності між вхідною та вихідною послідовностями;
вихідна послідовність за своїми статистичними властивостями повинна бути схожа на істинно випадкову послідовність;
при незмінній вхідній інформаційній послідовності незначна зміна ключа повинна приводити до істотної зміни вихідної послідовності;
при незмінному ключі незначна зміна вхідної послідовності повинна приводити до істотної зміни вихідної послідовності;
відсутність залежності між ключами, які послідовно використовуються в процесі шифрування.
Існує багато різних криптоалгоритмів, при цьому немає жодного, підходящого для всіх випадків. У кожній конкретній ситуації вибір криптоалгоритму визначається такими факторами:
особливістю інформації, що захищається (документи, вихідні тексти програм, графічні файли і т. ін.);
особливістю середовища зберігання і передачі інформації;
цінністю інформації, характером секретів, що захищають, часом забезпечення таємності;
обсягами інформації, швидкістю її передачі, ступенем оперативності її надання користувачеві;
можливостями власників інформації, власників засобів збору, обробки, зберігання та передачі інформації з її захисту;
характером погроз, можливостями супротивника.
Алгоритм Евкліда
Досить простою процедурою пошуку НСД є алгоритм Евкліда.
Нехай
дані два числа a, bZ,
причому 0<b<a.
Необхідно визначити НСД. Для цього
ділять a
на b.
Якщо b
a,
то найбільшим спільним дільником є
число b.
Якщо a не
ділиться на
b націло, то одержують
частку
та залишок
,
причому 0
<b.
Далі ділять b
на
,
одержують частку
і залишок
,
причому 0
<
. Далі аналогічно ділять
на
,
при цьому одержують частку
і залишок
,
причому 0
<
. І так далі. Цей процес закінчується в
тому випадку, коли залишок від ділення
буде дорівнювати нулю, тобто процес
ділення є кінцевим, оскільки залишки
,
,
,…,
будучи натуральними числами, зменшуються.
Останній залишок, що не дорівнює нулю,
є найбільшим спільним дільником чисел
a та b.
Алгоритм Евкліда можна сформулювати у вигляді теореми.
Теорема 3 Якщо
,
то
НСД(a,
b)=
.
Наприклад, щоб знайти НСД (2585, 7975) виконаємо такі дії:
7975=25853+220,
,
2585=22011+165,
,
220=1651+55,
,
165=553.
Відповідно до теореми 3 НСД(2585, 7975) =55.
В алгоритмі Евкліда розгляд можна обмежити тільки додатними числами, тому що НСД(a,b)=НСД(|a|, |b|).
procedure Euclid (a,b: integer; var nsd);
var r:integer;
begin
a:=abs(a);
b:=abs(b);
r:=a mod b;
if r=0
then
nsd:=b;
else
while r<>0 do
begin
a:=b;
b:=r;
nsd:=r;
r:=a mod b;
end;
end;
Для
знаходження НСД декількох чисел
спочатку
знаходять
,
потім
,
…,
.
У
результаті одержимо
.
Теорема 4 Якщо , то існують такі числа x, yZ, що
.
(1.1)
Рівність (1.1) називають лінійним поданням найбільшого спільного дільника чисел a та b.
1.3 Взаємно прості числа
Визначення. Якщо НСД(a,b)=1, то такі числа називаються взаємно простими числами.
Наприклад, числа 21 і 25 є взаємно простими числами, оскільки НСД(21, 25)=1.
Визначення. Якщо НСД( )=1, то такі числа називаються попарно взаємно простими числами або взаємно простими.
Розглянемо кілька властивостей взаємно простих чисел.
Для a, b, cZ:
Якщо два числа a та b взаємно прості,
та
, то числа
та
– взаємно прості.
Частки від ділення чисел a та b на їх найбільший спільний дільник d – взаємно прості
НСД
.
Якщо
і НСД
, то
.
Якщо НСД(a, b)=1, то число
тоді й тільки тоді, коли b с и a с.
Якщо НСД(a, c)=1 і НСД(b, c)=1, то НСД(
, c)=1.
1.4 Прості числа
Розглянемо цілі додатні числа.
Число 1 має тільки один дільник, а саме 1. Кожне натуральне число a, відмінне від 1, має принаймні два дільники – 1 і саме число a.
Визначення. Відмінне від одиниці натуральне число a називається простим, якщо його дільниками є 1 і саме число a. Число a називається складеним, якщо воно має дільники, відмінні від 1 і самого числа a.
Слід зазначити, що число 1 не належить ні до простих, ні до складених чисел.
Розглянемо деякі властивості простих і складених чисел:
Будь-яке натуральне число або ділиться на дане просте число, або взаємно просте з ним .
Якщо добуток декількох натуральних чисел ділиться на просте число p, то принаймні один із співмножників ділиться на це просте число p.
Найменший дільник p (
) натурального числа n є число просте.
Найменший відмінний від 1 дільник складеного числа a не більший ніж
.
Теорема 5 Кожне відмінне від 1 натуральне число єдиним способом розкладається на прості множники.
Може
виявитися, що в розкладанні числа aN
на прості множники будуть однакові
числа, тому якщо скористатися поняттям
ступеня, то число
можна
записати так:
, (1.2)
де
– прості числа, і кожне
>0
(i=1, 2,…,
s)...
Рівність (1.2) називається канонічною формою розкладання натурального числа a.