• По всьому сайту
  • Текстові сторінки
  • Каталог товарів
  • Новини
  • Новини
    • Новини компанії
    • Новини в законодавстві
    • Новини галузі
  • Про компанiю
    • Місія компанії
    • Структура компанії
    • Персонал
    • Ліцензії і сертифікати
  • Послуги
    • ІТ-аутсорсинг
    • АЦСК
    • Розробка
      • Програмне забезпечення
      • Апаратне забезпечення
    • Консалтинг
    • Тематичні дослідження
    • Anonymizer
  • Продукти
    • TOP 3
      • Social Card
      • Smart Reader Platform
      • PAC Crypto Reader
    • Програмні
      • Secure Virtual Drive
      • Crypto Library
      • CryptoPhone
      • CryptoIM
    • Апаратні
      • IP-шифратор
      • cmToken
      • SAM Hierarchy
  • Магазин
    • Замовлення
  • Кар'єра
    • Вакансії
    • Персонал
  • Криптологія
    • Симетрична криптографія
      • Блокові симетричні шифри
      • Потокові симетричні шифри
      • Геш-функції
    • Асиметрична криптографія
      • Направлене шифрування
      • Виробка спільної таємниці
      • Електронний цифровий підпис
    • Криптоаналіз
    • Публікації
    • Термінологія
  • Контакти
    У розділі
    Блокові симетричні шифри
    Потокові симетричні шифри
    Геш-функції
    Блокові симетричні шифри

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

    Z = Enсrypt(X, Кеу) і

    X = Deсrypt(Z, Кеу)

    Ключ Кеу - це параметр блокового криптоалгоритму -  блок двійкової інформації фіксованого розміру. Вихідний (XT) і зашифрований (ZC) блоки даних також мають фіксовану розрядність, рівну між собою, але не обов'язково рівну довжині ключа.

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

    Наступні розробки всесвітньо визнані стійкими алгоритмами і публікацій щодо універсальних методи їх злому в засобах масової інформації на поточний момент не зустрічалося:

    Назва алгоритму Автор Розмір блоку Довжина ключа
    IDEA Xuejia Lia and James Massey 64 біта 128 біт
    CAST128   64 біта 128 біт
    BlowFish Bruce Schneier 64 біта 128 – 448 біт
    ГОСТ НИИ *** 64 біта 256 біт
    TwoFish Bruce Schneier 128 біт 128 – 256 біт
    MARS Корпорація IBM 128 біт 128 – 1048 біт

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

    Так, відповідно з теорією вірогідності шуканий ключ буде знайдений з вірогідністю 1/2 після перебору половини всіх ключів, отже, на злом ідеально стійкого криптоалгоритму з ключем довжини N буде потрібно в середньому 2N-1 перевірок. Таким чином, в загальному випадку стійкість блокового шифру залежить лише від довжини ключа і зростає експоненціально. Навіть передбачивши, що перебір ключів здійснюється на спеціально створеній багатопроцесорній системі, в якій завдяки діагональному паралелізму на перевірку 1 ключа задіяний лише 1 такт, то на злом 128 бітового ключа сучасній техніці буде потрібно не менше 1021 року. Зрозуміло, що все сказане відноситься лише до ідеально стійких шифрів.

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

    Можна сказати, що на функцію стійкого блокового шифру C=Enсrypt(T,Key) накладаються наступні умови:

    • Функція Encrypt має бути оборотною.
    • Не повинно існувати інших методів прочитання повідомлення T по відомому блоку C, окрім як повним перебором ключів Кеу.
    • Не повинно існувати інших методів визначення яким ключем Кеу було вироблено перетворення відомого повідомлення T в повідомлення C, окрім як повним перебором ключів.

    Нижче представлені методи, за допомогою яких розробники блокових криптоалгоритмів намагаються одночасно виконати ці три умови з дуже великою часткою достовірності. Всі дії, проведені над вхідними даними блочного криптоалгоритму, засновані на тому факті, що перетворюваний блок може бути представлений у вигляді цілого ненегативного числа з діапазону, відповідного його розрядності. Так, наприклад, 32-бітовий блок даних можна інтерпретувати як число з діапазону 0..4'294'967'295. Крім того, блок, розрядність якого зазвичай є "ступенем двійки", можна трактувати як кілька незалежних ненегативних чисел з меншого діапазону (розглянутий вище 32-бітовий блок можна також представити у вигляді 2 незалежних чисел з діапазону 0..65535 або у вигляді 4 незалежних чисел з діапазону 0..255).

    Над цими числами блоковим криптоалгоритмом виконуються за певною схемою наступні дії (зліва – умовні позначення цих операцій на графічних схемах алгоритмів):

    Бієктивні математичні функції

    сложение

    Додавання X'=X+V

    Исключающее ИЛИ

    Виключне АБО X'=X XOR V
      Множення по модулю 2N+1 X'=(X*V) mod (2N+1)

    Умножение по модулю 2N

    Множення по модулю 2N X'=(X*V) mod (2N)

    Бітові зсуви

    Арифметический сдвиг влево

    Арифметичний зсув вліво X'=X SHL V

    Арифметический сдвиг вправо

    Арифметичний зсув вправо X'=X SHR V

    Циклический сдвиг влево

    Циклічний зсув вліво X'=X ROL V

    Циклический сдвиг вправо

    Циклічний зсув вправо X'=X ROR V

    Табличні підстановки

    S-box

    S-box (англ. substitute) X'=Table[X,V]

    Як параметр V для будь-якого з цих перетворень може використовуватися:

    • фіксоване число (наприклад, X'=X+125)
    • число, що отримується з ключа (наприклад, X'=X+F(Key))
    • число, що отримується з незалежної частини блоку (наприклад, X2'=X2+F(X1)).

    Останній варіант використовується в схемі, що названа на ім'я її творця ланцюгами Фейстеля (нім. Feistel).  Характерною ознакою блокових алгоритмів є багатократне і непряме використання матеріалу ключа. Це диктується в першу чергу вимогою неможливості зворотної дешифровки відносно ключа при відомих вихідному і зашифрованому текстах. Для вирішення цього завдання в приведених вище перетвореннях найчастіше використовується не само значення ключа або його частини, а деяка, інколи необоротна (небієктивна) функція від матеріалу ключа. Більш того, в подібних перетвореннях один і той самий блок або елемент ключа використовується багато разів. Це дозволяє, при виконанні умови оборотності функції відносно величини T, зробити функцію необоротною відносно ключа Кеу.

    Оскільки операція зашифровування або розшифровки окремого блоку в процесі шифрування пакету інформації виконується багато разів (інколи до сотень тисяч разів), а значення ключа та, відповідно, функцій Vi(Кеу) залишається незмінним, то інколи стає доцільно заздалегідь однократно обчислити дані значення і зберігати їх в оперативній пам'яті разом із ключем. Оскільки ці значення залежать лише від ключа, то вони в криптографії називаються матеріалом ключа. Необхідно відзначити, що дана операція жодним чином не змінює ні довжину ключа, ні крипостійкість алгоритму в цілому. Тут відбувається лише оптимізація швидкості обчислень шляхом кешування (англ. caching) проміжних результатів. Описані дії зустрічаються в багатьох блокових криптоалгоритмах і носять назву «розширення ключа» (англ. key scheduling).

    ← Повернутися
    -- -- - - - - - - -- - - - - -- - -- - - - - - -- - -- - - - - - - - - -- ------------ ---- -- - -- - - - - -- - - -- - - -- - - - - -- - -- - - - - - - -- - - - - -- -- --- -- --- -- --
    НовиниПро компанiюПослугиПродуктиМагазинКар'єраКриптологіяКонтакти
    Копiрайт © 2009 ТОВ «Криптомаш». Усi права захищенi.
    Разробка: Rireg.net