city_rat: (Default)
city_rat ([personal profile] city_rat) wrote2008-03-13 10:44 pm

Фантхакеры-3

(предыдущая глава).

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

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

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

1. Высокая стоимость таких систем. Тут уже против нас начинает работать другое соотношение: "стоимость средств защиты/стоимость защищаемого объекта". Стремление сделать систему приемлемой по стоимости приводит к следующим уязвимостям:
1.1. Сознательное занижение уровня защиты.
1.2. Проектные ошибки, ведущие к снижению уровня защиты. Источник оных - применение "хаотических" методов разработки, использование менее квалифицированных проектантов, меньшего - все, что позволяет экономить.
1.3. Ошибки стадии реализации - безошибочное программирование требует бесконечного тестирования.

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

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

2. Неудобство пользования высокозащищенными системами. Если у тебя на каждый чих запрашивают пароль - вскоре взвоешь. Из супермаркета, который рискнет обыскивать всех покупателей на выходе - вскоре побегут посетители. И т.д. Таким образом, мы получаем тот же п. 1.1. - разработчики вынуждены сознательно занижать уровень защиты, разве что причина другая.

Есть и еще один забавный эффект на стыке человека и машины: повышение уровня защищенности сверх разумно-удобного или хотя бы просто возможного для человека часто приводит к проковыриванию дыр самими пользователями. Ежедневно меняющиеся пароли вида p234@2Iv8*oiRmn со 100% гарантией будут записываться на бумажке и приклеиваться к монитору. Тут мы плавно переходим к п. 3 - видимо, самому главному.

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

Как видите, все вышеперечисленные проблемы у нас исключительно от человеков.
Итого. Близкая к идеальной невзламываемая система выглядит у нас так:

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

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

Ровно такая система блестяще использована в качестве фант-образующей у Шумила в рассказе "Мастер-ломастер". Идеальный баланс осмысленности, эффектности, понятности и достоверности (литературные достоинства, естественно, не обсуждаем).

Обратите внимание, что я не включил в список еще одну потенциальную уязвимость: возможность физического доступа к компонентам системы. С одной стороны, в реальности это один из самых надежных способов атаки: если смог спереть сервак с базой данных - то ты ее расковыряешь с гарантией, если тебе дали диск с игрушкой - никакие защиты правообладателя не спасут и т.д. С другой стороны - для наших литературных целей этот случай тоже тривиален и не интересен, это уже не хак, а просто боевик про проникновение в охраняемые помещения. С третьей стороны: в принципе задача предотвращения физического доступа уже решена. Пример - чип-карты. Доступиться к ней можно только легально: через контакты, т.е. это все равно, что ломиться в удаленную сиситему через интернет, и не важно, что сам кристалл у тебя в руках. Скопировать ничего нельзя - система выдает наружу только то, что ей положено выдавать. Топология кристалла криптована, т.е., скажем, в ренгеновских лучах там увидишь только кашу. Можно сошлифовывать кристалл послойно, но это ужасно дорого и разрушает его, да и "распаковать" схему до конца все равно не удастся, а секретная информация будет стерта. Есть и другие меры защиты. В общем, для наших фантастических целей можно уверенно принять, что наличие на руках у пользователей неких компонентов системы возможно, но ничего не дает хакеру. Причем криптозащита - это тот редкий случай, когда броня с гарантией опережает снаряд - там, где атакующему нужно увеличить свои мощности (и расходы) на порядок, защищающемуся достаточно накинуть один бит в ключик... В общем, уязвимости таких компонентов нужно искать (придумывать) на общих основаниях - выбирая из п. 1-3.

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

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

ВАЖНО! Все вышесказанное (и все, что я буду писать по теме далее) отражает не просто ситуацию "здесь и сейчас", т.е. работает отнюдь не только в фантастике ближнего прицела. Это некие объективные законы и правила, которые будут работать во всех компьютерных системах, построенных в рамках известных нам физических и математических принципов, причем открытие новых принципов старых отнюдь не отменяет. Аналогично - никакая химическая ракета не может нарушить некие базовые законы реактивного движения, даже если изобрести суперпупертопливо, нанонасосы для него и сталинит-аквалитовый сплав для сопел.

Естественно, у фантаста всегда остается возможность "перпендикулярного" решения задачи, выхода за плоскость допустимых решений. Например, придумать джамп-двигатель. Для нашей темы мне приходят в голову два варианта такого развития:

- Переход на принципиально не-неймановские компьютерные системы. Не просто "систем с элементами fuzzy-logic", а принципиально основанных на недетерминированных процессах - т.е. систем, близких по поведению к человеческому. Однако для этого необходима некая внешняя причина, т.к. иначе совершенно непонятно, зачем надежную систему заменять на ненадежную. Такой причиной, например, может быть неработоспособность обычных систем в подпространстве. Мне, правда, кажется это ооочень большой натяжкой, да и вообще довольно бессмысленным ходом. Ну, получим мы еще один сериал "Я, Робот" с железными дровосеками человеками - и что? Ради решения каких литературных задач?

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

[identity profile] gray-bird.livejournal.com 2008-03-13 08:08 pm (UTC)(link)
Тут жизнь подкидывает такие факты, что никакой фантастики не надо. ;)
В предпоследней компьютерре было упоминание про взлом всего и вся, через копирование оперативной памяти. Автор атаки задумался, "а сколько реально храниться информация в чипах DRAM? А если ее охладить до -70С? А если -150С?
И оказалось, что инфа сохраняется до десятков минут, можно переставив DIMM в другую систему тупо скопировать содержимое оперативки. Где, как известно в открытом виде лежат все ключи, ко всем шифрам.
Еще мне очень нравится идея анализа производимых операций на основании энергопотребления чипа, тоже очень красиво и вполне наглядно.
Т.е. получается, что для того чтоб читателя заинтересовать нужен трюк, фокус-покус.
vitus_wagner: My photo 2005 (Default)

[personal profile] vitus_wagner 2008-03-13 08:15 pm (UTC)(link)
А задача шифрования с гарантированной стойкостью _решена_, причем реализующие ее компоненты систем в силу ее алгоритмической простоты, детерминированности и отсутствия в процессе человека могут быть вплотную приближены к "идеалу невзламываемой системы".
...
Естественно, у фантаста всегда остается возможность "перпендикулярного" решения задачи, выхода за плоскость допустимых решений. Например, придумать джамп-двигатель. Для нашей темы мне приходят в голову два варианта такого развития:

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


А вот затем и заменять. Чтобы в реальном времени ломать шифрование в каналах связи. Факторизация больших чисел (взлом RSA) - основное ради чего сейчас вкладывают деньги в квантовые компьютеры.

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

А у не-фоннеймановских систем могут быть свои тараканы.

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

Да, кстати, для создания обходного пути совершенно необязательно выходить за пределы фоннеймановской архитектуры. НЕ ДОКАЗАНО, что не существует эффективного метода факторизации больших чисел или дискретного логарифмирования (взлом DSA и ныне покойного ГОСТ Р 34.10-94). А уж про эллиптические кривые (ECDSA и действующий ГОСТ Р 34.10-2001) вообще не так много математических результатов есть. Можно ввести в произведение гениального математика, который этот метод открыл.

[identity profile] zharkovsky.livejournal.com 2008-03-13 09:33 pm (UTC)(link)
Недавно по поводу запрошлых фантхакеров с чувачком одним разговаривал, он мне: представляешь, сколько сейчас ваших (фонтастоф имея в виду) всё это лихорадочно переписывает от руки сто раз в столбик, чтобы, значить, создать хотя бы у себя видимость "серьёзного подготовительного периода к написанию гениального фантастического романа"?
Я впрочем его разубедил: давно замечено, что в открытый доступ можно лОжить _любую_ значимую информацию: 99 процентов вроде бы заинтересованных всё равно ниасилят даже раз, а тот единственный, кто осилит да ещё и напишет чего - так ты сам ему потом, читаючи, спасибо скажешь. :)

(На всякий случай - про "видимость" - это именно о переписывании от руки, а не о вашей работе.)

[identity profile] dei-os.livejournal.com 2008-03-13 10:24 pm (UTC)(link)
"Теоретически невзламываемую систему создать можно" - нельзя.
а согласен - стоимость взлома

[identity profile] pascendi.livejournal.com 2008-03-14 07:31 am (UTC)(link)
"С третьей стороны: в принципе задача предотвращения физического доступа уже решена. Пример - чип-карты. Доступиться к ней можно только легально: через контакты, т.е. это все равно, что ломиться в удаленную сиситему через интернет, и не важно, что сам кристалл у тебя в руках." -- Росс Андерсон еще десять лет назад строго доказал, что это не так. И продолжает доказывать, см. хотя бы . (http://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-711.html)

[identity profile] sy-lexx.livejournal.com 2008-03-14 12:44 pm (UTC)(link)
А если бы Ты еще и катом пользовался! ......

[identity profile] tyrex.livejournal.com 2008-03-14 03:55 pm (UTC)(link)
к задаче шифрования с гарантированной стойкостью, чип-картам и прочим чудесам криптографии точно так же применимы пп.1.1-1.3

[identity profile] besm6.livejournal.com 2008-03-20 09:50 pm (UTC)(link)
По поводу открытых каналов в гермозоне вспоминается номер имени Майлза Форкосигана. С подставлением секретного монитора под глаз камере видеосвязи. Подобные фокусы возможны в разных системах, в том числе и полностью автоматизированных.

А с охлаждением в жидком азоте - тот же Шумил, "Стать драконом". Там так отключали систему самоуничтожения. Сюда тоже можно попробовать покопать. "Сюда" - это в сторону идеи "страховочная подсистема увеличивает сложность всей системы и, соответственно, уменьшает ее надежность, проблем с надежностью следует ожидать на стыке". Учитывая, что задача проверки надежности системы растет с ее сложностью примерно так же, как задача перебора ключей по сравнению с задачей шифрования, и это объективный закон, мы получаем принципиальную невозможность удостовериться в надежности достаточно сложной системы. А сложность поиска дырки - ну, NP...

[identity profile] blacklion.livejournal.com 2008-03-28 08:15 pm (UTC)(link)
безошибочное программирование требует бесконечного тестирования.
Нет. Безошибочное программирование требует программирования в формализмах (грубо говоря — язках программирования), позволяющих математическое доказательство правильности написанного. Такие формализмы уже есть, и развиваются в сторону практической применимости. Думаю, лет за 100 доразвиваются если не до мейнстрима, то до вполне применимых при необходимости инструментов.