Существует известный алгоритм атаки – так называемая «атака дней рождения», которая базируется на парадоксе, связанном с решением задачи о вероятности совпадений дней рождения хотя бы у двух человек в группе, состоящей из N людей. Парадокс состоит в том, что оценивается не вероятность того, что у какого-то конкретно выбранного человека в группе с кем-то совпадает день рождения (эта вероятность для небольших групп достаточно мала), а вероятность совпадения дней рождения у любой пары людей из данной группы. А это уже совсем другой порядок вероятности. Например, для группы из 23 людей такая вероятность превышает 50 %, а для 60 человек и более вероятность становится больше 99 %. С коллизиями в алгоритмах хеширования также можно провести аналогию, но базируясь на гораздо больших числовых значениях. Однако общий смысл от этого не меняется: для того, чтобы найти коллизию с какой-то значимой величиной вероятности, нужно перебрать гораздо меньшее число вариантов, чем максимальное число возможных выходов. Для ключа в 256 бит и вероятности нахождения коллизии в 75 % это значение составляет 5,7 × 1038, что на 39 порядков меньше максимального математически возможного числа выходов. Как видите, даже подобная существенно меньшая величина вероятности все равно поддерживает сложность задачи перебора вариантов на исключительно высоком вычислительном уровне. Поэтому в блокчейн-технологиях используются алгоритмы хеширования с высокой разрядностью, чтобы защитить хранимые данные от посягательств злоумышленников как минимум до того момента, пока вычислительные мощности не позволят преодолеть эти барьеры сложности.
Мы постарались рассмотреть основные моменты, которые необходимо знать о принципах хеширования. К непосредственным применениям этой процедуры мы еще вернемся в специальных разделах книги, посвященных практическим реализациям блокчейн-проектов.
История криптографии
Рассматривая технологию блокчейн в деталях, совершенно невозможно пройти мимо одного из ее самых важных элементов – криптографической части. Криптография в блокчейн является мощнейшим связующим элементом, на котором базируется основная ценность технологии распределенного реестра в целом. Именно криптография стоит на страже целостности хранения и передачи данных, обеспечивает права владения и защищает активы пользователей системы, в первую очередь – финансовые. Без криптографии технология блокчейн просто не смогла бы существовать – она бы утратила все свои преимущества, и в ее использовании не было бы никакого смысла. Но почему же криптография настолько важна? Давайте попробуем разобраться, что же такое криптография и каким образом она стала фактическим ядром блокчейн-технологии.
История криптографии уходит далеко в глубь тысячелетий. Во все времена у людей существовала необходимость передавать секретную информацию на расстоянии. В первую очередь дело обычно касалось информации, имеющей военное значение. В эпоху отсутствия в мире систем коллективной безопасности более слабые в военном отношении государства постоянно становились добычей агрессивных соседей. Единственным шансом для малых государств сохранить свою свободу и независимость было найти себе сильных союзников. Но для заключения подобных соглашений необходимо было обмениваться информацией, которая ни при каких обстоятельствах не должна была стать известна потенциальному противнику. То же самое касалось и приказов военного командования к своим подразделениям, находящимся вдали от дислокации основных сил: для осуществления постоянной координации нужно было передавать и получать информацию о местоположении, численности, снабжении, а также тактике и стратегии предстоящих боевых действий.
Информация передавалась через специально подготовленных людей (гонцов или шпионов), задачей которых было максимально быстро и незаметно для противника передать послание конечному адресату. Тем не менее существовал немалый риск, что такой посланец будет перехвачен, а информация, которую он несет, станет достоянием врагов. Эти риски постоянно учитывались при составлении сообщений, поэтому их практически никогда не писали открытым текстом, а пытались определенным образом зашифровать. Подобная практика предполагала, что ключ к расшифровке текстов имеется только у отправителя и у тех, кому данное послание адресовано. А это означает, что до того, как начать обмен сообщениями, необходимо было приложить определенные усилия к распространению шифровальных ключей между центром и его потенциальными адресатами. Что, в свою очередь, влекло за собой риск, что эта информация может быть перехвачена (или перекуплена) и впоследствии использована для чтения сообщений неприятеля. Разумеется, сам отправитель не будет иметь об этом ни малейшего понятия, поскольку факт обладания тайным ключом не будет предан противником гласности.
Принцип, когда сообщения шифруются и дешифруются одним и тем же ключом, которым владеют обе стороны, вступающие в обмен информацией, называется симметричной криптографией, поскольку в данном случае имеет место явная симметрия в шифровальных ключах. Именно этот принцип и использовался почти все время существования человеческой цивилизации – от глубокой древности и вплоть до конца 70-х годов прошлого века. Какие же приемы использовались в те времена для шифрования? Как и у других областей человеческого знания, у криптографических технологий была своя собственная эволюция. Начиналось все с банальной подстановки одних букв послания вместо других. Например, римский полководец Гай Юлий Цезарь кодировал послания своим генералам методом сдвига букв на три позиции в латинском алфавите. То есть буква B становилась буквой E, C – F и так далее. Подобные подстановочные шифры называют еще моноалфавитными. Впоследствии моноалфавитные шифры были вытеснены полиалфавитными, когда к буквам шифруемого текста циклически применялись несколько моноалфавитных шифров. Этот метод с различными вариациями использовался почти 1000 лет, до начала XX века, когда в обиход вошли электромеханические устройства для шифрования сообщений. Наверное, самой известной реализацией подобного способа криптографии является немецкая роторная шифровальная машина «Энигма», шифры которой считались невскрываемыми.
С современной точки зрения шифр «Энигмы» выглядит криптографически слабым. Однако во времена Второй мировой войны эта шифровальная машина сумела доставить изрядные хлопоты противникам Германии. Еще задолго до начала военных действий, в 1932 году, польской разведке удалось на базе сведений от своих германских агентов получить некоторые коды и принципы устройства машины. Это позволило полякам воссоздать машину у себя в лаборатории и попытаться разобраться в алгоритме ее работы. В 1939 году Германия вторглась в Польшу, однако незадолго до этого все наработки по «Энигме» были переданы британской разведке, которая создала специальную группу по дешифровке сообщений и привлекла в нее талантливого математика и криптографа Алана Тьюринга. К 1940 году команда Тьюринга сумела построить около двухсот криптоаналитических машин, работающих с шифром «Энигмы», но исключительное многообразие вариантов перебора для расшифровки очень долго не позволяло взломать код. Тем не менее Тьюрингу удалось выявить повторяющиеся фразы в зашифрованных сообщениях. Одним из таковых оказалось нацистское приветствие, присутствующее почти в каждом тексте, что позволило существенно сузить диапазон перебора вариантов и наконец взломать шифр. Считается, что именно это событие существенно повлияло на поражение Германии, а дата окончания войны, как полагают некоторые специалисты, приблизилась не менее чем на год.