Хешування і захист інформації
User Rating: / 15
PoorBest 
There are no translations available.

Хешування і захист інформаціїХешування (англ. hashing) - перетворення вхідного масиву даних довільної довжини в вихідну бітову послідовність фіксованої довжини, яку можна використати для порівняння даних.
Такі перетворення також називаються хеш-функціями або функціями згортки, а їх результати називають хешем, хеш-кодом або дайджестом повідомлення (англ. message digest - MD).
Розрахувати значення хеш-функції, або спробувати знайти пароль за значенням хеш-функції можна, наприклад, за допомогою ресурсу passcracking.ru:
Розрахунок значення хеш-функції
Хешування застосовується для порівняння даних: якщо у двох масивах хеш-коди різні, масиви гарантовано розрізняються; якщо однакові - масиви, швидше за все, однакові. У загальному випадку однозначної відповідності між вихідними даними і хеш-кодом немає в силу того, що кількість значень хеш-функцій менше, ніж варіантів вхідного масиву; існує безліч масивів, які дають однакові хеш-коди - так звані колізії. Ймовірність виникнення колізій відіграє важливу роль в оцінці якості хеш-функцій.
Існує безліч алгоритмів хешування з різними характеристиками (розрядність, обчислювальна складність, крипостійкість і т. п.). Вибір тієї чи іншої хеш-функції визначається специфікою розв'язуваної задачі. Найпростішими прикладами хеш-функцій може служити контрольна сума або CRC.
Контрольні суми
Нескладні, вкрай швидкі й легко реалізовані апаратні алгоритми, використовувані для захисту від ненавмисних спотворень, в тому числі помилок апаратури. За швидкістю обчислення в десятки і сотні разів швидші, ніж криптографічні хеш-функції, і значно простіші в апаратній реалізації.
Платою за таку високу швидкість є відсутність криптостійкості - легка можливість підігнати повідомлення під заздалегідь відому суму. Також зазвичай розрядність контрольних сум (типове число: 32 біта) нижче, ніж криптографічних хешей (типові числа: 128, 160 і 256 біт), що означає можливість виникнення ненавмисних колізій.
Найпростішим випадком такого алгоритму є розподіл повідомлення на 32 - або 16 - бітні слова і їх підсумовування, що застосовується, наприклад, в TCP/IP.
Як правило, до такого алгоритму пред'являються вимоги відстеження типових апаратних помилок, таких, як кілька поспіль помилкових біт до заданої довжини. Сімейство алгоритмів та ін. «Циклічні надлишкові коди» задовольняють цим вимогам. До них відноситься, наприклад, CRC32, застосовуваний в апаратурі Ethernet і у форматі упакованих файлів ZIP.
Криптографічні хеш-функції
Серед безлічі існуючих хеш-функцій прийнято виділяти криптографічно стійкі, які застосовуються в криптографії. Для того, щоб хеш-функція H вважалася криптографічно стійкою, вона повинна задовольняти трьом основним вимогам, на яких засновано більшість застосувань хеш-функцій в криптографії:
  1. Незворотність: для заданого значення хеш-функції m повинно бути обчислювально нездійсненно знайти блок даних X, для якого H (X) = m.
  2. Стійкість до колізій першого роду: для заданого повідомлення M повинно бути обчислювально нездійсненно підібрати інше повідомлення N, для якого H (N) = H (M).
  3. Стійкість до колізій другого роду: має бути обчислювально нездійсненно підібрати пару повідомлень  (M, M'), що мають однаковий хеш.
Дані вимоги не є незалежними:
  1. Оборотна функція нестійка до колізій першого і другого роду.
  2. Функція, нестійка до колізій першого роду, нестійка до колізій другого роду; зворотне невірно.
Варто зазначити, що не доведено існування необоротних хеш-функцій, для яких обчислення будь-якого прообразу заданого значення хеш-функції теоретично неможливо. Зазвичай знаходження зворотного значення є лише обчислювально складним завданням.

Атака «днів народження» дозволяє знаходити колізії для хеш-функції з довжиною значень n бітів в середньому за приблизно 2n/2 обчислень хеш-функції. Тому n-бітова хеш-функція вважається криптостійкою, якщо обчислювальна складність перебування колізій для неї близька до 2n/2 .

Для криптографічних хеш-функцій також важливо, щоб при найменшій зміні аргументу значення функції сильно змінювалося (лавинний ефект). Зокрема, значення хешу не повинно давати витоку інформації навіть для окремих бітів аргументу. Ця вимога є запорукою криптостійкості алгоритмів хешування, які хешують пароль користувача для отримання ключа.
Застосування хеш-функцій
Хеш-функції також використовуються в деяких структурах даних - хеш-таблицяx, фільтрах Блума і декартових деревах. Вимоги до хеш-функції в цьому разі інші:
  • хороша перемішуваність даних
  • швидкий алгоритм обчислення
Перевірка даних
У загальному випадку це застосування можна описати, як перевірка деякою інформацією на ідентичність оригіналу, без використання оригіналу. Для звірки використовується хеш-значення перевіреній інформації. Розрізняють два основні напрямки цього застосування:
  • Перевірка на наявність помилок
Наприклад, контрольна сума може бути передана каналом зв'язку разом з основним текстом. На приймальному кінці контрольна сума може бути розрахована наново і її можна порівняти з переданим значенням. Якщо буде виявлена розбіжність, то це означає, що при передачі виникли спотворення і можна запросити повтор.
Побутовим аналогом хешування в даному випадку може служити прийом, коли при переїздах у пам'яті тримають кількість місць багажу. Тоді для перевірки не потрібно згадувати про кожну валізу, а досить їх порахувати. Збіг буде означати, що жодної валізи не втрачено. Подібний метод використовується у пірингових мережах для перевірки скачаного файлу на помилки:
Перевірка скачаного файлу на помилки
Даний метод легко доповнити до захисту від фальсифікації переданої інформації (метод MAC). У цьому випадку хешування проводиться криптостійкою функцією над повідомленням, об'єднаним з секретним ключем, відомим тільки відправнику і одержувачу повідомлення. Таким чином, криптоаналітик не зможе відновити код, за перехоплених повідомлень і значенням хеш-функції, тобто, не зможе підробити повідомлення.
  • Прискорення пошуку даних
Наприклад, під час запису текстових полів у базі даних може розраховуватися їх хеш-код і дані можуть міститися в розділі, що відповідає цій хеш-функції. Тоді при пошуку даних треба буде спочатку обчислити хеш-код тексту і відразу стане відомо, в якому розділі його треба шукати, тобто, шукати треба буде не серед усієї бази, а лише в одному її розділі (це сильно прискорює пошук).
Побутовим аналогом хешування в даному випадку може служити розміщення слів у словнику за алфавітом. Перша літера слова є його хеш-кодом і при пошуку ми переглядаємо не весь словник, а тільки потрібну літеру.
Місцезнаходження хешів
На Вашому комп’ютері містяться хеші паролів доступу до системи всіх користувачів. В системі Windows XP їх можна подивитися в наступному файлі:
C:\windows\system32\config\SAM
Цей файл шифрується утилітою syskey для покращення захисту паролів. Інформація для розшифрування паролів знаходиться в папці:
C:\windows\system\config\
Ці папки недоступні жодному з користувачів. Доступ до них має тільки операційна система під час роботи, але переглянути їх можна за допомогою деяких програм (які вміють робити копії файлів – так звані „дампи”), або в тому випадку коли на комп’ютері завантажена інша операційна система.
Злом хешів
Сьогодні для зберігання паролів, практично в усіх операцийних системах та інших програмних продуктах і інтернет-ресурсах, використовуються хеш. Найпоширенішими алгоритми хешування в таких системах є: LM, NTLM, MD5, SHA1, MYSQLSHA1, HALFLMCHALL, NTLMCHALL, ORACLE-SYSTEM, MD5-HALF. Перші два з наведених алгоритма використовуються операційною системою Windowsдля зберігання паролів користувача. MD5, SHA1 на сьогодні є найстійкішими криптографічними хешами, і можуть використовуватися в різноманітних системах доступу. Область застосування інших алгоритмів зрозуміла з їх назви.
В Мережі можна відшукати босить багато онлай сервісів, що дозволяють зламувати хеші. Одним з них є вже згаданий сервіс відновлення паролів passcracking.ru.
Спробуємо відкрити наш нещодавно вирахований хеш MD5 для слова “aaa”
Відкривання хеша MD5
Список найбільш популярних on-lineресурсів для злому хешів:
Отже ми бачимо, що злом хешів є чи не найголовнішою задачею для злому систем.
Для цього хакери використовують 3 основні підходи:
1. Метод грубої сили (від. англ. Brute-force). Під цим методом розуміють послідовний перебір всих можливих комбінацій біт, поки не буде знайдена потрібна. Цей підхід, теоретично, дозволяє відшукати пароль будь-якої складності, але він має один значний недолік – час. Наприклад, для злому пароля, який складається лише з малих латинських літер та цифр, при швидкості перебору 100000 паролей за секунду буде потрібно:
Кількість знаків
Кількість варіантів
Час перебору
1
36
менше секунди
2
1296
менше секунди
3
46 656
менше секунди
4
1 679 616
17 секунд
5
60 466 176
10 хвилин
6
2 176 782 336
6 годин
7
78 364 164 096
9 днів
8
2,821 109 9x1012
11 місяців
9
1,015 599 5x1014
32 роки
10
3,656 158 4x1015
1 162 років
11
1,316 217 0x1017
41 823 роки
12
4,738 381 3x1018
1 505 615 років
Цей метод отримав новий наплив прихильників, після появи, так званих бот-нетів – хакерських росподілених систем обчислення. Якщо в такому ботнеті буде 10 комп’ютерів, що одночасно зламують один і той самий пароль – то і час відповідно скоротиться в 10 разів! Очевидно, що цей екстенсивний метод, все-одно, прийнятний лише для паролів довжиною до 12 символів.
Зовсім недавно подібним чином був продемонстрував "хмарний" софт для злому WiFi-мереж, коли хакер використав нові можливості, надані Інтернетом.
2. Метод перебору за словником:на сьогодні- найпоширеніший метод взлому. Цей метод, як і попередній, послідовно перебирає паролі, але робить це не всліпу (всі можливі комбінації), а за списком можливих комбінацій – словником. Найчастіше захиститися від такого методу можна використовуючи паролі, що не мають відповідності з словами будь-якої мови. Крім того, не підходить для створення пароля і такий підхід, як набір слова на іншій розкладці клавіатури, чи стандартна транслітерація. Ці підходи на сьогодні досить відомі і в найкращому випадку лише затримають зловмисники, але не зупинять.
3. Метод Reinbow: (офіційний сайт project-rainbowcrack.com) - цей метод є різновидом методу грубої сили. Під час злому пароля не просто перебираються всі можливі комбінації, а й зберігаються паролі, які не підходять, в файл. Таке архівування паролів дозволяє досить швидко відшукати потрібний пароль, якщо він хоча б один раз був згенерований системою злому.
Використання методу Reinbow
Але такий метод крім досить великого часу, вимагає ще й гігабайти пам’яті для зберігання паролів, але надає можливість використати затрачений машинний час неодноразово.
Користуючись можливістю, хочу дати пораду:
  • завжди використовуйте стійкі паролі довжиною не менше 8 символів різного регістру, спеціальні символи та цифри. Це значно затримає злом, і захистить Вашу інформацію.
  • досить корисно буде використати в якості першої літери символ з середини алфавіту – це затримає злом методом грубої сили, так-як пароль типу 00000000 зламується миттєво будь яким методом, бо він перший! Наприклад, надійним паролем буде щось на зразок «к%гЦ4Р*у!Й».
  • не забувайте змінювати свої паролі хоча б раз на місяць і не використовувати однакові паролі для доступу в різні системи.
Автор Антон Часник, магістрант НТУУ “КПІ”
 
>
BookNewsPractice SearchPartnersAbout
Підтримка та дизайн: Могильний С.С. Шаблон: Joomla Templates by BuyHTTP Joomla Hosting