Этике программной инженерии посвящены четыре большие статьи, сопровождаемые вводной заметкой «Этика программной инженерии в цифровом мире» (Software Engineering Ethics in a Digital World) приглашенных редакторов – Аваиса Рашида, Джона Векерта и Чарльза Лукаса (Awais Rashid, John Weckert, Richard Lucas).
Internet все глубже проникает в повседневную жизнь людей, и повсеместная доступность вкупе с развитием инновационных сервисов социальных сетей и Web 2.0 приводит к возникновению феномена цифрового мира – социальные сети, такие как Facebook, MySpace и Twitter, виртуальные миры типа SecondLife и глобальные многопользовательские онлайновые игры, такие как World of Warcraft, стирают границу между виртуальным и физическим мирами. Сегодня все большее число сервисов доступно в режиме онлайн. В этом режиме люди занимаются бизнесом, следят за любимыми телевизионными программами и устанавливают новые общественные контакты.
С одной стороны, феномен цифрового мира повышает уровень доступности сервисов и общественных взаимодействий, а с другой – приводит к появлению ряда этических проблем, связанных
с конфиденциальностью, мониторингом, защитой данных и т.д. Преимущества цифрового мира очевидны, но он может также содействовать организованной преступности, например педофилии и терроризму. Наличие у одной и той же технологии возможности приносить как пользу, так и вред называют дилеммой двойного применения. Эта дилемма свойственна практически любой технологии. В большинстве случаев выявление дилеммы двойного применения не приводит к запрету разработки соответствующей технологии, скорее люди пытаются найти способы извлечения из нее пользы при одновременной минимизации вреда. В контексте феномена цифрового мира дилемму можно проиллюстрировать тремя примерами.
В Google появился сервис Street View, обеспечивающий доступ в Internet к трехмерным фотографиям улиц. Это средство в сочетании с Google Maps полезно для поиска домов, планирования свободного времени, выбора места встреч и т.д. Однако некоторые люди считают размещение этих фотографий посягательством на их конфиденциальность. Кроме того, высказывается мнение, что этот сервис может помочь террористам и грабителям при нахождении своих целей.
Еще один пример – чаты и одноранговые сети. Чаты позволяют общаться географически удаленным людям, однако они же могут использоваться педофилами и террористами для планирования своей деятельности. Чаты могут служить организованной преступности, обеспечивая среду общения территориально распределенных преступных элементов. Одноранговые сети дают возможность совместно использовать аудио- и видеоматериалы. Но они же могут применяться для незаконного распространения материалов, охраняемых авторским правом, или порнографии.
Третий, возможно самый неожиданный пример – социальная сеть Facebook. Для многих эта сеть является несомненным благом, поскольку, помимо прочего, помогает находить новых друзей и поддерживать контакты со старыми. Однако исследования показывают, что у 68% студентов, активно общающихся через Facebook, средние оценки значительно ниже, чем у тех, которые ею не пользуются. Может быть, двоечникам больше нравится проводить время в Facebook, но также возможно, что это просто мешает учиться.
Эти примеры и другие наблюдения показывают, что перед разработчиками программных систем для цифрового мира стоят три основные проблемы. Первая состоит в том, что разработчики должны находить баланс между обеспечением конфиденциальности отдельных граждан и обеспечением защиты уязвимых групп пользователей – например, защиты детей от разбойных нападений. Вторая проблема состоит в том, что разработчики некоторых систем должны принимать во внимание как потребность граждан в свободе выбора, так и общественную пользу. Привлекательные для многих игровые сайты нередко становятся причиной игромании, а игры-стрелялки могут стимулировать агрессивное поведение. Наконец, третья проблема состоит в том, что этические соображения часто по-разному интерпретируются в зависимости от географического, культурного, этнического, религиозного и даже исторического контекста.
Для решения этих проблем требуется сотрудничество разработчиков программного обеспечения со специалистами по этике, законодателями и социологами. И налаживание такого сотрудничества, по-видимому, само является сложной проблемой.
Статью «Обеспечение доверия, конфиденциальности и профессиональной этики в Web 2.0» (Ensuring Trust, Privacy, and Etiquette in Web 2.0 Applications) представили Амела Карахазанович, Петер Бае Брандцак, Йероен Ванаттенховен, Брам Ливенс, Карен Торбен Нилсен и Йо Пирсон (Amela Karahasanovic, Petter Bae Brandtz?g, Jeroen Vanattenhoven, Bram Lievens, Karen Torben Nielsen, Jo Pierson).
В приложениях Web 2.0 технологии World Wide Web применяются для развития творческих способностей, общения, сотрудничества и совместного использования информации. Эти новые приложения изменяют способы общения людей. Личные фотографии и видеоматериалы, размещенные в Web, становятся доступными не только членам семьи и друзьям, но и всему миру. Многие обращаются к информации из открытых Web-энциклопедий, таких как Wikipedia, которые совместно создаются добровольцами. Для информирования друзей и членов семьи о происходящем в текущий момент используются твиты. Политические события теперь обсуждаются на форумах, а не в пабах. Программное обеспечение пишется совместно людьми, проживающими в разных местах и странах.
Кроме возможностей совместного использования информации, эти приложения обеспечивают много новых средств, таких как социальные сети, создание пользовательского контента и т.д., но одновременно с этим возникают очевидные этические дилеммы и риски. Все, что размещается в Internet, может быть употреблено не должным образом. Существенно проще стало получать доступ к частной информации, потому что люди нередко раскрывают эту информацию, не задумываясь о возможных последствиях.
Стандарты, которым должны следовать разработчики программного обеспечения, четко определены и понятны. Перед ними стоит моральная обязанность защищать общественное благосостояние и конфиденциальность тех, кого затрагивает создаваемое программное обеспечение. Для этого имеются и чисто прагматические основания, поскольку люди хотят, чтобы их моральные права принимались во внимание. Те, кому доставили неприятности социальные сети, могут просто перестать ими пользоваться. Люди, которых беспокоит судьба контента, который они могли бы разместить в YouTube, могут никогда не начать пользоваться подобным сервисом.
Появление приложений Web 2.0 требует переосмысления этических норм, направляющих их разработку и использование. Возникла необходимость ответить на ряд новых вопросов. Какого рода проблемы испытывают пользователи этих приложений? О чем беспокоятся люди, предоставляющие свою личную информацию, обсуждающие последние новости или размещающие в Web свои фотографии? Чего ожидают от приложений Web 2.0 члены существующих «реальных» сообществ? Что следует делать разработчикам, чтобы обеспечить доверие к таким приложениям и гарантировать конфиденциальность пользователей?
В течение последних трех лет авторы статьи участвуют в европейском проекте Citizen Media (www.ist-citizenmedia.org), в котором изучается, каким образом приложения Web 2.0 могут улучшить повседневную жизнь европейских граждан. В проекте исследуются и этические проблемы, порождаемые новыми технологиями. Для изучения проблем пользователей, вызываемых такими приложениями Web 2.0, как социальные сети и блоги, было проведено исследование в Норвегии с 200 участниками и два исследования в Бельгии, в одном из которых участвовало 30 членов двух онлайновых сообществ, а в другом – 50 индивидуальных пользователей и 85 семей. На основе этих исследований были выявлены наиболее важные требования пользователей к приложениям Web 2.0 (см. рисунок), включающие обеспечение доверия к приложениям, поддержку конфиденциальности, соблюдение профессиональной этики и т.д.
Авторами статьи «Принцип предосторожности в мире цифровых зависимостей» (The Precautionary Principle in a World of Digital Dependencies) являются Вольтер Питерс и Андре ван Клиф (Wolter Pieters, Andrе van Cleeff).
Традиционно защита информации направлена на обеспечение безопасности организации по периметру ее систем и сети, базируется это на том неявном предположении, что внутренней части этого периметра можно более или менее доверять, а внешней части – нет. Но изменение технологий, бизнес-процессов и их правового поля больше не позволяет опираться на это предположение. Многие организации теперь передают часть своих ИТ-процессов сторонним исполнителям, а служащие требуют, чтобы им разрешалось работать дома. Небывалые масштабы бизнес-сотрудничества приводят к формированию сложных глобальных сетей, в которых больше доверяют сетям стороннего бизнеса, чем своим собственным. Мобильные устройства обеспечивают доступ к данным откуда угодно, а интеллектуальные дома оборудуются микрочипами, постоянно общающимися между собой и со своей штаб-квартирой.
При использовании облачных инфраструктур организации могут арендовать персональные компьютеры на почасовой основе. Это приводит к еще более сложным системам, или системам систем, которые перекрывают границы нескольких участвующих сторон и пересекают их периметры безопасности. Авторы называют этот процесс депериметризацией (deperimeterization) – исчезают границы между системами и организациями, которые становятся одновременно и связанными, и фрагментированными. В этой связи возникает потребность в изменении подходов к обеспечению безопасности. При депериметризации размываются не только границы корпоративной ИТ-инфраструктуры, но и границы ответственности организаций. Если некая компания передает сторонним исполнителям обработку своих данных, то кто несет моральную ответственность за поддержку конфиденциальности данных ее заказчиков?
Депериметризация накладывает новые моральные и правовые обязательства на людей и организации, разрабатывающие программное обеспечение. В сложной цепочке событий или систем в любом действии, ведущем к непредсказуемым последствиям, будет участвовать много людей. У всех у них будет возможность предотвратить эти последствия, и, следовательно, никто не будет нести за это личную ответственность. Это типичная проблема «семи нянек».
Проблема размытой ответственности, безусловно, проявляется при разработке программных систем, зависящих от других систем, которые, в свою очередь, зависят от третьих и т.д. К этому приводит философия разработки на основе сервисной архитектуры, когда общая функциональность системы определяется сервисами, которые могут объединяться в более крупные приложения, выполняющие задачи конечного пользователя. В таких случаях сетевая организация и технологическая структура затрудняют определение того, кто несет ответственность за недостоверность окончательных результатов.
В этой ситуации бесполезна этика, предписывающая ответственность какому-либо одному человеку или организации, неясно не только то, где лежат границы ответственности, но и то, каким влиянием обладает организация и как она может воздействовать на последствия. Если организация примет решение применить в своем программном обеспечении некоторую политику защиты данных, этими же данными сможет распорядиться какая-то другая организация.
Когда неясна ответственность организации, непонятны и последствия ее действий. Это означает, что организация должна по-другому обращаться с рисками. Кроме проблемы «семи нянек» депериметризация приводит к проблеме неопределенного риска. При разработке сервиса точно неизвестно, от каких сервисов он будет зависеть. И наоборот, точно неизвестно, в каких других сервисах будет использоваться разрабатываемый сервис. В этом случае невозможно оценить вероятность нежелательных событий. Традиционный подход к оценке рисков фокусируется на вероятности отказов и серьезности их последствий, обычно выражаемой в денежной форме. Этот подход критикуется по разным причинам, например он основан на предположении об известности вероятностей событий
и связанных с ними расходов, а в депериметризованной среде это предположение обычно неверно.
Все это приводит к необходимости более точно классифицировать риски. Так, в Научном совете по государственной политике Нидерландов различают четыре типа проблем рисков:
-
простые – проблемы этого типа могут решаться с применением стандартных процедур оценки рисков и управления ими;
-
сложные – таким проблемам свойственны сложные причинно-следственные связи;
-
неопределенные (uncertain) – проблемы этого типа характеризуются отсутствием информации о последствиях;
-
сомнительные (ambiguous) – для этих проблем характерно отсутствие информации о желательности последствий.
Как считают в Совете, для решения проблем третьего и четвертого типов требуется подход, отличный от классического подхода к управлению рисками. В случае неопределенных последствий управление рисками следует основывать на принципе предосторожности (precautionary principle). Этот принцип гласит, что если неизвестны последствия каких-либо действий для общественного здоровья или окружающей среды, то эти действия производить не следует. При разработке программ в депериметризованном мире риски, по крайней мере, не определены, а часто даже сомнительны. Принцип предосторожности может помочь при создании сетевых сервисов, разрабатываемых с учетом этики, поскольку в этом случае не предполагается наличие возможности объективной оценки рисков, и ответственность за последствия не возлагается на одного человека или одну организацию. Статью «Социальные последствия отказов информационных систем» (Social Impact of Information System Failures) написал Тецуо Тамаи (Tetsuo Tamai).
Почти ежедневно приходится слышать о сбоях систем, оказывающих серьезное влияние на общество. Один из недостатков СМИ состоит в том, что они поднимают большой шум, когда компьютерная система барахлит, но молчат, когда все работает нормально, и у широкой публики создается ложное впечатление, что компьютерные системы очень ненадежны. И в самом деле, поскольку программное обеспечение незаметно и непонятно обычным людям, они воспринимают его как нечто непостижимое и ненадежное.
Еще одна проблема состоит в том, что, когда возникает сбой системы, СМИ не сообщают подробности – обычно репортеры не обладают знаниями о программном обеспечении и об информационных системах, требуемыми для изложения технически значимых фактов, а разработчики обычно неохотно разглашают детали.
В статье анализируется случай, произошедший в 2005 году на Токийской фондовой бирже. Служащий компании Mizuho Securities в заявке на продажу акций компании J-Com вместо намерения продать одну акцию за 610 000 иен указал намерение продать 610 000 акций по одной иене за каждую. Эта заявка была принята системой обработки заявок биржи. Компания Mizuho Securities обнаружила свою ошибку и попыталась отозвать свою заявку, но система все время отказывалась выполнить соответствующую команду. В результате для сокращения денежных потерь компания начала сама выкупать акции, потеряв, в конце концов, 40 млрд иен (225 млн долл). Через четыре дня на специально организованной пресс-конференции представители биржи объявили, что команда отзыва заявки не была выполнена из-за ошибки в системе обработки заявок. Mizuho Securities потребовала от биржи возмещения своих убытков, но биржа ей в этом отказала. И тогда Mizuho Securities подала в суд исковое заявление. Автор статьи был привлечен к этому делу компанией в качестве независимого эксперта, получил доступ ко всем документам и попытался беспристрастно разобраться в ситуации.
Этот случай порождает несколько вопросов по поводу профессиональной этики. Хорошую основу для обсуждения этических проблем обеспечивает разработанный ACM и IEEE Computer Society «Кодекс этики и профессиональной практики разработчиков программного обеспечения» (Software Engineering Code of Ethics and Professional Practice). Этот кодекс основывается на восьми принципах (общество, клиент и работодатель, продукт, оценки, управление, профессия, коллеги, личная ответственность), и каждому из этих принципов посвящен отдельный раздел. Некоторые разделы кодекса напрямую связаны с разными аспектами дела Mizuho Securities.
Проводя это сопоставление, автор не стремится в чем-то обвинить разработчиков системы обработки заявок Токийской фондовой биржи. Во-первых, «Кодекс этики» для этого не предназначен. Во-вторых, имеющихся у автора материалов недостаточно для того, чтобы можно было точно установить причины отказа системы. Однако связывание проблем данного конкретного случая с разделами «Кодекса этики» может обеспечить основу для обсуждения этических вопросов как этого случая, так и похожих.
Последнюю статью тематической подборки – «Приоритет у общества: принятие решений с использованием кодекса этики разработчиков программного обеспечения» (The Public Is the Priority: Making Decisions Using the Software Engineering Code of Ethics) – представили Дональд Готтенбан и Кейт Миллер (Donald Gotterbarn, Keith Miller).
Кодексы этики часто используются для регулирования поведения профессионалов в соответствующих областях деятельности, а в «Кодексе этики и профессиональной практики разработчиков программного обеспечения», кроме того, подчеркивается важность саморегулирования, предлагаются практические советы, фундаментальные принципы и методы применения содержащихся в нем рекомендаций в сложных ситуациях.
Руководствуясь «Кодексом этики», следует находить баланс между различными факторами при принятии решений о наилучшем образе действий. Кодекс может помочь разработчикам программного обеспечения принимать сложные технические и этические решения, которые принесут пользу обществу, профессии и самому разработчику. В статье разбираются три случая, иллюстрирующие это.
Вне тематической подборки опубликована статья «Банковское обслуживание через Internet: атаки на стороне клиента и механизмы защиты» (Internet Banking: Client-Side Attacks and Protection Mechanisms), авторами которой являются Рольф Опплигер, Руди Риц и Томас Холдереггер (Rolf Oppliger, Ruedi Rytz, Thomas Holderegger).
В наиболее современных решениях Internet-банкинга для аутентификации сервера и криптографической защиты коммуникационного канала между клиентом и сервером используются протоколы Secure Sockets Layer (SSL) или Transport Layer Security (TLS). При использовании этих протоколов сервер сам себя аутентифицирует с применением сертификата с открытым ключом. После этого на стороне клиента псевдослучайным образом генерируется криптографический секретный код сессии, этот код шифруется с применением открытого ключа сервера (извлекаемого из сертификата сервера) и передается на сервер. Подлинность, целостность и конфиденциальность всех последующих передаваемых сообщений криптографически защищаются с использованием ключа, образуемого из секретного кода.
Хотя во всех решениях Internet-банкинга применяется одна и та же схема аутентификации серверов, пользователи аутентифицируются в них по-разному. В некоторых банках используются пароли или PIN-коды. Иногда применяются номера аутентификации или авторизации транзакций, а также более сложные механизмы, например основанные на одноразовых паролях или схеме «вопрос-ответ». Насколько известно авторам, ни в одном достаточно крупном банке для аутентификации пользователей не применяются сертификаты с открытым ключом.
Говоря о безопасности решений Internet-банкинга, люди часто ссылаются на криптографическую мощь протоколов SSL/TLS, и действительно, безопасность этих протоколов анализировали многие исследователи и им удалось выявить только несколько теоретических недостатков и уязвимостей. Этот анализ основывался на модели угроз Dolev-Yao (ftp://reports.stanford.edu/pub /cstr/reports/cs/tr/81/854/CS-TR-81-854.pdf), в которой злоумышленник контролирует коммуникационный канал между клиентом и сервером и может пассивно или активно атаковать передаваемые по этому каналу сообщения, но не может подвергнуть опасности конечные пункты этого канала. Это не в полной мере соответствует реальной ситуации,
в которой у злоумышленника имеется много способов атаковать клиента.
В действительности именно клиентская часть является наиболее уязвимой в современных решениях Internet-банкинга. В типичном случае в качестве клиентского программного обеспечения используется некоторый стандартный коммерческий браузер, функциональные возможности которого можно расширить с помощью, например, активного контента (кода JavaScript, Java-апплетов или управляющих элементов ActiveX), исполняемого в браузере. Кроме того, большинство браузеров можно модифицировать, добавив вспомогательные модули или плагины. Сегодняшние пользователи привыкли устанавливать в своих клиентских системах плагины всех сортов, так что совсем нетрудно распространять и зловредные. Все, что нужно злоумышленнику, – это хорошая и правдоподобная легенда, которая заставила бы пользователя установить его плагин. Для этой цели могут служить многие методы социальной инженерии.
Авторы выделяют три класса атак, которые злоумышленник может произвести на стороне клиента: атаки с кражей полномочий (credential-stealing attack), атаки с обрывом канала (channel-breaking attack) и атаки с манипулированием контентом (content-manipulation attack). Для каждого класса предлагаются соответствующие средства и методы защиты.
Всего доброго, до следующей встречи, Сергей Кузнецов, kuzloc@ispras.ru.