Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методи та засоби захисту інформації.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
246.27 Кб
Скачать

Кодування інформації. Архівація. Стеганографія.

Код - це набір умовних позначень (або сигналів) для запису (або передачі) деяких заздалегідь визначених понять. Кодування інформації - це процес формування певного представлення інформації. У більш вузькому розумінні під терміном «кодування» часто розуміють перехід від однієї форми подання інформації до іншої, більш зручною для зберігання, передачі або обробки. Зазвичай кожен образ при кодуванні (іноді кажуть - шифровці) поданні окремим знаком. Знак - це елемент кінцевого безлічі відмінних один від одного елементів. В більш вузькому значенні під терміном "кодування" часто розуміють перехід від однієї форми подання інформації до іншої, більш зручною для зберігання, передачі або обробки. Комп'ютер може обробляти тільки інформацію, представлену в числовий формі. Вся інша інформація (наприклад, звуки, зображення, показання приладів і т. д.) для обробки на комп'ютері повинна бути перетворена в числову форму. Наприклад, щоб перевести в числову форму музичний звук, можна через невеликі проміжки часу вимірювати інтенсивність звуку на певних частотах, представляючи результати кожного виміру в числовий формі. За допомогою програм для комп'ютера можна виконати перетворення отриманої інформації, наприклад "накласти" один на одного звуки від різних джерел. Аналогічним чином на комп'ютері можна обробляти текстову інформацію. При введенні в комп'ютер кожна буква кодується певним числом, а при виведенні на зовнішні пристрої (екран або друк) для сприйняття людиною по цих числах будуються зображення літер. Відповідність між набором літер і числами називається кодуванням символів. Як правило, всі числа в комп'ютері представлені за допомогою нулів та одиниць (а не десяти цифр, як це звично для людей). Іншими словами, комп'ютери зазвичай працюють у двійковій системі числення, оскільки при цьому пристрої для їх обробки виходять значно простішими. Введення чисел в комп'ютер і висновок їх для зручності людини, може здійснюватися у звичній десяткового формі, а всі необхідні перетворення виконують програми, що працюють на комп'ютері. Одна і та ж інформація може бути представлена (закодована) в декількох формах. C появою комп'ютерів виникла необхідність кодування всіх видів інформації, з якими має справу і окрема людина, і людство в цілому. Але вирішувати завдання кодування інформації людство почало задовго до появи комп'ютерів. Грандіозні досягнення людства - писемність і арифметика - є не що інше, як система кодування мови і числовий інформації. Інформація ніколи не з'являється в чистому вигляді, вона завжди якось представлена, як-то закодована. Двійкове кодування - один з розповсюджених способів подання інформації. У обчислювальних машинах, у роботах і верстатах з числовим програмним керуванням, як правило, вся інформація, з якою має справу пристрій, кодується у вигляді слів двійкового алфавіту. Основна операція, яка виробляється над окремими символами тексту - порівняння символів. При порівнянні символів найбільш важливими аспектами є унікальність коду для кожного символу і довжина цього коду, а сам вибір принципу кодування практично не має значення. Для кодування текстів використовуються різні таблиці перекодування. Важливо, щоб при кодуванні і декодуванні одного і того ж тексту використовувалася одна і та ж таблиця. Таблиця перекодування - таблиця, що містить впорядкований певним чином перелік кодованих символів, відповідно до якої відбувається перетворення символу в його двійковий код і назад. Найбільш популярні таблиці перекодування: ДКОІ-8, ASCII, CP1251, Unicode. Історично склалося, що в якості довжини коду для кодування символів було обрано 8 біт або 1 байт. Тому найчастіше одному символу тексту, що зберігається в комп'ютері, відповідає один байт пам'яті. Різних комбінацій з 0 і 1 при довжині коду 8 біт може бути 28 = 256, тому за допомогою однієї таблиці перекодування можна закодувати не більше 256 символів. При довжині коду в 2 байти (16 біт) можна закодувати 65536 символів. Подібність в кодуванні числової і текстової інформації полягає в наступному: щоб можна було порівнювати дані цього типу, у різних чисел (як і у різних символів) повинен бути різний код. Основна відмінність числових даних від символьних полягає в тому, що над числами крім операції порівняння виробляються різноманітні математичні операції: додавання, множення, добування кореня, обчислення логарифма та ін Правила виконання цих операцій в математиці детально розроблені для чисел, представлених в позиційній системі числення. Основною системою числення для подання чисел в комп'ютері є двійкова позиційна система числення. Під архівацією розуміють стиснення даних. Стиснення даних — це процедура перекодування даних, яка проводиться з метою зменшення їх об'єму, розміру, обсягу. Стиснення буває без втрат (коли можливе відновлення вихідних даних без спотворень) або з втратами (відновлення можливе з незначними спотвореннями). Стиснення без втрат використовується при обробці та збереженні комп'ютерних програм і даних. Стиснення з втратами зазвичай застосовується для зменшення об'єму звукової, фото, та відеоінформації. І, як показує практика, стиснення з втратами для такого роду інформації є набагато дієвим. Стиснення базується на видалені надлишку інформації, яка міститься у вихідних даних. Прикладом надлишку є повторення в тексті фрагментів (наприклад, слів природної або машинної мови). Подібний надлишок зазвичай усувається заміною повторюваних послідовностей більш коротким значенням (кодом). Інший вид надлишку пов'язаний з тим, що деякі значення в даних зустрічаються частіше інших. А від так можна замінити дані, що часто зустрічаються більш короткими кодами, а ті, що рідше зустрічаються - більш довгими (ймовірнісне стиснення). Стиснення даних, які не мають властивості надлишку (наприклад випадковий сигнал чи шум), неможливе, зазвичай неможливо стиснути і зашифровану інформацію. Архів — файл, що містить у собі один або декілька файлів та метадані. Файли можуть бути як стиснені (без втрат), так і мати початковий розмір та структуру, але першочергове завдання архіву тримати у собі саме стиснуті файли. Метедані можуть містити інформацію про початковий розмір файлів, інформацію про формат файлів, структуру директорій, коментарі до файлів, інформацію для відновлення архіву і т. д. Архіви файлів створюються за допомогою спеціалізованих програм — архіваторів, які можуть бути як окремими програмами, так і частиною інших програм. Далі буде розглянуто декілька з цих програм. Різновиди архівів поділяються на ті, які складається з одного або декількох файлів і метаданих та на ті, що містять рівно один стиснутий файл. Деякі архіватори та формати архівів об'єднують ці дві функції в довільному порядку — наприклад, 7-Zip, ARJ, ZIP. У таких випадках, якщо стиснення проводиться після об'єднання, архів називається «безперервним». Це дозволяє зменшити розмір отриманого архіву, але ускладнює відновлення при пошкодженні даних. Сам архів може складатися з декількох файлів для полегшення зберігання і перенесення великої кількості даних при обмеження на розмір однієї частини — наприклад, носія даних, або повідомлення e-mail. Такий архів називається «багатотомним». Стеганографія - це наука про приховану передачу інформації шляхом збереження в таємниці самого факту передачі. Головне завдання зробити так, щоб людина не підозрював, що всередині переданої інформації, що не представляє зовні абсолютно ніякої цінності, міститься прихована цінна інформація. Тим самим стеганографія дозволяє передавати секретну інформацію через відкриті канали, приховуючи сам факт її передачі. Криптографія захищає повідомлення, роблячи його марним у разі перехоплення, а стеганографія прагне зробити саму передачу повідомлення прихованою. Криптографія та стеганографія можуть застосовуватися разом: тоді повідомлення спочатку шифрується, а потім таємно передається. Якщо застосовувати криптографію без стеганографії, то залишається ризик, що спостерігач, що перехопив повідомлення, силою змусить відправника або одержувача його розшифрувати. В кінці 90-х років виділилося кілька напрямків стеганографії:

1. Класична стеганографія

2. Комп'ютерна стеганографія

3. Цифрова стеганографія

Одним з найбільш поширених методів класичної стеганографії є ​​використання симпатичних (невидимих) чорнила. Текст, записаний таким чорнилом, виявляється тільки за певних умов (нагрівання, освітлення, хімічний проявник і т. д. Винайдені ще в I столітті н. е. Філоном Александрійським, вони продовжували використовуватися як у середньовіччі, так і в новітній час, наприклад, в листах російських революціонерів з в'язниць. Існують також чорнило з хімічно нестабільним пігментом. Написане цими чорнилом виглядає як написане звичайною ручкою, але через певний час нестабільний пігмент розкладається, і від тексту не залишається і сліду. Хоча при використанні звичайної кулькової ручки текст можна відновити по деформації паперу, цей недолік можна усунути за допомогою м'якого пише вузла, на зразок фломастера. Комп'ютерна стеганографія - напрям класичної стеганографії, засноване на особливостях комп'ютерної платформи. Приклади - стеганографічна файлова система StegFS для Linux, приховування даних у невикористовуваних областях форматів файлів, підміна символів в назвах файлів, текстова стеганографія і т. д. Цифрова стеганографія - напрям класичної стеганографії, засноване на приховуванні або впровадженні додаткової інформації в цифрові об'єкти, викликаючи при цьому деякі спотворення цих об'єктів. Але, як правило, дані об'єкти є мультимедіа-об'єктами (зображення, відео , аудіо, текстури 3D-об'єктів) та внесення спотворень, які знаходяться нижче порога чутливості середньостатистичної людини, не призводить до помітних змін цих об'єктів. Крім того, в оцифрованих об'єктах, спочатку мають аналогову природу, завжди присутній шум квантування; далі, при відтворенні цих об'єктів з'являється додатковий аналоговий шум і нелінійні спотворення апаратури, все це сприяє більшій непомітності прихованої інформації.

Хеш-функції та функції для контролю цілісності. CRC32, SHA-1, MD5.

Хеш-функція — функція, що перетворює вхідні дані будь-якого (як правило, великого) розміру в дані фіксованого розміру. Хешування (англ. hashing) — перетворення вхідного масиву даних довільної довжини у вихідний бітовий рядок фіксованої довжини. Такі перетворення також називаються хеш-функціями або функціями згортки, а їх результати називають хешем, хеш-кодом або дайджестом повідомлення (англ. message digest). Хешування застосовується для порівняння даних: якщо у двох масивів хеш-коди різні, масиви гарантовано розрізняються; якщо однакові - масиви, швидше за все, однакові. У загальному випадку однозначної відповідності між вихідними даними і хеш-кодом немає в силу того, що кількість значень хеш-функцій менше, ніж варіантів вхідного масиву; існує безліч масивів, що дають однакові хеш-коди - так звані колізії. Ймовірність виникнення колізій відіграє важливу роль в оцінці якості хеш-функцій. Існує безліч алгоритмів хешування з різними характеристиками (розрядність, обчислювальна складність, крипостійкість тощо). Вибір тієї чи іншої хеш-функції визначається специфікою розв'язуваної задачі. Найпростішими прикладами хеш-функцій можуть служити контрольна сума або CRC. Криптографічна хеш-функція повинна забезпечувати:

  • стійкість до колізій (два різні набори даних повинні мати різні результати перетворення);

  • необоротність (неможливість обчислити вхідні дані за результатом перетворення).

Хеш-функції також використовуються в деяких структурах даних — хеш-таблицях і декартових деревах. Вимоги до хеш-функції в цьому разі інші:

  • добра перемішуваність даних;

  • швидкий алгоритм обчислення.

Наприклад, під час запису текстових полів в базі даних може розраховуватися їх хеш-код і дані можуть поміщатися в розділ, що відповідає цьому хеш-коду. Тоді при пошуку даних треба буде спочатку обчислити хеш-код тексту і відразу стане відомо, в якому розділі їх треба шукати, тобто, шукати треба буде не по всій базі, а тільки по одному її розділу (це сильно прискорює пошук). Побутовим аналогом хешування в даному випадку може служити розміщення слів у словнику за алфавітом. Перша буква слова є його хеш-кодом, і при пошуку ми переглядаємо не весь словник, а тільки потрібну букву. Шифрування даних саме по собі, не гарантує, що цілісність даних не буде порушена, тому в криптографії використовуються додаткові методи для гарантування цілісності даних. Під порушеннями цілісності даних розуміється наступне: інверсія бітів, додавання нових бітів (зокрема зовсім нових даних) третьою стороною, видалення будь-яких бітів даних, зміна порядку проходження біт або груп біт. У криптографії рішення задачі цілісності інформації передбачає застосування заходів, що дозволяють виявляти не стільки випадкові спотворення інформації, тому що для цієї мети цілком підходять методи теорії кодування з виявленням і виправленням помилок, скільки цілеспрямована зміна інформації активним криптоаналітиків. Процес контролю цілісності забезпечується введенням в передану інформацію надмірності. Це досягається додаванням до повідомлення деякої перевірочної комбінації. Така комбінація обчислюється згідно певними алгоритмами і грає роль індикатора, за допомогою якого перевіряється цілісність повідомлення. Саме цей момент дає можливість перевірити, чи були змінені дані третьою стороною. Ймовірність того, що дані були змінені, служить мірою імітостійкість шифру. Додаткову надмірну інформацію, що вноситься в повідомлення, називають імітовставки. Вироблятися імітовставка може як до початку, так і одночасно з шифруванням повідомлення. CRC32 являє собою підрахунок контрольної суми блоку даних, використовуючи для ініціалізації стандартний поліном 0xEDB88320. Цей алгоритм широко застосовується для підрахунку контрольних сум файлів. Оригінальний текст класу, що забезпечує підрахунок контрольної суми за алгоритмом CRC32 для блоку даних у пам'яті наведено нижче. Ви можете завантажити проект на Visual C + + 7, який реалізує консольний додаток, що застосовує алгоритм до файлів. Робота з алгоритмом проводиться таким чином. Спочатку створюється об'єкт класу crc32. Потім за допомогою виклику функції ProcessCRC підраховують контрольну суму буфера з даними. Якщо всі дані не вмістилися в один буфер, crc вважають в декілька заходів, щоразу викликаючи функцію ProcessCRC для чергового блоку даних. Довжина блоку даних вказується в байтах. Після підрахунку всіх даних у полі m_crc32 міститься контрольна сума. Secure Hash Algorithm 1 - алгоритм криптографічного хешування. Описаний в RFC 3174. Для вхідного повідомлення довільної довжини алгоритм генерує 160-бітове хеш-значення, зване також дайджестом повідомлення. Використовується в багатьох криптографічних додатках і протоколах. Також рекомендований як основного для державних установ у США. Принципи, покладені в основу SHA-1, аналогічні тим, які використовувалися Рональдом Рівестом при проектуванні MD4. SHA-1 реалізує хеш-функцію, побудовану на ідеї функції стиснення. Входами функції стиснення є блок повідомлення довжиною 512 біт і вихід попереднього блоку повідомлення. Вихід являє собою значення всіх хеш-блоків до цього моменту. Іншими словами хеш блоку Мі рівний hi = f(Mi, hi-1). Хеш-значенням всього повідомлення є вихід останнього блоку. Оригінал повідомлення розбивається на блоки по 512 біт в кожному. Останній блок доповнюється до довжини, кратної 512 біт. Спочатку додається 1, а потім нулі, щоб довжина блоку стала рівною (512 - 64 = 448) біт. У залишилися 64 біта записується довжина вихідного повідомлення в бітах. Якщо останній блок має довжину понад 448, але менше 512 біт, то додаток виконується таким чином: спочатку додається 1, потім нулі аж до кінця 512-бітного блоку; після цього створюється ще один 512-бітний блок, який заповнюється аж до 448 біт нулями , після чого в що залишилися 64 біта записується довжина вихідного повідомлення в бітах. Доповнення останнього блоку здійснюється завжди, навіть якщо повідомлення вже має потрібну довжину. MD5 (англ. Message Digest 5) - застарілий і нерекомендовані до використання, 128-бітний алгоритм хешування, розроблений професором Рональдом Л. Рівестом з Массачусетського технологічного інституту (Massachusetts Institute of Technology, MIT) в 1991 році. Призначений для створення «відбитків» або дайджестів повідомлення довільної довжини й наступної перевірки їх автентичності. Програмістам, власникам веб-сайтів, користувачам слід уникати використання MD5 в будь-яких цілях. Альтернативою є алгоритми сімейства SHA-2. Для обробки MD5 отримує деяку рядок. Цей рядок перетвориться в послідовність з нулів та одиниць. Як це робиться? У кожного символу є свій номер. Ці номери можна записати у двійковій системі числення. Виходить, кожен символ можна записати як послідовність нулів і одиниць. Якщо цим скористатися, отримаємо з рядка послідовність з нулів та одиниць. Нехай q буде довжина получившейся послідовності (рівно 64 біта, можливо, з незначущими нулями). До вийшла послідовності приписується 1. У результаті довжина послідовності збільшується на 1. Потім до послідовності приписуються нулі, поки довжина не стане за модулем 512 дорівнює 448 (length mod 512 = 448). Далі до послідовності дописуються молодші 32 біта числа q, а потім - старші. Довжина послідовності стає кратною 512. Отриману послідовність назвемо S. Для підрахунку результату використовуються чотири подвійних слова (32 біта).

22