Страница:
Евгений Лотош ака Злобный Ых
Ошибки и штампы в фантастике
Фантастика популярна. Многие из книг этого жанра стали настоящими библиями для группировок фэнов — взять хотя бы «Властелина колец»! По фантастическим романам снимают фильмы, пишут компьютерные игры и даже увековечивают их героев (как, например, запечатлен в камне Человек-невидимка, точнее, отпечатки его ступней, в Екатеринбурге). Однако значительная часть снобов при одном слове «фантастика» презрительно воротит нос — нет, ребята, не литература это. Почему? Только ли из-за своего снобизма?
Оставим в стороне фантастику бульварную, у авторов которой только одна задача: сшибить денег с читателя. Поговорим о фантастике как о разделе Большой Литературы, преследующей — хотя бы косвенно — цель облагородить читателя, чему-то научить его, а не просто позволить убить время в электричке. Предположим, что автор владеет языком, прекрасно излагает свои мысли, замечательно строит сюжет и вообще выдает нетленку. Достаточно ли этого, чтобы сделать высококлассный фантастический текст?
Нет, не достаточно. Ближайшей аналогией является жанр исторического романа. Каждый может писать исторические романы — как та машинистка, что выдавала шестьсот знаков в минуту (помните? заключительная реплика в сторону — «но такая фигня получается…»). Но большинство людей со школы сохранило какие-то знания об истории, и просто так гнать пургу, ничего не понимая в предмете, не удастся. Засмеют. Иначе дела обстоят с фантастикой — как с научной, так и со сказочной. Мы же придумываем, правильно? Значит, можно высасывать антураж из пальца?.. Ага, щазз. Писателю-фантасту помимо обычных талантов нужно обладать еще и хотя бы приблизительным представлением о предмете: скажем, об астрономии, если пишешь о звездных войнах, или истории, если пытаешься ваять фэнтези. Можно, конечно, создать абсолютно новый, свой, ни на что не похожий мир со своими законами физики и социологии. Но для этого нужно, во-первых, быть энциклопедистом, чтобы представлять, как именно обстоят дела в реальности, чтобы ненароком не повториться. Во-вторых, требуется обладать безукоризненным логическим мышлением, позволяющим построить свой мир без единого логического противоречия… ну, или хотя бы без таких противоречий, что бросились бы в глаза читателю. И при всем при том данный мир еще и должен привлечь других. Модель идеального сферического коня в вакууме вряд ли окажется интересной для широкой публики.
Автор может со всей уверенностью заявить: еще никогда в фантастической литературе не было создано ни одного мира, большая часть элементов которого не оказалась бы позаимствованной из нашей реальности. О психологической подоплеке этого явления — как-нибудь в другой раз, а пока сделаем грустный вывод: не родился еще писатель, которому бы удалось избавиться от необходимости поверять поэзию логарифмической линейкой. К сожалению, мало кто занимается такими вещами. Обычно за аксиому принимается вычитанное в книгах собратьев по ремеслу или в бульварной прессе, пишущей доступной для последнего идиота языком. Это приводит к тому, что невообразимый бред зачастую кочует с книжных страниц на газетные, оттуда — на телеэкраны, а затем — снова в книги. К настоящему времени в фантастике и в поп-науке в целом сложился приличный набор штампов — как технических, так и концептуальных — узнаваемых с полуслова, затасканных до неприличия и при всем при том не имеющих ничего общего с реальным положением дел. О некоторых таких штампах речь и пойдет ниже.
Сразу установим рамки, в которых будет проходить обсуждение. Вся современная научная и псевдонаучная фантастика оперирует понятиями из современной нам науки и техники. Времена, когда романы Жюля Верна предвосхищали развитие техники, пусть и на краткий период времени, прошли. Современному неспециалисту (к которым относятся и писатели) дай бог освоить уже достигнутое цивилизацией. Кроме того, заниматься линейной экстраполяцией в будущее не имеет никакого смысла — если вспомнить прогнозы начала 20 века, то уже к его середине улицы городов должны были оказаться заваленными лошадиным навозом аж по третий этаж. Можно констатировать, что в НФ сегодня задействуются либо реальные достижения науки и техники, увешанные рюшечками для пущей футуристичности, либо просто устоявшиеся чуть ли не с шестидесятых годов штампы. Именно поэтому разбор пойдет с позиций современной науки и с учетом современных тенденций (если таковые имеются). Разумеется, завтра может случиться новое эпохальное открытие — опровергнут, например, теорию относительности — и значительная часть приведенных ниже рассуждений потеряет всякий смысл. Но принимать во внимание такую возможность мы не будем.
Итак, приступим.
Тема первая. Компьютеры и прочий киберпанк
Учитывая, что автор данных строк является сетевым инженером с многолетним стажем, данная тема ему особенно близка, а потому открывает статью.
В последнее время в массовом сознании компьютеры превратились из загадочных недоступных устройств с неограниченными возможностями в едва ли не предмет ширпотреба. В результате пиетет перед ними практически утрачен, а для многих современных детишек (вроде моих племянников) настольный компьютер стал таким же привычным элементом домашней обстановки, как и телевизор. В результате процент людей, пишущих компьютерную (или просто с компьютерными элементами) фантастику, резко увеличился. При этом средняя квалификация пишущих, как ни прискорбно, резко упала. Более того, если поначалу авторы все же считали необходимым консультироваться со специалистами (хотя бы с фидошными, как Лукьяненко и В.Васильев), то теперь нет и такого. Научившись с грехом пополам нажимать на клавиши, разбирать на экране строчки самодиагностики при включении компьютера и читать электронную почту с помощью Outlook Express, горе-писатели начинают уверенно описывать монструозно-всепланетные компьютерные сети, чудовищной мощи разумные суперкомпьютеры-искины и отважных умельцев-хакеров, не возвращающихся из набегов на Сеть без очередного секретного документа в клюве. Что весьма трогательно, из текста в текст кочуют штампы, зародившиеся еще в дремучих семидесятых, когда деревья были большими, а киберпанк только-только набирал силу. Их сочетание с модерновыми настольно-компьютерными элементами зачастую выходит весьма забавным. У некоторых авторов (вроде Тюрина) хватает умения и сообразительности описывать предмет, не вдаваясь в детали и отделываясь общими словами, придавая текстам хоть какую-то достоверность. Другие же поддаются соблазну изобразить из себя специалистов в вопросах, в которых ничего не смыслят, в результате чего с умным видом порют несусветную чушь.
Здесь можно выделить следующие типичные ошибки и противоречия.
Информационные супермагистрали.Многие авторы любят описывать путешествия по Сети будущего, описывая ощущения пользователя так, словно он перемещается по автомобильному суперхайвею в индустриальном пейзаже. Шоссе здесь — каналы передачи данных, пользовательские запросы сравниваются во светящимися «автомобилями», выстраивающимися долгой очередью в заторах, а всевозможные Искусственные Интеллекты (ака ИскИны) и прочие банки данных высятся по сторонам дороги ярко светящимися или, наоборот, таинственно-затемненными громадами. Одним из первоочередных умений хакеров является умение мастерски маневрировать на этой магистрали, обгоняя улиток-юзеров и юркими тараканами протискиваясь в самые узкие щели.
Что не так?
Задумаемся над тем, откуда берутся эти визуальные образы. Для того, чтобы нарисовать картинку, требуется некоторый объем информации. Если картину рисует человек, ему требуется выехать на природу с мольбертом и красками или хотя бы сконструировать ее в памяти по имеющимся воспоминаниям. Компьютер — не телепат, и выполняющиеся на нем программы не могут получать данные о перегрузках каналов, размерах баз данных и прочих параметрах нечувствительным образом. Им требуется эту информацию откуда-то получить. Откуда? Да только из самой Сети. Это означает, что помимо действительно нужной информации (спецификации холодильника или скриншотов нового порнофильма) ваш компьютер должен постоянно получать огромное количество паразитного трафика со всех маршрутизаторов и прочих устройств, через которые имело несчастье пролечь соединение к конкретному серверу. Это означает, что вы платите (или тратите время соединения, что то же самое) за получение совершенно не нужных вам данных, превосходящих по объему полезную нагрузку. Вы это заказывали? Сомнительно. Существует масса способов наслаждаться компьютерной графикой за куда меньшие деньги. Получается, что такая система реализована исключительно ради удобства хакеров.
Другая сторона этой проблемы пользователю не видна. Она заключается в том, что вся эта пустая порода создает серьезные нагрузки на активное сетевое оборудование. Ни один владелец такого оборудования не реализует ее добровольно, разве что за очень отдельную плату. Потребные для этого мощности куда выгоднее пустить на обеспечение потребностей новых (и даже старых) потребителей.
Наконец, еще один аспект — безопасность. Нет ни одной причины, по которой владелец ценного информационного ресурса стал бы демонстрировать потенциальным взломщикам реальное расположение своих серверов и баз данных. Тем более вряд ли антихакерская защита стала бы демонстрировать себя взломщику в виде плотной стены тумана или стремительно приближающихся конструкций угрожающего вида. Даже сейчас администраторы многих автономных систем блокируют на границах своих владений служебный протокол, позволяющий получать самую минимальную информацию о путях и скоростях передачи данных (для знающих — фильтрация пакетов ICMP, в частности генерируемых командами ping и traceroute). Очень сомнительно, что в будущем требования к безопасности смягчатся или счастливые ресурсовладельцы станут глупее.
Немногим умнее трактовка потоков пользовательских данных как машин на шоссе. Современные сети передачи данных — пакетно-ориентированные. Если упрощенно, то запрос пользователя разбивается на части-пакеты, и эти пакеты путешествуют к/от цели назначения вперемешку с другими пакетами и даже, бывает, разными путями. При этом они перемежаются служебными данными, как принадлежащими данной сессии, так и чужими. Более уместной была бы аналогия информационных каналов с толстыми трубами, в которых вперемешку ползет разноцветная крупа. Кстати, один пакет может опередить другой только на маршрутизаторе («перекрестке»), отнюдь не на самом шоссе. Разумеется, есть системы (такие как сети ATM), которые реализуют сервис Quality of Service, обеспечивая приоритетную маршрутизацию определенных классов пакетов. Но это сервис не является динамическим и настраивается на сетевом оборудовании администраторами. Пользователям (пусть и трижды хакерам) эта возможность недоступна.
Последний штрих к этому пункту. Каким образом хакеры умудряются за счет одной только ловкости обходить другие запросы в заторах магистралей, если время путешествия пакета данных через половину земного шара занимает несколько десятых, а то и сотых секунды? Время человеческой реакции куда больше.
Теперь рассмотрим типичную ситуацию из киношного или текстового боевика. Хакер, в одиночку или в компании, вторгается в суперзащищенное здание (штаб-квартиру корпорации или жилище злодея), предварительно через Интернет (или его аналог) взломав охранную систему и отключив видеокамеры. После чего он ухватывается за первый же попавшийся ему под руку компьютерный терминал и начинает вершить свое черное дело. И вот тут-то и начинается…
Взлом паролей. О, это вообще песня. Каких только вариантов здесь не придумывают! То хакеры пользуются загадочными программами-"ледорубами" (термин, особенно любимый западными классиками киберпанка), то не менее загадочными крякалками (да простится мне кул-хацкерский сленг), отображающими на экране окаймленный рамочкой пароль, в котором постепенно проявляются нужные цифры. А то хакер просто угадывает его с двух попыток…
Если вы улыбнулись, прочитав последнюю фразу, то совсем зря. На деле это и есть наиболее вероятный способ «взлома» — просто подбор пароля, пользуясь некоторой известной информацией об его владельце. Уж сколько раз твердили миру, что нельзя использовать в качестве пароля имя любимой жениной таксы или не менее любимой тещи, ан нет — все равно пароли такого рода неистребимы. Однако для подобного взлома требуется знать массу информации личного свойства о конкретном человеке, а потому эта атака весьма адресная и в общем случае не сработает. Кроме того, в компьютерном мире есть еще и такой зверь, как права доступа, они же полномочия — на совершение определенных операций. Не имеет никакого смысла подбирать пароль дворника дяди Васи. Ценность имеет лишь информация о черной бухгалтерии банка, добраться до которой можно лишь с правами гендиректора или главбуха (к ней может не иметь доступа даже главный сисадмин фирмы). А пользователя в системе представляет сущность по имени «логин», она же — «имя пользователя». И подобрать этот логин — задача не самая тривиальная. В грамотно спроектированной системе обычно блокируются даже предопределенные администраторские аккаунты. Так что затея с угадыванием пароля рискует провалиться еще до ее применения на практике.
В целом же взлом паролей методом подбора совершенно бредов. Эту атаку засечет и отсечет любая простейшая система защиты наподобие тех, что встроены в настольные операционные системы. Если же речь идет о системах, содержащих действительно важную информацию, защита, обнаружив перебор паролей, не только заблокирует терминал атакующего, но еще и сообщит об этом администратору сети на пейджер, вызовет ОМОН, пожарников и включит городскую систему оповещения о ядерной атаке.
Но как же быть с реальным миром? — скептически усмехнетесь вы. То и дело по телевизору и в газетах рассказывают про взломщиков, вскрывших Бэнк оф Америка или секретные серверы Пентагона. Перекреститесь и трижды сплюньте через левое плечо. Восемьдесят процентов всех взломов системы осуществляется изнутри корпоративной сети и представляет собой банальное злоупотребление служебным положением со стороны администраторов или доверенных пользователей. Из оставшегося процентов девяносто основывается на методах социальной инженерии, когда хакер хитростью выведывает учетные данные сотрудника компании (Кевин Митник — классический пример такого умельца). Из оставшихся двух процентов взломов подавляющее большинство на совести нерадивых администраторов, не озаботившихся прикрыть известные дыры в системе (связанные с ошибками программистов этих систем) или просто сменить пароль по умолчанию. И лишь единичные случаи успешных вторжений — дело рук настоящих профессионалов, долго и кропотливо изучающих данную конкретную систему и находящих в ней нетривиальные уязвимости. Но как раз о таких случаях в газетах (и книжках) ничего не пишут.
На деле работа настоящего хакера нудна, сера и занимает очень, очень много времени. Снять о ней красочный фильм не выйдет при всем желании. И возможен взлом только до тех пор, пока хакеру противостоит человек — невнимательный, ошибающийся и непостоянный. Взломать таким образом защиту Искусственного Интеллекта невозможно, если только Интеллект носит это название заслуженно. Равно как невозможно в течение двух минут под шквальным огнем противника взломать вражескую компьютерную систему — независимо от квалификации взломщика и наличествующей у него аппаратуры.
Кстати, просто для справки. Взломать через Интернет секретные серверы Пентагона, ЦРУ или ФСБ не удастся никому и никогда. Они туда просто физически не подключаются. А хакнуть публичный веб-сайт пусть даже могущественной организации — невелика заслуга, и результат обычно не оправдывает риск. Помните анекдот? «Организация примет на работу хакера, резюме размещать на главной странице www.microsoft.com». Почему, думаете, не www.cia.gov и не www.fsb.ru?
Вирусы.Для начала необходимо дать определение. Вирус — программа, умеющая без участия человека копировать себя в удаленные системы. До последнего времени выделялись собственно вирусы (пробирающиеся на компьютер через зараженные добропорядочные программы) и сетевые черви, самокопирующиеся через Интернет и локальную сеть. В рамках данной статьи мы не будем разделять эти понятия, благо граница между ними чем дальше, тем более расплывчата.
Помимо функции размножения вирус может обладать (и обычно обладает) и дополнительной функциональностью: уничтожение и воровство данных, шпионаж за пользователем и т.п. Однако ключевым фактором, позволяющим отнести программу к вирусным, является именно способность к самостоятельному заражению других машин. Программа, способная лишь уничтожать данные, но не умеющая размножаться, вирусом уже не является.
Вирусная атака в фантастике обычно напрямую связана со взломом системы. С той только разницей, что при взломе доступную информацию пытаются использовать в своих интересах, а вирус стремится ее уничтожить (говорят, есть книги, авторы которых используют вирусов для воровства паролей, но мне они не попадались). В фильмах обычно изображаются впечатляющие эффекты, сопровождающие действие вредоносных программ — стирающиеся на экране строчки, красочные видеоролики с психоделичным содержанием, разрастающиеся на экране черные пятна… При этом любой очкарик с улицы может за считанные минуты прямо с клавиатуры ввести самый убойный вирус (тип компьютера значения не имеет), после чего плохим (или хорошим) парням придет полный крантец из-за внезапно отказавшего охлаждения ядерного реактора, отключения вентиляции или сбоя сортирной сантехники.
В чем неправда здесь?
Разумеется, трудно отрицать разрушительный потенциал вирусов. Непрекращающиеся эпидемии разнообразной заразы уже не вызывают даже скучающего интереса — ну, вирус и вирус, эка невидаль… Однако не стоит забывать, что сегодня сложилась уникальная ситуация: масса… хм, неспециалистов оказалась вброшенной в штормовые воды интенсивно развивающейся отрасли техники. Еще пятнадцать лет назад личный компьютер являлся большой экзотикой даже в благополучных странах — примерно так же, как сегодня вертолет. Представьте себе, что сейчас каждому желающему, от десятилетнего пацана до семидесятилетнего профессора, выдадут по персональному вертолету с краткой инструкцией: двигатель заводится так-то, рулить так-то. Представили? Теперь попытайтесь вообразить себе доходы похоронных контор в течение ближайшего месяца. С течением времени естественный отбор выкосит самых неумелых вертолетчиков, на вертолеты худо-бедно поставят автопилоты, а там и новое поколение подрастет, которое газ с тормозом не перепутает уже на уровне безусловных рефлексов. И снизится уровень катастроф до приемлемого уровня.
То же и с компьютерами, только с поправкой на не слишком фатальные последствия проникновения вируса. От него никто не умирает, разве что от инфаркта из-за безвременно погибшей диссертации за неделю перед защитой (реальный, между прочим, случай из жизни — не инфаркт, а погибшая диссертация). Поэтому процесс компьютеризации окажется чуть более долгим, чем вертолетизации. Но к тому времени, в котором действуют герои киберпанка, он совершенно точно завершится, а потому запустить вирус куда угодно на шармака не выйдет.
Кроме того, «настоящие хакеры» не опускаются до взлома персоналок простых людей. Следуя воле авторов, их «вирусы» проникают в сложнейшие системы, часто в системы искусственного разума, используя те же принципы, что и на персоналках. Вероятно, все понимают, что перочинным ножиком можно ради кошелька зарезать старушку в темном переулке, а вот на танк с ним выходить не стоит. Провести простейшие параллели с компьютерной отраслью почему-то мало кто удосуживается.
Особенно меня умиляют эпизоды, в которых хакеры с клавиатуры за считанные минуты (если не секунды) вводят в незнакомую систему вирусы прямо с клавиатуры. Дело в том, что современные компьютеры не понимают ничего, кроме двоичной системы счисления: последовательности нулей и единиц. Для удобства (весьма сомнительного) человека возможна запись этих последовательностей в шестнадцатеричной системе счисления, которая по удобству (точнее, привычности) использования весьма далека от десятеричной. Простейший вирус, способный существовать в простейшей операционной системе типа DOS, насчитывает полторы-две сотни таких цифр. Но время этих вирусов давно прошло. Размеры современных вирусов — тысячи, если не сотни тысяч, шестнадцатеричных цифр. И вы будет убеждать меня, что найдется человек, способный запомнить на память код хотя бы простенького вируса? Не говоря уж про то, чтобы помнить все возможные команды и в уме проводить двоичные вычисления? Особенно с учетом того, что ошибка в одной цифре сделает программу неработоспособной?
Нет, разумеется, существуют средства, позволяющие людям программировать компьютеры с куда большим комфортом, но эти средства встречаются чрезвычайно редко — в основном на компьютерах разработчиков. Вероятность того, что программа-компилятор (с C или другого высокоуровневого языка программирования) попадется на первом попавшемся бухгалтерском компьютере, стремится к нулю. Кроме того, во многих современных операционных системах существуют встроенные языки программирования высокого уровня (например JavaScript, Java, а в последнее время даже и новомодный .NET framework), позволяющие создавать довольно сложные скрипты (минипрограммы). Однако с помощью таких языков написать саморазмножающийся вирус невозможно. И если уж злоумышленник сумел проникнуть на чужую машины с целью уничтожения данных, ему гораздо проще будет стереть их руками. Впрочем, для надежности нужно не стирать файлы (зачастую их можно с легкостью восстановить), а вытащить накопитель информации из корпуса и несколько раз хорошенько приложиться к нему кувалдой. Вот тут уже с гарантией…
Но и это не все. В даже в не слишком современных системах на больших компьютерах, а сегодня — и на персоналках, существует понятие ограничения прав пользователя (уже упоминавшее выше). И если у пользователя вдруг хватит прав, чтобы запустить в систему вируса, ему, опять-таки, окажется куда проще стереть все, что потребуется, вручную. Исключения из этого правила бывают (например нетривиальная уязвимость конкретной системы, позволяющая незаконно повысить уровень привилегий), но они настолько редки, что вероятность случайно наткнуться на них (тем более — возможность заранее подготовиться к ним) практически отсутствует.
Еще одна хорошо известная профессиональным программистам аксиома: если сложная программа заработала с первого раза, значит, она содержит как минимум одну принципиальную ошибку. Процесс отладки занимает четыре пятых времени программистской работы. А вирус, особенно на ходу придуманный из головы — весьма нетривиальная программа.
Наконец, никогда нельзя забывать о том, что у разных типов компьютеров существенно различаются не только наборы команд, но и внутренняя архитектура, а следовательно — и логика программирования. Вирус, работающий на персоналке, является бессмысленным набором двоичного мусора на SunFire или IBM AS-400. Чтобы уметь в любой момент времени сваять вирус для произвольной (человеческой) компьютерной системы, хакер должен помнить и свободно оперировать таким количеством информации, какое не в состоянии удержать человеческая память (а если в состоянии — то такой человек найдет себе куда лучшее применение, чем криминальная деятельность). Если же речь идет о компьютерах инопланетян, работающих по неизвестным принципам в неизвестных системах команд, то остается лишь пожать плечами. У земного программиста столько же шансов написать для него вирус, сколько у спустившегося с пальмы папуаса — убедить палату пэров Великобритании коллективно покончить жизнь самоубийством.
Желающих ознакомиться с большим количество ляпов такого такого рода отправляю на «Бред Сивой Кобылы» — раздел юмора на посвященном проблемам безопасности сайте bugtraq.
Неудачливый хакер — мертвый хакер. Причем мертвый из-за того, что компьютерная защита дистанционно сожгла ему мозги. Знаете, как все просто: специальный сигнал — и собственный «нейрошунт» (или эквивалентное устройство) кипятит бедолаге мозги. И это в лучшем случае — некоторые авторы со вкусом расписывают, как серое вещество парня (девушек в роли неудачливой жертвы я не встречал — еще один типичный штамп) вперемешку с осколками черепа разлетается по всей комнате.
Для определенности будем называть устройство, реализующие прямой интерфейс «человек-компьютер», нейрошунтом. Давайте разберемся, каким образом такой нейрошунт может убить человека?
Причина первая — неудачная конструкция. Электронная схема, которая по недосмотру разработчиков пропускает слишком сильный разряд. Бред полный — примерно то же самое, что и телефон, убивающий владельца электроразрядом за неправильно набранный номер. Первый же такой случай привет к фатальному для фирмы-производителя результату: немедленное разорение, а то и тюремные сроки для владельцев. Остальные усвоят урок, после чего ни одно такое устройство не выйдет на рынок без тщательнейшего тестирования на предмет безопасности. Конечно, остается возможность случайно пропущенного брака, но такие исключения не смогут быть основанием для создания антихакерских защит-убийц.
В последнее время в массовом сознании компьютеры превратились из загадочных недоступных устройств с неограниченными возможностями в едва ли не предмет ширпотреба. В результате пиетет перед ними практически утрачен, а для многих современных детишек (вроде моих племянников) настольный компьютер стал таким же привычным элементом домашней обстановки, как и телевизор. В результате процент людей, пишущих компьютерную (или просто с компьютерными элементами) фантастику, резко увеличился. При этом средняя квалификация пишущих, как ни прискорбно, резко упала. Более того, если поначалу авторы все же считали необходимым консультироваться со специалистами (хотя бы с фидошными, как Лукьяненко и В.Васильев), то теперь нет и такого. Научившись с грехом пополам нажимать на клавиши, разбирать на экране строчки самодиагностики при включении компьютера и читать электронную почту с помощью Outlook Express, горе-писатели начинают уверенно описывать монструозно-всепланетные компьютерные сети, чудовищной мощи разумные суперкомпьютеры-искины и отважных умельцев-хакеров, не возвращающихся из набегов на Сеть без очередного секретного документа в клюве. Что весьма трогательно, из текста в текст кочуют штампы, зародившиеся еще в дремучих семидесятых, когда деревья были большими, а киберпанк только-только набирал силу. Их сочетание с модерновыми настольно-компьютерными элементами зачастую выходит весьма забавным. У некоторых авторов (вроде Тюрина) хватает умения и сообразительности описывать предмет, не вдаваясь в детали и отделываясь общими словами, придавая текстам хоть какую-то достоверность. Другие же поддаются соблазну изобразить из себя специалистов в вопросах, в которых ничего не смыслят, в результате чего с умным видом порют несусветную чушь.
Здесь можно выделить следующие типичные ошибки и противоречия.
Информационные супермагистрали.Многие авторы любят описывать путешествия по Сети будущего, описывая ощущения пользователя так, словно он перемещается по автомобильному суперхайвею в индустриальном пейзаже. Шоссе здесь — каналы передачи данных, пользовательские запросы сравниваются во светящимися «автомобилями», выстраивающимися долгой очередью в заторах, а всевозможные Искусственные Интеллекты (ака ИскИны) и прочие банки данных высятся по сторонам дороги ярко светящимися или, наоборот, таинственно-затемненными громадами. Одним из первоочередных умений хакеров является умение мастерски маневрировать на этой магистрали, обгоняя улиток-юзеров и юркими тараканами протискиваясь в самые узкие щели.
Что не так?
Задумаемся над тем, откуда берутся эти визуальные образы. Для того, чтобы нарисовать картинку, требуется некоторый объем информации. Если картину рисует человек, ему требуется выехать на природу с мольбертом и красками или хотя бы сконструировать ее в памяти по имеющимся воспоминаниям. Компьютер — не телепат, и выполняющиеся на нем программы не могут получать данные о перегрузках каналов, размерах баз данных и прочих параметрах нечувствительным образом. Им требуется эту информацию откуда-то получить. Откуда? Да только из самой Сети. Это означает, что помимо действительно нужной информации (спецификации холодильника или скриншотов нового порнофильма) ваш компьютер должен постоянно получать огромное количество паразитного трафика со всех маршрутизаторов и прочих устройств, через которые имело несчастье пролечь соединение к конкретному серверу. Это означает, что вы платите (или тратите время соединения, что то же самое) за получение совершенно не нужных вам данных, превосходящих по объему полезную нагрузку. Вы это заказывали? Сомнительно. Существует масса способов наслаждаться компьютерной графикой за куда меньшие деньги. Получается, что такая система реализована исключительно ради удобства хакеров.
Другая сторона этой проблемы пользователю не видна. Она заключается в том, что вся эта пустая порода создает серьезные нагрузки на активное сетевое оборудование. Ни один владелец такого оборудования не реализует ее добровольно, разве что за очень отдельную плату. Потребные для этого мощности куда выгоднее пустить на обеспечение потребностей новых (и даже старых) потребителей.
Наконец, еще один аспект — безопасность. Нет ни одной причины, по которой владелец ценного информационного ресурса стал бы демонстрировать потенциальным взломщикам реальное расположение своих серверов и баз данных. Тем более вряд ли антихакерская защита стала бы демонстрировать себя взломщику в виде плотной стены тумана или стремительно приближающихся конструкций угрожающего вида. Даже сейчас администраторы многих автономных систем блокируют на границах своих владений служебный протокол, позволяющий получать самую минимальную информацию о путях и скоростях передачи данных (для знающих — фильтрация пакетов ICMP, в частности генерируемых командами ping и traceroute). Очень сомнительно, что в будущем требования к безопасности смягчатся или счастливые ресурсовладельцы станут глупее.
Немногим умнее трактовка потоков пользовательских данных как машин на шоссе. Современные сети передачи данных — пакетно-ориентированные. Если упрощенно, то запрос пользователя разбивается на части-пакеты, и эти пакеты путешествуют к/от цели назначения вперемешку с другими пакетами и даже, бывает, разными путями. При этом они перемежаются служебными данными, как принадлежащими данной сессии, так и чужими. Более уместной была бы аналогия информационных каналов с толстыми трубами, в которых вперемешку ползет разноцветная крупа. Кстати, один пакет может опередить другой только на маршрутизаторе («перекрестке»), отнюдь не на самом шоссе. Разумеется, есть системы (такие как сети ATM), которые реализуют сервис Quality of Service, обеспечивая приоритетную маршрутизацию определенных классов пакетов. Но это сервис не является динамическим и настраивается на сетевом оборудовании администраторами. Пользователям (пусть и трижды хакерам) эта возможность недоступна.
Последний штрих к этому пункту. Каким образом хакеры умудряются за счет одной только ловкости обходить другие запросы в заторах магистралей, если время путешествия пакета данных через половину земного шара занимает несколько десятых, а то и сотых секунды? Время человеческой реакции куда больше.
Теперь рассмотрим типичную ситуацию из киношного или текстового боевика. Хакер, в одиночку или в компании, вторгается в суперзащищенное здание (штаб-квартиру корпорации или жилище злодея), предварительно через Интернет (или его аналог) взломав охранную систему и отключив видеокамеры. После чего он ухватывается за первый же попавшийся ему под руку компьютерный терминал и начинает вершить свое черное дело. И вот тут-то и начинается…
Взлом паролей. О, это вообще песня. Каких только вариантов здесь не придумывают! То хакеры пользуются загадочными программами-"ледорубами" (термин, особенно любимый западными классиками киберпанка), то не менее загадочными крякалками (да простится мне кул-хацкерский сленг), отображающими на экране окаймленный рамочкой пароль, в котором постепенно проявляются нужные цифры. А то хакер просто угадывает его с двух попыток…
Если вы улыбнулись, прочитав последнюю фразу, то совсем зря. На деле это и есть наиболее вероятный способ «взлома» — просто подбор пароля, пользуясь некоторой известной информацией об его владельце. Уж сколько раз твердили миру, что нельзя использовать в качестве пароля имя любимой жениной таксы или не менее любимой тещи, ан нет — все равно пароли такого рода неистребимы. Однако для подобного взлома требуется знать массу информации личного свойства о конкретном человеке, а потому эта атака весьма адресная и в общем случае не сработает. Кроме того, в компьютерном мире есть еще и такой зверь, как права доступа, они же полномочия — на совершение определенных операций. Не имеет никакого смысла подбирать пароль дворника дяди Васи. Ценность имеет лишь информация о черной бухгалтерии банка, добраться до которой можно лишь с правами гендиректора или главбуха (к ней может не иметь доступа даже главный сисадмин фирмы). А пользователя в системе представляет сущность по имени «логин», она же — «имя пользователя». И подобрать этот логин — задача не самая тривиальная. В грамотно спроектированной системе обычно блокируются даже предопределенные администраторские аккаунты. Так что затея с угадыванием пароля рискует провалиться еще до ее применения на практике.
В целом же взлом паролей методом подбора совершенно бредов. Эту атаку засечет и отсечет любая простейшая система защиты наподобие тех, что встроены в настольные операционные системы. Если же речь идет о системах, содержащих действительно важную информацию, защита, обнаружив перебор паролей, не только заблокирует терминал атакующего, но еще и сообщит об этом администратору сети на пейджер, вызовет ОМОН, пожарников и включит городскую систему оповещения о ядерной атаке.
Но как же быть с реальным миром? — скептически усмехнетесь вы. То и дело по телевизору и в газетах рассказывают про взломщиков, вскрывших Бэнк оф Америка или секретные серверы Пентагона. Перекреститесь и трижды сплюньте через левое плечо. Восемьдесят процентов всех взломов системы осуществляется изнутри корпоративной сети и представляет собой банальное злоупотребление служебным положением со стороны администраторов или доверенных пользователей. Из оставшегося процентов девяносто основывается на методах социальной инженерии, когда хакер хитростью выведывает учетные данные сотрудника компании (Кевин Митник — классический пример такого умельца). Из оставшихся двух процентов взломов подавляющее большинство на совести нерадивых администраторов, не озаботившихся прикрыть известные дыры в системе (связанные с ошибками программистов этих систем) или просто сменить пароль по умолчанию. И лишь единичные случаи успешных вторжений — дело рук настоящих профессионалов, долго и кропотливо изучающих данную конкретную систему и находящих в ней нетривиальные уязвимости. Но как раз о таких случаях в газетах (и книжках) ничего не пишут.
На деле работа настоящего хакера нудна, сера и занимает очень, очень много времени. Снять о ней красочный фильм не выйдет при всем желании. И возможен взлом только до тех пор, пока хакеру противостоит человек — невнимательный, ошибающийся и непостоянный. Взломать таким образом защиту Искусственного Интеллекта невозможно, если только Интеллект носит это название заслуженно. Равно как невозможно в течение двух минут под шквальным огнем противника взломать вражескую компьютерную систему — независимо от квалификации взломщика и наличествующей у него аппаратуры.
Кстати, просто для справки. Взломать через Интернет секретные серверы Пентагона, ЦРУ или ФСБ не удастся никому и никогда. Они туда просто физически не подключаются. А хакнуть публичный веб-сайт пусть даже могущественной организации — невелика заслуга, и результат обычно не оправдывает риск. Помните анекдот? «Организация примет на работу хакера, резюме размещать на главной странице www.microsoft.com». Почему, думаете, не www.cia.gov и не www.fsb.ru?
Вирусы.Для начала необходимо дать определение. Вирус — программа, умеющая без участия человека копировать себя в удаленные системы. До последнего времени выделялись собственно вирусы (пробирающиеся на компьютер через зараженные добропорядочные программы) и сетевые черви, самокопирующиеся через Интернет и локальную сеть. В рамках данной статьи мы не будем разделять эти понятия, благо граница между ними чем дальше, тем более расплывчата.
Помимо функции размножения вирус может обладать (и обычно обладает) и дополнительной функциональностью: уничтожение и воровство данных, шпионаж за пользователем и т.п. Однако ключевым фактором, позволяющим отнести программу к вирусным, является именно способность к самостоятельному заражению других машин. Программа, способная лишь уничтожать данные, но не умеющая размножаться, вирусом уже не является.
Вирусная атака в фантастике обычно напрямую связана со взломом системы. С той только разницей, что при взломе доступную информацию пытаются использовать в своих интересах, а вирус стремится ее уничтожить (говорят, есть книги, авторы которых используют вирусов для воровства паролей, но мне они не попадались). В фильмах обычно изображаются впечатляющие эффекты, сопровождающие действие вредоносных программ — стирающиеся на экране строчки, красочные видеоролики с психоделичным содержанием, разрастающиеся на экране черные пятна… При этом любой очкарик с улицы может за считанные минуты прямо с клавиатуры ввести самый убойный вирус (тип компьютера значения не имеет), после чего плохим (или хорошим) парням придет полный крантец из-за внезапно отказавшего охлаждения ядерного реактора, отключения вентиляции или сбоя сортирной сантехники.
В чем неправда здесь?
Разумеется, трудно отрицать разрушительный потенциал вирусов. Непрекращающиеся эпидемии разнообразной заразы уже не вызывают даже скучающего интереса — ну, вирус и вирус, эка невидаль… Однако не стоит забывать, что сегодня сложилась уникальная ситуация: масса… хм, неспециалистов оказалась вброшенной в штормовые воды интенсивно развивающейся отрасли техники. Еще пятнадцать лет назад личный компьютер являлся большой экзотикой даже в благополучных странах — примерно так же, как сегодня вертолет. Представьте себе, что сейчас каждому желающему, от десятилетнего пацана до семидесятилетнего профессора, выдадут по персональному вертолету с краткой инструкцией: двигатель заводится так-то, рулить так-то. Представили? Теперь попытайтесь вообразить себе доходы похоронных контор в течение ближайшего месяца. С течением времени естественный отбор выкосит самых неумелых вертолетчиков, на вертолеты худо-бедно поставят автопилоты, а там и новое поколение подрастет, которое газ с тормозом не перепутает уже на уровне безусловных рефлексов. И снизится уровень катастроф до приемлемого уровня.
То же и с компьютерами, только с поправкой на не слишком фатальные последствия проникновения вируса. От него никто не умирает, разве что от инфаркта из-за безвременно погибшей диссертации за неделю перед защитой (реальный, между прочим, случай из жизни — не инфаркт, а погибшая диссертация). Поэтому процесс компьютеризации окажется чуть более долгим, чем вертолетизации. Но к тому времени, в котором действуют герои киберпанка, он совершенно точно завершится, а потому запустить вирус куда угодно на шармака не выйдет.
Кроме того, «настоящие хакеры» не опускаются до взлома персоналок простых людей. Следуя воле авторов, их «вирусы» проникают в сложнейшие системы, часто в системы искусственного разума, используя те же принципы, что и на персоналках. Вероятно, все понимают, что перочинным ножиком можно ради кошелька зарезать старушку в темном переулке, а вот на танк с ним выходить не стоит. Провести простейшие параллели с компьютерной отраслью почему-то мало кто удосуживается.
Особенно меня умиляют эпизоды, в которых хакеры с клавиатуры за считанные минуты (если не секунды) вводят в незнакомую систему вирусы прямо с клавиатуры. Дело в том, что современные компьютеры не понимают ничего, кроме двоичной системы счисления: последовательности нулей и единиц. Для удобства (весьма сомнительного) человека возможна запись этих последовательностей в шестнадцатеричной системе счисления, которая по удобству (точнее, привычности) использования весьма далека от десятеричной. Простейший вирус, способный существовать в простейшей операционной системе типа DOS, насчитывает полторы-две сотни таких цифр. Но время этих вирусов давно прошло. Размеры современных вирусов — тысячи, если не сотни тысяч, шестнадцатеричных цифр. И вы будет убеждать меня, что найдется человек, способный запомнить на память код хотя бы простенького вируса? Не говоря уж про то, чтобы помнить все возможные команды и в уме проводить двоичные вычисления? Особенно с учетом того, что ошибка в одной цифре сделает программу неработоспособной?
Нет, разумеется, существуют средства, позволяющие людям программировать компьютеры с куда большим комфортом, но эти средства встречаются чрезвычайно редко — в основном на компьютерах разработчиков. Вероятность того, что программа-компилятор (с C или другого высокоуровневого языка программирования) попадется на первом попавшемся бухгалтерском компьютере, стремится к нулю. Кроме того, во многих современных операционных системах существуют встроенные языки программирования высокого уровня (например JavaScript, Java, а в последнее время даже и новомодный .NET framework), позволяющие создавать довольно сложные скрипты (минипрограммы). Однако с помощью таких языков написать саморазмножающийся вирус невозможно. И если уж злоумышленник сумел проникнуть на чужую машины с целью уничтожения данных, ему гораздо проще будет стереть их руками. Впрочем, для надежности нужно не стирать файлы (зачастую их можно с легкостью восстановить), а вытащить накопитель информации из корпуса и несколько раз хорошенько приложиться к нему кувалдой. Вот тут уже с гарантией…
Но и это не все. В даже в не слишком современных системах на больших компьютерах, а сегодня — и на персоналках, существует понятие ограничения прав пользователя (уже упоминавшее выше). И если у пользователя вдруг хватит прав, чтобы запустить в систему вируса, ему, опять-таки, окажется куда проще стереть все, что потребуется, вручную. Исключения из этого правила бывают (например нетривиальная уязвимость конкретной системы, позволяющая незаконно повысить уровень привилегий), но они настолько редки, что вероятность случайно наткнуться на них (тем более — возможность заранее подготовиться к ним) практически отсутствует.
Еще одна хорошо известная профессиональным программистам аксиома: если сложная программа заработала с первого раза, значит, она содержит как минимум одну принципиальную ошибку. Процесс отладки занимает четыре пятых времени программистской работы. А вирус, особенно на ходу придуманный из головы — весьма нетривиальная программа.
Наконец, никогда нельзя забывать о том, что у разных типов компьютеров существенно различаются не только наборы команд, но и внутренняя архитектура, а следовательно — и логика программирования. Вирус, работающий на персоналке, является бессмысленным набором двоичного мусора на SunFire или IBM AS-400. Чтобы уметь в любой момент времени сваять вирус для произвольной (человеческой) компьютерной системы, хакер должен помнить и свободно оперировать таким количеством информации, какое не в состоянии удержать человеческая память (а если в состоянии — то такой человек найдет себе куда лучшее применение, чем криминальная деятельность). Если же речь идет о компьютерах инопланетян, работающих по неизвестным принципам в неизвестных системах команд, то остается лишь пожать плечами. У земного программиста столько же шансов написать для него вирус, сколько у спустившегося с пальмы папуаса — убедить палату пэров Великобритании коллективно покончить жизнь самоубийством.
Желающих ознакомиться с большим количество ляпов такого такого рода отправляю на «Бред Сивой Кобылы» — раздел юмора на посвященном проблемам безопасности сайте bugtraq.
Неудачливый хакер — мертвый хакер. Причем мертвый из-за того, что компьютерная защита дистанционно сожгла ему мозги. Знаете, как все просто: специальный сигнал — и собственный «нейрошунт» (или эквивалентное устройство) кипятит бедолаге мозги. И это в лучшем случае — некоторые авторы со вкусом расписывают, как серое вещество парня (девушек в роли неудачливой жертвы я не встречал — еще один типичный штамп) вперемешку с осколками черепа разлетается по всей комнате.
Для определенности будем называть устройство, реализующие прямой интерфейс «человек-компьютер», нейрошунтом. Давайте разберемся, каким образом такой нейрошунт может убить человека?
Причина первая — неудачная конструкция. Электронная схема, которая по недосмотру разработчиков пропускает слишком сильный разряд. Бред полный — примерно то же самое, что и телефон, убивающий владельца электроразрядом за неправильно набранный номер. Первый же такой случай привет к фатальному для фирмы-производителя результату: немедленное разорение, а то и тюремные сроки для владельцев. Остальные усвоят урок, после чего ни одно такое устройство не выйдет на рынок без тщательнейшего тестирования на предмет безопасности. Конечно, остается возможность случайно пропущенного брака, но такие исключения не смогут быть основанием для создания антихакерских защит-убийц.