Фактически всякий раз, когда есть преобразование некоторого реального объекта в представление этого объекта, может возникнуть путаница. Вызовы вроде listen(socket) и open(file) чреваты угрозами, когда вы преобразовываете имя файла в дескриптор файла.

Идентичность машины или сервиса включает имя, например rebelbase.threatsbook.com. Пространство имен компьютеров обычно уникально в некоторых пределах. Идеально было бы, если rebelbase.threatsbook.com было уникальным глобально, но может существовать много компьютеров с доменным именем (DNS) rebelbase.local – один на Явине, другой на Хоте, третий – в вашей локальной сети.

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

Компьютеры часто обладают DNS-именами вроде rebelbase.threatsbook.com. Этот адрес может относиться к одной или нескольким физическим машинам, но это не единственные имена, которые может иметь физический компьютер. Он может иметь UNC-имя, как в Windows, и другие имена. Имя может относиться к более чем одной машине через, скажем, круговую систему (round-robin) DNS, а могут быть слои отображения с каноническими именами (cnames) и другие системы косвенной адресации.

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

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

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

Идентификаторы для человека

В «Звездных войнах» Люк и Хан прикидываются штурмовиками. Один из них, очевидно, штурмовик TK‐421. Имя другого штурмовика мы так и не узнаем, но это не имеет значения: у него есть роль, позиция охранника, и этого достаточно для некоторых целей аутентификации. Бен Кеноби притворяется, что он не Оби-Ван Кеноби, и по ходу лжет Люку, что его отец Энакин убит Дартом Вейдером. Принцесса Лея делает вид, что она не предводитель повстанцев, и это еще только первые тридцать минут «Звездных войн».

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

Многие люди используют больше одного имени. Персонаж «Симпсонов» может быть Жирным Тони или Марионом Д’Амико, а некоторые люди будут его называть дядя Тони. Уильям становится Биллом. Я и вы имеем в виду разное, когда говорим «мама», и в мире есть много людей по имени Джон Смит. Люди обычно справляются с этим. Компьютеры не такие гибкие. Им нужны уникальные, управляемые пространства имен для идентификаторов и аккаунтов. Того же хочет и Империя, поэтому у бедного FN-2187 нет другого имени, пока По Дэмерон не даст ему прозвище Финн в эпизоде «Пробуждение силы».