матрицю 8 на 8 елементів з GF(28) на виході, використовувані для означення циклової функції, визначеної у розділі 13;

С,, С- — позначення константи, використовувані у циклових функціях;

С" — циркулянтна матриця 8 на 8 елементів з GF(2S), використовувана для

означення циклової функції у розділі 13;

Dj — блок, що отримують з рядка даних після процедури заповнювання;

dj, е„ fhд, — функції, що беруть на вході одне або три слова та видають одне слово на виході, використовувані для означення циклових функцій;

Hj — рядок із L2 бітів, використовуваний в операції гешування для збереження

проміжних результатів;

GF(28) — поле, визначене як GF(2)[x]/p3(x), де р3(х) = х8 + х4 + х3 + х2+ 1, Елементами

поля є 8-бітові рядки;

М — матриця 8 на 8 елементів з GF(28);

q — кількість блоків у рядку даних після операцій заповнювання та розщеплювання

на частини;

Rn() — операція зсуву вправо на п бітів, тобто, якщо А — слово та п — невід’ємне ціле, тоді /?Л(А) позначає слово, отримане зсувом вправо вмісту А на п позицій;

  1. — блок нелінійної підстановки, яка замінює елементи х є GF(28) іншими

елементами 5 [х] є GF(28);

Sn() — операція циклічного зсуву вліво на п позицій, тобто, якщо А — слово

та п — невід'ємне ціле, тоді Sn(A) позначає слово, отримане зсувом вліво вмісту А на п позицій циклічним способом;

З'л() — операція циклічного зсуву вправо на п позицій, тобто, якщо А — слово

та п — невід’ємне ціле, тоді Sn(A) позначає слово, отримане зсувом вправо вмісту А на п позицій циклічним способом;

tht- — величини зсувів, використовувані для означення циклової функції;

W, Xj, Х-, Yj, Z, — слова, використовувані для зберігання результатів проміжних обчислень;

І/И' Xі, Kh Y' Z' — матриці елементів з GF(28), використовувані для зберігання результатів проміжних обчислень;

л — побітова логічна операція ”1" над бітовими рядками, тобто, якщо А В —

слова, то А л В — слово, рівне побітовому логічному "І" слів А та 8;

V — побітова логічна операція ЧИ над бітовими рядками, тобто, якщо А, В —

слова, то А V В — слово, рівне побітовому логічному ЧИ слів А та В;

-і — побітова логічна операція заперечення над бітовим рядком, тобто, якщо

А — слово, то -і А — слово, рівне побітовому логічному запереченню слова А;

у — операція додавання за модулем 2W, де w кількість бітів у слові. Тобто,

якщо А, В — слова, то А|_+)В — слово, отримане під час представлення чисел А та В у двійковому вигляді та обчисленні їхньої суми за модулем 2* результат має лежати у межах від 0 до 2W-1 включно. Значення w = 32 для спеціалізованих геш-функції 1—4, визначених у розділах 7—10, та W- 64 для спеціалізованих геш-функції 5 та 6, визначених у розділах 11 та 12;

• — операція множення матриць 8 на 8 елементів з GF(28). Тобто, якщо

А та В — такі матриці, то А • 8 — матриця, отримана множенням А на В таким чином: розглянемо кожен елемент матриці А та В як зображення цілого числа у вигляді двійкового поліному (наприклад зображення ціло­го числа 89 (шістнадцяткове) є х7 + х3 + 1); розглянемо множення двох елементів як залишок множення двох поліномів під час ділення на полі­ном р8(х), де рв(х) = № + х4 + х3 + № + 1; а операцію додавання — як ®;

:= — символ, що позначає операцію присвоєння, використовують у проце­

дурних Специфікаціях циклових функцій, де він позначає те, що слово (або матриця, описано у розділі 13) з лівого боку символа прийме значення рівне виразу з правого боку від символа.

  1. ВИМОГИ ДО ОБ’ЄКТА СТАНДАРТИЗАЦІЇ

Користувачі, які використовуватимуть геш-функцію, з цієї частини повинні вибрати:

  • одну зі спеціалізованих геш-функцій, означених нижче; та

  • довжину LH геш-коду Н.

Примітка 1. Перша і друга спеціалізовані геш-функції визначені так, щоб полегшити програмну реалізацію для ком­п’ютерів з прямим порядком байтів, тобто, коли байт з найменшою адресою у слові інтерпретують як найменш значущий; навпаки, третя, четверта, п’ята та шоста спеціалізовані геш-функції, які визначені так, щоб полегшити програмну реалі­зацію для комп’ютерів з оберненим порядком байтів, тобто, коли байт з найменшою адресою в слові інтерпретують як найбільш значущий. Проте зручною зміною означень можна довільну із цих шести циклових функції реалізувати як на комп'ютерах з прямим порядком байтів, так і з оберненим порядком байтів. Сьома спеціалізована геш-функція визначена як нейтральна до порядку слідування байтів у слові, тобто не використовує арифметичну операцію, чутливу до цього по­рядку (наприклад, додавання цілих чисел). Якщо послідовності з елементів GF(28) (тобто байтів) відображають у комп­'ютерні слова для запаралелювання таких операцій, як виключальне ЧИ, то розташування байтів у слові несуттєве, до­поки воно узгоджене з оберненим відображенням. Усі геш-функції, визначені в цій частині, на вході приймають бітовий рядок і на виході видають бітовий рядок; це не залежить від внутрішнього порядку байтів, яке прийняте у кожній геш- функції.

Примітка 2. Вибір LH має вплив на безпеку геш-функції. Усі геш-функції, означені в цьому стандарті, вважають геш-функціями стійкими до колізій в середовищі, для якого виконання 2Lh/2 обчислень геш-коду вважають практично неможливим.

  1. МОДЕЛЬ СПЕЦІАЛІЗОВАНИХ ГЕШ-ФУНКЦІЙ

Геш-функції, означені в цій частині стандарту, основані на загальній моделі геш-функцій, що наведено в частині 1 цього стандарту, тобто ISO/IEC 10118-1:2000.

У специфікаціях геш-функцій в цій частині стандарту, означено, що заповнений рядок даних на вході до геш-функції наводять у формі послідовності байтів. Якщо заповнений рядок даних у формі послідовності 8л бітів, х0, .... х_і, то треба його інтерпретувати як послідовність п байтів,

Bq, B1t..., В^. Таким чином кожна група з восьми послідовних бітів стає байтом, перший біт у групі стає найбільш значущим у цьому байті. Звідси

В' = 27х 8/ + 26 х8/+1 + ... + х g/+7 для кожного і (0 < і < л).

Вихідне перетворення для геш-функції визначено у цій частині як геш-код Н, отриманий взят­тям найлівіших L бітів кінцевого /^-бітового вихідного рядка Hq.

Для кожної із семи спеціалізованих геш-функцій, означених у цьому стандарті, визначають ідентифікатори, Ідентифікатори геш-функцій для спеціалізованих геш-функцій, означених у розд­ілах 7, 8, 9, 10, 11, 12 та 13 дорівнюють відповідно 31, 32, 33, 34, 35, 36 та 37 (шістнадцяткові). Множина значень від 38 до 3F (шістнадцяткові) зарезервована для подальшого використовуван­ня як ідентифікаторів геш-функцій цієї частини ISO/IEC 10118. Ідентифікатори геш-функцій також використовують в ідентифікаторах об’єктів OSI, наведених у додатку С.

  1. СПЕЦІАЛІЗОВАНА ГЕШ-ФУНКЦІЯ 1 (RIPEMD-160)

У цьому розділі визначено метод заповнювання, початкові значення та циклову функцію, яку використовують у загальній моделі для геш-функцій, описаних в ISO/IEC 10118-1:2000. Таким чи­ном Спеціалізована геш-функція 1 буде визначена, якщо застосувати метод заповнювання, почат­кові значення та циклову функцію, що визначені тут, до загальної моделі, наведеної вище. Спеціа­лізовану геш-функцію можна застосовувати до будь-яких рядків даних D, які містять щонайбільше 264-1 бітів.

Міжнародний спеціалізований ідентифікатор ISO/IEC спеціалізованої геш-функції 1 дорівнює 31 (у шістнадцятковому зображенні).

Примітка. Спеціалізовану геш-функцію 1, визначену в цьому розділі, зазвичай називають RIPEMD-160, [3].

  1. Параметри, функції та константи

    1. Параметри

Для цієї геш-функції Ц ~ 512, L2= 160 та LH не перевищує 160.

  1. Узгодження порядку слідування байтів

У специфікації циклової функції, наведеної у цьому розділі, означено, що блок на вході цик­лової функції подають у формі послідовності 32-бітних слів, кожен 512-бітний блок складеться з 16 таких слів. Послідовність з 64 байтів, Bq, Вь ..., В63, треба інтерпретувати як послідовність із 16 слів, Zo, Z1t ..., Z15. Таким чином кожну групу з чотирьох послідовних байтів уважають словом, перший байт слова вважають найменш значущим. Звідси

Z, = 224 В4,+3 + 216 В + 28В4і, (0 < і < 15).

Щоб перетворити геш-код із послідовності слів у послідовність байтів, треба застосувати обер­нений процес.

Примітка. Порядок байтів, визначений тут, відрізняють від порядку, визначеного в 9.1.2.

  1. Функції

Щоб полегшити програмну реалізацію, циклову функцію описують у термінах операцій над 32-біт- ними словами. Послідовність функцій gQ, д ..., g7Q використовують у цикловій функції, де кожна функція gh 0 < і < 79, приймає три слова Хо, та Х2 на вході та видає єдине слово на виході.

Функції д/ визначають так:

д.(Х0,Хі.Х2) = Х0®Хі©Х:, ( 0 <і< 15),

д,(Х3Лі,Х:) = (Хо A X,) V (-Хо А Х2), (16 < / < ЗІ).

дАХзЛХо) - (Х3 V -XJ © Х-. (32 < і < 47),

g.(X3.XbXj = (Хо A XJ V (X, А -Х<і, (48 < і < 63),

  1. = Хс $ V -X.), (64 < і < 79).Константи

У цій цикловій функції використовують дві послідовності слів, що визначають константи Со, Съ С79 та Cq, С(, Суд. У шістнадцятковому зображенні (де найбільш значущий біт відповідає найлівішому біту) їх визначають так:

C

( 0<ї< 15). (16 < t < 31). (32 </<47), (48 < і £ 63), (64 < ? < 79),

( 0</< 15), (16 < і!< 31), (32 < І < 47), (48 < І < 63), (64</<79).

t= 00000000, С; = 5А827999, С; = 6ED9EBA1, C; = 8F1BBCDC, С(-= A953FD4E,

С' = 50А28ВЕ6:

С) = 5C4DD124, С'== 6D703EF3, C'|f = 7A6D76E9, = 00000000,

У цій цикловій функції використовують дві послідовності з 80 значень зсуву, де кожна вели­чина зсуву лежить між 5 та 15. Ці послідовності позначають як (f0, f79) та (^, .... f79). На­

ступні дві послідовності з 80 індексів, які теж використовують у цій цикловій функції, містять зна­чення, що лежать у межах від 0 до 15. Ці послідовності позначають як (а0, а1( ..., а79) та (aj, а(, ..., а79). Усі чотири послідовності наведено нижче в таблиці 1.

Таблиця 1

і

0

1

2

3

4

5

6

7

І г

1 1

1 4

1 5

1 2

5 =

8

7

9

t

8

0

9

1 1

1 3

1 5

1 6

6

а ,

0

1

2

3

4

5

5

7

а 'г

5

1 4

7

0

9

2

1 1

4




f

8

9

1 0

1 1

1 2

1 3

1 4

1 5

П

1 1

1 3

1 4

1 5

6

7

9

8 і

f

7

7

8

1 1

І 4

1 4

1 2

6

8 і

8

9

1 0

1 1

1 2

1 3

1 4

1 5

а

І 3

6

1 &

8

1

1 0

3

1 2




і

1 5

1 7

1 8

1 9

2 0

2 1

2 2

2 3

* J

7

6

S

1 3

1 1 і

9

7

1 5

:І

й

1 3

1 5

7

1 2

8

9

1 1

а і

7

4

1 3

1

1 0

6

1 5

3

і a fs

6

1 1

3

7

0 j

1 3

&

1 0