Криптография без иллюзий. От стены недоверия к трём опорам

- -
- 100%
- +
Труба, по которой течёт наш разговор, кому-то принадлежит. Вопрос не в том, чиста ли вода, а в том, чьи руки на кране.
2.1. Мэллори, владеющая каналом
Обычный образ врага — тот, кто прислонился ухом к стене. Он снаружи, он пассивен, он ловит то, что случайно протекает наружу; всё, что от него защищает, — сделать стену толще. С таким врагом криптография справляется играючи: запри содержимое покрепче, и подслушивать станет нечего. Именно этот образ и подсовывает осторожность, когда речь заходит про открытый ключ, — будто вся угроза в том, что кто-то его подсмотрит.
Настоящий противник устроен иначе, и знакомство с ним стоит завести сразу, пока привычная картинка не успела прирасти намертво. Назовём противника по имени: Мэллори. Мэллори не прижимается к стене — стена принадлежит ей. Она не ловит то, что течёт по каналу; она решает, что по нему потечёт. Между Бобом, который хочет написать Алисе, и самой Алисой стоит не любопытное ухо, а хозяйка трубы — та, через чьи руки проходит каждое письмо и каждый ключ и которая вольна пропустить, задержать или подменить всё, что сочтёт нужным. Она не гостья на канале; канал — её дом.
Разница кажется мелкой, а меняет она всё. Пассивный враг работает с тем, что ему досталось; Мэллори выбирает, что достанется тебе. Ты думаешь, что держишь в руках ключ Алисы, — но между тобой и Алисой стоит Мэллори, и ты держишь ровно то, что она тебе протянула. Вся дальнейшая игра пойдёт против этого противника, а не против подслушивающего: каждая попытка отнять у хозяйки трубы её власть решать, что ты увидишь, будет кончаться одним и тем же — обнаружением, что власть эта никуда не делась, лишь переехала на этаж выше или спряталась поглубже. Пока в голове сидит подслушивающий, ни одна из настоящих трудностей не встанет в полный рост.
Канал — это не отвлечённая линия между двумя точками, а всё, через что письмо и ключ реально проходят по дороге к тебе: сеть, несущая биты, сервер, что их пересылает, справочник, куда ты полез за чужим ключом, программа, которую кто-то вручил тебе, чтобы этим ключом пользоваться. Любые руки на этом пути годятся на роль Мэллори. Ей незачем быть всемогущей и видеть всё сразу — довольно оказаться на одном-единственном отрезке между тобой и собеседником и распоряжаться тем, что через него проходит. Хозяйка трубы — не мифическая всесильная тень, а вполне земное место, где кто-то встал между вами двоими, — и всё, что ты видишь, проходит через его руки.
И вот тут наконец видно, куда на самом деле смотрела осторожность и почему промахнулась. Опубликовать ключ и вправду ничего не стоит: его открытость — не рана. Ключ, лежащий на виду у всех, ровно так же годен, как ключ, врученный из рук в руки; в самой публичности нет ни грана слабости. Слабость в другом, и она совсем не там, где её сторожили: открытость ключа не говорит ни слова о том, чей он. Лежит ключ, подписанный именем Алисы, — но подпись под именем может вывести и Мэллори, и по виду ключа этого не различить. Трюк с публикацией сработал без осечки против того врага, для которого его придумали, — против подслушивающего. Против хозяйки трубы он не значит ничего.
Тут же стоит оговорить и то, чего Мэллори не делает. Она не садится ломать замок. Ни здесь, ни дальше в этой книге никто не вскроет шифр перебором, не подберёт ключ, не найдёт трещину в самой математике. Замок цел и держит честно — просто хозяйка трубы, вместо того чтобы биться о него лбом, тихо ставит на его место свой собственный, а твой убирает в карман. Ей незачем взламывать то, что можно обойти. Ломать замок — значит работать там, где противник силён и готов к удару; обходить — значит уйти туда, где он и не думал обороняться. Криптографию не взламывают — её обходят. Там, где ждёшь героического взлома, чаще находишь буднично подменённый ключ.
Пока это лишь имя и роль: хозяйка трубы, решающая, что по ней течёт. Угроза названа, но ещё не осязаема — её легко выслушать и не поверить нутром, отмахнуться как от теоретической страшилки. Чтобы вежливое недоверие сменилось холодком узнавания, атаку придётся проиграть руками, шаг за шагом, и дойти до самой её жуткой черты — до того, что всё при этом выглядит совершенно, безупречно правильно.
2.2. Письмо доходит «правильно»
Проиграем всё по шагам — медленно, как разбирают по записи чужую шахматную партию, чтобы поймать тот единственный ход, после которого позиция уже проиграна, хотя доска ещё выглядит целой.
Боб хочет написать Алисе — тайно, так, чтобы прочла только она. Для этого ему нужен её открытый ключ: тот самый ящик со щелью, в который бросить письмо может любой, а вынуть — одна Алиса. Боб просит ключ, шлёт запрос по каналу. Но канал принадлежит Мэллори. Запрос доходит до неё, и вместо ключа Алисы она протягивает Бобу свой собственный, аккуратно надписав его именем Алисы. Боб получил ключ, на котором стоит нужное имя, — с чего бы ему усомниться. Первый шаг сделан, и он безупречен на вид.
Боб пишет письмо и запирает его этим ключом — тем, что считает ключом Алисы. Запертое, оно уходит обратно в трубу и снова попадает к Мэллори — но теперь запертым её собственным замком, который она, разумеется, отпирает без малейшего труда: замок-то её. Мэллори читает письмо целиком. Второй шаг: тайна, ради которой всё затевалось, уже нарушена, а Боб об этом не знает и знать не может.
Дальше — самое изящное, и здесь стоит задержаться. Мэллори не обрывает связь, не глотает письмо, не оставляет Алису без вести — любое из этого выдало бы её мгновенно, потому что молчание там, где ждут ответа, само по себе неправильность. Вместо этого она берёт прочитанный текст и запирает его заново — на сей раз настоящим ключом Алисы, который у неё, хозяйки трубы, конечно, тоже есть, ведь этот ключ открытый и достался ей так же легко, как всем. Запертое письмо она отправляет дальше. Третий шаг: письмо продолжает путь, будто с ним ничего не случилось.
Алиса получает письмо и отпирает его своим ключом — и оно открывается. Открывается чисто, без заминки, без единого следа чужого касания. Представьте конверт, который кто-то вскрыл над паром, прочёл и запечатал снова той же печатью, тем же воском, ровно тем же оттиском, — так, что и под лупой не отличить от нетронутого. Именно это Мэллори проделывает с письмом, только воск у неё безупречен всегда: перешифровать правильным ключом — не то же, что подделать печать похоже: это значит запечатать её тождественно. Четвёртый шаг завершён, и на нём вся хитрость становится видна разом.
Оглядим сцену. Что видел каждый её участник? Боб просил ключ Алисы — и получил ключ под именем Алисы. Боб отправил тайное письмо — и оно ушло. Алиса получила письмо — и оно открылось её собственным ключом, тем самым, что лежит у неё и больше ни у кого. С точки зрения обоих всё прошло идеально: запрошено — получено, заперто — доставлено, открыто — прочитано. И если Алиса напишет ответ, он пойдёт той же дорогой, через тот же двойной замок — ключ Боба подменён точно так же, — так что разговор может течь месяцами в обе стороны, оставаясь для Мэллори открытой книгой. Ни одной неправильности, за которую мог бы зацепиться глаз.
Вот отчего по спине проходит холодок. Мы привыкли, что взлом оставляет след: сломанную печать, царапину на замке, письмо, которое не открывается или открывается не тем ключом, — что-нибудь да не так. Ищешь неправильность — по ней и ловишь врага. Но здесь ловить нечего. Атака Мэллори не производит неправильности; она производит безупречную правильность. Алиса получает сообщение под своим ключом — потому и не подозревает. Всё валидно, всё сходится, всё на месте — и всё прочитано.
И дело не в том, что Боб с Алисой беспечны. Будь они сколь угодно осторожны, осторожности не за что зацепиться: нет галочки, которая не встала бы, нет проверки, которая не прошла бы, нет тревожного знака, который мог бы вспыхнуть. Ключ пришёл с верным именем; письмо заперлось и отперлось; ответ дошёл. Всякая мыслимая проверка правильности даёт зелёный свет — потому что подделка правильна во всём, кроме единственного, чего ни одна такая проверка не спрашивает.
Именно эта черта делает человека посередине по-настоящему жутким, а не просто досадным. Против врага, оставляющего следы, есть хотя бы надежда: будь внимательнее, проверяй тщательнее, лови несоответствие. Против врага без следов внимательность бессильна. Значит, если ловить, то не письмо и не здесь. Ловить надо было раньше и не то — но что именно и в какой момент, ещё предстоит понять.
2.3. Аутентифицировать вход, не выход
Раз письмо чисто, а обман всё же случился, обман сидит не в письме. Где-то среди четырёх шагов есть точка, в которой ещё можно было всё спасти, — и найти её важнее, чем возмущаться самим фактом обмана. Интуиция по старой привычке сторожит приходящее и тычет пальцем в конец: проверьте то, что дошло, — не подменили ли, не подделали ли по дороге. Но письмо, дошедшее до Алисы, подменять было незачем; оно настоящее, заперто её настоящим ключом, и любая проверка на её конце скажет одно: всё в порядке. Алиса уже ничего не исправит — не потому, что проверяет плохо, а потому, что всё случилось задолго до неё.
Прокол — раньше и не там. Он произошёл в ту секунду, когда Боб принял ключ, надписанный именем Алисы, за ключ Алисы. Всё, что было после, — как Боб запер письмо, как оно шло, как открылось у Алисы, — лишь послушно доводило до конца ошибку, сделанную в самом начале. Утечка случилась не на приёме письма, а на его шифровании: в тот момент, когда Боб взял чужой замок и поверил, что он Алисин.
Это и есть сдвиг рычага. Интуиция ставит рычаг проверки на выход — туда, где сообщение приходит, — и жмёт изо всех сил, а рычаг не поднимает ничего, потому что стои́т не в той точке. Перенеси его на вход — на миг, когда ключ только пришёл и ещё не пущен в дело, — и вдруг видно, что именно здесь, и только здесь, у Боба была власть всё изменить. Спрашивать стоило не «цело ли пришедшее письмо», а «тот ли ключ я беру, прежде чем хоть что-то им запирать».
Правило шире одной сценки. Проверять надо ключ, когда его получаешь, а не сообщение, когда оно пришло. Миг приёма ключа — единственная точка на всём пути, где ещё можно было остановить Мэллори; дальше математика делает своё дело безупречно — и, приняв подделку за подлинник, делает его в пользу Мэллори. Криптография не ошибается — она честно служит тому ключу, который ей дали. Дали чужой — честно служит чужому, с той же силой и тем же прилежанием, что служила бы своему.
Теперь можно назвать точно, чего именно недоставало на входе. Боб ведь проверил бы ключ, если бы знал, что́ проверять; вся беда в том, что привычный вопрос звучит мимо цели. Мы спрашиваем: правильный ли это ключ? — рабочий ли, не испорчен ли, отпирает ли то, что должен. И на это ключ Мэллори отвечает безукоризненно: он совершенно правильный, настоящий рабочий ключ — только Мэллорин. Валидность — свойство математическое, и у подделки оно безупречно. А спросить следовало иное: чей это ключ? Принадлежность лежит не в математике, а снаружи неё — и именно её никто не проверил, потому что никто о ней не спросил.
Разница здесь та же, что между двумя вопросами к предъявленному документу: хорошо ли он сделан — и того ли он человека. Можно до буквы выверить водяные знаки, чёткость печати, целость ламината и остаться совершенно спокойным — придраться не к чему; и всё это время не спросить единственно важного: а лицо на нём — того, кто стои́т перед тобой? Ключ Мэллори — безупречный документ на чужое имя.
Вот он, поворот: вопрос не «правильный ли ключ», а чей он. Стоит вслушаться, до чего это разные вопросы. Первый весь внутри математики, и математика же на него отвечает — да, ключ рабочий. Второй — снаружи, и внутри математики ответа на него нет вовсе: сколько ни разглядывай сам ключ, нигде в нём не написано, кому он принадлежит. Мэллори не подсунула плохой ключ — она подсунула хороший ключ не того человека. И пока Боб проверяет качество ключа вместо его принадлежности, он будет попадаться снова и снова, как бы придирчиво ни проверял, — потому что придирчивость его направлена на вопрос, в котором подделка неотличима от подлинника.
Вопрос поставлен — и в нём уже слышна следующая трудность. Хорошо, спрашивать надо «чей». Но чем на это ответить? Сам ключ о своей принадлежности молчит; письмо молчит; канал в руках Мэллори и подавно. Чтобы узнать, чей ключ, придётся к чему-то обратиться за порукой — и вот при первой же честной попытке что-то начинает подозрительно напоминать круг.
2.4. Первое появление Стены
Спросим прямо: чем же ответить на «чей»? Боб держит ключ, надписанный именем Алисы, и хочет удостовериться, что ключ и вправду её. Что он может сделать?
Он может сверить ключ с чем-то — скажем, с коротким отпечатком, который Алиса заранее дала ему на бумажке. Может спросить кого-то — общего знакомого, справочник, посредника, которому доверяет, — тот ли это ключ. Может вспомнить что-то — например, что этим самым ключом они с Алисой уже переписывались месяц назад, и тогда всё сходилось. Пути разные, все по-своему разумны. Но приглядимся, на чём стои́т каждый.
Сверить с бумажкой можно, лишь если веришь, что бумажка — от Алисы, а не подсунута Мэллори по дороге. Спросить посредника можно, лишь если веришь, что посредник честен и сам не обманут той же хозяйкой трубы. Вспомнить прошлую переписку можно, лишь если веришь, что тогда, месяц назад, на том конце была Алиса, а не Мэллори с самого начала. Куда ни ткни, ответ на «чей?» опирается на что-то, чему Боб уже доверяет. Проверка не рождает доверие из пустоты — она его тратит: берёт уже имеющуюся у Боба уверенность в чём-то одном и ставит её порукой за новый ключ. Опору не создают проверкой — проверкой её расходуют.
Всё держится на одном коротком слове — уже. Каждый способ проверить требует доверия, которое есть у Боба прежде проверки, готовым, до первого сличения. И если заранее у Боба нет ничего, чему он верит, — ему попросту не из чего исходить: не с чем сверять, некого спрашивать, нечего вспоминать. Пустые руки так и останутся пустыми, сколько ими ни води над ключом. Первую уверенность неоткуда добыть проверкой, потому что проверка ею кормится.
Вот теперь круг виден во весь рост, и форма у него неприятно правильная. Чтобы установить доверие к ключу, нужно доверие к чему-то ещё. А откуда взялось то, другое доверие? Из проверки — которая опять-таки на что-то опиралась. Спросил справочник — но кто поручился за справочник? Кто-то или что-то, чему Боб поверил ещё раньше; а за того поручителя — кто? Ответ всякий раз отступает на шаг назад и там снова протягивает руку за опорой. Куда ни отступай, под ногой обнаруживается ещё одна опора, которую саму надо на чём-то держать. Доверие всё время занимают у доверия, как занимают денег, чтобы отдать прежний долг. И нигде в этой цепочке не видно первого звена — того, что держалось бы само, ни на что не опираясь. Боб пытается вытащить себя из трясины за собственные волосы, и ни одна прядь не закреплена на твёрдом.
Тут стоит остановиться и не спешить. Заманчиво решить, что мы просто не додумали: ещё немного смекалки, ещё один хитрый приём — и круг разомкнётся, найдётся способ проверить ключ, ничего не занимая. Может быть. Но закрадывается и другая, трезвая догадка: а вдруг это не наша нерасторопность, а свойство самой задачи? Вдруг «установить доверие с нуля» — не трудное дело, а невозможное в том же смысле, в каком нельзя приподнять пол, на котором стоишь? Разница огромна. Если это наша нерасторопность — надо думать дальше. Если свойство задачи — думать дальше бесполезно, и честнее это признать.
И стоит сразу отвести соблазн мрачного вывода. Это открытие — вовсе не про то, что доверять нельзя никому. Круг ничего не запрещает; он лишь показывает, где сидит настоящая трудность — не в математике, отработавшей без единого сбоя, а вне её, в одном вопросе о том, чей ключ. Мы всего только нашли точное место, где кончается власть шифра и начинается что-то иное, чему пока не подобрано имени.
Доказывать догадку рано. Но она уже поменяла воздух в комнате: мы искали лазейку в приёме, а наткнулись, похоже, на что-то не поддающееся — на первую тень стены. И у этой стены пока нет имени; и у того, чего недостаёт Бобу, — у того самого «нечто, чему он уже доверяет», за что можно было бы зацепить всю постройку, — имени тоже нет.
Труба по-прежнему в чужих руках, и всё, что приходит по ней, приходит правильно — только теперь мы знаем, что как раз в этой правильности и прячется обман. Лёгкая мысль, с которой всё началось, — раз ключ публичный, довольно его опубликовать, — не пережила и четырёх шагов: публикация не стоит ничего, а вся тяжесть переехала на один простой с виду вопрос — чей это ключ? — на который нельзя ответить честно, не заняв где-то уже готового доверия. А занять его, эту первую уверенность, пока решительно неоткуда.
Круг сомкнулся: чтобы установить доверие, нужно доверие. И всё же не верится, что он смыкается наглухо, — ведь как-то же люди узнаю́т друг друга, как-то же тайные письма доходят до тех, кому посланы. Где-то должна быть лазейка, через которую в этот круг просачивается первое доверие. Есть ли она взаправду — или мы принимаем за лазейку собственную, ещё не додуманную мысль?
Часть II. Стена
«А что, если бы ключом человека было само его имя — и, чтобы написать ему тайно, довольно было бы знать, кто он, а вовсе не какой у него ключ?» — вопрос Ади Шамира, 1984
Круг «чтобы установить доверие, нужно уже иметь доверие» легко принять за головоломку, которую просто ещё не разгадали, — за узел, который развяжет тот, кто окажется достаточно умён. У области за плечами полвека блестящих идей, изящных протоколов, имён, ставших легендой, — и трудно поверить, что среди всего этого не нашлось приёма, распутывающего такой простой на вид узелок. Эта вера — последняя из иллюзий, с какими читатель сюда пришёл, и проверить её стоит не отмахиваясь, а честно, до конца.
Проверка приводит к неуютному различению. Одно дело — сказать «мы пока не знаем, как»; совсем другое — «так не бывает, и вот почему». Круг доверия оказывается не пробелом в знании, а тем самым разветвлением, о которое философия спотыкается не первое тысячелетие: любая попытка что-либо обосновать сваливается в одну из немногих ловушек, и выхода мимо них нет. Там, где инженер ждёт трюка, обнаруживается теорема.
Дальше дорога идёт вниз. Лучшие умы области с этим выводом не смирялись — они строили обходы, каждый по-своему остроумный, и каждый по-своему проваливался. Пройти их придётся один за другим: не чтобы позлорадствовать над чужой неудачей, а чтобы увидеть то, что видно только снизу. Стена, в которую они били, — не забор, который перелезают. Это несущая конструкция: убрать её нельзя, не обрушив всё, что на ней стоит.
Глава 3. Нельзя получить нечто из ничего
Между «мы не нашли решение» и «решения не существует» лежит пропасть. Первое — приглашение стараться сильнее: ещё одна бессонная ночь, ещё один умник — и замок поддастся. Второе — знание другого сорта, редкое и дорогое; его не добывают упорством, потому что упорство здесь бьёт в пустоту. Мало какие вопросы удаётся перевести из первого разряда во второй, и почти всегда это событие в истории мысли. Вопрос о ключе незнакомца — из тех немногих, что такой перевод допускают, и проделать его можно прямо на глазах у читателя.
Для такого перевода довольно предельно голой сцены: двое, у которых нет ровно ничего общего, а между ними канал, которым распоряжается чужой. Подделку в этой сцене не отличить от подлинника — и не по слабости средств, а по самому её устройству. Инженерная тупиковость здесь — частный случай куда более старой развилки, у которой ровно три исхода и четвёртого нет. А из развилки растёт переворот взгляда: то, что мы привыкли считать производством защиты, на поверку — перевозка. По трубе течёт лишь то, что в неё залили.
3.1. Аутентификация из нуля невозможна
Поставим опыт в самом чистом его виде. Комната, в ней двое — Алиса и Боб, — и между ними нет ничего: ни общего пароля, ни встречи в прошлом, ни знакомого, который поручился бы за одного перед другим, ни единого бита, который был бы у обоих и только у них. Всё, что их связывает, — канал, и канал этот принадлежит Мэллори. Она не подслушивает из-за угла; она и есть труба, по которой идёт каждое слово. Она читает, задерживает, подменяет, сочиняет — всё, что проходит, проходит через её руки.
Теперь Алиса хочет доказать Бобу, что письмо от неё. Что она может послать? Любую последовательность знаков. Пароль, придуманный на ходу, — но Боб его прежде не слышал и не отличит настоящий от выдуманного. Ответ на секретный вопрос — но общего секрета у них нет, вопрос задать не из чего. Результат самого изощрённого обмена репликами, какой сумеют выдумать инженеры, — пожалуйста. Но что бы Алиса ни отправила, оно идёт по трубе Мэллори, и Мэллори видит его целиком. А раз видит — может отправить Бобу ровно то же самое от собственного имени. Всё, чем Алиса доказывает «это я», Мэллори повторяет знак в знак, доказывая «это я» с тем же успехом. У Боба на входе оказываются два неразличимых голоса, и нет ни приметы, по которой один отличался бы от другого.
А если Боб не станет ждать пассивно и начнёт проверять сам — задаст встречный вопрос, потребует отклика, устроит допрос? Это ничего не меняет, потому что вопрос Боба тоже идёт по трубе. Мэллори принимает его, передаёт настоящей Алисе, получает от неё честный ответ и вручает Бобу — сидя посередине, работая переносчиком в обе стороны. Боб допрашивает Алису через Мэллори и получает подлинные ответы Алисы, заверенные Мэллори. Активность на входе не выручает: сколько ни спрашивай, спрашиваешь ты через ту же трубу.
Соблазнительно решить, что беда в недостаточно хитром протоколе: добавить обмен туда, лишний шаг сюда — и Мэллори не поспеет, где-нибудь да проговорится. Стоит прочувствовать до конца, почему это не помогает. Сколько бы ходов ни было в протоколе, все они на виду у хозяйки трубы; что в каждый момент доступно Алисе, в тот же момент доступно и Мэллори, знак в знак. Мэллори встаёт посередине неотличимо не потому, что мы плохо старались, а потому, что при нулевом общем у подделки и у подлинника ровно одно и то же содержание. Различить их — значит извлечь из письма то, чего в нём попросту нет. Наращивать хитрость здесь — всё равно что взвешивать всё точнее предмет, у которого нет веса: прибор ни при чём, весить нечего.
Можно повернуть то же самое и другой стороной. Чтобы Боб отделил Алису от Мэллори, ему нужен хотя бы один признак, который есть в письме настоящей Алисы и которого не окажется в копии. Но копия на то и копия: Мэллори переносит в неё каждый признак без остатка — она ведь держит оригинал целиком в руках. Единственное, чего ей не скопировать, — то, чего в письме нет вовсе, что живёт где-то помимо канала. А по условию помимо канала у Алисы с Бобом нет ровным счётом ничего. Отличать, стало быть, нечем: всякий признак либо переезжает в копию вместе со всем прочим, либо его не существует. Третьего между этими двумя не помещается.
И вот тут проходит граница между двумя сортами незнания. «Мы ещё не нашли трюк» — неверный диагноз: он обещает, что где-то трюк лежит и ждёт своего часа. Не лежит. Не спрятан, не потерян, не дожидается следующего гения — его не существует, как не существует самого большого числа. Начать с чистого нуля и получить на выходе уверенность в том, чей перед тобой голос, нельзя — ни ловким алгоритмом, ни грубой силой, ни изобретательностью, которой пока недостало. Это не край наших умений. Это край самой задачи.
Странно только, что тупик знаком. Инженер упёрся в него, ворочая ключи и каналы, — но точно такой же тупик много раньше нашли те, кто ни о каких ключах не думал, а спрашивал куда проще: почему вообще хоть чему-то можно верить.
3.2. Трилемма Мюнхгаузена
Есть старая картинка: барон Мюнхгаузен тонет в болоте и, чтобы спастись, хватает сам себя за косичку и вытягивает наружу — вместе с конём. Смешно ровно потому, что так нельзя: опору не добыть из того самого, что тонет. Над этой невозможностью думали задолго до любых ключей и додумались до неё в общем виде — как до предела всякого обоснования вообще.



