ДСТУ ISO 10118-1:2003

ДСТУ ISO 10118-1:2003 Інформаційні технології. Методи захисту. Геш-функції. Частина 1. Загальні положення

ПЕРЕДМОВА 1 ВНЕСЕНО: Технічний комітет зі стандартизації «Інформаційні технології» ТК 20 при Держ- споживстандарті України і Міжнародний науково-навчальний центр інформаційних технологій та систем НАН України та Міністерства освіти і науки України ПЕРЕКЛАД І НАУКОВО-ТЕХНІЧНЕ РЕДАГУВАННЯ: А. Анісімов д-р. фіз.-мат. наук керівник розробки ; Т. Кальчук; Є. Осадчий канд.техн.наук; В. Ткаченко; О. Фаль канд. фіз.-мат. наук 2 НАДАНО ЧИННОСТІ: наказ Держспоживстандарту №235 від 16 грудня 2003 р. з 2005-01-01 3 Національний стандарт відповідає ISO/IEC 10118-1:2000 Information technology Security techniques Hash-functions Part 1: General Інформаційні технології. Методи захисту. Геш-функції. Частина 1. Загальні положення Ступінь відповідності ідентичний IDT Переклад з англійської en 4 УВЕДЕНО ВПЕРШЕ ЗМІСТ Національний вступ 1 Сфера застосування 2 Нормативні посилання 3 Терміни та визначення понять 4 Познаки та скорочення 4.1 Загальні познаки 4.2 Познаки використані у цьому стандарті. 4.3 Погодження щодо кодування 5 Вимоги 6 Загальна модель геш-функції 6.1 Процес гешування 6.2 Використовування загальної моделі Додаток А Методи заповнювання Бібліографія НАЦІОНАЛЬНИЙ ВСТУП Цей стандарт є тотожний переклад ISO/IES 10118-1:2000 Information technology Security techniques Hash-functions Part 1: General Інформаційні технології. Методи захисту. Геш-функції. Частина 1. Загальні положення . Основна мета цього стандарту: подати терміни визначення та скорочення які є загальними для всіх частин стандарту ISO/IEC 10118; навести загальні вимоги щодо використовування геш-функцій; описати загальну модель геш-функцій. Відповідальний за ISO/IEC 10118-1:2000 технічний комітет ISO/IEC JTC 1. В Україні відповідальний за цей стандарт технічний комітет зі стандартизації «Інформаційні технології» ТК 20 . Стандарт ISO/IEC 10118 складається із чотирьох частин під загальною назвою Information technology Security techniques Hash-functions Інформаційні технології. Методи захисту. Геш-функції . Цей стандарт описує геш-функції і може бути застосований для реалізації послуг автен-тифікації цілісності та неспростовності. Частини стандарту ISO/IEC 10118 мають такі назви : Part 1: General Частина 1. Загальні положення ; Part 2: Hash-functions using an ?-bit block cipher Частина 2. Геш-функції з використовуван ням л-бітового блокового шифру ; Part 3: Dedicated hash-functions Частина 3. Спеціалізовані геш-функції ; Part 4: Hash-functions using modular arithmetic Частина 4. Геш-функції з використовуванням модульної арифметики . У частині 1 подано загальну модель геш-функцій та описано геш-функцію яка перетворює довільні рядки бітів в рядки бітів фіксованої довжини і методи заповнювання використовувані для обчислювання геш-коду. Ця частина містить визначення познаки скорочення та вимоги спільні для інших частин ISO/IEC 10118. У частині 2 йдеться про геш-функції які базуються на використовуванні ?-бітового блокового алгоритму шифрування. Означено чотири геш-функції які є сумісні з загальною моделлю поданою в ISO/IEC 10118-1. У частині 3 розглянуто спеціалізовані геш-функції. Геш-функції у цій частині ґрунтуються на ітераційному застосуванні раундової функції. Означено три різні раундові функції які використовуються цими спеціалізованими функціями. У частині 4 представлено дві геш-функції які використовують модульну арифметику. Ці геш-функції які вважаються стійкими до колізій стискають повідомлення довільної довжини до геш-коду довжину якого визначають через довжину простого числа використовуваного у раундовій функції. До стандарту внесено такі редакційні зміни: слова «ця частина ISO/IEC 10118» замінено на «цей стандарт»; для зручності користувача долучено розділ «Зміст»; до розділу «Нормативні посилання» долучено «Національне пояснення» яке виділено рамкою; структурні елементи цього стандарту: «Обкладинку» «Передмову» «Національний вступ» «Бібліографічні дані» «Терміни та визначення понять» оформлено згідно з вимогами національної стандартизації України; назву Message Authentication Codes MACs використовують в українському перекладі як Коди автентифікації повідомлення MACs . Додаток А є невід'ємною частиною цього стандарту. Копії міжнародних стандартів не чинних в Україні можна отримати у Головному фонді нормативних документів ДП «УкрНДНЦ». ДСТУISO/IEC 10118-1:2003 НАЦІОНАЛЬНИЙ СТАНДАРТ УКРАЇНИ Інформаційні технології Методи захисту. Геш-функції Частина 1. Загальні положення ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ МЕТОДЫ ЗАЩИТЫ. ХЕШ-ФУНКЦИИ Часть 1. Общие положения INFORMATION TECHNOLOGY SECURITY TECHNIQUES. HASH-FUNCTION Part 1. General Чинний від 2005-01-01 1 СФЕРА ЗАСТОСУВАННЯ Стандарт ISO/IEC 10118 описує геш-функції і отже може бути застосований для забезпечення послуг автентифікації цілісності та неспростовності. Геш-функції перетворюють довільні рядки бітів у рядки бітів фіксованої довжини використовуючи означений алгоритм їх можна використовувати для скорочення повідомлення до короткого відбитку що є вхідною величиною до механізму цифрового підпису і прив'язування користувача з заданим рядком бітів не розкриваючи цього рядка. Примітка. Геш-функції подані у цьому стандарті не містять в собі використовування секретних ключів. Проте ці геш-функції разом з секретними ключами можуть бути використані для створювання кодів автентифікації повідомлень. Коди автентифікації повідомлення MACs забезпечують автентифікацію джерела повідомлень в доповнення до цілісності повідомлення. Що стосується обчислення МАС користувачеві слід звернутися до ISO/IEC 9797. Цей стандарт містить визначення познаки скорочення та вимоги що є спільними для всіх інших частин ISO/IEC 10118. 2 НОРМАТИВНІ ПОСИЛАННЯ Наведені нижче нормативні документи містять положення які через посилання в цьому тексті становлять положення цього стандарту. Для датованих посилань пізніші зміни до будь-якого з цих видань або перегляд їх не застосовують. Однак учасників угод базованих на цьому стандарті запрошують визначити можливість застосування найостанніших видань нормативних документів наведених нижче. Для недатованих посилань треба звертатися до найновішого видання нормативних документів. Члени ISO та ІЕС впорядковують каталоги чинних міжнародних стандартів. ISO/IEC 9797 all parts Information technology Security techniques Message Authentication Codes MACs . НАЦІОНАЛЬНЕ ПОЯСНЕННЯ ISO/IEC 9797 усі частини Інформаційні технології. Методи захисту. Коди автентифікації повідомлення MACs . 3 ТЕРМІНИ ТА ВИЗНАЧЕННЯ ПОНЯТЬ Терміни та визначення понять призначені для використовування у цьому стандарті: 3.1 зворотний порядок байтів big-endian Метод зберігання мульти-байтових чисел за якого старші байти розміщуються в молодших адресах пам'яті 3.2 геш-функція стійка проти колізій collision-resistant hash-function Геш-функція що має таку властивість: в обчислювальному відношенні неможливо знайти дві різні вхідні величини які перетворюються в ту саму вихідну величину. Примітка. Можливість обчислювання залежить від визначених вимог до захисту та від середовища 3.3 рядок даних дані data string data Рядок бітів який є вхідною величиною для геш-функції 3.4 геш-код hash-code Рядок бітів який є вихідним значенням геш-функції. Примітка. Література з даного предмета містить ряд термінів які мають те саме або подібне значення. Деякими прикладами є код виявляння модифікації код виявляння підтасовки дайджест геш-результат геш-величина відбиток 3.5 геш-функція hash-function Функція яка перетворює рядки бітів у рядки бітів фіксованої довжини та має такі дві властивості: в обчислювальному відношенні неможливо для заданого виходу знайти вхідну величину яка перетворюється у цей вихід; в обчислювальному відношенні неможливо для заданного виходу знайти іншу вхідну яка перетворюється у той самий вихід. Примітка. Можливість обчислювання залежить від визначених вимог до захисту та від середовища 3.6 ідентифікатор геш-функції hash-function identifier Байт що ідентифікує визначену геш-функцію 3.7 початкове значення initializing value Величина яку використовують у разі визначання відправної точки геш-функції 3.8 підсумкове перетворення output transformation Перетворення що застосовують до результату ітерації для отримування геш-коду 3.9 заповнювання padding Добавляння додаткових бітів до рядка даних 3.10 раундова функція round-function Функція ? ... яка перетворює два двійкових рядки довжин L1 та L2 у двійковий рядок довжи- ни L2 її використовують ітераційно як частину геш-функції коли вона сполучає рядок даних довжини L1 з попередньою вихідною величиною довжини L2. 4 ПОЗНАКИ ТА СКОРОЧЕННЯ 4.1 Загальні познаки У всіх частинах стандарту ISO/IEC 10118 використовують такі познаки та скороченння: 4.2 Познаки використані у цьому стандарті Познака призначена для використовування у цьому стандарті: q число блоків у рядку даних після заповнювання і розщеплювання. 4.3 Погодження щодо кодування У ситуаціях для яких терміни «найбільш значущий біт/байт» і «найменш значущий біт/байт» мають сенс тобто коли рядки бітів/байтів трактуються як чисельні величини крайні зліва біти/ байти блоку мають бути найбільш значущими. 5 ВИМОГИ Використовуючи геш-функції необхідно щоб залучені сторони оперували точно з тим самим бітовим рядком навіть не дивлячись на те що зображення даних можуть бути різні в середовищах кожного суб'єкта. Це може вимагати від одного або більше суб'єктів необхідності перетворення даних у погоджене зображення у вигляді бітових рядків перед тим як застосовувати геш-функцію. Деякі з геш-функцій означених в ISO/IEC 10118 потребують заповнювання з тим щоб рядок даних мав потрібну довжину. У додатку А цього стандарту наведено деякі методи заповнювання; додаткові методи заповнювання можуть бути означені в кожній частині ISO/IEC 10118 якщо заповнювання є необхідним. 6 ЗАГАЛЬНА МОДЕЛЬ ГЕШ-ФУНКЦІЙ Геш-функції подані у цьому стандарті вимагають використання раундової функції ?. Деякі альтернативи для функції ? означено в наступних частинах ISO/IEC 10118. Геш-функції які розглянуто в наступних частинах ISO/IEC 10118 надають геш-коди довжиною LH де LH менша за значення L2 яке використовує функція ? або дорівнює йому. 6.1 Процес гешування Нехай ? раундова функція а IV початкове значення довжиною L2. Для геш-функцій які означено в наступних частинах ISO/IEC 10118 значення IV має бути фіксоване для заданої раундової функції ?. Геш-код ? даних D треба обчислювати за чотири кроки. 6.1.1 Крок 1 заповнювання Рядок даних D заповнюють для того щоб його довжина була цілим числом кратним L1. Для подальшої інформації треба звертатись до додатка А. Примітка. Іноді ефективнішим виявляється проведення розщеплювання перед заповнюванням. Заповнювання здійснюють пізніше в останньому блоці коли L1 < L2. 6.1.2 Крок 2 розщеплювання Заповнений рядок даних D розщеплюють на L1-бітові блоки D1 D2 Dq де D1 уособлює перші L1 бітів заповнених даних D D2 уособлює наступні L1 бітів і так далі. Процеси заповнювання і розщеплювання пояснено на рисунку 1. Рисунок 1 Процеси заповнювання та розщеплювання 6.1.3 Крок 3 ітерація Нехай D1 D2 ... Dq є L1 - бітові блоки даних після заповнювання і розщеплювання. Нехай Н0 є рядком бітів що дорівнює IV. L1 - бітові рядки H1 H2 ... Hq обчислюють ітераційно таким чином: for / from 1 to q: ?i= ? Di ?i-1 ; Процес ітерації пояснено на рисунку 2. Рисунок 2 Процес ітерації 6.1.4 Крок 4 підсумкове перетворення Геш-код ? отримують перетворюванням Т яке застосовують до Hq результату виконання кроку 3 внаслідок чого отримуємо LH бітів завершального геш-коду. Наприклад перетворюванням ? може бути операція відтинання. 6.2 Використовування загальної моделі В наступних частинах ISO/IEC 10118 наведено приклади геш-функцій що грунтуються на загальній моделі. У кожному разі для означання окремої геш-функції необхідно щоб були визначені: параметри L1 L2; метод заповнювання; початкове значення IV; початкова функція ?; підсумкове перетворення Т. Практичне застосування геш-функції визначеної з використанням загальної моделі вимагає також вибирання параметра LH. ДОДАТОК А обов'язковий МЕТОДИ ЗАПОВНЮВАННЯ Обчислювання геш-коду як описано в інших частинах ISO/IEC 10118 передбачає вибирання методу заповнювання. Використовуючи метод заповнювання завжди отримують рядок даних довжина в бітах якого є цілим числом кратним L1. У цьому додатку розглянуто три методи. Примітка. Геш-функції які використовують метод заповнювання 1 можуть наражатися на атаки тривіального підробляння під час яких зловмисник може добавити або стерти деяку кількість '0' бітів у кінці рядка даних не змінюючи геш-коду. Це означає що метод заповнювання 1 треба використовувати лише в середовищах в яких довжина рядка даних D наперед відома для сторін або коли рядок даних з різною кількістю кінцевих '0' бітів має те саме семантичне значення. Теоретичні результати див. наприклад [1] вказують також на те що в середовищах в яких не виконано вищенаведену умову метод заповнювання 3 має деякі переваги над методом заповнювання 2. Біти заповнювання якщо вони є не обов'язково зберігати або передавати їх разом з даними. Той хто перевіряє повинен знати чи збережені або передані біти заповнювання чи ні та який метод заповнювання використовують. А.1 Метод 1 До даних для яких обчислюють геш-код додають а може й ні невелику кількість '0' бітів необхідних для отримування потрібної довжини. А.2 Метод 2 До даних для яких обчислюють геш-код додають один ? біт. Потім до отриманих у підсумку даних додають а можливо й ні стільки ?0' бітів скільки необхідно для отримування потрібної довжини. Примітка. У методі 2 завжди потрібно додавання хоча б одного біта заповнювання. А.З Метод З Цей метод заповнювання вимагає вибору параметра r r ? L1 наприклад r = 64 і методу кодування бітової довжини даних D тобто LD як бітовий рядок довжиною г . Вибір г обмежить довжину даних D а саме LD < 2Г. Дані D для яких треба обчислити геш-код заповнюють за такою процедурою: 1. D конкатенують з одним ?1? бітом. 2. Результат попереднього кроку конкатенують з числом яке перебуває в межах від 0 до L1-1 ?0' бітів з тим щоб довжина підсумкового рядка була конгруентною L1-r за модулем L1. Результа том буде бітовий рядок довжина якого буде на r бітів коротша за число кратне L бітам якщо r = L1 результатом буде бітовий рядок довжина якого кратна L1 бітів . 3. Додаємо r-бітовий результат кодування LD використовуючи обраний метод кодування внаслідок чого отримаємо заповнений варіант D. БІБЛІОГРАФІЯ 1 Lai X. and Massey J. L. Hash Functions Based on Block Ciphers Advances in Gryptology EUROCRYPT'92 Proceedings LNCS 658 Springer-Verlag 1993. Ключові слова: геш-функція геш-код рядок даних кодування початкове значення раун-дова функція загальна модель геш-функції процес гешування методи заповнювання.