Книга: Криптография. Как защитить свои данные в цифровом пространстве
Назад: 5. Цифровые канарейки
Дальше: 7. Взлом криптосистем

6. Кто там?

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

Гав-гав!

Чтобы проиллюстрировать проблему анонимности в Интернете, часто приводят знаменитый рисунок из журнала New Yorker, опубликованный в 1993 году. На нем изображены две собаки, одна из которых сидит за компьютером, положив лапы на клавиатуру, и лает, повернувшись к своему товарищу: «В Интернете никто не знает, что ты собака». Отличная иллюстрация. Мысль о том, что собаки могли бы пользоваться Интернетом без нашего ведома, кажется одновременно забавной и странной. Но оглушительный успех этого рисунка вполне объясняется тем, что в своей невинной манере он отражает мрачную реальность.

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

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

«Ты делишься роликами только со своими друзьями?» – интересуются они.

«Да», – отвечает Хлоя.

«Ты действительно дружишь со всеми этими людьми?»

«Да. Ну, почти, – признается Хлоя. – Есть одна собачка, очень забавная. У нее есть своя учетная запись, поэтому я на нее подписана. Видео – улет; хотите посмотреть?»

«Может, чуть позже, – отвечают родители, – но ты правда дружишь с этой собачкой?»

«Ну, – начинает Хлоя с виноватым видом, – я подписалась на собачку, а та спросила, можно ли ей подписаться на меня, и я разрешила. Ну в смысле, это же собачка, и видео у нее очень, очень смешные; вот мое любимое…»

Это горькая правда, стоящая за иллюстрацией в New Yorker: в Интернете не все всерьез задумываются о последствиях того, что вы – не собака.

Необходимость знать, с кем мы имеем дело

Подумайте о том, чем вы ежедневно занимаетесь в киберпространстве. Во многих случаях вам необходимо сначала ответить на вопросы вида: «есть ли у вас учетная запись?» или «вы зарегистрированы?». Действительно, на подобные вопросы приходится отвечать даже при первом посещении киберпространства. Задумывались ли вы над тем, для чего это делается?

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

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

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

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

Человек против компьютера

Процесс аутентификации сущности – это и есть попытка определить, с кем мы имеем дело. Абстрактное слово сущность выбрано неспроста. Способы аутентификации могут варьироваться (по крайней мере, частично) в зависимости от того, что эта сущность содержит – пульсирующее сердце или микрочип с тактовой частотой.

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

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

Важно, что в ходе пограничного контроля во внимание принимается сочетание человека и его паспорта. Если вы бодро сообщите свое имя, не имея при себе документов, или предъявите паспорт, натянув на голову бумажный пакет, вас никуда не пустят.

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

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

Обратите внимание, что ценность сведений о конкретной сущности в киберпространстве не всегда очевидна. Оператор сотовой связи хочет знать, куда отправлять счет. Поэтому сущностью, которую он хочет аутентифицировать, является владелец учетной записи; и это необязательно тот, кто пользуется услугами, как в случае, когда родители покупают телефон ребенку. С другой стороны, владелец сотового телефона хочет, чтобы в случае его потери им не смог пользоваться любой, кто его найдет. Поэтому сущность, которая интересует владельца, – тот, кто пользуется телефоном.

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

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

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

Скорее всего, все будет в порядке, но многое может пойти наперекосяк. После того как вы нажали клавишу на клавиатуре, управление берет на себя компьютер. Человек (то есть вы) больше не является частью процесса. Запускается целая цепочка невидимых операций, начиная с того, что введенные символы сопоставляются с цифровыми кодами, которые затем передаются в обработку приложению, запущенному на устройстве. Если ваш компьютер работает как следует, все пройдет гладко. Но если он заражен вредоносным ПО (нежелательной программой, чаще всего – компьютерным вирусом), может случиться что-то, чего вы не ожидали. Например, ваш компьютер может сохранить то, что вы ввели, и отправить кому-то, кто за вами следит. Или он может скрыть или изменить введенные вами данные, в результате чего адресату будет послано другое электронное письмо. Может быть, вы уже даже сталкивались с чем-то подобным. В этой ситуации ключевую роль играет поведение вашего компьютера.

Тем фактом, что компьютер может действовать не так, как того ожидает пользователь, или выполнять действия, о которых неизвестно человеку, часто пользуются злоумышленники. Этот разрыв между людьми и устройствами непреодолим, поэтому нам нужно как-то его контролировать. Один из подходов, с которым вы точно сталкивались – капча (от англ. captcha – «completely automated public Turing test to tell computers and humans apart», что переводится как «полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей»). Капчи используются для проверки присутствия человека; для этого ставится задача, с которой компьютеры, по крайней мере пока, плохо справляются, например определение того, какие буквы изображены на картинке с неразборчивыми каракулями, или на каких фотографиях из представленных есть автобусы или магазины.

Любите вы их или ненавидите (я бы поставил на последнее), необходимость в капчах – это признак разрыва между людьми и компьютерами. И этот разрыв как минимум следует учитывать при определении того, с кем мы имеем дело.

«Привет с другой стороны»

Попробуйте прокричать в киберпространстве: «Привет, кто там?» Даже если в ответ раздастся слабое: «Это я», чего может стоить ответ, пришедший из ниоткуда?

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

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

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

Люди, впрочем, и сами по себе могут считаться объектами. Область биометрии основана на выделении характеристик человека и использовании их для аутентификации сущности. Эффективность биометрии может варьироваться, но некоторые ее реализации хорошо себя зарекомендовали. Авиапассажиры и осужденные преступники знакомы с процедурой снятия отпечатков пальцев и автоматическим распознаванием лиц; обе эти технологии применяются и в киберпространстве. Биометрические характеристики не так просто потерять или похитить, по крайней мере если речь идет о физических особенностях людей, к которым они относятся. Тем не менее это просто результаты измерений, преобразованные в цифровые значения. Если эта информация каким-либо образом скомпрометирована (например, если кто-то похитил базу данных, в которой они хранились), возникают серьезные проблемы. Вас, скорее всего, не раз просили сменить пароль, но что если кто-то попросит вас сменить отпечатки пальцев?

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

У каждого метода есть сильные и слабые стороны, поэтому в киберпространстве нередко применяется сразу несколько. Классическим примером двухфакторной аутентификации сущностей можно назвать предоставление банкомату как банковской карты (материального объекта), так и PIN-кода (секретной информации). Проверяется в этом случае наличие банковской карты, так как она содержит чип с криптографическими ключами для защиты транзакции. Однако знание PIN-кода создает дополнительный аутентификационный слой: мы демонстрируем, что человек, которому известен PIN-код, тоже присутствует. Таким образом этот двухфакторный механизм пытается аутентифицировать сразу две разные сущности: карту и ее владельца. К сожалению, при покупке вещей в Интернете банки не проявляют такую бдительность и не требуют использования платежных терминалов. Конечно, большая часть случаев мошенничества совершается именно во время транзакций без присутствия карты.

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

Второй элемент ответа на наши крики в киберпространстве касается времени. Если вы прокричите: «Привет, кто там?» – в глубокую темную пропасть и услышите в ответ: «Это я», можно ли считать ответившего живым человеком? Или это записанный голос? Когда похитители обнародуют видеозапись с заложниками, одна из задач, возникающих перед следователями, состоит в определении того, остаются ли жертвы в живых. Поскольку этот вопрос может быть не менее важен и для самих похитителей, в подобных видеозаписях заложников часто заставляют держать в руках свежие газеты в качестве доказательства того, что обращение записывалось после указанной даты.

Такое предоставление свидетельств того, что человек жив, может иметь не меньшее значение в киберпространстве. В этом отношении биометрия имеет естественное преимущество перед механизмами вроде паролей. Жертву можно заставить раскрыть пароль и затем бросить ее в колодец, но хорошая биометрическая технология требует, чтобы ответ на вопрос: «Кто там?» – исходил от живого человека.

Однако, как мы уже отмечали, аутентификация сущностей чаще требуется для устройства, чем для человека. Информация может быть записана и воспроизведена в киберпространстве позже, поэтому, отвечая на вопрос: «Кто там?» – мы должны доказать, что ответ действительно дается здесь и сейчас. Это называют свидетельством свежести, а не присутствием живого человека. Интересно, что криптография позволяет предоставить доказательство свежести, не полагаясь на часовые механизмы.

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

Агония паролей

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

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

Во-первых, пароль может относительно легко попасть в чужие руки. У злоумышленника немало способов его заполучить. Находясь рядом с вами, он может просто подсмотреть, как вы вводите его в компьютер (для этого даже придумали термин shoulder surfing – подглядывание через плечо), или прочитать на записке, которую вы прикрепили к стене в кабинете. Но даже если злоумышленник от вас далеко, у него все равно достаточно вариантов. Как минимум иногда пароли передаются по сети в открытом виде – незашифрованными. Таким образом, чтобы заполучить пароль, достаточно проследить за вашими действиями в киберпространстве.

Злоумышленник может даже попробовать угадать ваш пароль, поскольку мало кто использует удачные пароли. Чаще всего они состоят либо из личной информации, которую легко получить, либо из слегка видоизмененных слов. Ситуация усугубляется тем, что многие технологии поставляются с общеизвестными паролями, установленными по умолчанию, которые пользователи должны при первой же возможности поменять; на практике же многие не знают, как это делается, или просто не хотят заморачиваться.

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

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

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

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

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

Месть справочника

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

Красота и неотъемлемый недостаток паролей в том, что они должны быть запоминающимися. Тот факт, что у вас должна быть возможность без труда вспомнить свой пароль, накладывает ограничения на его потенциальную сложность. Как уже отмечалось, в Оксфордском словаре английского языка содержится меньше 300 000 слов, и даже если допустить остроумные вариации за счет замены букв другими символами, в криптографическом масштабе количество паролей, которые нужно перебрать злоумышленнику, не так уж велико.

Вот как выглядит настоящая атака на пароли. Злоумышленник составляет список потенциальных паролей. Очевидные варианты, такие как password, test, abc123 и justinbieber, можно разместить в начале; дальше могут идти 300 000 слов, а в конце – их близкие родственники вроде ju5t1n81e8er. Имея в своем распоряжении лишь догадки, злоумышленник начинает действовать. Если бы у него была база данных с хешами паролей, он мог бы начать с хеширования. В этом случае он находился бы в куда более выгодном положении: для успеха было бы достаточно совпадения хеша одного из возможных паролей в его списке с одним из хешей в базе данных. Как только это произойдет, злоумышленник получит имя пользователя и пароль, которые позволят ему войти в систему. Такая атака называется перебором по словарю, так как список, который в ней используется, фактически является словарем паролей.

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

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

Любой проектировщик компьютерных систем согласится, что криптография – это сплошные неудобства (не самое подходящее слово, наверное). Выполнение криптографических операций требует времени и усилий. Если у системного инженера есть возможность обойтись без использования криптографии, он ее точно не упустит. Он вам скажет, что безопасность – враг производительности, а криптография замедляет работу систем… Постойте! Кажется, у меня есть идея!

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

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

Слишком много паролей

Здесь нужен пароль, и там нужен пароль. Этот должен быть не короче восьми символов, а другой должен содержать буквы в верхнем и в нижнем регистре, минимум одну цифру и какой-нибудь еще символ. Утомительно, правда? Что еще хуже, согласно классическим инструкциям о безопасности в Интернете, вы должны позаботиться о том, чтобы все ваши пароли были совершенно разными.

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

Все ли ваши пароли удачны и уникальны? Уверены? Правда? Если вы действительно верите в непогрешимость своих паролей, это либо самообман, либо вам помогает криптография.

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

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

Остается решить две проблемы. Первая: каждый раз, когда вас просят ввести пароль, вам нужен ключ для расшифровки базы данных. Где этот ключ? Вторая: все эти пароли нужны, чтобы аутентифицировать вас, живого пользователя. Менеджер паролей – это программа, запущенная на вашем компьютере (возможно, дополненная аппаратным компонентом). Каким образом все эти хранимые пароли привязаны к вам?

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

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

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

Сплошной маскарад

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

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

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

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

Все еще хуже, если фишинговая атака направлена на пароль к вашему менеджеру паролей. Нам бы хотелось верить в то, что смекалистый человек, который использует менеджер паролей, не поддался бы на такую уловку. Но представьте, что вы получили электронное письмо якобы от компании, которая продала вам этот инструмент, и в нем вас просят ввести пароль, чтобы его активировать или обновить (такого у вас не попросит ни одна уважаемая компания). Вы бы его не ввели, правда? Если бы вы допустили такую катастрофическую ошибку, тот, кто стоит за этой атакой, смог бы делать в киберпространстве все, что делаете вы.

Стоит бегло проанализировать то, как происходит подобного рода мошенничество. Злоумышленник надевает виртуальный маскарадный костюм, притворяясь вашим банком, чтобы затем выдать себя за вас. Главная проблема состоит в вашей неспособности определить источник исходного поддельного письма и/или сайта, куда оно вас направит. Возможно, вас ввели в заблуждение (слабые) механизмы обеспечения целостности данных, которые придали письму налет официальности (логотипы, деловой стиль, правдоподобие просьбы и т. д.). Но дело в том, что в криптографическом смысле одной лишь видимости целостности данных недостаточно для обеспечения надежной аутентификации сущностей. Поскольку вы не спросили: «Кто там?» – во время самой фишинговой атаки, в следующий раз, когда один из посещаемых вами сайтов задаст аналогичный вопрос, ответом можете быть вы, даже если это кто-то другой.

В 1990-х один мой друг решил открыть счет в американском банке, и его спросили, какой пароль он себе хочет. К удивлению моего друга, банковский служащий записал ответ в блокнот. На самом деле так с паролями давно никто не обращается. По крайней мере этого делать не следует! Благодаря криптографии ваши пароли не нужно знать никому, кроме вас, и вводить их необходимо только в случае, если вы совершенно уверены в том, что пользуетесь настоящей услугой.

Идеальные пароли

Я отношусь к паролям довольно скептически, и неспроста. Но давайте подойдем к этому вопросу с противоположной стороны. Если бы мы могли полностью переделать мир, как бы выглядел идеальный пароль?

Идеальный пароль должен быть непредсказуемым, чтобы его было как можно сложнее угадать или подобрать с помощью словаря. Иными словами, он должен быть сгенерирован случайным образом. Идеальный пароль должен использоваться для входа только в одну систему и не повторяться в других приложениях. Приличный менеджер паролей может удовлетворить оба эти требования. Однако идеальный пароль также должен быть бесполезным для злоумышленника, каким бы способом тот его ни заполучил (подглядывая через плечо, используя кейлоггер, сканируя сеть, по которой он передается, и т. д.). Хм-м… как же этого добиться?

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

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

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

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

Однако эта предсказуемость криптографических вычислений не будет проблемой, если позаботиться о том, чтобы криптографический алгоритм каждый раз получал новый ввод: тогда и вывод будет каждый раз новым. Таким образом, использование разного ввода при каждом выполнении алгоритма означает, что его вывод может стать идеальным паролем.

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

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

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

Стоит отметить, что ввод алгоритма в вашем токене необязательно хранить в тайне. Единственный секретный элемент этой системы – ключ, который вам выдает банк. Ввод должен быть известен и вам, и банку, и он должен меняться каждый раз, когда банк интересуется тем, с кем он имеет дело. Что же это может быть?

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

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

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

Но есть и другой способ получения идеальных паролей, не требующий использования синхронных часов или счетчиков. Гибкость, которую дает отсутствие необходимости в синхронизации, стала причиной того, что этот альтернативный подход лежит в основе не только токенов с идеальными паролями, но и аутентификации сущностей, которая применяется для доступа к Wi-Fi, посещения защищенных веб-сайтов и многого другого.

Цифровые бумеранги

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

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

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

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

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

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

Важность вызова-ответа

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

До сих пор я говорил о криптографии как о наборе инструментов, которые обеспечивают такие свойства, как конфиденциальность, целостность данных и аутентификация сущностей. На практике же в большинстве процессов с использованием криптографии участвует сразу несколько сторон и инструментов. Хорошим примером можно считать механизм вызов-ответ: банк генерирует вызов (почти наверняка с помощью криптографического генератора случайных чисел) и отправляет его пользователю, который вводит этот вызов в токен; затем токен применяет к введенным данным криптографический алгоритм, чтобы вычислить ответ и вернуть его банку; банк вычисляет ответ локально и проверяет, совпадает ли он с тем, что сгенерировал токен.

Криптография в основном применяется в непрерывном потоке запросов: отправь то, сделай се, зашифруй это, отправь снова, и т. д. Все вместе это обычно называется криптографическим протоколом. Такой протокол в точности описывает процедуру, которой все должны следовать, чтобы используемые криптографические инструменты смогли обеспечить нужный уровень безопасности. Криптографический протокол – это алгоритм, операции которого выполняются разными сущностями.

Вызов-ответ применяется во многих криптографических протоколах, которыми вы регулярно пользуетесь. Например, когда вы подключаетесь к удаленному сайту через браузер, чтобы обработать конфиденциальную информацию (делаете покупки в Интернете, открываете страницу с электронной почтой, пользуетесь услугами интернет-банка), браузер и сервер (компьютер, на котором размещена страница) общаются по криптографическому протоколу, известному как TLS (Transport Layer Security – протокол защиты транспортного уровня). На одном из первых этапов этого процесса ваш браузер и сайт шлют друг другу случайное число.

Какой бы сложной ни была остальная часть криптографических протоколов, большинство из них начинаются с отправки случайно сгенерированного вызова для получения ответа, потому что определение участников взаимодействия – основополагающая часть любого процесса, связанного с безопасностью в киберпространстве. Протокол TLS согласовывает криптографический алгоритм и устанавливает, какие ключи можно использовать для шифрования и защиты целостности последующего взаимодействия между браузером и сайтом. Какой смысл переходить к общению, если вы не уверены в подлинности сайта, к которому пытаетесь безопасно подключиться?

Протокол безопасности, применяемый в Wi-Fi, аналогичным образом определяет ключи для защиты данных, которыми устройство обменивается с сетью, но зачем начинать взаимодействие, если устройству закрыт доступ к беспроводной сети, или если сеть не является подлинной? Большинство криптографических протоколов начинают с аутентификации сущности, а большинство механизмов аутентификации начинаются с какой-то разновидности вызова-ответа.

Господин Никто

Тук-тук. Кто там? Господин! Какой господин? Господин Никто! Как это часто бывает, в любой шутке где-то глубоко запрятана правда. Иногда на вопрос: «Кто там?» – хочется ответить: «Не скажу! Не твое дело!»

Противоположностью аутентификации сущностей является анонимность. Люди могут предпочитать оставаться в киберпространстве анонимными по многим причинам. Нам свойственно обращать внимание на отрицательную мотивацию анонимности, включая незаконную деятельность и шпионаж. Но во многих случаях анонимность имеет конструктивные причины. Граждане деспотических режимов, критикующие свое правительство, чаще всего против раскрытия своей личности. Анонимность нередко нужна журналистам. Если взять более приземленный пример, то пользователь сайта может пожелать остаться неизвестным, чтобы никто не записал его личную информацию или чтобы владелец сайта не мог проанализировать его поведение и подсунуть ему адресную рекламу. Существует даже мнение, что концепция анонимности должна быть одним из неотъемлемых прав человека как часть более универсального и фундаментального права на личную жизнь.

Может показаться, что анонимность – обычная форма существования в киберпространстве. В конце концов, все механизмы аутентификации сущностей, которые я уже описывал, мотивированы тем, что в виртуальном мире очень легко выдать себя за кого-то другого. Вы не видите, с кем имеете дело, поэтому, чтобы увидеть, имеет смысл использовать идеальные пароли, не так ли? Но правда в том, что в киберпространстве легко быть вроде бы анонимным. С настоящей же анонимностью все сложнее.

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

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

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

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

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

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

Чистим лук

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

Tor состоит из специального браузера и сети выделенных маршрутизаторов, которые фактически выступают центрами доставки. Маршрутизаторы – это стандартные элементы Интернета. Обычный трафик (без использования Tor) содержит уникальные сетевые адреса как отправителя данных, так и предполагаемого получателя, а сами данные путешествуют из исходной точки в конечную, перемещаясь от одного маршрутизатора к другому, пока не достигнут пункта назначения. Информация об адресах не является секретом, поэтому все промежуточные маршрутизаторы могут видеть, кто, откуда и куда отправляет данные. В этом, собственно, весь смысл: без этой информации они бы не знали, куда дальше направлять трафик.

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

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

Для доставки документа с помощью Tor нужно сначала выбрать три случайных конспиративных квартиры в этой сети. Вы помещаете документ в конверт с адресом журналиста. Затем кладете этот конверт в другой – с адресом третьей квартиры, а его, в свою очередь, – еще в один конверт, с адресом второй. Все это помещается в последний конверт, на котором написан адрес теперь уже первой квартиры. Только после этого вы вызываете курьера, и он доставляет этот в меру упитанный пакет на первую конспиративную квартиру. Там первый конверт распечатывается, обнаруживается адрес второй квартиры, вызывается новый курьер и доставляет пакет дальше. Тот же процесс происходит на второй и третьей конспиративных квартирах. В итоге раскрывается конечный адрес, и последний курьер доставляет последний конверт журналисту.

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

Анонимность – ужасно увлекательный аспект киберпространства. Этому множество причин, включая те, которые мы уже обсудили. Однако немало и совершенно противоположных взглядов. Из-за ее отрицательных свойств анонимность считают одной из величайших бед киберпространства. Но для части пользователей она – одна из характерных особенностей свободы в Интернете. Поскольку лучшим средством обеспечения анонимности в киберпространстве является криптография, ее тоже часто как демонизируют, так и превозносят. Но и об этом мы подробно поговорим чуть позже.

Кто есть кто?

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

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

Кто еще, помимо людей, может находиться в киберпространстве? Ноутбук, телефон, токен, ключ, сетевой адрес. Или, может быть, сервер, сетевой маршрутизатор, компьютерная программа… Возможности практически безграничны.

Через десяток-другой лет все будет запутано еще сильнее. Подавляющее большинство людей держат мобильные телефоны при себе, что делает их подходящими устройствами для выполнения аутентификации. Современные мобильные телефоны даже способны надежно хранить ключи и вычислять сложные криптографические алгоритмы. Таким образом, люди все чаще носят при себе настоящие компьютеры и в будущем рискуют стать с ними единым целым. Благодаря достижениям в области диагностики состояния здоровья вполне вероятно, что когда-нибудь мы начнем вживлять себе миниатюрные вычислительные сенсоры. Это может прозвучать угрожающе, но нравится вам это или нет, уже сейчас существуют проекты, исследующие возможность подключения человеческого мозга к киберпространству. А тем временем и сами компьютеры все больше походят на людей. Они начинают осваивать человеческий образ мышления благодаря прогрессу в сфере искусственного интеллекта, а обработка огромных наборов данных позволяет им имитировать решения, принимаемые человеком, и даже предлагать лучшие альтернативы. Достижения робототехники приближают будущее, в котором киборги (в том или ином виде) могут стать реальностью.

К каким последствиям это приведет для аутентификации сущностей, можно только гадать. Но какие бы технологии ни появились в киберпространстве, основной вопрос останется неизменным: «Кто там?» Тот, кто его задает, должен хорошо подумать, кто этот «кто». О ком вам нужно знать? О человеке, токене, учетной записи, ключе? Кто именно даст вам ответ? И, с другой стороны, когда аналогичный вопрос задают вам, кто отвечает от вашего имени? Вы или ваш телефон? Это полезно знать, чтобы понимать, какую частицу своей «киберличности» вы теряете, меняя телефон.

Кто там? Ответ на этот вопрос может быть непростым, но для безопасной работы в киберпространстве мы обязаны его знать.

Назад: 5. Цифровые канарейки
Дальше: 7. Взлом криптосистем