Криптографія для початківців. Частина 1

. :( Next Generation Hackers Group) :. ngh.void.ru
стаття написана: SHurON
----------------- | дата написання: 03/04/05 року
----- | контакти: [email protected]
Криптографія для початківців. Частина 1


Всім привіт!

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

Допитливий юзверя задасть питання, а навіщо воно мені все це треба? Добре, спробую дати відповідь. Давним давно...
коли ще бігали динозаври :) , Жили-були дядька і була у них необхідність за родом своєї діяльності (в основному
військової) приховувати інформацію від інших дядьків, які хотіли дізнатися їхні секрети Smile happy . Існувало багато різних
примітивних способів, на пам'ять приходять такі як шифр Цезаря, який представляє з себе просту заміну кожної
букви відкритого тексту третьої наступної за нею буквою алфавіту (з циклічним перенесенням, коли це необхідно),
намотування паперового послання (стрічка паперу) на палицю (спис, палиця, дерево etc) певного діаметру і т.д.
Поступово з'явилося таке поняття як криптографія. А необхідна дана штука ой як сильно. Будь-яка дійсно
добре спроектована захист обов'язково повинна включати в себе криптографічні протоколи, шифри;
конфіденційність даних, аутентифікація, цифровий підпис, все це неповний список, де використовується
криптографія.

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

Отже, що ж таке криптографія. Є багато визначень значення слова криптографія, одне з них наступне.
Криптографія - наука про способи перетворення (шифрування) інформації з метою її захисту від несанкціонованих
юзверей, бажаючих отримати дану інфу. Простіше кажучи, Вася передає Маші любовне послання :) , Але не хоче, щоб
його прочитав Петя і для цього, певним способом перетворює повідомлення в нечитаний вигляд, та так, щоб
тільки Маша, знаючи секрет розшифровки могла прочитати записку. Коротко розібравшись з визначенням криптографії йдемо
далі.

Введемо таке поняття, як криптографічний протокол.
Протокол - набір правил, що регламентують використання криптографічних перетворень і алгоритмів в
інформаційних процесах.
Щоб зрозуміти значущість криптографічного протоколу (і ще раз переконатися в необхідності криптографії) перерахуємо
його функції і відведену йому роль:
1) шифрування всього інформаційного трафіку, який передається по відкритому каналу (мережі);
2) криптографічний аутентифікація об'єктів, які встановлюють зв'язок;
3) шифрування даних, представлених у вигляді файлів;
4) контроль цілісності програмного забезпечення шляхом використання криптографически стійких контрольних сум
(СRC);
5) використання електронно-цифрового підпису для забезпечення юридичної значимості платіжних документів.

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

Алгоритми шифрування.

Для початку з'ясуємо, що ж таке шифр, шифрування, а далі перейдемо до розгляду їх типів.
Шифр - cовокупность алгоритмів криптографічних перетворень, які відбивають безліч можливих відкритих даних
на безліч можливих зашифрованих даних, і зворотних їм перетворень. Тобто, шифр нам потрібен для
перетворення відкритих даних в зашифрований вид і навпаки.
Шифрування - це процес шифрування (текст-> шифротекст) або розшифрування (шіфротекст-> текст).
Перейдемо тепер до алгоритмів шифрування. Дуже важливим параметром таких алгоритмів є поняття стійкості. під
стійкістю розуміється здатність протистояння будь-яким можливим атакам проти даного алгоритму шифрування.
Стійким є такий алгоритм, який для свого розкриття вимагав би від зловмисника практично
недосяжних ресурсів і часу (хочу відзначити такий цікавий момент, як життя секретної інформації, тобто в
Залежно від свого типу і характеру інформація вважається секретною і неприпустимо її розкриття, але після
закінчення часу її життя вона стає просто непотрібною для її власника, відповідно стійкість алгоритму
шифрування повинна регулюватися часом, на яку розрахована секретність інформації). Для того щоб алгоритм
був абсолютно стійким, необхідно враховувати наступне:
- Довжина ключа (ключ - конкретне секретне значення набору параметрів криптографічного алгоритму, що забезпечує
вибір одного перетворення з сукупності можливих для даного алгоритму перетворень) і відкритого повідомлення
однакова, тобто якщо у нас повідомлення має довжину в 1000 символів, то в ідеалі ключ також повинен мати довжину рівну
1000 символів;
- Ключ повинен використовуватися один раз.

Різниться шифрування двох типів: симетричне і асиметричне (шифрування з використанням відкритого ключа).
При симетричному шифруванні необхідно створити ключ, зашифрувати вихідне повідомлення на цьому ключі (поясню фразу
на "цьому ключі", мається на увазі, що ключ є вхідним параметром алгоритму шифрування) і передати даний
меседж адресату, а ключ (зазвичай пароль або файл з даними) передається окремо. Отримане повідомлення адресат
зможе прочитати, розшифрувавши шифротекст за допомогою того ж ключа, на якому відбувалося шифрування. симетричне
шифрування не так надійно, як асиметричне, оскільки ключ може бути перехоплений, але через високу швидкість воно
дуже поширено.
Асиметричне шифрування є більш складним в реалізації, але на практиці воно набагато надійніше. Для нього потрібні
два взаємопов'язаних ключа: відкритий і закритий. Згенерований відкритий ключ повідомляється всім бажаючим, тобто він
загально відкритий для використання. Що нам це дає? А дає наступне, будь юзверя при бажанні може послати нам
зашифроване повідомлення (зашифрувавши його на нашому відкритому ключі), а вся принадність полягає в тому, що
закодувати то він може, а от назад ніяк Smile happy , Тобто відкритий ключ дозволяє кодувати дані, але не
розкодувати їх. А закритий ключ є тільки у нас і відповідно тільки ми можемо прочитати адресований нам
повідомлення.

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

Ось начебто поки і все. У наступній статті я продовжу ознайомлення з основами криптографії. На цьому дозвольте
попрощатися.
Успіхів!
To be continued ...
______________________________________________________________


Copyright © 2005 NGH Group