День рождения атака 2019 – Что связывает парадокс дней рождения и уязвимости электронных подписей? / Habr

Новости и мероприятия | Атак

Друзья, ТК «АТАК@» поздравляет вас с прошедшими праздниками!  Пусть наступивший 2020 год будет для вас прекрасным началом чего-то очень сказочного и безумно хорошего!  Давайте вспомним Детскую новогоднюю Ёлку!  Заходите в соц. сети ТК «АТАК@»,  листайте фото, ищите своих деток .

В ТК «АТАК@» открылся салон сотовой связи МТС !  Спешите купить подарки к новому году!  P.S. При покупке Samsung Galaxy кэшбэк до 15 000 на подарки!  Ждем вас в ТК «АТАК@» с 08:00 до 23:00

Торговый комплекс «АТАК@» приглашает всех детей на ДЕТСКУЮ НОВОГОДНЮЮ ЁЛКУ!  УРАААААА! Вас ждут: Дед Мороз » и Снегурочка, хоровод вокруг ёлки, конкурсы, призы и подарки. Встречаемся 28 декабря в 13:00 на площадке у ТК «АТАК@».

Друзья,  мы запустили творческий конкурс для деток — «НОВОГОДНЯЯ СКАЗКА — 2020».  ГЛАВНЫЙ ПРИЗ — ПОЕЗДКА НА ФАБРИКУ ЁЛОЧНЫХ ИГРУШЕК  в Н.Новгород.  Условия участия в конкурсе :  нарисуйте рисунок, сделайте поделку, аппликацию;   принесите работы в ТК «АТАК@».  Работы принимаются до 25 декабря! 

  Друзья, фото со дня рождения ТК «Атак@» мы выложили в группе в контакте https://vk.com/tkatak. Заходите, ищите себя на фото!  

До нового года ещё целый месяц, а мы уже раздаем подарки 🎁 в честь дня рождения🎈ТК «АТАК@».   Следите за конкурсами в социальных сетях 📲  (ВК ТК АТАК@ ВЯЗНИКИ; инстаграм tk_atak_vyazniki)

Друзья, 30 ноября ТК «АТАК@» отмечает день рождения — 6 лет! Приглашаем вас на мероприятие!        

ВРЕД БАТАРЕЕК ДЛЯ ПРИРОДЫ  И ЗДОРОВЬЯ ЧЕЛОВЕКА  Чем вредны батарейки: — Элементы питания включают в себя опасные вещества, магний, ртуть, олово, свинец, никель, цинк, кадмий, которые способны аккумулироваться в организме  вызывая болезни;  — Отработанные источники питания при сжигании выделяют специфические газы  диоксины, отравляющие людей;  — Батарейки могут взрываться  и приносить не малый ущерб; — Элементы питания отравляют почву, грунтовые […]

Пока магазин находится в стадии наполнения, но вы уже можете посмотреть ассортимент и что-то приобрести!!!

Следите за новостями в соцсетях: https://vk.com/tkatak , участвуйте в наших конкурсах!

Приглашаем к сотрудничеству представителей розничных сетей! ТК «Aтак» — самый популярный объект города и района. Предлагаем площади от 20 до 100 м2, комфортные условия: охрана, интернет, парковка, отличные рекламные возможности. ТК  расположен на въезде в город, рядом автовокзал, остановки городского транспорта, офисы, жилой массив, отличный пешеходный трафик! Аренда от собственника! Контакты: 8-961-111-81-82.

Что связывает парадокс дней рождения и уязвимости электронных подписей? / Habr


Введение


Допустим, я спрошу вас, сколько человек должно быть в комнате, чтобы у двух из них день рождения с вероятностью 50% приходился на один день. Каким будет ответ? Именно это и называется парадоксом дней рождения.

Парадокс гласит:

Если в комнате есть 23 человека, то с вероятностью 50% двое из них родились в один день.

В некоторых версиях парадокса делаются ещё более сильные заявления:
Если в комнате 70 человек, то с вероятностью 99% двое из них родились в один день.

Поначалу это казалось мне удивительным и контринтуитивным. Давайте выясним, почему же это правда. Чтобы упростить задачу, мы сделаем следующие допущения:
  1. Будем считать, что все люди в комнате родились не в високосный год. Мы делаем это допущение, чтобы нам не пришлось анализировать два разных случая.
  2. В комнате нет близнецов. При наличии пары близнецов решение будет тривиальным.
  3. Мы предполагаем, что люди рождаются равномерно и случайно. Что это значит? Люди с равной вероятностью могут рождаться в любой день года. Если немного это формализовать, то вероятность рождения в любой выбранный день равна .
  4. Люди рождаются независимо друг от друга. Это значит, что дата рождения любого человека не влияет на дату рождения другого.

Стоит заметить, что эти условия необязательно соблюдаются в реальном мире. В частности, в реальном мире люди не рождаются с равномерной случайностью. По этой ссылке есть статистика по дням, в которые рождаются люди. Хотя наша модель не является точным отражением реального мира, её простота позволяет значительно облегчить анализ задачи.

Нужно сказать, что если в комнате находится 366 или более людей, то в ней гарантированно есть два человека с одинаковым днём рождения. Это следует из принципа Дирихле («принципа голубей и ящиков»): если есть 366 человека и 365 дней, то по крайней мере два человека обязательно имеют одинаковый день рождения.

Представим, что в комнате один человек, тогда вероятность его общего дня рождения с кем-то ещё равна 0. Пусть будет исходом, при котором среди людей ни один день рождения не совпадает. Пусть — вероятность того, что среди людей в комнате каждый имеет день рождения в свой день. Аналогично, пусть будет дополнением , т.е. исходом, при котором среди людей два человека имеют одинаковый день рождения.


Допустим, в комнате два человека, A и B. Без утери обобщения просто представим, что человек A родился 1 января. Чтобы у B и A были разные дни рождения, нужно, чтобы B родился в любой день, кроме 1 января. У человека B будет 364 варианта дня рождения.


Представим, что в комнате три человека, A, B и C. Допустим, что человек A родился 1 января, тогда чтобы все они родились в разные дни, человеку B остаётся только 364 дней, как и в предыдущем примере. Так как A и B занимают два дня, человек C может родиться только в 365 — 2 = 363 дня.


Здесь происходит нечто более интересное: предположим, что в комнате уже есть людей. Когда в комнату заходит -тый человек, то чтобы все человек имели разные дни рождения, должны быть истинными два исхода
  1. Все людей, вошедших в комнату до него, должны иметь разные дни рождения. Какова вероятность этого? .
  2. -тому человеку нужно иметь отличающийся день рождения от всех других людей в комнате. Какова вероятность этого? .

Также нужно заметить, что два представленных выше исхода независимы друг от друга, потому что по допущению (4), сделанному в начале поста, -тый человек родился независимо от всех других.

$$display$$\begin{equation*} \begin{split} \Pr[A_k] & = \Pr [ k — 1 \text{ people in the room have different birthdays} \textbf{ AND } \\ & \ \ \ \ \ \ \ \text{person k has a different birthday from the } k — 1 \text{ people } ] \\ & = \Pr [ k — 1 \text{ people in the room have different birthdays}] \\ & \ \ \ \ \times \Pr [\text{person k has a different birthday from the } k — 1 \text{ people } ] \\ & = \Pr[A_{k-1}] \times \frac{365 — (k-1)}{365} \end{split} \end{equation*}$$display$$


Теперь вычислим вероятности:

$$display$$\begin{equation*} \begin{split} \Pr[A_1] & = 1 \\ \Pr[A_2] & = \Pr[A_1] \times \frac{364}{365} = \frac{364}{365} \approx 0.997 \\ \Pr[A_3] & = \Pr[A_2] \times \frac{363}{365} = \frac{364}{365} \times \frac{363}{365} \approx 0.991 \\ \Pr[A_4] & = \Pr[A_3] \times \frac{362}{365} \approx 0.983 \\ & \vdots \\ \Pr[A_{22}] & = \Pr[A_{21}] \times \frac{344}{365} \approx 0.525 \\ \Pr[A_{23}] & = \Pr[A_{22}] \times \frac{343}{365} \approx 0.493 \\ \end{split} \end{equation*}$$display$$


Поскольку мы получили , это будет означать, что вероятность общего дня рождения для двух людей равна


При увеличении вероятность стремится к 1 и достигает её.

Более сложная задача


Допустим, мы хотим обобщить эту задачу до случая, когда есть людей и возможных дней рождения. Имея , можем ли мы определить вероятность того, что два человека будут иметь общий день рождения?

Можно использовать такую же систему: у нас будет исход , обозначающий все людей, родившихся в разные дни. В случае с одним человеком ничего не меняется


В случае, когда есть два человека, обозначим их как A и B. Чтобы человек B родился в другой день, человек B должен иметь день рождения среди других вариантов.


В случае с тремя людьми человек B должен иметь день рождения, отличающийся от дня рождения A. У человека C должен быть день, отличающийся от дней рождения A и B.


В общем случае для любого мы можем использовать ту же рекурсивную формулу, что и в предыдущем разделе:


Допустим, если мы хотим найти выражение в замкнутой форме для , то мы разложим выражение

$$display$$\begin{equation*} \begin{split} \Pr[A_n] & = \Pr[A_{n-1}] \times \frac{m — (n-1)}{m} \\ & = \Pr[A_{n-2}] \times \frac{m — (n-2)}{m} \times \frac{m — (n-1)}{m} \\ & = \Pr[A_{n-3}] \times \frac{m — (n-3)}{m} \times \frac{m — (n-2)}{m} \times \frac{m — (n-1)}{m} \\ & \ \vdots \\ & = \Pr[A_2] \times \frac{m-2}{m} \times \frac{m-3}{m} \times \cdots \times \frac{m — (n-3)}{m} \times \frac{m — (n-2)}{m} \times \frac{m — (n-1)}{m} \\ & = \prod_{i = 1}^{n-1} \frac{m-i}{m} = \prod_{i = 1}^{n-1} 1 — \frac{i}{m} \\ & \approx \prod_{i = 1}^{n-1} e^{\frac{-i}{m}} \text{ using the identity } 1 — x \approx e^{-x} \\ & = e^{-\sum_{i = 1}^{n-1} \frac{i}{m}} \\ & = e^{\frac{-n(n-1)}{2m}} \approx e^{\frac{-n^2}{2m}} \end{split} \end{equation*}$$display$$


Аппроксимацией этого результата является . Хотя мы и можем найти более приближенные границы, это даёт нам достаточную аппроксимацию. Единственное тождество, которое мы использовали в этой аппроксимации:


В абстрактном виде парадокс дней рождения имеет множество применений в компьютерных вычислениях. В частности, он используется в хэшировании, которое само по себе имеет множество применений. Выводы, сделанные в этой задаче, являются ключевыми для анализа вероятности хэширования двух элементов в один ключ. Эту задачу можно ещё более обобщить до вероятностной задачи мячей и корзин (balls and bins problem), которую мы оставим для другого поста.

Применение


Парадокс дней рождения — это не просто искусственная задача или любопытный трюк для вечеринок, он имеет множество областей применения в реальном мире. Лично я считаю, что вероятностный анализ, используемый в доказательствах, полезен при анализе других задач, в которых задействована рандомизация. В частности, это относится к области разработки криптографических хэш-функций. Мы посмотрим, как сделанный выше анализ может оказаться довольно полезен при создании хэш-функций с защитой от атак «дней рождения».

Для начала определим, что такое хэш-функция. Хэш-функция — это функция, выполняющая отображение из множества в число в интервале . Функция , определяемая как — пример хэш-функции из . Хэш-функции имеют множество применений, особенно в сочетании с популярной структурой данных «хэш-таблица». Также она используется в криптографии, где применяется специфический тип хэш-функции под названием «крипторафическая хэш-функция».

Одно из множества свойств, которыми должна обладать крипторафическая хэш-функция — стойкость к коллизиям. Должно быть сложно найти два таких , чтобы они образовывали коллизию, т.е. .

Именно на стойкости к коллизиям мы и сосредоточимся. Во-первых, я объясню, почему она является желательным свойством. Для этого мы сначала рассмотрим цифровые подписи.

В прошлом для «подписания» документов люди и организации пользовались подписями и печатями. В последнее время происходит переход к электронным или цифровым подписям. Цифровая подпись должна удовлетворять трём основным свойствам.

  1. При подписании документа нужна возможность проверить, кто подписал документ.
  2. После подписания документа никто не должен иметь возможности его подделать.
  3. Лицо, подписавшее документ, не может в дальнейшем опровергнуть подписание документа.

Цифровая подпись — это способ доказуемого подтверждения истинности документа или сообщения. Цифровая подпись гарантирует, что полученное сообщение было создано известным отправителем и не изменялось.

Допустим, у нас есть документ . Как нам его подписать?

Каждый пользователь/организация имеет уникальный закрытый ключ и открытый ключ . Они используют функцию подписания для подписи документа собственным закрытым ключом. Однако цифровая подпись может подписать только небольшое количество документов. Область определения функции подписи мала. Один из способов решения этой проблемы — создание меньшего документа, представляющего исходный документ, но в гораздо меньшем размере. Чаще всего для этого к большому документу применяется хэш-функция. Хэш-функция используется для отображения его из большого пространства в меньшее, и результат такой операции называется «отпечатком». Подпись использует отпечаток и закрытый ключ для создания подписи. Процедуру можно описать так:

  1. Получаем закрытый ключ .
  2. Хэшируем документ и получаем .
  3. Подписываем при помощи закрытого ключа .
  4. Отправляем и открытый ключ всем, кто желает подтвердить документ.

Любой, у кого есть и открытый ключ, может проверить, действительно ли документ подписан нужным лицом.

Проблема: предположим, что злоумышленник Ева нашла два документа , где — это настоящий договор, а — мошеннический документ, такой, что . Предположим, что Ева заранее знает, что Алиса подпишет только , но не . Перед подписанием к документу применяется криптографическая хэш-функция . Ева подходит к Алисе и просит её подписать документ , воспользовавшись описанной выше последовательностью. Теперь Ева может заявить, что Алиса подписала мошеннический документ , потому что . Алиса никаким образом не сможет доказать, что она не подписывала .

В приведённом выше примере оказалась нестойкой к коллизиям функцией, поэтому Ева смогла найти два входящих набора данных, хэширующихся в то же значение. Ева смогла заявить, что Алиса подписала , хотя на самом деле она подписала только . Это подчёркивает важность стойкости к коллизиям и показывает, почему цифровые подписи уязвимы, если хэш-функция оказывается нестойкой.

Пусть будет хэш-функцией. Допустим, что входные данные случайным образом однородно и независимо хэширутся в любой из элементов .

Задача атаки «дней рождения» — найти наименьшее количество элементов , которое можно хэшировать при помощи , чтобы мы могли найти два элемента , при которых .

При атаке «дней рождения» злоумышленник будет случайным образом подбирать и сохранять пары . Злоумышленник многократно будет выбирать и сохранять эти пары, пока не найдёт двух значений , при которых . Нам нужно определить, сколько раз атакующему нужно повторить эту операцию, пока он не найдёт коллизию.

Для анализа атаки «дней рождения» можно использовать те же принципы, которые мы применяли для парадокса дней рождения. В атаке «дней рождения» обозначает количество дней в году, а аналогична людям, входящим в комнату. Люди хэшируются в их дни рождения, которые могут быть одним из значений . Допустим, нам нужно найти коллизию с вероятностью 99%. Мы должны знать, каково наименьшее , при котором хэш двух значений будет одним днём рождения (в мире хэш-функций это означает, что два входных набора данных хэшируются в одинаковое значение).

Ранее мы показали, что

Мы хотим задать , то есть .

$$display$$\begin{equation*} \begin{split} e^{\frac{-n^2}{2m}} & = \frac{1}{100} \\ \frac{n^2}{2m} & = \ln 100 \\ n^2 & = 2 m \ln 100 \\ n & = \sqrt{2 m\ln 100 } \end{split} \end{equation*}$$display$$


Показанный выше анализ говорит нам, что для получения коллизии в хэш-функции с интервалом размера злоумышленнику нужно однородно и независимо хэшировать приблизительно для почти полной гарантии (вероятности 99%) того, что два элемента хэшируются в одинаковое значение.

Допустим, что мы хотим получать коллизию с вероятностью 50%; тогда нам нужно . Важный вывод здесь заключается в том, что для получения коллизии с вероятностью больше 0,5 нам придётся хэшировать порядка элементов. Это согласуется с нашим предыдущим анализом при , потому что приблизительно равен 23.


  1. Имея людей, дней и некое число , найти вероятность того, что ровно людей имеют одинаковый день рождения.
  2. Давайте немного преобразуем приведённую выше задачу. Допустим, у нас есть дней и некое число . Каким будет наименьшее значение , при котором не менее людей будет иметь одинаковый день рождения с вероятностью не менее 0,5? Сможете ли вы обобщить эту задачу для любой вероятности ?
  3. Допустим, у нас есть 100 чисел от 1 до 100, а также машина, угадывающая случайное число от 1 до 100 в однородном и случайном порядке. Сколько раз нам нужно будет воспользоваться машиной по математическому ожиданию, чтобы машина угадала все числа о 1 до 100?
  4. Сможете ли вы обобщить эту задачу до любых ?
  5. Допустим, у нас есть хэш-функция, случайным однородным образом отображающая элементы в области памяти. Пусть всего областей . Сколько элементов нужно добавить в нашу структуру данных по математическому ожиданию, чтобы в каждую область были хэшированы по крайней мере два элемента?

Пробег «Атака века», Кронштадт (примерная дата: 02.02.2020) — Get.run

О забеге

Забег отменен или не подтвержден

Какая-либо информация о проведении данного забега в будущем отсутствует. Настоятельно рекомендуем проверять все данные о забеге перед регистрацией. Если у вас есть подробная информация о проведении забега, напишите на [email protected]

Пробег «Атака века» — Городской забег

 Город:  Кронштадт

 Примерная дата:  Забег больше не проводится

Старт на дистанции 2,7 км в 12.00, на дистанциях 5,4 и 8,1 км в 12.05 на ул. Советской д. 43 у Драматического театра Балтийского флота.

Видео

Регистрация

Регистрация пройдет в день проведения соревнований по адресу ул. Советская, 43.

Получение стартового пакета

Мандатная комиссия и выдача номеров осуществляется в день забега с 09.30 до 11.30 по адресу: г. Кронштадт, ул. Советская д.43 в помещении Драматического театра Балтийского флота.

Документы для получения стартового пакета

На мандатной комиссии представитель команды предъявляет заявку, заверенную руководителем организации, с действующим медицинским допуском на каждого спортсмена. К заявке прилагаются следующие документы на каждого спортсмена:

  • паспорт (свидетельство о рождении) или их копии;
  • договор о страховании жизни и здоровья от несчастных случаев (оригинал).

Спортсмены, заявляющиеся на соревнования лично, предоставляют в мандатную комиссию те же документы, за исключением заявки и дополнительно — медицинскую справку, дающую право на участие в соревнованиях.

Медицинская справка

К участию в соревнованиях допускаются спортсмены и любители бега всех возрастных групп, имеющие действующий медицинский допуск спортивного диспансера, либо разовую медицинскую справку о допуске к соревнованиям, договор (оригинал) о страховании жизни и здоровья от несчастных случаев, на каждого участника соревнований.

Информация о дистанциях

Дистанции: 2,7км, 5,4км, 8,1км.

Добавить дистанции в план

Вы можете добавить одну из дистанций в свой беговой план

2.7 кмДобавить в план Удалить из плана
5.4 кмДобавить в план Удалить из плана
8.1 кмДобавить в план Удалить из плана  

Полезная информация

Проезд из г. Санкт-Петербурга: автобус №101 от ст. метро «Старая Деревня», маршрутное такси № 405/406 от ст. метро «Черная речка», маршрутное такси № 406/407 от ст. метро «пр. Просвещения» (магазин «Адидас»), до остановки «Дом быта» г. Кронштадт, далее пешком 10 мин. до ул. Советской д. 43. Для спортсменов-ветеранов автобус отправляется от ст. метро «Старая Деревня» в 9 .15.

Соревнования отменяются при температуре ниже -20° для взрослых и ниже -15° для участников младше 18 лет.

Отзывы и обсуждения

Друзья! Вопросы организаторам лучше задавать по контактным данным организаторов (вкладка Контакты), т.к. они вряд ли читают комментарии на нашем сайте.

Вы можете отставить свой отзыв о забеге, поделиться мнением и рассказать о своих впечатлениях или указать нам на ошибки или неточности в информации о забеге. Спасибо!

Комментарии

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Контакты организатора скрыты, т.к. забег больше не проводится

Атака «дней рождения» — Википедия

Ата́ка «дней рожде́ния» — используемое в криптоанализе название для метода взлома шифров или поиска коллизий хеш-функций на основе парадокса дней рождения. Суть метода состоит в значительном уменьшении количества передаваемых хеш-функции аргументов, необходимого для обнаружения коллизии, поскольку если хеш-функция генерирует n‑битное значение, то число случайных аргументов хеш-функции, для которого с большой вероятностью будет обнаружена хотя бы одна коллизия хеш-функции (то есть найдётся хотя бы одна пара равных хеш-кодов, полученных на разных аргументах), равно не 2n, а только около 2n/2.

Рассмотрим пример: будет ли у двух человек в группе, состоящей из 23 человек, одинаковый день рождения. Один год, исключая високосные годы, составляет 365 дней, поэтому существует 365 разных дней рождения, гораздо большее число, чем 23.

Если бы мы выбрали конкретный день, то вероятность того, что по крайней мере один человек родился в тот конкретный день, была 1−(364/365)23{\displaystyle 1-(364/365)^{23}}, примерно 6,1 %. Однако вероятность того, что по крайней мере один человек имеет тот же день рождения, что и любой другой человек, составляет около 50 %, согласно формуле 1−365!/((365−n)!⋅365n){\displaystyle 1-365!/((365-n)!\cdot 365^{n})}[1]. При n = 70 вероятность такого совпадения составляет 99,9 %.

Для заданной хеш-функции h{\displaystyle h} целью атаки является поиск коллизии второго рода. Для этого вычисляются значения h{\displaystyle h} для случайно выбранных блоков входных данных до тех пор, пока не будут найдены два блока, имеющие один и тот же хеш.

Пусть h{\displaystyle h} — хеш-функция. Атака «дней рождения» успешна, если найдётся пара x1≠x2{\displaystyle x_{1}\neq x_{2}} такая, что h(x1)=h(x2).{\displaystyle h(x_{1})=h(x_{2}).}

Таким образом, если функция h(x){\displaystyle h(x)} даёт любой из N{\displaystyle N} разных выходов с равной вероятностью и N{\displaystyle N} достаточно велико, то математическое ожидание количества пар различных аргументов x1≠x2,{\displaystyle x_{1}\neq x_{2},} для которых h(x1)=h(x2),{\displaystyle h(x_{1})=h(x_{2}),} составляет 1,25N{\displaystyle 1{,}25{\sqrt {N}}}. Оценку числа операций хеширования для поиска коллизии идеальной криптографической хеш-функции с размером выхода n{\displaystyle n} бит часто записывают как 2n/2,{\displaystyle 2^{n/2},} а не 2n{\displaystyle 2^{n}}[2].

Пусть P(n){\displaystyle P(n)} — вероятность того, что в группе из n{\displaystyle n} человек (n<N=365{\displaystyle n<N=365}) хотя бы двое имеют одинаковый день рождения.

P(n){\displaystyle P(n)} = 1−1⋅(1−1N)⋅(1−2N)⋅…⋅(1−n−1N)=1−∏i=0n−1 (1−iN).{\displaystyle 1-1\cdot \left(1-{\frac {1}{N}}\right)\cdot \left(1-{\frac {2}{N}}\right)\cdot …\cdot \left(1-{\frac {n-1}{N}}\right)=1-\prod _{i=0}^{n-1}\ \left(1-{\frac {i}{N}}\right).}

Из первых двух членов разложения в ряд Тейлора функции ex=1+x1!+x22!+x33!+⋯,{\displaystyle \displaystyle e^{x}=1+{\dfrac {x}{1!}}+{\dfrac {x^{2}}{2!}}+{\dfrac {x^{3}}{3!}}+\cdots ,} при |x|≪1{\displaystyle |x|\ll 1} выполняется ex≈1+x.{\displaystyle e^{x}\approx 1+x.} Заменив множители (1−iN){\displaystyle \left(1-{\frac {i}{N}}\right)} на e−i/N,{\displaystyle {e}^{-i/N},} получаем

P(n)≈1−∏i=0n−1 e−i/N=1−exp⁡∑i=0n−1(−i/N)=1−e−n(n−1)/2N≈1−e−n22N.{\displaystyle P(n)\approx 1-\prod _{i=0}^{n-1}\ {e}^{-i/N}=1-\exp \sum _{i=0}^{n-1}(-i/N)=1-{e}^{-n(n-1)/2N}\approx 1-{e}^{-{\frac {n^{2}}{2N}}}.}

Найдём число n{\displaystyle n} такое, чтобы P(n)≥12.{\displaystyle P(n)\geq {\frac {1}{2}}.}

12≥e−n22N.{\displaystyle {\frac {1}{2}}\geq {e}^{-{\frac {n^{2}}{2N}}}.}

Следовательно,

n≥2ln⁡2⋅N≈1,177N≈23{\displaystyle n\geq {\sqrt {2\ln 2\cdot N}}\approx 1,177{\sqrt {N}}\approx 23}[1].

Например, если используется 64-битный хеш, существует примерно 1,8 × 1019 различных выходов. Если все они одинаково вероятны (лучший случай), то для создания коллизии с использованием грубой силы потребовалось бы «всего» около 5 миллиардов попыток (5,38 × 109). Другие примеры:

БитыВозможные выходы (N)Желаемая вероятность случайной коллизии
(P)
10−1810−1510−1210−910−60,1 %1 %25 %50 %75 %
16216 (~6,5 x 103)<2<2<2<2<21136190300430
32232 (~4,3 × 109)<2<2<23932900930050 00077 000110 000
64264 (~1.8 × 1019)61906100190 0006 100 0001,9 × 1086,1 × 1083,3 × 1095,1 × 1097,2 × 109
1282128 (~3.4 × 1038)2,6 × 10108,2 × 10112,6 × 10138,2 × 10142,6 × 10168,3 × 10172,6 × 10181,4 × 10192,2 × 10193,1 × 1019
2562256 (~1,2 × 1077)4,8 × 10291,5 × 10314,8 × 10321,5 × 10344,8 × 10351,5 × 10374,8 × 10372,6 × 10384,0 × 10385,7 × 1038
3842384 (~3,9 × 10115)8,9 × 10482,8 × 10508,9 × 10512,8 × 10538,9 × 10542,8 × 10568,9 × 10564,8 × 10577,4 × 10571,0 × 1058
5122512 (~1,3 × 10154)1,6 × 10685,2 × 10691,6 × 10715,2 × 10721,6 × 10745,2 × 10751,6 × 10768,8 × 10761,4 × 10771,9 × 1077
В таблице показано количество хешей n(P),{\displaystyle n(P),} необходимых для достижения заданной вероятности успеха, в предположении, что все хеши одинаково вероятны. Для сравнения, 10−18 до 10−15 — это некорректируемый коэффициент ошибок на бит типичного жесткого диска[3]. Теоретически, MD5 хеши или UUID, составляющий 128 бит, должны оставаться в пределах этого диапазона до примерно 820 миллиардов документов, даже если его возможные результаты намного больше.

Легко видеть, что если выходы функции распределены неравномерно, то коллизии могут быть найдены ещё быстрее. Понятие «баланс» хеш-функции количественно определяет сопротивление функции для атаки «дней рождения» (используя неравномерное распределение ключей). Однако определение баланса хеш-функции требует вычисления всех возможных входных данных и, таким образом, неосуществимо для популярных хеш-функций, таких как семейства MD и SHA.

Для этой атаки, например, может быть уязвима электронная цифровая подпись. Допустим, что 2 человека — A и Б — хотят подписать контракт, но А хочет подсунуть Б поддельный вариант контракта. Тогда А составляет подлинный контракт и поддельный контракт. Далее посредством внесения допустимых изменений, не меняющих смысла текста (расстановкой запятых, переносов, отступов), А добивается, чтобы оба контракта имели одинаковый хеш. После этого А посылает Б подлинный контракт, Б его подписывает, а его подпись также показывает, что он подписал и поддельный контракт, так как оба контракта имеют одинаковый хеш. Для избежания уязвимости такого рода достаточно увеличить длину хеша настолько, чтобы стало вычислительно сложно найти 2 контракта с одинаковыми хешами. В частности, требуется в два раза большая длина хеша, чтобы обеспечить вычислительную сложность, сравнимую со сложностью полного перебора. Другими словами, если с помощью полного перебора злоумышленник может вычислить 2n{\displaystyle 2^{n}} хеш-значений, то он начнёт находить хеш-коллизии для всех хешей длиной менее 2n{\displaystyle 2n} бит. (см. en:Birthday attack)

Чтобы избежать этой атаки, выходная длина хеш-функции, используемой для схемы подписи, может быть выбрана достаточно большой, чтобы атака «дней рождения» стала вычислительно неосуществимой, то есть примерно вдвое больше бит, чем необходимо для предотвращения обычной атаки методом «грубой силы» (полным перебором).

Атака методом «дней рождения» протокола BIND[править | править код]

DNS — компьютерная распределённая система для получения информации о доменах. Чаще всего используется для получения IP-адреса по имени хоста (компьютера или устройства).

Термином «рекурсия» в DNS обозначают алгоритм поведения DNS-сервера, при котором сервер выполняет от имени клиента полный поиск нужной информации во всей системе DNS, при необходимости обращаясь к другим DNS-серверам. В случае «рекурсивного» запроса DNS-сервер опрашивает серверы (в порядке убывания уровня зон в имени), пока не найдёт ответ или не обнаружит, что домен не существует (на практике поиск начинается с наиболее близких к искомому DNS-серверов, если информация о них есть в кэше и не устарела, сервер может не запрашивать другие DNS-серверы).

В 2002 году Вагнер Сакраменто опубликовал рекомендацию, показывающую одну проблему с внедрением BIND протокола DNS. Он обнаружил, что BIND отправляет несколько одновременных рекурсивных запросов для одного и того же IP-адреса.

Атакующий отправляет запрос на DNS-сервер жертвы. Он выбирает доменное имя, которое DNS-сервер A не может найти в своем кеше и вынужден пересылать на следующий DNS-сервер B. Каждый обмен разрешениями между A и B аутентифицируется через случайный идентификатор TID. Прежде чем DNS-сервер A сможет получить пакеты ответов с DNS-сервера B, атакующий отправляет N поддельных ответных пакетов на DNS-сервер A. Если один из этих поддельных пакетов имеет тот же TID, что и идентификатор TID DNS-сервера A, то поддельные пакеты будут приняты сервером A за действительные пакеты. Реальный ответ от DNS-сервера B не будет обрабатываться DNS-сервером A. Таким образом, атакующий может «отравить» кеш DNS-сервера A, чтобы отобразить взломанный домен на IP-адрес, указанный атакующим.

При обычной атаке злоумышленник отправляет N поддельных ответов для одного запроса, вероятность успеха равна N65535{\displaystyle {\frac {N}{65535}}} (TID — 16-битное число).

Атака методом «дней рождения» позволяет выполнить взлом протокола BIND легче. Атакующий отправляет большое количество N запросов на DNS-сервер жертвы, всё одно и то же имя домена. Мы отправляем N поддельных ответов для N запросов. Отсюда вероятность того, что атака будет успешной, равна[4]

P(n)=1−e−n22N.{\displaystyle P(n)=1-{e}^{-{\frac {n^{2}}{2N}}}.}

Хорошей эмпирической закономерностью, которую можно использовать для быстрой оценки в уме, является соотношение

P(n)≈n22N,{\displaystyle P(n)\approx {n^{2} \over 2N},}

которое также может быть записано как

N≈n22P(n){\displaystyle N\approx {n^{2} \over 2P(n)}}

или

n≈2N×P(n).{\displaystyle n\approx {\sqrt {2N\times P(n)}}.}

Это приближение хорошо работает для вероятностей, меньших или равных 0,5.

Указанная схема аппроксимации особенно проста в использовании при работе с показателями. Например, пусть необходимо оценить, сколько документов можно обработать 32-битной хеш-функцией (N=232{\displaystyle N=2^{32}}), чтобы вероятность коллизии составляла не более одной миллионной (P=10−6≈2−20{\displaystyle P=10^{-6}\approx 2^{-20}}). Оценка наибольшего возможного числа документов для таких условий составляет

n≈2×232×2−20=21+32−20=213=26,5≈90,5,{\displaystyle n\approx {\sqrt {2\times 2^{32}\times 2^{-20}}}={\sqrt {2^{1+32-20}}}={\sqrt {2^{13}}}=2^{6{,}5}\approx 90{,}5,}

что близко к правильному ответу 93.

Предположим, что для атаки на 64-битный блочный шифр злоумышленнику нужно получить две пары открытого/шифрованного текста, которые отличаются только в наименее значимом бите. Интерпретация этой задачи в терминах парадокса дней рождения приводит к выводу, что пространство из всего лишь 232{\displaystyle 2^{32}} известных открытых текстов с высокой вероятностью будет содержать необходимую пару[5].

В качестве другого примера рассмотрим цикл 64-битового Фейстелева шифра. Предположим, что в шифре использована случайная функция F (32 в 32 бита). Нападающий может захотеть узнать, как много ему необходимо получить открытых текстов для получения коллизии функции F. Согласно парадоксу дней рождения, для этого придётся перебрать около 216{\displaystyle 2^{16}} открытых текстов[5].

Одним из следствий парадокса дней рождения является то, что для n-битового блочного шифра повторяемые появления блока шифротекста могут ожидаться с вероятностью около 0,63 при наличии лишь 2n/2{\displaystyle 2^{n/2}} случайных открытых текстов, зашифрованных на одном ключе (независимо от размера ключа). Для ECB-режима при совпадении двух блоков шифротекста соответствующие открытые тексты обязаны также совпадать. Это означает, что в атаке с известным шифротекстом информация об открытых текстах может раскрываться из шифротекстовых блоков.

  1. 1 2 Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein Introduction to algorithms, third edition, p. 130—133
  2. Буханцов А. Д., Дружкова И. В. О модификации алгоритма MD5 // Белгородский государственный национальный исследовательский университет, 2016, с. 176.
  3. ↑ Gray, Jim & van Ingen, Catharine (25 January 2007), «Empirical Measurements of Disk Failure Rates and Error Rates», arΧiv:cs/0701166 
  4. Joe Stewart, DNS Cache Poisoning, р. 4-5.
  5. 1 2 Бабенко Л. К., Ищукова Е. А., Анализ симметричных криптосистем, с. 146.
  • Mihir Bellare, Tadayoshi Kohno: Hash Function Balance and Its Impact on Birthday Attacks. EUROCRYPT 2004: pp401-418
  • Don Coppersmith : Another Birthday Attack, Proceeding CRYPTO ’85 Advances in Cryptology p. 14-17

возраст, семья, личная жизнь :: Шоу-бизнес :: Дни.ру

Талантливый журналист и телеведущий Юрий Дудь празднует свой 33-й день рождения. С какими трудностями предстоит столкнуться одному из самых популярных российских блогеров, «Дни.ру» узнали у специалиста. 

«33 года часто называют возрастом Христа. Сложное время для человека, особенно для творческого, занимающего уверенную жизненную позицию, являющегося в чем-то лидером. Этот период связан с переоценкой ценностей, меняются цели, приоритеты. Это же время считается опасным для тех, кто не привык скрывать своих мыслей и ходить по лезвию ножа», – предупредила Юрия ясновидящая Марианна Абравитова.

С одной стороны, Дудь подошел к такой жизненной черте, когда уже можно подводить итоги. И они у него потрясающие. Он талантливый, яркий, смелый журналист, умелый интриган в хорошем смысле слова. Целеустремленный человек и настоящая творческая личность. Но очень скоро он столкнется с тем, что градус нужно повышать – зритель не будет удерживать свое внимание в одной точке долго. Интерес к нему может рассеяться так же быстро, как он и появился. Юрию придется искать новый формат для своих передач, либо делать интервью еще более скандальными, – считает Абравитова. – И здесь его будет поджидать проблема: он рискует перейти рубеж и столкнуться с противодействием сильных мира сего. Нам уже продемонстрировали, как опасно быть скандальным журналистом на примере дела Голунова. Дудь может столкнуться с попытками закрыть его программу или куда более серьезными последствиями. В наступающем году ему нужно быть очень аккуратным, чтобы не подвергнуть свою жизнь опасности».

Если Юрию удастся сохранить этот баланс, у него есть все шансы заняться продюсированием похожих проектов на телевидении. Здесь у него может получиться что-то оригинальное и свежее. Ему интересна съемка фильмов – творческая энергия телеведущего постепенно перетекает сюда. Ему интересно не только документальное, но и художественное кино. Он обязательно попробует сняться в своем фильме в качестве актера. Дудя ждет интересное, многогранное будущее. Он будет везде: на ТВ, на радио и, конечно же, в интернете.

В плане личной жизни его ждет стабильность. Он достаточно авторитарный семьянин. Несмотря на внутреннюю свободу, с которой он делает свои проекты, внутри семьи у него все прописано по его правилам. 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *