Автор работы: Пользователь скрыл имя, 18 Декабря 2013 в 19:30, реферат
Шифрування – це кодування даних з метою захисту від несанкціонованого доступу. Процес кодування називається шифруванням, а процес декодування – розшифруванням. Саме кодоване повідомлення називається шифрованим, а застосований метод називається шифром. Основна вимога до шифру полягає в тому, щоби розшифрування (і, можливо, шифрування) були можливі тільки при наявності санкцій, тобто деякої додаткової інформації (або пристрою), яка називається ключем шифру.
Процес декодування шифровки без ключа називається дешифруванням. Галузь знань про шифри, методи їх побудови та розкриття називається криптографією. Властивість шифру протистояти розкриттю називається криптостійкістю або надійністю і звичайно визначається складністю алгоритму дешифровки. У практичній криптографії криптостійкість шифру оцінюється з економічних міркувань.
Шифрування
Шифрування – це кодування даних з метою захисту від несанкціонованого доступу. Процес кодування називається шифруванням, а процес декодування – розшифруванням. Саме кодоване повідомлення називається шифрованим, а застосований метод називається шифром. Основна вимога до шифру полягає в тому, щоби розшифрування (і, можливо, шифрування) були можливі тільки при наявності санкцій, тобто деякої додаткової інформації (або пристрою), яка називається ключем шифру.
Процес декодування шифровки
без ключа називається
23.2. Симетричні криптосистеми
Симетричні криптосистеми (симетричне шифрування) – спосіб шифрування, в якому для шифрування та дешифрування використовуються один й той самий криптографічний ключ. Ключ шифрування має зберігатись у секреті обома сторонами та має бути обраним до початку обміну повідомленнями.
Одним з прикладів симетричного шифрування є алгоритм гамування. Він заснований на випадкових числах. Нехай маємо датчик псевдо-випадкових чисел, який працює за деяким визначеним алгоритмом. Часто використовують наступний алгоритм: Ti+1 = (a⋅Ti + b) mod c, де Ti – попереднє псевдо-випадкове число, Ti+1 – наступне псевдо-випадкове число, а коефіцієнти a, b, c сталі та добре відомі. Зазвичай c = 2n, де n – розрядність процесору, a mod 4 = 1, b – непарне. В цьому випадку послідовність псевдо-випадкових чисел має період c.
Процес шифрування визначається наступним чином. Шифроване повідомлення представляється у вигляді послідовності слів S0, S1,…, кожне довжини n, які додаються за модулем 2 зі словами послідовності T0, T1, …, тобто Ci = Si ⊕ Ti.
Послідовність T0, T1, … називається гамою шифру. Процес розшифрування заключається в тому, щоби ще раз скласти шифровану послідовність з тією самою гамою шифру: Si = Ci ⊕ Ti. Ключем шифру є початкове значення T0, яке є секретним та має бути відоме тільки відправнику та адресату шифрованого повідомлення. Якщо період послідовності псевдо-випадкових чисел достатньо великий, щоби гама шифру була довша повідомлення, то дешифрувати повідомлення можна тільки підбором ключа. При збільшенні n експоненційно збільшується криптостійкість шифру. Описаний метод має суттєвий недолік. Якщо відома хоча б частина вихідного повідомлення, то все повідомлення може бути легко дешифроване. Дійсно, нехай відоме одне вихідне слово Si. Тоді: Ti = Ci ⊕ Si, і далі вся права частина гами шифру визначається за вказаною формулою датчика псевдо-випадкових чисел.
Більшість симетричних шифрів використовують складну комбінацію великої кількості підстановок та перестановок. Багато таких шифрів виконуються у декілька (до 100) проходів, використовуючи на кожному проході ключ проходу. Множина «ключів проходів» для всіх проходів називається розкладом ключів. Зазвичай, він утворюється з ключа шляхом виконання над ним певних операцій, в тому числі перестановок та підстановок.
Найважливішими параметрами всіх алгоритмів симетричного шифрування є:
До переваг симетричної системи можна віднести:
Але є також суттєві недоліки, які практично призводять до того, що дана система майже не використовується на даний час:
Для застосування симетричної системи необхідно вирішити проблему надійної передачі ключів до кожного абонента, тому що необхідний секретний канал для передачі кожного ключа обом сторонам.
23.3. Асиметричні криптосистеми
Криптографічна система
з відкритим ключем (або асиметрична
криптосистема, асиметричне шифрування)
– це система шифрування,
при якій відкритий ключ передається
по відкритому (тобто не захищеному)
каналу зв'язку та використовується
для шифрування повідомлень. Для
розшифрування повідомлень
Відкритий ключ розсилається
всім, хто бажає відправляти
повідомлення адресату, а приватний
ключ зберігається адресатом і не
повинен нікому відправлятись. Навіть
якщо знати відкритий ключ
та все відправлене розшифроване
повідомлення, неможливо знайти
приватний ключ. Підхід у системі
з відкритим ключем базується
на існуванні односторонніх
Розглянемо один з найвідоміших та найбільш поширених алгоритмів – RSA. Цей алгоритм, зокрема, використовується для передачі даних захищеними каналами зв'язку мережі Інтернет – HTTPS, SSH.
Інший відомий алгоритм, який був першим з алгоритмів асиметричного шифрування – алгоритм Діффі-Хелмана (DH).
Алгоритм RSA базується на властивостях простих та взаємно простих чисел, а саме на задачі множення та розкладання складених чисел на прості співмножники. Ця задача є обчислювально однонаправленою. Тобто для заданих простих співмножників знайти складене число дуже легко – необхідно просто перемножити ці співмножники, а для заданого складного числа знайти його прості співмножники – набагато складніше.
У реальних системах, коли використовуються складені числа розмірності в 100 знаків та більше, час, необхідний для розв'язання задачі розкладання числа на прості співмножники, вимірюється роками. У системі RSA кожен ключ складається з пари цілих чисел. Відкритий та закритий ключі утворюють узгоджену пару, тобто є взаємно оберненими з точки зору задачі шифрування. Наведемо алгоритм RSA генерації закритого та відкритого ключів.
Шифрування з відкритим ключем є коректним, тобто M = M´. Розглянемо приклад генерації ключів та шифрування/розшифрування повідомлень методом RSA. 1. p = 3, q = 11. 2. n = pq = 33; 3. ϕ(n) = (p–1)(q–1) = 20; 4. e = 7 5. d = 3: de = 3·7 mod 20 = 21 mod 20 = 1. Таким чином, відкритий ключ P = (7, 33), закритий – S = (3, 33). Нехай повідомлення складається з трьох чисел: M1 = 3, M2 = 1, M3 = 2. Відповідні шифри, отримані за допомогою ключа (7, 33): C1 = 37 mod 33 = 2187 mod 33 = 9; C2 = 17mod 33 = 1 mod 33 = 1; C3 = 27 mod 33 = 128 mod 33 = 29. Перевіримо розшифрування закодованих повідомлень закритим ключем (3, 33). M'1 = 93mod 33 = 729 mod 33 = 3; M'2 = 13 mod 33 = 1 mod 33 = 1; M'3 = 293mod 33 = 24389 mod 33 = 2.
Розглянемо переваги та недоліки асиметричної криптосистеми. До переваг можна віднести:
Недоліки:
Наведемо декілька слів відносно криптостійкості асиметричного шифрування. Одна з можливих атак на таку систему полягає в наступному. Припустимо, що сторони А та В обмінюються повідомленнями, як це було описано вище. Якщо третя сторона С захоче втрутитись у цей процес, то вона може прослуховувати канал зв'язку між А та В і підставляти свої повідомлення замість оригінальних.
Так, спочатку, коли А відправляє
В свій відкритий ключ PA, сторона
С може перехопити цей ключ та
надіслати до В власний ключ PC.
Тоді В буде кодувати повідомлення
за допомогою неправильного
ключа PC. Перехопивши ці повідомлення,
С зможе їх розкодувати своїм
приватним ключем, а замість
оригінального повідомлення направити
до А якесь інше некоректне повідомлення,
закодоване вже ключем PA. Описаний тип
атаки має назву «men-in-the-
Також асиметрична система з відкритим ключем використовується у системах цифрових підписів. Цей процес ґрунтується на властивості комутативності операцій шифрування та розшифрування: M = (Me)d mod n = Med mod n = Mde mod n = (Md)e mod n = M. Нехай сторона А відправляє стороні В повідомлення М. Для того, щоб підтвердити, що повідомлення дійсно відправлено від А, ця сторона супроводжує його підписом C = Md mod n, таким чином надсилаючи до В пару (M, C). Сторона В, отримавши це повідомлення з підписом, кодує повідомлення М відкритим ключем PA: C' = Me mod n. Якщо С = С', то повідомлення М дійсно прийшло від сторони А неушкодженим. Інакше, повідомлення було пошкоджено або замінено третьою стороною.
5.5 Коди з виявленням і виправленням помилок
До найбільш поширених кодів з виявленням та виправленням помилок відносять код Хемінга, циклічні та рекурентні коди. Розглянемо їх більш детально.
5.5.1 Код Хемінга
Код Хемінга відноситься до систематичних кодів, в яких з п символів, які утворюють комбінацію, n0 символів є інформаційними, а останні k = п - п0 с надлишковими (контрольними), призначеними для перевірки (контрольні символи у вcix комбінаціях займають однакові позиції). Коди Xeмінга дозволяють виправити вci одиничні помилки (при кодовій відстані d=3) i визначити вci подвійні помилки (при d=4), але не виправляти їх.
Зв'язок між кількістю інформаційних та контрольних символів в коді Хемінга знаходять на основі таких міркувань. При передачі комбінації по каналу з шумами може бути спотворений довільний з п символів коду, або комбінація може бути передана без спотворень. Таким чином може бути п + 1 вapiaнтів спотворення (включаючи передачу без спотворення). Використовуючи контрольні символи, необхідно перевірити вci п+1 варіантів. За допомогою контрольних символів k можна описати 2k подій. Для цього повинна бути використана умова:
.
В таблиці 5.3 подана залежність між k i n0, яка отримана з цієї невірності, де k - число контрольних символів в коді Хемінга, n0 - інформаційних символів.
Таблиця 5.3 – Розміщення контрольних символів в комбінаціях коду Хемінга
В коді Хемінга контрольні символи розташовують на місцях, кратних степеню числа 2, тобто на позиціях 1, 2, 4, 8 i т. п. Інформаційні символи розташовують на місцях, що залишилися. Наприклад, для семиелементної закодованої комбінації можна записати
.
Символи коду Хемінга, які обведені прямокутниками, є контрольними, останні – інформаційні, де а3 – старший (четвертий) розряд вихідної кодової комбінації двійкового коду, який необхідно кодувати, а7 – молодший (перший) розряд. Після розташування на відповідних місцях кодової комбінації контрольних i інформаційних символів в коді Хемінга складають спеціальні перевірні рівняння, які використовують для визначення наявності спотворень i їx виправлення. 3 перевірних рівнянь i отримують контрольні символи при кодуванні вихідної кодової комбінації двійкового коду. Для визначення контрольних символів необхідно використати такий алгоритм.