Введение
Ранняя криптосистема с открытым ключом
В криптографии головоломки Меркла — это ранняя разработка криптосистемы с открытым ключом, протокол, предложенный Ральфом Мерклем в 1974 году и опубликованный в 1978 году. Он позволяет двум сторонам установить общий секрет посредством обмена сообщениями, даже если изначально у них нет общих секретов.
In cryptography, Merkle's Puzzles is an early construction for a public key cryptosystem, a protocol devised by Ralph Merkle in 1974 and published in 1978. It allows two parties to agree on a shared secret by exchanging messages, even if they have no secrets in common beforehand.
Описание
Предположим, Алиса и Боб хотят общаться. Боб может отправить сообщение Алисе следующим образом: сначала он создает большое количество головоломок, каждая из которых имеет умеренную сложность — Алисе должно быть возможно решить головоломку, затратив умеренное количество вычислительных ресурсов. Головоломки представляют собой зашифрованное сообщение с неизвестным ключом; ключ должен быть достаточно коротким, чтобы его можно было взломать методом перебора. Боб отправляет все головоломки (то есть зашифрованные сообщения) Алисе, которая случайным образом выбирает одну и решает её. Расшифрованное решение содержит идентификатор и сеансовый ключ, позволяющие Алисе сообщить Бобу, какую головоломку она решила. Теперь у обеих сторон есть общий ключ: у Алисы, потому что она решила головоломку, и у Боба, потому что он её отправил. Любой злоумышленник (скажем, Ева) сталкивается с более сложной задачей — она не знает, какую головоломку решила Алиса. Её лучшая стратегия — решить все головоломки, но поскольку их так много, это потребует от Евы значительно больше вычислительных ресурсов, чем от Алисы.
Описание на высоком уровне
Боб генерирует 2N сообщений, содержащих текст: "Это сообщение X. Это симметричный ключ Y", где X — случайно сгенерированный идентификатор, а Y — случайно сгенерированный секретный ключ, предназначенный для симметричного шифрования. Таким образом, и X, и Y уникальны для каждого сообщения. Все сообщения зашифрованы таким образом, что пользователь может с определёнными трудностями провести атаку полным перебором на каждое сообщение. Боб отправляет все зашифрованные сообщения Алисе. Алиса получает все зашифрованные сообщения и случайным образом выбирает одно сообщение для атаки полным перебором. После того, как Алиса обнаруживает идентификатор X и секретный ключ Y внутри этого сообщения, она шифрует свой открытый текст с помощью секретного ключа Y и отправляет этот идентификатор (в открытом виде) вместе со своим шифротекстом Бобу. Боб находит секретный ключ, соответствующий этому идентификатору, поскольку именно он их сгенерировал, и расшифровывает шифротекст Алисы с помощью этого секретного ключа. Следует отметить, что злоумышленник Ева может прочитать идентификатор X, отправленный Алисой Бобу (в открытом виде), но не имеет возможности сопоставить его с секретным ключом Y, который Боб и Алиса теперь используют для их дальнейшего общения, поскольку значение X в каждом сообщении было сгенерировано случайным образом.
Анализ сложности и безопасности
Параметры игры-головоломки могут быть выбраны таким образом, чтобы взлом кода был значительно сложнее для подслушивающего, чем установление связи между участниками, но головоломки Меркла не обеспечивают существенных качественных различий в сложности, необходимых для (и определяющих) безопасность в современной криптографии. Предположим, что Боб отправляет m головоломок, и для решения одной головоломки требуется n шагов вычислений как Бобу, так и Алисе. Тогда оба могут вывести общий ключ сессии за время O(m+n). Еве, напротив, необходимо решить все головоломки, что требует от неё времени O(mn). Если m ≈ n, то вычислительные затраты Евы примерно квадратично больше, чем у Алисы и Боба, то есть время её вычислений пропорционально квадрату времени вычислений Алисы и Боба. Следовательно, n следует выбирать достаточно большим, чтобы вычисления оставались выполнимыми для Алисы и Боба, но превосходили возможности Евы. Квадратичная сложность обычно не считается достаточной для обеспечения безопасности против злоумышленника (или, при больших значениях m и n, достаточно удобной для участников) в практических криптографических приложениях. Однако эта схема является одним из первых примеров криптографии с открытым ключом и послужила вдохновением для протокола обмена ключами Диффи — Хеллмана, который обладает гораздо большей сложностью и основан на проблеме дискретного логарифма. В 2008 году Боаз Барак и Мохаммад Махмуди Гидари показали ("Головоломки Меркла оптимальны"), что эту квадратичную границу нельзя улучшить.