5. Лысов М.С., Стариков А.В., Стариков В.А. Линеаризованная математическая модель синхронного электродвигателя при различных способах управления его скоростью // Вестн. сам. гос. техн. ун-та. Сер.: физ.-мат. науки. - 2008. - №1 (16). - С. 102-107.
6. Florent Morel. Permanent Magnet Synchronous Machine Hybrid Torque Control, Jean-Marie Retid, Xuefang Lin-Shi, and Clarie Valentin // IEEE Transactions on Industrial Electronics. - 2008. - Vol. 55, № 2.
7. Estima J.O., Marques Cardoso A.J. The Occurrence of Faults in Permanent Magnet Synchronous Motor Drives and its Effects on the Power Supply Quality // University of Coimbra, FCTUC/IT.
Статью рекомендовал к опубликованию д.т.н., профессор В.Х. Пшихопов.
Бошляков Андрей Анатольевич - МГТУ им. Н.Э. Баумана; e-mail: [email protected]; 105005, г. Москва ул. 2-я Бауманская, 5; тел.: 84992636778; кафедра специальной робототехники и мехатроники; доцент.
Ковалев Владимир Вячеславович - кафедра специальной робототехники и мехатроники; аспирант.
Рубцов Василий Иванович - кафедра специальной робототехники и мехатроники; доцент.
Boshlyakov Andrey Anatolevich - BMSTU; e-mail: [email protected]; 5, 2-ya Baumanskaya street, Moscow, 105005, Russia; phone: +74992636778; the department of robotics and mecha-tronics; associate professor.
Kovalev Vladimir Vyacheslavovich - the department of robotics and mechatronics; postgraduate student.
Rubtsov Vasily Ivanovich - the department of robotics and mechatronics; associate professor.
УДК 51-77
К.Д. Майзаков, Д.А. Эдель, В.А. Новосядлый
АЛГОРИТМИЧЕСКАЯ ОПТИМИЗАЦИЯ ВЫЧИСЛЕНИЯ ПРООБРАЗОВ НЕОБРАТИМЫХ ХЭШ-ФУНКЦИЙ MD5 И MD4
Рассматривается способ эффективного вычисления прообразов хэш-функции MD5 [1] и MD4 [2]. Обзор существующих способов атак - поиск коллизий, полный перебор -приведен в [3]. Рассмотрены существующие программные реализации [4, 5]. Показано, что данные реализации имеют возможность вычислять прообразы длиной до 16 байт и являются частным случаем предлагаемого. Приведены результаты численных экспериментов, показывающие, что предлагаемый способ в случае хэш-функции MD5 имеет возможность вычислять прообразы длиной до 55 байт и имеет скорость вычислений в среднем на 15 % выше существующих.
Хэш-функции; MD5; MD4; вычисление прообразов.
K.D. Mayzakov, D.A. Edel, V.A. Novosiadliy
ALGORITHMIC OPTIMIZATION OF INVERSE IMAGE COMPUTATION FOR MD5 AND MD4 DIGEST ALGORITHMS
Current paper reports on the method of efficient inverse image computation for MD5 [1] and MD4 [2] digest algorithm. A review of existing attack methods is given in [3]. Existing software implementations [4, 5] are discussed. They are shown to be able to compute inverse image of up to 16 bytes length and implement a special case of proposed method. The results of computational experiments are given, which show the possibility of inverse image calculation of up to 55 bytes length, with computational speed better than existing implementations up to 15 % in average.
Digest algorithm; MD5; MD4; inverse image computation.
Введение. В настоящее время однонаправленные хэш-функции получили большое распространение для обеспечения конфиденциальности пользовательской аутентификационной информации в среде сети Интернет, благодаря возможности хранить проверяющей стороной не сам пользовательский пароль, а результат хэширующего преобразования от данного пароля. Таким образом, при запросе пользовательского пароля, сравниваются не парольные фразы, а результаты хэширующих преобразований.
Одной из наиболее распространенных подобных функций является хэш-функция MD5 [1]. Данный алгоритм применяется для обеспечения конфиденциальности пользовательской аутентификационной информации в системах обмена сообщениями (ICQ, Skype), Интернет-форумах.
Существуют успешные атаки на алгоритм MD5, связанные с нахождением коллизий в бинарных документах [3, 6], но данные атаки сложно применимы к задаче восстановления парольной информации.
В данной статье рассмотрен способ ускорения вычисления прообразов хэш-функций MD5 и MD4 методом полного перебора ("грубой силы") [7], основанного на уменьшении числа итераций, требуемых для принятия решения о соответствии прообраза данному хэшу. Метод полного перебора подразумевает обход пространства прообразов и вычисления соответствующих хэшей для каждого кандидата в прообраз.
Алгоритм хэширования MD5. Рассмотрим упрощенную схему хэширования MD5. Преобразования выполняются последовательно над 16 переменными типа "двойное слово", из которых первые 14 содержат байты хэшируемых данных, а две последние - размер данных в битах.
Ограничим область рассматриваемых прообразов таким образом, чтобы все вычисления можно было выполнить за единственный проход алгоритма MD5. Следовательно, максимальная длина восстанавливаемых данных составляет 55 байт, принимая во внимание наличие дополнительного байта выравнивания (0х80) и восемь байт, содержащих длину хэшируемых данных.
Рассмотрим развернутый основной цикл алгоритма MD5 [1], состоящий из четырех раундов.
Пусть F, G, H, I - функции раундов, A, B, C, D - переменные, до цикла инициализируемые заданными константами, а после - содержащие MD5 хэш, T [1 ... 64] -таблица констант, используемых при вычислении, w[0 ... 15] - массив хэшируемых данных, <<< - операция циклического сдвига.
На первом раунде пусть [abcd k s i] означает следующую операцию: a = b + + ((a + F(b,c,d) + w[k] + T[i]) <<< s). Произведем следующие 16 операций, которые пронумеруем от 0 до 15:
0. [ABCD 0 7 0],
1. [DABC 1 12 1],
2. [CDAB 2 17 2],
3. [BCDA 3 22 3],
4. [ABCD 4 7 4],
5. [DABC 5 12 5],
6. [CDAB 6 17 6],
7. [BCDA 7 22 7],
8. [ABCD 8 7 8],
9. [БЛВС 9 12 9],
10. [СБЛВ 10 17 10],
11. [ВСБЛ 11 22 11],
12. [ЛВСБ 12 7 12],
13. [БЛВС 13 12 13],
14. [СБЛВ 14 17 14],
15. [ВСБЛ 15 22 15].
На втором раунде пусть [abcd к 5 г] означает следующую операцию: а = Ь + + ((а + 0(Ь,с^ + и1 [к] + Т[г]) <<< 5). Произведем следующие 16 операций, которые пронумеруем от 16 до 31:
16. [ЛВСБ 1 5 16],
17. [БЛВС 6 9 17],
18. [СБЛВ 11 14 18],
19. [ВСБЛ 0 20 19],
20. [ЛВСБ 5 5 20],
21. [БЛВС 10 9 21],
22. [СБЛВ 15 14 22],
23. [ВСБЛ 4 20 23],
24. [ЛВСБ 9 5 24],
25. [БЛВС 14 9 25],
26. [СБЛВ 3 14 26],
27. [ВСБЛ 8 20 27],
28. [ЛВСБ 13 5 28],
29. [БЛВС 2 9 29],
30. [СБЛВ 7 14 30],
31. [ВСБЛ 12 20 31].
На третьем раунде пусть [abcd к 5 г] означает следующую операцию: а = Ь + + ((а + И(Ь,с^ + и [к] + Т[г]) <<< 5). Произведем следующие 16 операций, которые пронумеруем от 32 до 47:
32. [ЛВСБ 5 4 32],
33. [БЛВС 8 11 33],
34. [СБЛВ 11 16 34],
35. [ВСБЛ 14 23 35],
36. [ЛВСБ 1 4 36],
37. [БЛВС 4 11 37],
38. [СБЛВ 7 16 38],
39. [БСБЛ 10 23 39],
40. [ЛБСБ 13 4 40],
41. [БЛВС 0 11 41],
42. [СБЛБ 3 16 42],
43. [БСБЛ 6 23 43],
44. [ЛБСБ 9 4 44],
45. [БЛБС 12 11 45],
46. [СБЛБ 15 16 46],
47. [БСБЛ 2 23 47].
На четвертом раунде пусть [abcd к 5 і] означает следующую операцию: а = Ь + + ((а + ї(Ь,с^ + и[к] + Т[і]) <<< 5). Произведем следующие 16 операций, которые пронумеруем от 48 до 63:
48. [ЛБСБ 0 6 48],
49. [БЛБС 7 10 49],
50. [СБЛБ 14 15 50],
51. [БСБЛ 5 21 51],
52. [ЛБСБ 12 6 52],
53. [БЛБС 3 10 53],
54. [СБЛБ 10 15 54],
55. [БСБЛ 1 21 55],
56. [ЛБСБ 8 6 56],
57. [БЛБС 15 10 57],
58. [СБЛБ 6 15 58],
59. [БСБЛ 13 21 59],
60. [ЛБСБ 4 6 60],
61. [БЛБС 11 10 61],
62. [СБЛБ 2 15 62],
63. [БСБЛ 9 21 63].
Можно заметить, что на четвертом раунде для шагов с номерами 49-63 не происходит обращения к первым четырем байтам хэшируемых данных (элемент и[0] массива данных). Отсюда вытекает идея ускорения опробования прообразов хэш-функции МБ5.
Ускорение опробования прообразов хэш-функции MD5. Пусть четверка чисел Мй = (аЙ, Ьй, сй, dh} есть представление МБ5 хэша, для которого необходимо вычислить прообраз, в виде четырех четырехбайтовых чисел. Последовательно применим к данному набору преобразования, обратные к преобразованиям четвертого раунда главного цикла алгоритма МБ5 с номерами 49-63.
Полученную четверку чисел Мр = (ар, Ьр, ср, dp} назовем предхэшем.
Пространство перебора будем обходить, очевидно, последовательно изменяя w[0]. Для каждого кандидата в прообраз производим шаги с номерами 0-47 (первых трех раундов полностью, и первый шаг четвертого раунда) и получаем четверку чисел Mt = [at, bt, ct, dt}. Если Mp = Mt, то, выполнив дополнительно шаги от номера 49 до номера б3, проверяем, совпадает ли полученный хэш с заданным.
Таким образом, в результате данной оптимизации сокращается количество шагов, требуемое для проверки кандидата в прообраз.
Частный случай данного подхода реализован в ПО BarsWF [4], Elcomsoft Lightning Hash Cracker [5]. В данных программных реализациях возможно восстановление прообразов длиной до 15 байт, поскольку в основном цикле алгоритма хэширования значения массива данных заменены нулями, начиная с номера 4. Также, поскольку в данных реализациях изменяются два первых байта из четырех возможных в величине w[0], скорость опробования данных программных решений меньше теоретически возможной.
Алгоритм хэширования MD4. Покажем, что рассуждения, приведенные для алгоритма хэширования MD5, применимы также для более раннего алгоритма хэширования - алгоритма MD4. Рассмотрим алгоритм MD4 как упрощенную версию алгоритма MD5. Алгоритм MD4 также, как и алгоритм MD5, состоит из четырех раундов.
Пусть F, G, H - функции раундов, A, B, C, D - переменные, до цикла инициализируемые заданными константами, а после - содержащие MD4 хэш, w[0 .. 15] -массив хэшируемых данных.
Развернутый основной цикл алгоритма можно представить следующим образом [2]:
На первом раунде пусть [abcd w s] означает следующую операцию: a = (a + + F(b,c,d) + X[k]) <<< s. Произведем 1б следующих операций:
0. [ABCD 0 3],
1. [DABC 1 7],
2. [CDAB 2 11],
3. [BCDA 3 19],
4. [ABCD 4 3],
5. [DABC 5 7],
6. [CDAB б 11],
7. [BCDA 7 19],
S. [ABCD S 3],
9. [DABC 9 7],
10. [CDAB 10 11],
11. [BCDA 11 19],
12. [ABCD 12 3],
13. [DABC 13 7],
14. [CDAB 14 11],
15. [BCDA 15 19].
На втором раунде пусть [abcd и 5] означает следующую операцию: а = (а + + С(Ь,с^ + и [к] + 5Л827999) <<< 5. Производим 16 следующих операций:
16. [ЛВСБ 0 3],
17. [БЛВС 4 5],
18. [СБЛВ 8 9],
19. [ВСБЛ 12 13],
20. [ЛВСБ 1 3],
21. [БЛВС 5 5],
22. [СБЛВ 9 9],
23. [ВСБЛ 13 13],
24. [ЛВСБ 2 3],
25. [БЛВС 6 5],
26. [СБЛВ 10 9],
27. [ВСБЛ 14 13],
28. [ЛВСБ 3 3],
29. [БЛВС 7 5],
30. [СБЛВ 11 9],
31. [ВСБЛ 15 13].
На третьем раунде пусть [abcd и 5] означает следующую операцию: а = (а + + + и[к] + 6ЕБ9ЕВЛ1) <<< 5. Производим 16 следующих операций:
32. [ЛВСБ 0 3],
33. [БЛВС 8 9],
34. [СБЛВ 4 11],
35. [ВСБЛ 12 15],
36. [ЛВСБ 2 3],
37. [БЛВС 10 9],
38. [СБЛВ 6 11],
39. [ВСБЛ 14 15],
40. [ЛВСБ 1 3],
41. [БЛВС 9 9],
42. [СБЛВ 5 11],
43. [ВСБЛ 13 15],
44. [ЛВСБ 3 3],
45. [БЛВС 11 9],
46. [СБЛВ 7 11],
47. [ВСБЛ 15 15].
Таким образом, начиная с шага номер 33 хэширующих преобразований элемент w[0] не участвует в вычислениях. Следовательно, к алгоритму MD4 применимы те же рассуждения, что и к алгоритму хэширования MD5.
Результаты экспериментальных вычислений. Исследования проводились на тестовом стенде Intel Core i7 3GHz 4C, 2 x Nvidia GTX460, SGB RAM. Экспериментальный модуль реализован с поддержкой вычислений на видеоускорителях Nvidia посредством технологии Nvidia CUDA. Сравнение производилось с существующими реализациями ПО BarsWF [4], Elcomsoft Lightning Hash Cracker [5], который также поддерживают вычисления на видеоускорителях Nvidia. Следует отметить, что как ПО BarsWF, так и Elcomsoft Lightning Hash Cracker поддерживают размер кандидатов в прообразы только до 1б байт, что не позволяет использовать их, например, для восстановления паролей к CMS Joomla, которые вычисляются с использованием соли длиной 32 байта.
С целью установления практических результатов увеличения скорости переборного восстановления прообразов был проведен ряд инструментов по сравнению существующего программного обеспечения с экспериментальным программным модулем, реализующим описываемый в статье алгоритм.
Результаты численных экспериментов приведены в табл. 1.
Таблица 1
Программное обеспечение Скорость опробования, миллионов кандидатов в прообразы в секунду
BarsWF 1397
Lightning Hash Cracker 560
Экспериментальный модуль 1547
Экспериментальный модуль обеспечивает прирост в скорости апробации кандидатов в прообразы 10 %, при этом максимальная длина кандидата в прообразы составляет 55 байт.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Rivest R. MD5 Algorithm. Network Working Group, Request for Comments: 1321. [Электронный ресурс] // MIT Laboratory for Computer Science and RSA Data Security, Inc., 1992 / Режим доступа: http://tools.ietf.org/html/rfc1321.
2. Rivest R. MD4 Algorithm. Network Working Group, Request for Comments: 1320. [Электронный ресурс] // MIT Laboratory for Computer Science and RSA Data Security, Inc., 1992 / Режим доступа: http://tools.ietf.org/html/rfc1320.
3. Sasaki A., Aoki K. Finding Preimages in Full MD5 Faster Than Exhaustive Search // EUROCRYPT 2009, LNCS 5479. - 2009. - P. 134-152.
4. Сваричевский М.А. Программное обеспечение Bars WF [Электронный ресурс] // Свари-чевский М.А. 2010. Режим доступа: http://3.14.by/ru/.
5. Lightning Hash Cracker [Электронный ресурс] / ООО "Элкомсофт". 2010. Режим доступа: http://www.elcomsoft.ru/lhc.html.
6. Sotirov Alexander, Marc Stevens, Jacob Appelbaum, Arjen Lenstra, David Molnar, Dag Arne Osvik, Benne de Weger. MD5 considered harmful today // http://www.win.tue.nl/ hashclash/rogue-ca.
7. Adleman LM, Rothemund PW, Roweis S, Winfree E. On applying molecular computation to the data encryption standard // J. Comput. Biol. - 1999 Spring. - Vol. 6, № 1. - P. 53-63.
Статью рекомендовала к опубликованию д.ф.-м.н., профессор Г.В. Муратова.
Майзаков Константин Дмитриевич - Федеральное государственное научное учреждение
“Научно-исследовательский институт «Специализированные вычислительные устройства
защиты и автоматика»” в г. Ростов-на-Дону; e-mail: [email protected]; 344002, г. Ростов-на-Дону, пер. Газетный, 51; тел.: 88632012817; научный сотрудник.
Эдель Дмитрий Александрович - e-mail: [email protected]; научный сотрудник.
Новосядлый Василий Александрович - e-mail: [email protected]; зав. лабораторией.
Mayzakov Konstantin Dmitrievich - Federal State-Owned Science Agency “Research Institute «Specvuzavtomatika»”; e-mail: [email protected]; 51, Gazetnij, 344002, Rostov-on-Don, Russia; phone: +78632012817; scientist.
Edel Dmitry Alexandrovich - e-mail: [email protected]; scientist.
Novosiadliy Vasily Alexandrovich - e-mail: [email protected]; head the laboratory.