1Криптографическиехэш-функции.Лекция 2: АтакиИлья МироновMicrosoft Research, Silicon ValleyЕкатеринбург, 16-17 апреля, 2011
План лекцииПоиск коллизийПарадокс дня рожденияАлгоритмы, не использующие памятьПараллельные алгоритмыИнкрементальная хэш-функцияКомпромисс память-времяХеллманРадужные таблицыФиат-НаорСоль2
Поиск коллизийКоллизии в хэш-функцияхРешение задачи дискретного логарифма:𝐻𝑥,𝑦=𝑔𝑥h𝑦,где g – элемент порядка p, а 𝑥,𝑦 ∈ℤ/𝑝ℤ𝐻𝑥,𝑦=𝐻𝑥′,𝑦′⇓𝑔𝑥h𝑦=𝑔𝑥′h𝑦′⇓𝑥+𝑎𝑦=𝑥′+𝑎𝑦′, где 𝑔𝑎=h 3
Парадокс дня рождения423 =365⋅1.2 
Вероятность коллизии5𝐻:0,1∗->[1..𝑁] – моделируем как случайнуюВычисляем H(x1), H(x2),…, H(xm)Какова вероятность того, что существуютi, j∈ [1..m], что H(xi) = H(xj)? 
Вероятность коллизииОпределяем событиеEij =1,  если 𝐻𝑥𝑖=𝐻(𝑥𝑗) 0,  если 𝐻𝑥𝑖≠𝐻(𝑥𝑗)Матожидание количества коллизий:Pr𝑖<𝑗𝐸𝑖𝑗=𝑖<𝑗Pr𝐸𝑖𝑗=𝑚(𝑚−1)2∙1𝑁 Если 𝑚>2𝑁, мат ожидание >1 6
Точнее...Вероятность того, что не ни одной коллизии:1×1−1𝑁×1−2𝑁×1−3𝑁×…×1−𝑚𝑁пользуясь тем, что 1−𝑥≤𝑒−𝑥, можем оценить≤𝑒0×𝑒−1/𝑁×𝑒−2/𝑁×𝑒−3/𝑁×…×𝑒−𝑚𝑁=𝑒−𝑚(𝑚−1)2𝑁Таким образом, если 𝑚𝑚−12𝑁>ln2, то вероятность встретить коллизию > 50%. 7
Неравномерное распределениеДни рождения не распределены равномерноМатожидание коллизий больше:Pr𝐸𝑖𝑗>1𝑁 8
Ищем коллизииВычисляемH(x1), H(x2),…, H(xm),...Длина MD5 – 128 бит, сложность вычисления – 1000 тактов для коротких сообщений.264вычислений:~ 228Tb200K CPU/лет 9
Поиск коллизий без памятиИтерация:𝐻:0,1∗->[1..𝑁]𝐻:[1..𝑁]->[1..𝑁] 10
Граф итераций11Структура DES:P. Flajolet and A. Odlyzko, “Random mapping statistics”
Граф итерацийКоличество компонент:12log𝑁Размер самой большой компоненты:≈0.76𝑁Длина самого большого цикла:≈0.78𝑁 12
Итерация13ρxi+1=H(xi)циклхвостколлизия
Итерация14xi+1=H(xi)𝐸цикл=𝜋𝑁/8 коллизия𝐸хвост=𝜋𝑁/8 
Метод Флойда15Черепаха: 	xi+1=H(xi)Заяц:yi+1=H(H(yi))
Метод Флойда16Черепаха: 	xi+1=H(xi)Заяц:yi+1=H(H(yi))≤хвост+цикл итерацийзаяц догонит черепаху
Метод Флойда17Черепаха: 	xi+1=H(xi)Заяц:yi+1=H(H(yi))xk= yk= x2k
Метод Флойда18Черепаха: 	xi+1=H(xi)Заяц:yi+1=H(H(yi))xk= yk= x2k≤хвост итерацийчерепахи встретятся
Метод НивашаХраним последовательность, состоящую из «локальных рекордов»:19xi+1=H(xi)𝐻(𝑥) 𝐻(𝑥𝑖4) 𝐻(𝑥𝑖3) 𝐻(𝑥𝑖2) 𝐻(𝑥𝑖1) Nivasch, "Cycle detection using a stack", IPL, 2004
Метод Ниваша20xi+1=H(xi)minПамять ~log N
Параллелизация«Замечательные точки»: 𝐻𝑥= ….00…0 21kнулей𝑥1 𝑦1 𝑥𝑖,𝑦𝑖 𝑦2 𝑥2 𝑦3 𝑥3 𝑥4 𝑦4 Oorschot, Wiener, “Parallel Collision Search with Application to Hash Functions and Discrete Logarithms”, ACM CCS, 1994
Параллелизация22λ𝑥𝑖,𝑦𝑖 Коллизия 𝑦𝑖=𝑦𝑗 𝑥𝑖 𝑦𝑗=𝑦𝑖 коллизия𝑥𝑗 
Анализ сложностиСредняя длина цепочки:2𝑘Количество цепочек до коллизии: 𝑁/2𝑘Количество операций: 2𝑘/2𝑁Замечательные точки распределены неравномерно!После 𝑁операций найдем коллизию 23
Событие Робин Гуда24𝑥𝑖 𝑥𝑗 
Открытый вопросАлгоритм нахождения 3-сторонних коллизий с малой памятью?Известен алгоритм со скоростью𝑁2/3 и  памятью 𝑁1/3: Joux, Lucks, “Improved generic algorithms for 3-collisions”, ASIACRYPT’09 25
Инкрементальные хэш-функцииМалое изменение текста-> быстрый пересчет хэш-функцииПопытка 1:𝐻𝑀1,…,𝑀𝑚=⊕𝑖𝐻(𝑀𝑖)Попытка 2:𝐻𝑀1,…,𝑀𝑚=⊕𝑖 𝐻(𝑖,𝑀𝑖) 26
Инкрементальные хэш-функции27⊕⊕⊕𝐻2,𝑀2 𝐻1,𝑀1 𝐻4,𝑀4 𝐻3,𝑀3 
Инкрементальные хэш-функции28⊕⊕⊕𝐻1,𝑀1 𝐻3,𝑀3 𝐻2,𝑀2 𝐻4,𝑀4 
Инкрементальные хэш-функции29⊕⊕⊕2𝑘× 𝐻1,𝑀1 𝐻3,𝑀3 𝐻2,𝑀2 𝐻4,𝑀4 ℓ бит ℓ бит ℓ бит ℓ бит 
Инкрементальные хэш-функции3022𝑘−ℓ>2(𝑛−ℓ)/2 0…0𝑛−ℓ бит ⊕2ℓ ∙2𝑘−ℓ2=22𝑘−ℓ 0…00…0⊕⊕2𝑘× 𝐻1,𝑀1 𝐻3,𝑀3 𝐻2,𝑀2 𝐻4,𝑀4 ℓ бит ℓ бит ℓ бит ℓ бит 
Инкрементальные хэш-функции3122𝑘−ℓ>2(𝑛−ℓ)/2 0…0𝑛−ℓ бит ⊕𝑘=ℓ=𝑛/3 2ℓ ∙2𝑘−ℓ2=22𝑘−ℓ 0…00…0⊕⊕2𝑘× 𝐻1,𝑀1 𝐻3,𝑀3 𝐻2,𝑀2 𝐻4,𝑀4 ℓ бит ℓ бит ℓ бит ℓ бит 
Инкрементальные хэш-функции3222𝑘−ℓ>2(𝑛−ℓ)/2 0…0𝑛−ℓ бит ⊕𝑘=ℓ=𝑛/3 2ℓ ∙2𝑘−ℓ2=22𝑘−ℓ Сложность 2𝑛/3 0…00…0⊕⊕2𝑘× 𝐻1,𝑀1 𝐻3,𝑀3 𝐻2,𝑀2 𝐻4,𝑀4 ℓ бит ℓ бит ℓ бит ℓ бит 
Общий случайКоличество блоков𝑚=2𝑑Сложность алгоритма 2𝑛𝑑+1Открытый вопрос: 𝑚 = 3?Алгоритм без использования памяти? 33Wagner, “A Generalized Birthday Problem”, CRYPTO’02
Обращение функциикомпромисс время-место (time-memory trade-off)34𝐻(𝑥)=𝑦 ?
компромисс время-место35
Алгоритм Хеллмана36𝑦1 𝑦2 𝑦3 𝑦4 𝑦5 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 𝑥1,𝑦1 𝑥2,𝑦2 𝑥3,𝑦3 𝑥4,𝑦4 𝑥5,𝑦5 
Алгоритм Хеллмана37𝑦1 𝑥1 𝑥1,𝑦1 𝑦2 𝑥2,𝑦2 𝑥2 𝑥3,𝑦3 𝑦3 𝑥3 𝑥4,𝑦4 𝑦4 𝑥4 𝑥5,𝑦5 𝑦5 𝑥5 𝑦 𝐻𝑥= 
Низкое покрытие38t𝑦1 𝑦2 𝑦3 𝑦4 𝑦5 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 вероятность коллизии:𝑚𝑡/𝑁 отсутствие коллизий:1−𝑚𝑡𝑁𝑡≈𝑒−𝑁/𝑚𝑡2 m…𝑚𝑡2<𝑁 𝑥𝑖 𝑥𝑖+1 
Модифицируем функцию39𝑥𝑖+1=𝐻𝑥𝑖 𝑥𝑖+1=𝑓(𝐻𝑥𝑖) 𝑥𝑖->𝐻𝑥𝑖->𝑓𝐻𝑥𝑖=𝑥𝑖+1->𝐻𝑥𝑖+1->𝑓𝐻𝑥𝑖+1 
Много независимых таблиц!40t𝑥11 𝑦11 𝑚∙𝑡∙ℓ>𝑁 𝑥21 𝑦21 𝑓1∘𝐻 m…𝑚∙𝑡2<𝑁 𝑥𝑚1 𝑦𝑚1 𝑥12 𝑦12 ℓ 𝑥22 𝑦22 𝑀=𝑚∙ℓ𝑇=𝑡⋅ℓ 𝑓2∘𝐻 m…𝑥𝑚2 𝑦𝑚2 …𝑥1ℓ 𝑦1ℓ 𝑥2ℓ 𝑦2ℓ 𝑓ℓ∘𝐻 m…𝑥𝑚ℓ 𝑦𝑚ℓ 
Фундаментальное неравенство41𝑚∙𝑡∙ℓ>𝑁                         3 𝑀=𝑚∙ℓ𝑇=𝑡⋅ℓ 𝑚∙𝑡2<𝑁 𝑚3⋅𝑡3⋅ℓ3𝑚⋅𝑡2>𝑁2 𝑀2⋅𝑇>𝑁2 𝑚2⋅𝑡⋅ℓ3>𝑁2 
Фундаментальное неравенство42𝑚∙𝑡2<𝑁 𝑀=𝑚∙ℓ𝑇=𝑡⋅ℓ 𝑀2⋅𝑇>𝑁2 𝑇=𝑀=𝑁2/3 
компромисс время-место43
𝑦11 Варианты: замечательные точки44𝑥11 𝑦21 𝑥21 𝑓1∘𝐻 𝐻𝑥= ….00…0 m…𝑦𝑚1 𝑥𝑚1 kнулей𝑦12 𝑥12 𝑓2∘𝐻 𝑦22 𝑥22 m…𝑦𝑚2 𝑥𝑚2 𝑦1ℓ 𝑥1ℓ 𝑦2ℓ 𝑥2ℓ 𝑓ℓ∘𝐻 m…𝑦𝑚ℓ 𝑥𝑚ℓ Экономим обращение к памяти (диску)!
Варианты: радужные таблицы45tt…𝑓1 𝑓2 𝑓𝑡 𝑥11 𝑦11 𝑥1 𝑦1 𝑥21 𝑦21 𝑥2 𝑦2 m…𝑥3 𝑦3 𝑥𝑚1 𝑦𝑚1 𝑥12 𝑦12 𝑥22 𝑦22 m𝑚⋅ℓ ……𝑥𝑚2 𝑦𝑚2 𝑥1ℓ 𝑦1ℓ 𝑥2ℓ 𝑦2ℓ m…𝑥𝑚ℓ 𝑦𝑚ℓ 𝑦𝑚⋅ℓ 𝑥𝑚⋅ℓ Oechslin, "Making a Faster Cryptanalytic Time-Memory Trade-off", CRYPTO'03
passcracking.comMD5(1..7 буквенно-цифровыхсимволов и пробел)Перебор: более 24 часовОфф-лайн: более неделиОн-лайн: 30 секундРазмер таблицы – 26Mb(http://www.freerainbowtables.com/en/tables/)46
Анализ Фиата-НаораЕсли функция не случайна?Фундаментальное неравенство для произвольной функции: 47𝑀3⋅𝑇>𝑁3 𝑇=𝑀=𝑁3/4 Fiat, Naor, “Rigorous Time/Space Tradeoffs for Inverting Functions”, STOC 1991
ПаролиТаблица паролей:Алиса, H(пароль)48Таблицы стандартных паролей:
Популярные пароли49𝐻(𝑥) 𝑓 𝐻 𝑥𝑖+1 𝑥𝑖 0.1% множества строк из 8 символов покрывает 50% паролейNarayanan,Shmatikov, «Fast Dictionary Attacks on Passwords Using Time-Space Tradeoff», ACM CCS’05
Популярные паролиМарковские цепиКонечные автоматыЛюбое индексируемое множество50
Добавим немного соли...Таблица паролей:Алиса, H(пароль)+ сольАлиса, r, H(r||пароль)51
компромисс время-место для солиВариант 1:	Пространство 𝑆×𝑁Вариант 2: 52𝑀2⋅𝑇>(𝑆×𝑁)2 …𝑚2𝑇>𝑁2 𝑚2𝑇>𝑁2 𝑚2𝑇>𝑁2 S значений соли
компромисс время-место для солиВариант 1:	Пространство 𝑆×𝑁Вариант 2: 𝑀2⋅𝑇>(𝑆×𝑁)2 53𝑚2𝑇>𝑁2𝑀=𝑆𝑚 𝑀2𝑇>(𝑆×𝑁)2 Открытый вопрос: компромисс для соли?
Мееедленнные функцииИскусственно замедлять функцию:Таблицы для итерированных функций?Стандарт на HKDF (RFC 5869)54Krawczyk, “Cryptographic Extraction and Key Derivation: The HKDF Scheme”, CRYPTO 2010

Hash cse lecture2