Стандарты Хеш-функций. Основные определения и требования безопасности к функциям хеширования, страница 7

3.3.2 Описание и анализ алгоритма RIPEMD-160, RIPEMD-128.

Стандарт ISO/IEC 10118-3 пропонує хеш-функції – RIPEMD-160 і RIPEMD-128, які є подальшим вдосконаленням початкової версії алгоритму RIPEMD (1995 року). За оцінками розроблювачів хеш-функція RIPEMD-160 повинна залишатися безпечною протягом десяти найближчих років.

Алгоритм RIPEMD-160.

Розмір хеш-кода і перемінних зчеплень RIPEMD-160 дорівнює 160 бітам (п'ять 32-х розрядних слів). Кількість циклів збільшена з трьох (як у RIPEMD) до п'яти. Крім того, внесені додаткові зміни в паралельні лінії алгоритму. Тепер права і ліва лінії відрізняються не тільки застосовуваними константами, але і порядком проходження бульових функцій. Для алгоритму RIPEMD-160 визначені такі бульові функції:

;

;

;

;

.

Усі позначення аналогічні раніше використаним позначенням при описі алгоритму SHA-1.

На рис. 2.7 представлена загальна структура хеш-функції RIPEMD-160.

 Алгоритм RIPEMD-160

Вхід. Двійковий рядок  довжиною .

Вихід. 160-бітний хеш-код за рядком .

1. Ініціалізація.

а) Ініціалізувати п'ять векторів ініціалізації:

; ; ;

; .

б) Задати для лівої і правої ліній алгоритму додаткові константи:

–  ліва лінія:

;

;

;

;

;

– права лінія:

;

;

;

;

.

Рис. 2.7. Схема хеш-функции RIPEMD-160.

в) задати порядок подачі слів повідомлення на ліву   праву  лінії. Порядок подачі слів визначається на основі таких перестановок:

– для лівої лінії визначається перестановка , а для циклів порядок слів визначається в такий спосіб:

i

zL[0..15]

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

r(i)

zL[16..31]

7

4

13

1

10

6

15

3

12

0

9

5

2

14

11

8

r2(i)

zL[32..47]

3

10

14

4

9

15

8

1

2

7

0

6

13

11

5

12

r3(i)

zL[48..63]

1

9

11

10

0

8

12

4

13

3

7

15

14

5

6

2

r4(i)

zL[64..79]

4

0

5

9

7

12

2

10

14

1

3

8

11

6

15

13

– для правої лінії визначається перестановка  і порядок подачі слів визначається з використанням перестановки у такий спосіб:

p(i)

zR[0..15]

5

14

7

0

9

2

11

4

13

6

15

8

1

10

3

12

rp(i)

zR[16..31]

6

11

3

7

0

13

5

10

14

15

8

12

4

9

1

2

r2p(i)

zR[32..47]

15

5

1

3

7

14

6

9

11

8

12

2

10

0

4

13

r3p(i)

zR[48..63]

8

6

4

1

3

11

15

0

5

12

2

13

9

7

10

14

r4p(i)

zR[64..79]

12

15

10

4

1

5

8

7

6

2

13

14

0

3

9

11

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