Введение

Криптография, использование кодов и шифров для защиты секретов, зародилась тысячи лет назад. До недавних десятилетий она представляла собой историю так называемой классической криптографии – то есть методов шифрования, использующих ручку и бумагу или, возможно, простые механические приспособления. В начале XX века изобретение сложных механических и электромеханических машин, таких как роторный шифровальный аппарат «Энигма», предоставило более сложные и эффективные средства шифрования, а последующее внедрение электроники и вычислительной техники позволило создать еще более сложные схемы, большинство из которых совершенно не подходят для использования с ручкой и бумагой. Развитие криптографии шло рука об руку с развитием криптоанализа – взлома кодов и шифров. Открытие и раннее применение частотного анализа для расшифровки сообщений порой оказывало влияние на ход истории. Так, телеграмма Циммермана послужила причиной вступления Соединенных Штатов в Первую мировую войну, а расшифровка союзниками шифров нацистской Германии, по некоторым оценкам, сократила Вторую мировую войну на два года. До 1960-х годов надежная криптография была преимущественно прерогативой правительств. Два события впоследствии сделали ее общедоступной: создание открытого стандарта шифрования (DES) и изобретение криптографии с открытым ключом.

Античность

Самый ранний известный пример использования криптографии содержится в нестандартных иероглифах, вырезанных на стене гробницы в Древнем Египте около 1900 года до н.э. Однако, это не считаются серьезными попытками секретной переписки, а скорее попытками создать загадку, интригу или даже развлечь грамотных людей. Некоторые глиняные таблички из Месопотамии, датируемые несколько более поздним периодом, явно предназначались для защиты информации – одна, датированная примерно 1500 годом до н.э., содержала зашифрованный рецепт гончара для глазури, предположительно имевший коммерческую ценность. Кроме того, еврейские ученые использовали простые моноалфавитные шифры подстановки (такие как шифр Атбаш), начиная, возможно, примерно с 600 по 500 год до н.э. В Индии, примерно с 400 года до н.э. по 200 год н.э., в «Кама-Сутре» была задокументирована «Млечита-викалпа», или «искусство понимания письма в шифре и написания слов особым образом», для общения между возлюбленными. Вероятно, это также был простой шифр подстановки. Некоторые части египетских демотических греческих магических папирусов были написаны шифровым письмом. Говорят, что древние греки были знакомы с шифрами. Спартанская армия использовала шифр транспозиции сцитала. Геродот рассказывает о секретных сообщениях, физически скрытых под воском на деревянных табличках или в виде татуировок на голове раба, скрытых отрастающими волосами, хотя это нельзя считать примерами криптографии в строгом смысле, поскольку сообщение, будучи известным, можно прочитать напрямую; это известно как стеганография. Другой греческий метод был разработан Полибием (ныне известный как «Квадрат Полибия»).

Средневековая криптография

Дэвид Кан отмечает в книге «Кодбрейкеры», что современная криптология зародилась среди арабов, первых людей, систематически документировавших криптоаналитические методы. Аль-Халил (717–786) написал «Книгу криптографических сообщений», в которой содержится первое использование перестановок и комбинаций для перечисления всех возможных арабских слов с гласными и без них. Изобретение метода частотного анализа для взлома моноалфавитных шифров подстановки, арабским математиком Аль-Кинди примерно в 800 году н.э., оказалось самым значительным криптоаналитическим достижением до Второй мировой войны. Аль-Кинди написал книгу о криптографии под названием «Рисала фи Истихрадж аль Му'амма» (Трактат о извлечении скрытого смысла), в которой он описал первые криптоаналитические методы, включая некоторые для полиалфавитных шифров, классификацию шифров, арабскую фонетику и синтаксис, и, что наиболее важно, дал первые описания частотного анализа. Он также рассматривал методы шифрования, криптоанализ определенных шифров и статистический анализ букв и их сочетаний в арабском языке. Важным вкладом Ибн Адлана (1187–1268) стало определение необходимого размера выборки для использования частотного анализа. В этот период на Западе проводились важные и значительные криптографические эксперименты. Ахмад аль-Калкашанди (1355–1418) написал «Субх аль-а’ша», 14-томную энциклопедию, включавшую раздел о криптологии. Эта информация приписывается Ибн аль-Дураиму, жившему с 1312 по 1361 год, но труды которого по криптографии были утеряны. Список шифров в этой работе включал как шифры подстановки, так и транспозиции, и впервые – шифр с несколькими подстановками для каждой буквы открытого текста (позже названный гомофонической подстановкой). Также Ибн аль-Дураиму принадлежит изложение и рабочий пример криптоанализа, включая использование таблиц частот букв и наборов букв, которые не могут встречаться вместе в одном слове. Самый ранний пример гомофонического шифра подстановки – тот, который использовал герцог Мантуанский в начале 1400-х годов. Гомофонический шифр заменяет каждую букву несколькими символами в зависимости от частоты ее появления. Этот шифр был передовым для своего времени, поскольку он сочетает в себе моноалфавитные и полиалфавитные признаки. По сути, все шифры оставались уязвимыми для частотного анализа до разработки полиалфавитного шифра, и многие оставались таковыми и после этого. Полиалфавитный шифр был наиболее четко описан Леоном Баттистой Альберти около 1467 года, за что его называют «отцом западной криптологии». В Европе криптография стала (тайно) более важной из-за политической конкуренции и религиозных революций. Например, в Европе во время и после Ренессанса граждане различных итальянских государств, включая Папскую область и Римско-католическую церковь, способствовали быстрому распространению криптографических методов, немногие из которых демонстрировали понимание (или даже знание) полиалфавитного прогресса Альберти. «Продвинутые шифры», даже после Альберти, не были такими продвинутыми, как утверждали их изобретатели, разработчики и пользователи (и, вероятно, даже они сами верили). Их часто взламывали. Этот чрезмерный оптимизм может быть свойственен криптографии, поскольку тогда – и остается сегодня – принципиально трудно оценить уязвимость собственной системы. В отсутствие знаний предположения и надежды закономерно распространены. Криптография, криптоанализ и предательство секретных агентов/курьеров фигурировали в заговоре Бэбингтона во время правления королевы Елизаветы I, что привело к казни Марии, королевы Шотландии. Роберт Хук предположил в главе «О книге духов доктора Ди», что Джон Ди использовал тритемианскую стеганографию для сокрытия своей переписки с королевой Елизаветой I. Главным криптографом короля Франции Людовика XIV был Антуан Россиньоль; он и его семья создали так называемый «Великий шифр», который оставался неразгаданным с момента его первого использования до 1890 года, когда французский военный криптоаналитик Этьен Базери его разгадал. Зашифрованное сообщение времен «Человека в железной маске» (расшифрованное Этьеном Базери незадолго до 1900 года) пролило некоторый, к сожалению, не окончательный свет на личность этого реального, хотя и легендарного и несчастного, узника. За пределами Европы, после того как монголы положили конец исламскому Золотому веку, криптография…

Криптография с 1800 года до Первой мировой войны

Хотя криптография имеет долгую и сложную историю, лишь в XIX веке она вышла за рамки ad hoc подходов к шифрованию или криптоанализу (науке о поиске уязвимостей в криптосистемах). Примерами последнего служат работы Чарльза Бэббиджа, выполненные в эпоху Крымской войны, по математическому криптоанализу полиалфавитных шифров, которые были переработаны и опубликованы несколько позже прусским ученым Фридрихом Касиски. Понимание криптографии в то время обычно сводилось к эмпирическим правилам, полученным нелегким трудом; примером может служить криптографические труды Огюста Керкхоффса в конце XIX века. Эдгар Аллан По использовал систематические методы для решения шифров в 1840-х годах. В частности, он опубликовал объявление о своих способностях в филадельфийской газете "Alexander's Weekly (Express) Messenger", приглашая присылать шифры, большинство из которых он успешно взламывал. Его успех вызвал общественный резонанс на несколько месяцев. Позже он написал эссе о методах криптографии, которое оказалось полезным пособием для начинающих британских криптоаналитиков, пытавшихся расшифровать немецкие коды и шифры во время Первой мировой войны, а также создал знаменитый рассказ "Золотой жук", в котором криптоанализ играл ключевую роль. Криптография и ее злоупотребление были связаны с казнью Маты Хари и осуждением и заключением Дрейфуса, оба события произошли в начале XX века. Криптографы также участвовали в разоблачении интриг, приведших к делу Дрейфуса; Мата Хари же была расстреляна. В годы Первой мировой войны "Комната 40" Адмиралтейства взломала немецкие военно-морские коды и сыграла важную роль в нескольких морских сражениях, в частности, в обнаружении крупных выходов немецких кораблей в Северное море, что привело к битвам на Доггер-Банке и Ютландии, когда британский флот был направлен на перехват. Однако, наиболее важным ее достижением, вероятно, стало расшифровка телеграммы Циммермана – сообщения из немецкого министерства иностранных дел, отправленного через Вашингтон послу Генриху фон Эккардту в Мексику, которое сыграло решающую роль в вступлении Соединенных Штатов в войну. В 1917 году Гилберт Вернам предложил шифр для телепринтера, в котором предварительно подготовленный ключ, хранящийся на перфоленте, комбинируется символ за символом с открытым текстом для получения шифротекста. Это привело к разработке электромеханических шифровальных машин и к созданию единственного не взламываемого шифра – одноразового блокнота. В 1920-х годах польские военно-морские офицеры оказывали помощь японским военным в разработке кодов и шифров. Математические методы получили широкое распространение в период, предшествовавший Второй мировой войне (особенно в применении Уильямом Ф. Фридманом статистических методов к криптоанализу и разработке шифров, а также в первоначальном взломе Марианом Реевски немецкой версии шифра "Энигма" в 1932 году).

Криптография Второй мировой войны

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

Германия

Немцы активно использовали в нескольких вариантах электромеханическую роторную машину, известную как «Энигма». Математик Мариан Реевский, работая в польском Шифровальном бюро, в декабре 1932 года, используя математические методы и ограниченную документацию, полученную от немецкого клерка через капитана Густава Бертрана из французской военной разведки, установил детальную структуру немецкой армейской «Энигмы». По словам историка Дэвида Канна, это был величайший прорыв в криптоанализе за тысячу лет и более. Реевский и его коллеги из Шифровального бюро – математики Ежи Ружицкий и Генрик Зыгальский – продолжили расшифровывать сообщения «Энигмы» и отслеживать эволюцию компонентов и процедур шифрования немецкой армии в течение некоторого времени. Когда ресурсы поляков стали истощаться из-за изменений, вводимых немцами, и с приближением войны, Шифровальное бюро, по указанию польского Генерального штаба, 25 июля 1939 года в Варшаве, посвятило представителей французской и британской разведок в секреты расшифровки «Энигмы». Вскоре после вторжения Германии в Польшу 1 сентября 1939 года ключевые сотрудники Шифровального бюро были эвакуированы на юго-восток; 17 сентября, когда Советский Союз напал на Польшу с востока, они перешли в Румынию. Оттуда они добрались до Парижа, Франция, и в PC Bruno, недалеко от Парижа, продолжили работу над взломом «Энигмы», сотрудничая с британскими криптологами из Блетчли-парка, которые осваивали их наработки. В конечном итоге британские криптографы, в рядах которых было много мастеров шахмат и профессоров математики, таких как Гордон Уэлчман, Макс Ньюман и Алан Тьюринг (концептуальный основатель современной вычислительной техники), добились значительных успехов в масштабе и технологиях расшифровки «Энигмы». Немецкий криптоанализ во время Второй мировой войны также имел некоторый успех, в первую очередь, взломав военно-морской шифр № 3. Это позволило им отслеживать и топить атлантические конвои. Только информация, полученная из источника «Ультра», в конечном итоге убедила адмиралтейство изменить свои коды в июне 1943 года. Это удивительно, учитывая успех британских дешифровщиков из «Комнаты 40» в предыдущей мировой войне. В конце войны, 19 апреля 1945 года, высшим британским гражданским и военным чиновникам сообщили, что они никогда не должны раскрывать, что немецкий шифр «Энигмы» был взломан, поскольку это дало бы побежденному врагу возможность заявить, что они «были не полностью и честно разгромлены». Немецкая армия также использовала несколько потоковых шифров телепринтерного типа. В Блетчли-парке их называли шифрами «Фиш»; Макс Ньюман и его коллеги разработали и развернули «Heath Robinson», а затем первый в мире программируемый цифровой электронный компьютер «Colossus» для помощи в их криптоанализе. Немецкое министерство иностранных дел начало использовать одноразовый шифр в 1919 году; часть этого трафика была прочитана во время Второй мировой войны, отчасти благодаря обнаружению некоторых ключевых материалов в Южной Америке, которые немецкий курьер выбросил без должной осторожности. Schlüsselgerät 41 был разработан в конце войны как более безопасная замена «Энигме», но использовался ограниченно.

Япония

Группе армии США, ШИС, удалось взломать самую защищенную японскую дипломатическую систему шифрования (электромеханический пошаговый коммутатор, получивший от американцев название "Пурпурный") в 1940 году, до нападения на Перл-Харбор. Японский аппарат "Пурпурный", разработанный внутри страны, заменил более ранний аппарат "Красный", использовавшийся японским Министерством иностранных дел, а также связанный с ним аппарат M 1, использовавшийся военно-морскими атташе, который был взломан Агнес Дрисколл из военно-морских сил США. Все японские машинные шифры были взломаны союзниками, в той или иной степени. Японская армия и флот в основном использовали системы шифрования на основе кодовых книг, позднее с добавлением отдельного числового ключа. Криптографы военно-морских сил США (в сотрудничестве с британскими и голландскими криптографами после 1940 года) взломали несколько криптосистем японского флота. Взлом одной из них, JN 25, сыграл решающую роль в победе США в битве за Мидуэй, и этот факт был опубликован в Chicago Tribune вскоре после битвы, хотя, по-видимому, японцы этого не заметили и продолжали использовать систему JN 25.

Союзники

Американцы называли разведывательную информацию, полученную в результате криптоанализа, особенно, возможно, из аппарата "Пурпурный", "Мэджик". Британцы в конечном итоге остановились на термине "Ультра" для обозначения разведывательных данных, полученных в результате криптоанализа, в частности, из сообщений, защищенных различными модификациями "Энигмы". Ранее британский термин для "Ультра" был "Бонифейс" – в попытке создать впечатление, что в случае компрометации источником может оказаться отдельный агент. К шифровальным машинам, использовавшимся во Второй мировой войне, относились британская TypeX и американская SIGABA; обе представляли собой электромеханические роторные машины, схожие по принципу действия с "Энигмой", но с существенными улучшениями. Ни одна из них не была взломана никем во время войны. Поляки использовали машину "Лацида", но её безопасность оказалась ниже ожидаемой (по оценке польских военных криптографов в Великобритании), и её использование было прекращено. Американские войска в полевых условиях использовали M 209 и ещё менее защищенные машины семейства M 94. Агенты британской SOE первоначально использовали "шифры-стихи" (заученные наизусть стихотворения служили ключами шифрования/дешифрования), но позднее в ходе войны начали переходить на одноразовые шифры. Шифр VIC (использовался, по крайней мере, до 1957 года в связи с нью-йоркской шпионской сетью Рудольфа Абеля) был очень сложным ручным шифром и, согласно Дэвиду Кану в книге "Кан о кодах", считается самым сложным из известных, использовавшихся советскими спецслужбами. Подробности о дешифровке советских шифров (особенно в случаях повторного использования одноразовых шифров) можно найти в проекте "Венона".

Публичный ключ

Второе важное развитие произошло в 1976 году и, возможно, было даже более значимым, поскольку оно кардинально изменило принципы работы криптосистем. Речь идет о публикации статьи Уитфилда Диффи и Мартина Хеллмана «Новые направления в криптографии». В ней был представлен принципиально новый метод распределения криптографических ключей, который существенно продвинул решение одной из фундаментальных проблем криптографии – проблемы распределения ключей, и получил название обмена ключами Диффи — Хеллмана. Эта статья также стимулировала почти немедленную разработку нового класса алгоритмов шифрования – алгоритмов с асимметричным ключом. До этого момента все практически полезные современные алгоритмы шифрования были алгоритмами с симметричным ключом, в которых один и тот же криптографический ключ используется как отправителем, так и получателем вместе с базовым алгоритмом, и оба должны хранить его в секрете. Все электромеханические машины, использовавшиеся во Второй мировой войне, относились к этому логическому классу, как и шифры Цезаря и Атбаш, и, по сути, все шифросистемы, существовавшие в истории. «Ключом» для кода, разумеется, является шифровальная книга, которую также необходимо распространять и хранить в секрете, что создает схожие практические проблемы. По необходимости, ключ в каждой такой системе должен был быть передан между общающимися сторонами безопасным способом перед использованием системы (обычно это называют «безопасным каналом»), например, надежным курьером с портфелем, прикованным наручниками к запястью, при личной встрече или с помощью верного почтового голубя. Это требование никогда не бывает тривиальным и очень быстро становится неуправляемым по мере увеличения числа участников, отсутствия безопасных каналов для обмена ключами или, как это является разумной криптографической практикой, частой смены ключей. В частности, если сообщения должны быть защищены от других пользователей, для каждой возможной пары пользователей требуется отдельный ключ. Такая система известна как криптосистема с секретным или симметричным ключом. Обмен ключами Диффи — Хеллмана (и последующие усовершенствования и варианты) значительно упростили и повысили безопасность работы с этими системами, как никогда прежде в истории. В отличие от этого, асимметричное шифрование использует пару математически связанных ключей, каждый из которых расшифровывает шифрование, выполненное с помощью другого. Некоторые, но не все, из этих алгоритмов обладают дополнительным свойством: один из ключей пары невозможно вывести из другого каким-либо известным методом, кроме перебора. Такой алгоритм известен как алгоритм с открытым или асимметричным ключом. При использовании такого алгоритма каждому пользователю требуется только одна пара ключей. Обозначая один ключ пары как закрытый (всегда секретный), а другой – как открытый (часто широко доступный), для обмена ключами не требуется безопасный канал. Пока закрытый ключ остается секретным, открытый ключ может быть широко известен в течение длительного времени без ущерба для безопасности, что позволяет безопасно использовать одну и ту же пару ключей неопределенно долго. Для безопасного обмена данными по незащищенному каналу двум пользователям асимметричного алгоритма ключей необходимо знать свои собственные открытые и закрытые ключи, а также открытый ключ другого пользователя. Рассмотрим следующий сценарий: Алиса и Боб уже много лет используют пары ключей для работы со многими другими пользователями. В начале обмена сообщениями они обмениваются открытыми ключами в незашифрованном виде по незащищенной линии. Затем Алиса шифрует сообщение своим закрытым ключом и повторно шифрует результат открытым ключом Боба. Двойное зашифрованное сообщение отправляется в виде цифровых данных по проводу от Алисы к Бобу. Боб получает поток битов, расшифровывает его своим закрытым ключом, а затем расшифровывает этот поток битов открытым ключом Алисы. Если конечный результат можно распознать как сообщение, Боб может быть уверен, что сообщение действительно пришло от кого-то, кто знает закрытый ключ Алисы (вероятно, от нее самой, если она была осторожна со своим закрытым ключом), и что любой, кто перехватит канал, потребуется закрытый ключ Боба для понимания сообщения. Эффективность асимметричных алгоритмов основана на классе математических задач, называемых односторонними функциями, которые требуют относительно небольших вычислительных ресурсов для выполнения, но огромных – для обратного преобразования, если оно вообще возможно. Классическим примером односторонней функции является умножение очень больших простых чисел. Умножить два больших простых числа довольно быстро, но найти множители произведения двух больших простых чисел – очень сложно. Из-за математических свойств односторонних функций большинство возможных ключей являются неудачным выбором в качестве криптографических ключей; лишь небольшая часть возможных ключей заданной длины подходит, поэтому асимметричные алгоритмы требуют очень длинных ключей для достижения того же уровня безопасности, который обеспечивают относительно короткие симметричные ключи. Необходимость генерировать пары ключей и выполнять операции шифрования/расшифрования делает асимметричные алгоритмы вычислительно затратными по сравнению с большинством симметричных алгоритмов. Поскольку симметричные алгоритмы часто могут использовать любую последовательность (случайных или, по крайней мере, непредсказуемых) битов в качестве ключа, одноразовый сеансовый ключ можно быстро сгенерировать для кратковременного использования. Следовательно, обычной практикой является использование длинного асимметричного ключа для обмена одноразовым, гораздо более коротким (но столь же надежным) симметричным ключом. Более медленный асимметричный алгоритм безопасно передает симметричный сеансовый ключ, а более быстрый симметричный алгоритм берет на себя оставшуюся часть сообщения. Асимметричная криптография, обмен ключами Диффи — Хеллмана и наиболее известные алгоритмы с открытым/закрытым ключом (то есть, обычно называемый алгоритм RSA) по-видимому, были независимо разработаны в разведывательном агентстве Великобритании до публичного объявления Диффи и Хеллмана в 1976 году. GCHQ опубликовала документы, утверждающие, что они разработали криптографию с открытым ключом до публикации статьи Диффи и Хеллмана. В 1960-х и 1970-х годах в GCHQ было написано несколько секретных документов, которые в конечном итоге привели к схемам, по сути идентичным шифрованию RSA и обмену ключами Диффи — Хеллмана в 1973 и 1974 годах. Некоторые из них были опубликованы, а изобретатели (Джеймс Х. Эллис, Клиффорд Кокс и Малькольм Уильямсон) обнародовали (часть) своих работ.

Хэширование

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