Відмінності між версіями «Виступ на семінарі:Олійник Ігор Богданович:Шифр Вернама»

 
(Не показано 25 проміжних версій цього користувача)
Рядок 2: Рядок 2:
 
== Опис ==
 
== Опис ==
 
      Для відтворення шифртексту відкритий текст об'єднується операцією «виключне АБО» з ключем(названим одноразовим блокнотом або шифроблокнотом). При цьому ключ повинен володіти трьома критично важливими властивостями:
 
      Для відтворення шифртексту відкритий текст об'єднується операцією «виключне АБО» з ключем(названим одноразовим блокнотом або шифроблокнотом). При цьому ключ повинен володіти трьома критично важливими властивостями:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.Бути справді випадковим;  
+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Бути справді випадковим;  
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.Збігатися з розміром з заданим відкритим текстом;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.Застосовуватися тільки один раз.                                                                                                                                                                         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Шифр названий на честь телеграфіста AT&T Гільберта Вернама, що в 1917 році побудував телеграфний апарат, який виконував цю операцію автоматично - треба було тільки подати на нього стрічку з ключем. Не будучи шифрувальником, тим не менше, Вернам вірно помітив важливу властивість свого шифру - кожна стрічка повинна використовуватися тільки один раз і після цього знищуватися. Це було важко застосувати на практиці - тому апарат був перероблений на кілька зациклених стрічок з взаємно простими періодами.
+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. Збігатися з розміром з заданим відкритим текстом;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3. Застосовуватися тільки один раз.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Шифр названий на честь телеграфіста AT&T Гільберта Вернама, що в 1917 році побудував телеграфний апарат, який виконував цю операцію автоматично - треба було тільки подати на нього стрічку з ключем. Не будучи шифрувальником, тим не менше, Вернам вірно помітив важливу властивість свого шифру - кожна стрічка повинна використовуватися тільки один раз і після цього знищуватися. Це було важко застосувати на практиці - тому апарат був перероблений на кілька зациклених стрічок з взаємно простими періодами.
 
 
  
  
 
== Властивості ==
 
== Властивості ==
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Небезпека більшості DDoS-атак – в їх абсолютній прозорості і "нормальності". Адже якщо помилка в ПЗ завжди може бути виправлена, то повне зжирання ресурсів - явище майже буденне. З ними стикаються багато адміністраторів, коли ресурсів машини (ширина каналу) стає недостатньо, або web-сайт піддається слешдот-ефекту. І якщо різати трафік і ресурси для всіх підряд, то врятуєшся від DDoS, но втратиш велику половину клієнтів.
+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;В 1949 році Клод Шеннон опублікував роботу, в якій довів абсолютну стійкість шифру Вернама. Інших шифрів з цією властивістю не існує. Це по суті означає, що шифр Вернама є найбезпечнішою криптосистемою з усіх можливих. При цьому умови, яким повинен задовольняти ключ, настільки сильні, що практичне використання шифру Вернама є важко здійсненним. Тому він використовується тільки для передачі повідомлень найвищої секретності.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Виходу з цієї ситуації фактично немає, проте наслідки DDoS-атак і їх ефективність можна істотно понизити за рахунок правильного налаштування маршрутизатора, брандмаузера і постійного аналізу аномалій в мережевому трафіку. У наступній частині статті ми послідовно розглянемо:
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. способи розпізнавання DDoS-атаки, що починається;
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. методи боротьби з конкретними типами DDoS-атак;
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. універсальні поради, які допоможуть підготуватися до DoS-атаки і понизити її ефективність.
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;В самому кінці буде дана відповідь на питання: що робити, коли почалася DDoS-атака.  
 
  
  
 
==  Розвиток ==
 
==  Розвиток ==
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;На початку 20 ст. для передачі повідомлень все ширше і ширше використовувалися телетайпи. Тому потрібні були методи, що дозволяють шифрувати текст не до того, як він потрапляє до телеграфіста, а безпосередньо в момент передачі, і, відповідно, розшифровувати в момент прийому. Дуже хотілося доручити цю справу машині. Як виявилося, коливання струму в лінії передачі можна легко записати за допомогою осцилографа і потім перетворити у літери переданого повідомлення. Змінивши з'єднання проводів телетайпа, телеграфісти отримували повідомлення, зашифроване методом одноалфавітной заміни. Всі розуміли, що такий захист надто слабкий, але, не зумівши вигадати нічого іншого, користувалися ним до тих самих пір, поки Вернам не запропонував використовувати для кодування повідомлень особливості телетайпного коду, в якому знак, що кодується виражається у вигляді п'яти елементів. Кожен з цих елементів символізує наявність («плюс») або відсутність («мінус») електричного струму в лінії зв'язку. Наприклад, літера «А» відповідає комбінація «+ - - - -». Підготовлене до відправки повідомлення набивається на перфострічці: отвору відповідає «плюс» коду, його відсутність - «мінус». В процесі передачі металеві щупи телетайпа проходять через отвори, замикаючись у ланцюг, і посилають імпульси струму («+»). Там, де отворів немає і папір не дозволяє щупам замкнути ланцюг, імпульс не передається («-»).
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;На початку 20 ст. для передачі повідомлень все ширше і ширше використовувалися телетайпи. Тому потрібні були методи, що дозволяють шифрувати текст не до того, як він потрапляє до телеграфіста, а безпосередньо в момент передачі, і, відповідно, розшифровувати в момент прийому. Дуже хотілося доручити цю справу машині. Як виявилося, коливання струму в лінії передачі можна легко записати за допомогою осцилографа і потім перетворити у літери переданого повідомлення. Змінивши з'єднання проводів телетайпа, телеграфісти отримували повідомлення, зашифроване методом одноалфавітной заміни. Всі розуміли, що такий захист надто слабкий, але, не зумівши вигадати нічого іншого, користувалися ним до тих самих пір, поки Вернам не запропонував використовувати для кодування повідомлень особливості телетайпного коду, в якому знак, що кодується виражається у вигляді п'яти елементів. Кожен з цих елементів символізує наявність («плюс») або відсутність («мінус») електричного струму в лінії зв'язку. Наприклад, літера «А» відповідає комбінація «+ - - - -». Підготовлене до відправки повідомлення набивається на перфострічці: отвору відповідає «плюс» коду, його відсутність - «мінус». В процесі передачі металеві щупи телетайпа проходять через отвори, замикаючись у ланцюг, і посилають імпульси струму («+»). Там, де отворів немає і папір не дозволяє щупам замкнути ланцюг, імпульс не передається («-»).
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Для шифрування Вернам запропонував заздалегідь готувати «гаму» - перфострічку з випадковими знаками - і потім електромеханічно складати її імпульси з імпульсами знаків відкритого тексту. Отримана сума представляла собою шифртекст. На приймальному кінці імпульси, отримані по каналу зв'язку, складалися з імпульсами тієї ж самої «гами», в результаті чого відновлювалися вихідні імпульси повідомлення. А якщо повідомлення перехоплювати, то без «гами» розшифрувати його було неможливо, противник бачив тільки нічого не значущу послідовність «плюсів» і «мінусів».
 +
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Подальше вдосконалення методу, запропонованого Вернамом, належить майбутньому начальнику зв'язку військ США Джозеф Моборну, що об'єднав хаотичність «гами», на яку спирався Вернам у своїй системі «автоматичного шифрування», з використовуваним у той час у військах правилом «одноразового шифрблокнота». Ідея Моборна полягала в тому, що кожна випадкова «гама» повинна використовуватися один, і тільки один раз. При цьому для шифрування кожного знака всіх текстів, які вже передані або будуть передані в найближчому майбутньому, повинен застосовуватися абсолютно новий і такий, що не піддається передбаченню знак «гами».
  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Для шифрування Вернам запропонував заздалегідь готувати «гаму» - перфострічку з випадковими знаками - і потім електромеханічно складати її імпульси з імпульсами знаків відкритого тексту. Отримана сума представляла собою шифртекст. На приймальному кінці імпульси, отримані по каналу зв'язку, складалися з імпульсами тієї ж самої «гами», в результаті чого відновлювалися вихідні імпульси повідомлення. А якщо повідомлення перехоплювати, то без «гами» розшифрувати його було неможливо, противник бачив тільки нічого не значущу послідовність «плюсів» і «мінусів».                                                                                                                                               
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Подальше вдосконалення методу, запропонованого Вернамом, належить майбутньому начальнику зв'язку військ США Джозеф Моборну, що об'єднав хаотичність «гами», на яку спирався Вернам у своїй системі «автоматичного шифрування», з використовуваним у той час у військах правилом «одноразового шифрблокнота». Ідея Моборна полягала в тому, що кожна випадкова «гама» повинна використовуватися один, і тільки один раз. При цьому для шифрування кожного знака всіх текстів, які вже передані або будуть передані в найближчому майбутньому, повинен застосовуватися абсолютно новий і такий, що не піддається передбаченню знак «гами».
 
  
 
== Область застосування ==
 
== Область застосування ==
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Рішення прийшло само-собою - у нас в том-же ДЦ що і веб-сервер-сервер коштують ще і файлові сервера, в яких дуже навантажені гвинти, але проц і пам'ять практично гуляє. Серед таких серверів знайшовся двохядерний оптерон з 4Гб оператіви, вирішили сайт перенести туди. Щоб не міняти запису в ДНС, не юзати забиті канали, які служать для роздачі файлів і т.д. ми зробили наступне: оптерон був налагоджений для праці backend сервером, на основному сервері в конфіге nginx прописали для домена fileshare.in.ua цей backend, а останні сайти (їх на тому сервері всього біля десятка, окрім файлшари, сумарною відвідуваністю порядку 15К хостів і 70К хітів в добу) залишити як є.
+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;На практиці можна один раз фізично передати носій інформації з довгим дійсно випадковим ключем, а потім по мірі необхідності пересилати повідомлення. На цьому заснована ідея шифроблокнотів: шифрувальник при особистій зустрічі забезпечується блокнотом, кожна сторінка якого містить ключ. Такий же блокнот є і у приймаючої сторони. Використані сторінки знищуються.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Рішення допомогло на якийсь час, сайт став нормально працювати і інші сайти теж пожвавіше стали відгукуватися. Десь через годин 6 після такого ось нововведення атака посилилася у декілька разів. Оптерон не витримав, файлшара знову просіла, проте останні сайти, які працювали не на оптероне, а на основному веб-сервері-сервері відмінно відгукувалися.[[Файл:Claster.jpg|right|thumb|250px|Кластерна технологія]]
+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Крім того, якщо є два незалежних канали, в кожному з яких ймовірність перехоплення низька, але відрізняється від нуля, шифр Вернама також можна застосувати: по одному каналу можна передати зашифроване повідомлення, по другому - ключ. Для того, щоб розшифрувати повідомлення, перехоплювач повинен прослуховувати обидва канали.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Цього разу я вирішив що файлшара важливіше і зробив кластер: файлшара працювала на обох серверах, балансування робив nginx, а останні сайти крутилися на основному. При чому для файлшари веб-сервер-сервер був прописаний як резервний (тобто на основному сервері скрипти файлшари виконувалися лише якщо оптерон помер), і, щоб довго не чекати, я встановив параметр чекання відповіді від backend 2 секунди. Все налагодилося, отперон не завжди витримував, був постійно завантажений на 100%, але другий сервер підхоплював сайт якщо оптерон падав і все більш-менш працювало.
+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Шифр Вернама може застосовуватися, якщо є односторонній захищений канал: ключ передається в одну сторону під захистом каналу, повідомлення в іншу сторону повідомлення захищаються ключем.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Мабуть зловмисники стежили за розвитком подій тому, що буквально за годину, після того, як я розвів навантаження з файлшари на 2 сервери на атаку були кинута велика частина ресурсів. Вхідний трафік підріс в 3 рази в порівнянні із звичайним (далі йому просто вже нікуди зростати із-за обмежень провайдера), сайт впав і не піднімався, завантаження сервера (будь-якого) було на 100% вже відразу після рестарту апача, a на основному сервері підскочив до 60%, все було в ступорі небуло жодних шансів піднятися. Атака йшла не лише на файлшару але і останні сайти, навіть по ssh зайти було проблемою (не дивлячись на підвищений пріоритет) і я загасив nginx, щоб мати можливість щось зробити. Мабуть по маштабам атака була порівнянна з тими, від яких лежав 0day і progs не так давно. Не знаю вже кому ми так жити заважаємо, але думати про цей небуло часу, через 20 хвилин атака була повністю відбита;). Насамперед я додав в кластер ще 3 машини. По-друге залив на всі машини по nfs ісходники сайтів, подрехтовал конфіги апача і php і перевів сесію на mysql. Тепер всі сервера могли працювати як backend’и. Після цього я поставив на все сервера APC (php-акселератор), перевірив працездатність сайтів на кожному з серверів, прописав їх в конфіге nginx і знову його запустив. Атака, яка легко посадила 2 сервери, цього разу спасувала. Вхідний трафік не зменшився, атака йшла до ранку, але всім сайтам на хостингу це вже було по барабану. Навіть ab в 200 потоків, який я запустив паралельно з атакою нічого не змінив. Я боявся за базу - вона хоч і на потужній машині, але на одній, проте, мабуть за рахунок агресивного кешированія, база впоралася. А на веб-сервері-сервері опустився до 3, на сервері з'явився idle і тут-же взявся за справу антидос-скрипт. Запити валили шквалом, проте антидос знаходила час їх аналізувати і забанити найактивніших, тим самим понизивши навантаження десь на 40%. Підсумок: під час атаки сервера були завантажені не більше ніж на 60% (багато ресурсів віджирала роздача файлів), всі сайти (навіть на Вордпресі) відгукувалися швидко, атака йшла лісом. Сьогодні півдня довелося витратити на пошук багов, які з'явилися у зв'язку з такою зміною архітектури, проте в цілому результат хороший. Сподіватимемося, що сайт тепер захищений від ДДОС повністю. Чому повністю? тому що в ua-ix не буде достатньої кількості комп'ютерів, щоб його покласти, а ширина вхідного світу така, що сама стримає великий наплив ботів. Максимум, чого можна буде добитися, так це того, що сайт не буде доступний зі світу, проте і для цього треба буде сильно постаратися.
+
Не є шифром Вернама, але близька до нього схема одноразових кодів: наприклад, кодове слово «Альфа» означає «Повертаюсь».
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Принаймні це мій оптимістичний прогноз, думаю, що організатори атак не зупиняться на досягнутому і сайт ще не раз перевірять на міцність (та в і нас є ще гуляючі сервера+можно зібрати mysql кластер), проте те що якась кількість грошей вони вже спустили в унітаз (10 годин безрезультатної досить масованої атаки), це радує.
+
 
  
 
== Технічне застосування ==
 
== Технічне застосування ==
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Очима фахівця, суть того, що відбувається така: з кінця січня (стабільна µTorrent версія 2.0 з µTP вийшла якраз 25 січня, офіційно доступна з 3 лютого) в статистичних звітах операторів зв'язку виявлено безперервне зростання  UDP-трафіку і одночасне зменшення середньої величини пакетів, які істотно збільшували навантаження на мережеве устаткування. Спостереження показали, що чим сильніше завантажений канал клієнта, тим дрібніші пакети, довша черга і вище навантаження на роутерах.
+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;У період між двома світовими війнами в більшості країн з'являються електромеханічні шифратори. Вони були двох типів. Перший - пристрій, що складається з комутаційних дисків та механізму зміни їх кутових положень. За обома сторонами комутаційного диска розміщені контакти, відповідні алфавіту відкритого та шифрованого тексту. Контакти ці з'єднуються між собою відповідно до деякого правила підстановки, що зветься комутацією диска. Ця комутація визначає заміну літер в початковому кутовому положенні. При зміні кутового положення диска змінюється і правило підстановки. Таким чином, ключ шифрування містить кілька невідомих: схему з'єднання контактів і початкове кутове положення. Якщо після шифрування кожної літери міняти кутове положення диска - отримаємо многоалфавітное шифрування. Ще більш складний пристрій отримаємо, з'єднавши послідовно кілька дисків, кутові положення яких змінюються з різною швидкістю.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;У всіх випадках причиною що відбувається був названий МікроТоррент (µTorrent), з версії 1.8.1 що почав освоювати протокол обміну µTP (Micro Transport Protocol, до речі, що так не дістав схвалення IETF). І провайдерам просто повезло, що через низку обставин клієнти до версії µTorrent v2.0 не оновилися одномоментно. (У ній, за умовчанням, udp-завантаження стартує першим, а якщо не вийде, то лише тоді – по TCP). Інакше наростання проблем в мережі замість плавного носило б миттєвий характер і, можливо, відразу «повалило» до третини вітчизняних провайдерів. Останні могли б трактувати поведінку як ddos-атаки на провайдерське устаткування з відповідним недемократичним «закручуванням гайок» в аварійному порядку.
+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Широко відома шифрмашина «Енігма», якою були оснащені німецькі війська часів Другої світової війни, є типовим прикладом пристрою на комутаційних дисках. Конструктивно «Енігма» походила на звичайну друкарську машинку, тільки натискання клавіші призводило не до удару молоточка по папері, а створювало електричний імпульс, що надходив у схему криптоперетворення. Американська шифрмашина М-209 - типовий приклад другого типу шифратора, - шифратора на цівочних дисках.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Остаточний аналіз ситуації був ускладнений тим, що у відкритому доступі повного опису протоколу, який став займати значну долю UDP трафіку, немає: цей опис застарілий і не дає повної картини, а стаття у Вікіпедії  досить поверхневий описує характер проблем.
+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Цікаво, що Радянський Союз виробляв шифрмашини обох названих типів.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Реінженеринг дозволив не лише переконатися, що згідно з алгоритмами µTP в процесі обміну зменшується довжина пакету із зростанням завантаження каналу, але і передбачити, що для підтвердження використовуються udp-пакети квитування (з функцією, типа ACK) розміром в 2 десятки байт.
+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Таким чином, перед Другою світовою війною всі провідні країни мали на озброєнні електромеханічні шифрсистеми, що володіють високою швидкістю обробки інформації і високою стійкістю. Вважалося, що застосовувані системи неможливо розшифрувати і криптоаналізу більше робити абсолютно нічого. Як часто буває, ця думка була згодом спростована, і дешифровщики були безпосередніми учасниками бойових дій.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Логіка розробників протоколу і алгоритмів µTorrent може виправдовуватися тим, що вони не вважають розумними чекати TCP-ACK від доставки пакету. Адже tcp-потік формується послідовно, і якщо в стеку, наприклад, вже знаходиться 50 пакетів, але немає два, то передачу вони не здійснюватимуть, поки втрачені не прийдуть. А ось пірінгове застосування за своєю суттю якраз і не критично до строгої послідовності у вступі інформації, адже воно запрошує і збирає файли по шматочках.
+
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;І що виходить насправді? Додаток, відповідно, зменшує розмір пакету, тому що у нього зростає час між відсиланням пакету і приходом квитанції. Але зростає-то воно тому, що пакети стоять в переповненій черзі на «шейпері». І замість того що б спочатку зменшити кількість посланих, алгоритм ... далі зменшує їх розмір. В результаті, при даному агресивному алгоритмі використання udp-протоколу МікроТоррентом результуючий трафік (ємкість каналу) на клієнтові практично не міняється. Тобто вихідна мрія творців даного ПЗ – завантажити канал «під зав'язку» від цього ближче не стає. Міняється лише структура трафіку – з'являється більше дрібних пакетів, що для провайдера насправді небезпечніше чим зростання трафіку.
+
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Давайте порахуємо: якщо в ходу пакети по 150 байт, то при швидкості 100 мегабіт операторові потрібно буде обробити в секунду ... 87 тисяч пакетів! Не всякий провайдер зможе оперативно відреагувати на виниклу проблему: замінити ті ж сервери доступа/роутери на високопродуктивних не всім по кишені. В результаті, багато провайдерів  вимушено було для своїх клієнтів ввести на додаток до обмежень по Mbps, ще і по pps.
+
== Переваги ==
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Але, навіть якщо провайдерське устаткування зможе впоратися з цим алогічним алгоритмом обміну, замість вичавлених з провайдера декількох зайвих відсотків смуги, клієнт ризикує втратити значно більше завдяки збільшеному пакетному навантаженню . на свій домашній шлюз і, можливо навіть – на свій не дуже сучасний ПК! А що він зробить, побачивши, що швидкість закачування знизилася? Правильно, без тіні сумніву звернеться в технічну підтримку і звалить свої проблеми на провайдера.  
+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Завдяки накладеним обмеженням на ключ, в 1949 році Клод Шенон довів, що шифр Вернама є абсолютно криптостійким.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Оскільки локальна ситуація моделюється досить нескладно, я провів невеликий експеримент з наявним adsl-wifi-шлюзом, який можу запропонувати просунутим користувачам µTorrenta. Особливо вражаючим тест виглядатиме на древніх роутерах з Wifi. У моєму циклі випробувань пристрій почав «притормажувати» приблизно вже при 30-40 активних сесіях «звичайного» закачування, але при агресивній роботі по UDP (всього 5 роздач) втратило відразу майже третина смуги. Поза сумнівом, причина – в перевищення можливої кількості коректно оброблюваних пакетів за одиницю часу.
+
 
  
 
== Недоліки ==
 
== Недоліки ==
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Щоб не попасти в безвихідь під час обвалення DDoS-штурму на системи, необхідно ретельно підготувати їх до такої ситуації:
+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Для роботи шифру Вернама необхідна дійсно випадкова послідовність нулів та одиниць (ключ). За визначенням, послідовність, отримана з використанням будь-якого алгоритму, є не зовсім випадковою, а псевдовипадковою. Тобто, потрібно отримати випадкову послідовність неалгорітмічно (наприклад, використовуючи радіоактивний розпад ядер, створений електронним генератором білий шум або інші досить випадкові події). Щоб зробити розподіл гранично близьким до рівномірного, випадкову послідовність зазвичай проганяються через хеш-функцію на кшталт MD5.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Всі сервера, що мають прямий доступ в зовнішню мережу, мають бути підготовлені до простої і швидкої віддаленої. Великим плюсом буде наявність другого, адміністративного, мережевого інтерфейсу, через який можна дістати доступ до сервера в разі затурканості основного каналу.
+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. Проблемою є таємна передача послідовності та збереження її в таємниці. Якщо існує надійно захищений від перехоплення канал передачі повідомлень, шифри взагалі не потрібні: секретні повідомлення можна передавати з цього каналу. Якщо ж передавати ключ системи Вернама за допомогою іншого шифру (наприклад, DES), то отриманий шифр буде захищеним рівно настільки, наскільки захищений DES. При цьому, оскільки довжина ключа така ж, як і довжина повідомлення, передати його не простіше, ніж повідомлення. Шифроблокнот на фізичному носії можна вкрасти або скопіювати.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. ПЗ, використовуване на сервері, завжди повинно знаходитися в актуальному стані. Всі дірки - пропатчені, оновлення встановлені. Це захистить тебе від DoS-атак, експлуатуючих баги в сервісах.
+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3. Можливі проблеми з надійним знищенням використаної сторінки. Цьому схильні як паперові сторінки блокнота, так і сучасні електронні реалізації з використанням компакт-дисків або флеш-пам'яті.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3. Всі слухаючі мережеві сервіси, призначені для адміністративного використання, мають бути заховані брандмаузером від всіх, хто не повинен мати до них доступу. Тоді той, що атакує не зможе використовувати їх для проведення DoS-атаки або брутфорса.
+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4. Якщо третя сторона якимось чином дізнається повідомлення, вона легко відновить ключ і зможе підмінити повідомлення на інше такої ж довжини.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4. На підходах до сервера (найближчому маршрутизаторі) має бути встановлена система аналізу трафіку (Netflow в допомогу), яка дозволить своєчасно дізнатися про атаку, що починається, і вчасно прийняти заходи по її запобіганню.
+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5. Шифр Вернама чутливий до будь-якого порушення процедури шифрування. Наприклад, контррозвідка США часто розшифровувала радянські та німецькі послання із-за неточностей генератора випадкових чисел (програмний генератор псевдовипадкових чисел у німців і друкарка, що б'є по клавішах, в СРСР). Бували випадки, коли одна і та ж сторінка блокнота застосовувалася двічі - США також розшифровувати такі послання.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Додай в /etc/sysctl.conf наступні рядки:
+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Тим не менш, схема шифроблокнотів досить надійна при ручній шифровці. Перераховані вище недоліки можна усунути, якщо застосувати квантову криптографію, зокрема, протокол BB84 для генерації та передачі одноразових блокнотів. У разі використання квантової криптографії шифр Вернама також буде досить надійним.
<br>''&#035; vi /etc/sysctl.conf''
 
<br>''&#035; Захист від спуфінга''
 
<br>''net.ipv4.conf.default.rp_filter = 1''
 
<br>''&#035; Перевіряти TCP-з’єднання кожну хвилину. Якщо на іншій стороні - легальна машина, вона зразу відповість. Значення по замовчуванні - 2 години.
 
<br>net.ipv4.tcp_keepalive_time = 60
 
<br>&#035; Повторити попитку через десять секунд
 
net.ipv4.tcp_keepalive_intvl = 10
 
<br>&#035; Кількість повірок перед закриттям з’єднання
 
<br>net.ipv4.tcp_keepalive_probes = 5''
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Слід зазначити, що всі прийоми, приведені у минулому і цьому розділах, направлені на зниження ефективності DDoS-атак, що ставлять своєю метою витратити ресурси машини. Від флуда, що забиває канал сміттям, захиститися практично неможливо, і єдино правильний, але не завжди здійсненний спосіб боротьби полягає в тому, щоб "позбавити атаку сенсу". Якщо ти отримаєш в своє розпорядження дійсно широкий канал, який легко пропустить трафік невеликого ботнета, вважай, що від 90% атак твій сервер захищений. Є витонченіший спосіб захисту. Він заснований на організації розподіленої обчислювальної мережі, що включає безліч дублюючих серверів, які підключені до різних магістральних каналів. Коли обчислювальні потужності або пропускна спроможність каналу закінчуються, все нові клієнти перенаправляються на інший сервер (або ж поступово "розмазуються" по серверах за принципом round-robin). Це неймовірно дорога, але дуже стійка структура, завалити яку практично нереально.
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Інше більш-менш ефективне рішення полягає в покупці дорогих хардварних систем Cisco Traffic Anomaly Detector і Cisco Guard. Працюючи у в'язці, вони можуть подавити атаку, що починається, але, як і більшість інших рішень, заснованих на вченні і аналізі станів, дають збої. Тому слід гарненько подумати перед тим, як вибивати з начальства десятки тисячі доларів на такий захист.
 
  
== Здається, почалося. Що робити?  ==
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Перед безпосереднім початком атаки боти "розігріваються", поступово нарощуючи потік пакетів на машину, що атакується. Важливо зловити момент і почати активні дії. Допоможе в цьому постійне спостереження за маршрутизатором, підключеним до зовнішньої мережі (аналіз графіків Netflow). На сервері-жертві визначити початок атаки можна підручними засобами.
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Наявність Syn-флуда встановлюється легко - через підрахунок числа "напіввідкритих" tcp-з'єднань:
 
<br>''&#035; netstat -na | grep ":80\ " | grep Syn_rcvd''
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;У звичайній ситуації їх не повинно бути зовсім (або дуже невелика кількість: максимум 1-3). Якщо це не так - ти атакований, терміново переходь.
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; З Http-флудом дещо складніше. Спершу потрібний підрахувати кількість процесів Apache і кількість з’єднань на 80-й порт (Http-флуд):
 
<br>''&#035; ps aux | grep httpd | wc -l
 
<br>&#035; netstat -na | grep ":80\ " | wc –l''
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Значення, у декілька разів вищі за середньостатистичні, дають підстави задуматися. Далі слід проглянути список ip-адрес, з яких йдуть запити на підключення:
 
<br>''&#035; netstat -na | grep ":80\ " | sort | uniq -c | sort -nr | less''
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Однозначно ідентифікувати DoS-атаку не можна, можна лише підтвердити свої припущення про наявність такої, якщо одна адреса повторюється в списку надто багато разів. Додатковим підтвердженням буде аналіз пакетів за допомогою tcpdump:
 
<br>''&#035; tcpdump -n -i eth0 -s 0 -w output.txt dst port 80 and host ip-сервера''
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Показником служить великий потік одноманітних (і що не містять корисної інформації) пакетів від різних IP, направлених на один порт/сервіс (наприклад, корінь web-сервера або певний cgi-скріпт).  Остаточно визначившись, починаємо банити по ip-адресах (буде значно більше ефекту, якщо ти зробиш це на маршрутизаторі):
 
<br>''&#035; iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --destination-port http -j DROP''
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Або відразу по підмережах: 
 
<br>''&#035; iptables -a INPUT -s xxx.xxx.0.0/16 -p tcp --destination-port http -j  DROP''
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Це дасть тобі деяку фору, яку ти повинен використовувати для того, щоб звернутися до провайдеру/хостеру (з прикладеними до повідомлення балками web-сервера, ядра, брандмаузера і списком виявлених тобою ip-адрес). Більшість з них, звичайно, проігнорують це повідомлення (а хостинги з оплатою трафіку ще і порадіють - DoS-атака принесе їм прибуток) або просто відключать твій сервер. Але у будь-якому випадку це слід зробити обов'язково, – ефективний захист від DDoS можливий лише на магістральних каналах. Поодинці ти впораєшся з дрібними нападками, направленими на виснаження ресурсів сервера, але виявишся беззахисним перед більш-менш серйозним DDoS’ом.
 
  
== Боротьба з DDoS в FREEBSD  ==
+
== Усунення недоліків ==
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Зменшуємо час чекання у відповідь пакету на запит SYN-ACK (захист від Syn-флуда): 
+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Всі вищеперераховані недоліки можна також усунути, якщо застосовувати квантову криптографію, в тому числі, протокол BB84 для генерації і передачі одноразових блокнотів. У випадку використання квантової криптографії шифр Вернама також будет достатньо надійним.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Квантова криптографія - метод захисту комунікацій, що базується на певних явищах квантової фізики. Процес відправки і прийому інформації завжди виконується фізичними засобами, наприклад за допомогою електронів в електричному струмі, або фотонів в лініях волоконно-оптичного зв'язку.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Технологія квантової криптографії спирається на принципову невизначеність поведінки квантової системи - неможливо одночасно отримати координати і імпульс частинки, неможливо виміряти один параметр фотонів, не спотворить інший. Це фундаментальне властивість природи у фізиці відомо як принцип невизначеності Гейзенберга, сформульований у 1927р.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Використовуючи квантові явища, можна спроектувати і створити таку систему зв'язку, яка завжди може виявляти підслуховування. Це забезпечується тим, що спроба вимірювання взаємопов'язаних параметрів у квантовій системі вносить до неї порушення, руйнуючи вихідні сигнали.
<br>''&#035; sysctl net.inet.tcp.msl=7500''
+
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Перетворюємо сервер на чорну діру. Так ядро не слатиме у відповідь пакети при спробі підключитися до незайнятих портів (знижує навантаження на машину під час DDoS’а на випадкові порти):
 
<br>''&#035; sysctl net.inet.tcp.blackhole=2
 
<br>&#035; sysctl net.inet.udp.blackhole=1''
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Обмежуємо число відповідей на icmp-повідомлення 50 в секунду (захист від Icmp-флуда): 
 
<br>''&#035; sysctl net.inet.icmp.icmplim=50''
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Збільшуємо максимальну кількість підключень до сервера (захист від всіх видів DDoS): 
 
<br>''&#035; sysctl kern.ipc.somaxconn=32768''
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Включаємо Device_polling - самостійний опит мережевого драйвера ядром на високих навантаженнях (істотно знижує навантаження на систему під час DDoS'а): 
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;• Збираємо заново ядро з опцією "options Device_polling";
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;• Активуємо механізм полінгу: "sysctl kern.polling.enable=1";
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;• Додаємо запис "kern.polling.enable=1" у /etc/sysctl.conf.
 
  
 
== Висновки ==
 
== Висновки ==
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'''Ботнет''' (англ. botnet від robot і network) — це комп'ютерна мережа, що складається з деякої кількості хостів, із запущеними ботами — автономним програмним забезпеченням.
+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Шифр Вернама найбільш надійним серед  собі подібних, що забезпечується:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Абсолютною крипкостійтістю.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. Навіть якщо підбирати ключ методом перебору, то якщо врахувати, що на кожен символ повідомлення припадає 8 біт(0 і 1), ми шифруємо повідомлення обємом 1 КБ, шифроване повідомлення – ~8 КБ, тобто більше 8000 символів. Для підбору ключа потрібно виконати 2^8000!!! операцій підстановки.
[[Файл:Atak.png|right|thumb|250px|Статистика DoS-атак]] Найчастіше бот у складі ботнета є програмою, який скрито встановлюється на комп'ютері жертви і що дозволяє зловмисникові виконувати якісь дії з використанням ресурсів зараженого комп'ютера. Зазвичай використовуються для нелегальної або несхвалюваної діяльності — розсилки спаму, перебору паролів на видаленій системі, атак на відмову в обслуговуванні.
+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Він має ряд недоліків:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Взамін на абсолютну стійкість цей метод потребує надто великих обрахунків, що не завжди виправдано. Іноді достатньо забезпечити криптостійкість на деякий час.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;• Kraken - 400 тисяч комп'ютерів.
+
Як говорив Остап Бендер: «Мені не потрібна вічна голка для примуса, я не планую жити вічно».
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;• Srizbi - 315 тисяч комп'ютерів.
+
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;• Bobax - 185 тисяч комп'ютерів.  
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;• Rustock - 150 тисяч комп'ютерів.  
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;• Storm - 100 тисяч комп'ютерів.  
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;• Psybot - 100 тисяч adsl-маршрутизаторів, заснованих на Linux.  
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;• Ботнет ВПС - 22 тисячі комп'ютерів. Експериментальний ботнет, створений компанією ВПС.
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;''1997 рік'' - dDoS-атака на web-сайт Microsoft. Один день мовчання.
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;''1999 рік'' – "поза зоною дії" виявилися web-сайти Yahoo, CNN, ebay і ін.  
 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;''Жовтень 200''2 - атака на кореневі dns-сервері інтернету. На деякий час були виведені з буд 7 з 13 серверів.  
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;''21 лютого 2003 року'' - dDoS-напад на Livejournal.com. Два дні сервіс знаходився в паралізованому стані, лише інколи подаючи ознаки життя.[[Файл:Cisco.gif|center]]
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Цікаву альтернативу вирішенням Cisco випускає компанія Reactive Networks (www.reactivenetworks.com). Їх продукт під назвою Floodguard є апаратним комплексом, що складається з детекторів і виконавчих модулів. Детектори, встановлені на брандмаузерах, маршрутизаторах і світчах, постійно моніторят трафік і створюють його профіль на основі таких параметрів, як об'єм пакетів, джерело, напрям, тип і так далі. В разі виникнення аномалій детектор посилає всі подробиці про подію виконавчим модулям, розташованим на маршрутизаторах в різних сегментах мережі. Отримавши повідомлення від детектора, виконавчі модулі починають діяти: вони відшукують паразитний трафік в проходящих пакетах і, в разі успіху, оповіщають про це попередні по ходу трафіку модулі і посилають їм інструкції по активації фільтрів на маршрутизаторах. В результаті, перед потоком флуд-трафіку повинен утворитися заслін, який буде швидко переміщати його в сторону істотника.
 
  
 
== Список використаних джерел: ==
 
== Список використаних джерел: ==
1. http://ru.wikipedia.org/wiki/DoS-атака
+
1. http://uk.wikipedia.org/wiki/
<br>2. http://systemnews.com.ru/?mod=art&part=other&id=020
+
<br>2. http://www.kriptolog.net/blog/shifr-vernama
<br>3. http://www.xakep.ru/post/49752/
+
<br>3. http://cadzone.ru/content/view/1382/48/

Поточна версія на 21:34, 7 квітня 2010

Презентація доповіді (університетський репозиторій)

Опис

      Для відтворення шифртексту відкритий текст об'єднується операцією «виключне АБО» з ключем(названим одноразовим блокнотом або шифроблокнотом). При цьому ключ повинен володіти трьома критично важливими властивостями:
          1. Бути справді випадковим;
          2. Збігатися з розміром з заданим відкритим текстом;
          3. Застосовуватися тільки один раз.
      Шифр названий на честь телеграфіста AT&T Гільберта Вернама, що в 1917 році побудував телеграфний апарат, який виконував цю операцію автоматично - треба було тільки подати на нього стрічку з ключем. Не будучи шифрувальником, тим не менше, Вернам вірно помітив важливу властивість свого шифру - кожна стрічка повинна використовуватися тільки один раз і після цього знищуватися. Це було важко застосувати на практиці - тому апарат був перероблений на кілька зациклених стрічок з взаємно простими періодами.


Властивості

      В 1949 році Клод Шеннон опублікував роботу, в якій довів абсолютну стійкість шифру Вернама. Інших шифрів з цією властивістю не існує. Це по суті означає, що шифр Вернама є найбезпечнішою криптосистемою з усіх можливих. При цьому умови, яким повинен задовольняти ключ, настільки сильні, що практичне використання шифру Вернама є важко здійсненним. Тому він використовується тільки для передачі повідомлень найвищої секретності.


Розвиток

      На початку 20 ст. для передачі повідомлень все ширше і ширше використовувалися телетайпи. Тому потрібні були методи, що дозволяють шифрувати текст не до того, як він потрапляє до телеграфіста, а безпосередньо в момент передачі, і, відповідно, розшифровувати в момент прийому. Дуже хотілося доручити цю справу машині. Як виявилося, коливання струму в лінії передачі можна легко записати за допомогою осцилографа і потім перетворити у літери переданого повідомлення. Змінивши з'єднання проводів телетайпа, телеграфісти отримували повідомлення, зашифроване методом одноалфавітной заміни. Всі розуміли, що такий захист надто слабкий, але, не зумівши вигадати нічого іншого, користувалися ним до тих самих пір, поки Вернам не запропонував використовувати для кодування повідомлень особливості телетайпного коду, в якому знак, що кодується виражається у вигляді п'яти елементів. Кожен з цих елементів символізує наявність («плюс») або відсутність («мінус») електричного струму в лінії зв'язку. Наприклад, літера «А» відповідає комбінація «+ - - - -». Підготовлене до відправки повідомлення набивається на перфострічці: отвору відповідає «плюс» коду, його відсутність - «мінус». В процесі передачі металеві щупи телетайпа проходять через отвори, замикаючись у ланцюг, і посилають імпульси струму («+»). Там, де отворів немає і папір не дозволяє щупам замкнути ланцюг, імпульс не передається («-»).       Для шифрування Вернам запропонував заздалегідь готувати «гаму» - перфострічку з випадковими знаками - і потім електромеханічно складати її імпульси з імпульсами знаків відкритого тексту. Отримана сума представляла собою шифртекст. На приймальному кінці імпульси, отримані по каналу зв'язку, складалися з імпульсами тієї ж самої «гами», в результаті чого відновлювалися вихідні імпульси повідомлення. А якщо повідомлення перехоплювати, то без «гами» розшифрувати його було неможливо, противник бачив тільки нічого не значущу послідовність «плюсів» і «мінусів».
      Подальше вдосконалення методу, запропонованого Вернамом, належить майбутньому начальнику зв'язку військ США Джозеф Моборну, що об'єднав хаотичність «гами», на яку спирався Вернам у своїй системі «автоматичного шифрування», з використовуваним у той час у військах правилом «одноразового шифрблокнота». Ідея Моборна полягала в тому, що кожна випадкова «гама» повинна використовуватися один, і тільки один раз. При цьому для шифрування кожного знака всіх текстів, які вже передані або будуть передані в найближчому майбутньому, повинен застосовуватися абсолютно новий і такий, що не піддається передбаченню знак «гами».


Область застосування

      На практиці можна один раз фізично передати носій інформації з довгим дійсно випадковим ключем, а потім по мірі необхідності пересилати повідомлення. На цьому заснована ідея шифроблокнотів: шифрувальник при особистій зустрічі забезпечується блокнотом, кожна сторінка якого містить ключ. Такий же блокнот є і у приймаючої сторони. Використані сторінки знищуються.
      Крім того, якщо є два незалежних канали, в кожному з яких ймовірність перехоплення низька, але відрізняється від нуля, шифр Вернама також можна застосувати: по одному каналу можна передати зашифроване повідомлення, по другому - ключ. Для того, щоб розшифрувати повідомлення, перехоплювач повинен прослуховувати обидва канали.
      Шифр Вернама може застосовуватися, якщо є односторонній захищений канал: ключ передається в одну сторону під захистом каналу, повідомлення в іншу сторону повідомлення захищаються ключем. Не є шифром Вернама, але близька до нього схема одноразових кодів: наприклад, кодове слово «Альфа» означає «Повертаюсь».


Технічне застосування

      У період між двома світовими війнами в більшості країн з'являються електромеханічні шифратори. Вони були двох типів. Перший - пристрій, що складається з комутаційних дисків та механізму зміни їх кутових положень. За обома сторонами комутаційного диска розміщені контакти, відповідні алфавіту відкритого та шифрованого тексту. Контакти ці з'єднуються між собою відповідно до деякого правила підстановки, що зветься комутацією диска. Ця комутація визначає заміну літер в початковому кутовому положенні. При зміні кутового положення диска змінюється і правило підстановки. Таким чином, ключ шифрування містить кілька невідомих: схему з'єднання контактів і початкове кутове положення. Якщо після шифрування кожної літери міняти кутове положення диска - отримаємо многоалфавітное шифрування. Ще більш складний пристрій отримаємо, з'єднавши послідовно кілька дисків, кутові положення яких змінюються з різною швидкістю.
      Широко відома шифрмашина «Енігма», якою були оснащені німецькі війська часів Другої світової війни, є типовим прикладом пристрою на комутаційних дисках. Конструктивно «Енігма» походила на звичайну друкарську машинку, тільки натискання клавіші призводило не до удару молоточка по папері, а створювало електричний імпульс, що надходив у схему криптоперетворення. Американська шифрмашина М-209 - типовий приклад другого типу шифратора, - шифратора на цівочних дисках.
      Цікаво, що Радянський Союз виробляв шифрмашини обох названих типів.
      Таким чином, перед Другою світовою війною всі провідні країни мали на озброєнні електромеханічні шифрсистеми, що володіють високою швидкістю обробки інформації і високою стійкістю. Вважалося, що застосовувані системи неможливо розшифрувати і криптоаналізу більше робити абсолютно нічого. Як часто буває, ця думка була згодом спростована, і дешифровщики були безпосередніми учасниками бойових дій.


Переваги

      Завдяки накладеним обмеженням на ключ, в 1949 році Клод Шенон довів, що шифр Вернама є абсолютно криптостійким.


Недоліки


      1. Для роботи шифру Вернама необхідна дійсно випадкова послідовність нулів та одиниць (ключ). За визначенням, послідовність, отримана з використанням будь-якого алгоритму, є не зовсім випадковою, а псевдовипадковою. Тобто, потрібно отримати випадкову послідовність неалгорітмічно (наприклад, використовуючи радіоактивний розпад ядер, створений електронним генератором білий шум або інші досить випадкові події). Щоб зробити розподіл гранично близьким до рівномірного, випадкову послідовність зазвичай проганяються через хеш-функцію на кшталт MD5.
      2. Проблемою є таємна передача послідовності та збереження її в таємниці. Якщо існує надійно захищений від перехоплення канал передачі повідомлень, шифри взагалі не потрібні: секретні повідомлення можна передавати з цього каналу. Якщо ж передавати ключ системи Вернама за допомогою іншого шифру (наприклад, DES), то отриманий шифр буде захищеним рівно настільки, наскільки захищений DES. При цьому, оскільки довжина ключа така ж, як і довжина повідомлення, передати його не простіше, ніж повідомлення. Шифроблокнот на фізичному носії можна вкрасти або скопіювати.
      3. Можливі проблеми з надійним знищенням використаної сторінки. Цьому схильні як паперові сторінки блокнота, так і сучасні електронні реалізації з використанням компакт-дисків або флеш-пам'яті.
      4. Якщо третя сторона якимось чином дізнається повідомлення, вона легко відновить ключ і зможе підмінити повідомлення на інше такої ж довжини.
      5. Шифр Вернама чутливий до будь-якого порушення процедури шифрування. Наприклад, контррозвідка США часто розшифровувала радянські та німецькі послання із-за неточностей генератора випадкових чисел (програмний генератор псевдовипадкових чисел у німців і друкарка, що б'є по клавішах, в СРСР). Бували випадки, коли одна і та ж сторінка блокнота застосовувалася двічі - США також розшифровувати такі послання.
      Тим не менш, схема шифроблокнотів досить надійна при ручній шифровці. Перераховані вище недоліки можна усунути, якщо застосувати квантову криптографію, зокрема, протокол BB84 для генерації та передачі одноразових блокнотів. У разі використання квантової криптографії шифр Вернама також буде досить надійним.


Усунення недоліків


      Всі вищеперераховані недоліки можна також усунути, якщо застосовувати квантову криптографію, в тому числі, протокол BB84 для генерації і передачі одноразових блокнотів. У випадку використання квантової криптографії шифр Вернама також будет достатньо надійним.
      Квантова криптографія - метод захисту комунікацій, що базується на певних явищах квантової фізики. Процес відправки і прийому інформації завжди виконується фізичними засобами, наприклад за допомогою електронів в електричному струмі, або фотонів в лініях волоконно-оптичного зв'язку.
      Технологія квантової криптографії спирається на принципову невизначеність поведінки квантової системи - неможливо одночасно отримати координати і імпульс частинки, неможливо виміряти один параметр фотонів, не спотворить інший. Це фундаментальне властивість природи у фізиці відомо як принцип невизначеності Гейзенберга, сформульований у 1927р.
      Використовуючи квантові явища, можна спроектувати і створити таку систему зв'язку, яка завжди може виявляти підслуховування. Це забезпечується тим, що спроба вимірювання взаємопов'язаних параметрів у квантовій системі вносить до неї порушення, руйнуючи вихідні сигнали.


Висновки


      Шифр Вернама найбільш надійним серед собі подібних, що забезпечується:
      1. Абсолютною крипкостійтістю.
      2. Навіть якщо підбирати ключ методом перебору, то якщо врахувати, що на кожен символ повідомлення припадає 8 біт(0 і 1), ми шифруємо повідомлення обємом 1 КБ, шифроване повідомлення – ~8 КБ, тобто більше 8000 символів. Для підбору ключа потрібно виконати 2^8000!!! операцій підстановки.
      Він має ряд недоліків:
      - Взамін на абсолютну стійкість цей метод потребує надто великих обрахунків, що не завжди виправдано. Іноді достатньо забезпечити криптостійкість на деякий час. Як говорив Остап Бендер: «Мені не потрібна вічна голка для примуса, я не планую жити вічно».


Список використаних джерел:

1. http://uk.wikipedia.org/wiki/
2. http://www.kriptolog.net/blog/shifr-vernama
3. http://cadzone.ru/content/view/1382/48/