Как в Mac OS настроить защиту конфиденциальной информации при работе с Web-приложениями


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

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

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

После прочтения книги Питера Уэйнера (Peter Wayner)15 «Полупрозрачные базы данных», я пришел к выводу, что «полупрозрачные» архитектуры баз данных могут применяться для непосредственного решения данного вопроса. К сожалению, многие (едва ли не большинство) базы данных Web-приложений разработаны не в соответствии с концепцией полупрозрачности. Однако даже если база данных вашего Web-приложения и не поддерживает концепцию полупрозрачности, значит ли это, что ваш случай безнадежен? Я готов поспорить и утверждаю, что это не так. В данном разделе я попытаюсь показать вам, как пользователи Web-приложений могут самостоятельно инициировать «полупрозрачность» баз данных, защитив таким образом свою частную информацию и личные данные.


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

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

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

Для демонстрации этой идеи я написал приложение Page Axe. Page Axe — это автономное приложение Mac OS X (иными словами, это не Web-приложение, а приложение для настольного компьютера). При первом запуске Page Axe генерирует по методу случайных числе 256-байтный ключ (с помощью команды openssl rand -base64 –out /path/to/key 256) и сохраняет его. После этого, любой текст, введенный в текстовое поле Page Axe, зашифровывается при помощи этого ключа по алгоритму шифрования AES-CBC (с помощью команды openssl enc -aes-256-cbc -a -salt -passfile:/path/to/key). Этот зашифрованный текст копируется в буфер обмена, откуда он может быть вставлен в текстовое поле вашего Web-приложения. Page Axe позволяет владельцу просматривать зашифрованные данные.

Для этого следует скопировать зашифрованный текст из Web-приложения в буфер обмена и вставить его в Page Axe. Приложение Page Axe расшифрует текст (с помощью openssl enc -d -aes-256-cbc -a -pass file:/path/to/key) и отобразит его в читаемом виде. В основе Page Axe лежит приложение текста между доверенным приложением для настольного компьютера и недоверенным Web-интерфейсом, отображаемым в браузере, с шифрованием и расшифровкой в ходе этого процесса. Тем не менее, с точки зрения удобства использования этот подход оставляет желать много лучшего, и по этой причине я добавил в приложение ряд дополнительных функций:

  • Контекст для расшифрованного текста. Выделите блок текста из Web-приложения, содержащий зашифрованные личные данные, и Page Axe обнаружит, расшифрует и отобразит личные данные в контексте целого текстового блока (используя для этой цели утилиту Growl, если она установлена).
  • Простой ввод и простой вывод. Доступ к функциям шифрования и расшифровки Page Axe можно получить через триггеры Quicksilver16.
  • Мобильность приложения. Чтобы получить доступ к вашим защищенным данным с любого Mac, достаточно скопировать приложение и его ключ на носитель флэш-USB.

Экранные снимки, приведенные на рис. 2.37—2.40, иллюстрируют Page Axe в действии.

Рис. 2.37. Простой интерфейс для расшифровки текста
Рис. 2.37. Простой интерфейс для расшифровки текста
Рис. 2.38. Вставка зашифрованного текста в Web-приложение
Рис. 2.38. Вставка зашифрованного текста в Web-приложение
Рис. 2.39. Зашифрованный текст можно расшифровать в автономном режиме (offline)
Рис. 2.39. Зашифрованный текст можно расшифровать в автономном режиме (offline)
Рис. 2.40. Возможно использовать альтернативные перехватчики пользовательского интерфейса, например, триггеры Quicksilver
Рис. 2.40. Возможно использовать альтернативные перехватчики пользовательского интерфейса, например, триггеры Quicksilver

Page Axe — это всего лишь одна из возможных реализаций данной концепции инициативной защиты пользователем своей личной информации, обрабатываемой Web-приложениями. Приложение Page Axe разработано как программа для настольных компьютеров. Как альтернативный вариант можно рассмотреть реализацию защиты личных данных в виде расширения Firefox, в виде букмарклета (bookmarklet), в качестве хака InputManager (в Mac OS X), в качестве автономного браузера, в качестве кросс-платформенного приложения Java, предназначенного для использования на портативном носителе флэш-USB, или даже еще чего-нибудь экзотического. До тех пор пока личные данные пользователя остаются недоступными «недоверенному» приложению, ваша реализация остается корректной.

Одна из замечательных возможностей по применению этой новой технологии — ее включение в приложения, предназначенные для синхронизации автономных и онлайновых данных. Рассмотрим, например, приложение Spanning Sync, предназначенное для двусторонней синхронизации информации между настольным приложением iCal и Web-приложением Google Calendar.

Представьте себе, что в этом приложении появится новая опция Keep data private, при установке которой данные с персонального компьютера будут шифроваться перед загрузкой на серверы Google, а после скачивания с сервера на персональный компьютер вновь расшифровываться. Для доступа к Web-приложению Google может использоваться мобильная реализация приложения наподобие Page Axe. Этот пример показывает, каким образом пользователи могут реализовать полупрозрачный доступ к базам данных Web-приложении с использованием опубликованных API Web-приложений. В этой области существует множество интересных возможностей.

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