Безопасность при общении в Skype
Голосовое общение при помощи программы Skype стремительно набирает популярность. Удобства очевидны: Skype, как и прочие VoIP-сервисы, не только существенно экономит средства абонентов, которым не приходится платить за междугородние и даже международные переговоры телефонным компаниям, но и предоставляет довольно качественную связь. Вдобавок ко всему Skype умеет "дружить" с файрволами и в большинстве случаев не требует особых настроек для корректной работы.
Однако популярность имеет и обратную сторону: чем популярнее программа, тем больше к ней претензий - как со стороны пользователей, так и со стороны конкурентов. В последнее время страсти все больше и больше разгораются по поводу защищенности Skype и его пользователей от различного рода диверсий.
О каких диверсиях может идти речь? Для начала вкратце рассмотрим, какие именно услуги предлагает эта программа, чтобы выяснить, что от нее ожидают пользователи и что - теоретически - может произойти, если эти ожидания не оправдаются.
В упрощенном (бесплатном, а потому, очевидно, наиболее популярном) варианте использования Skype пользователь А, желающий пообщаться с пользователем Б при помощи этого сервиса, закачивает и устанавливает на своем компьютере программу-клиент и заводит идентифицирующий его аккаунт - Skype-имя (логин) и пароль. Пользователь Б проделывает аналогичную разовую процедуру. Затем один из них должен найти другого по его Skype-имени и вызвать того на контакт. Подобная процедура типична и для обычных текстовых мессенджеров вроде ICQ (кстати, Skype можно использовать и в таком качестве).
Что ожидает пользователь А от такого сервиса - помимо того, разумеется, что этот сервис будет как можно более дешевым, а программа не примется каждые две минуты "падать" или, что хуже, втайне собирать личную информацию с его компьютера и отсылать ее "в Центр"?
Во-первых, А ожидает, что если он захочет общаться с Б, то программа свяжет его именно с Б, а не с неким В, выдающим себя за него. Во-вторых, А надеется, что никакому Г не удастся подслушать их беседу. В-третьих, поскольку мы имеем дело с компьютерами и использованием Интернета, он еще очень хочет, чтобы зловредный Д не попытался подцепиться к каналам, которые использует Skype для обмена данными беседы А и Б, чтобы, перефразируем классиков, "пускать ему оттуда нехороших вирусов". И, наконец, было бы очень неплохо, чтобы его пароль, а также записи его бесед с Б, если таковые ведутся, не достались ни В, ни Г, ни даже Х - где бы эти данные ни хранились. Остальные проблемные моменты мы, пожалуй, опустим: понятно, что если Skype умеет, помимо прочего, передавать файлы, то А может подцепить вирус и таким образом, однако это уже вряд ли можно повесить на совесть этой программы.
Заметим мимоходом, что ровно те же самые пожелания могут возникать, скажем, и у пользователей ICQ. Более того, проблема номер один, когда вместо Б "на проводе" может оказаться некий В, в текстовых мессенждерах по определению стоит жестче, ибо люди, знакомые между собой лично, скорее узнают друг друга по голосу, чем по манере писать.
Точно так же неприятности с подменой собеседника и прослушиванием разговора вполне могут возникнуть и при общении посредством традиционных телефонных линий. Иными словами, проблема эта давняя. Не один "Алекс" погорел при передаче шифровки "Юстасу" из-за действий контрразведки по перехвату и раскодированию его сообщений.
Итак, проблемы сформулированы, что дальше? По большому счету, не очень понятно, почему люди, которые не рискуют делиться действительно конфиденциальными данными посредством обычных мессенджеров, пытаются при этом требовать приватности от Skype. Возможно, всему виной сами разработчики, изначально уделившие слишком большое внимание вопросам безопасности, и Skype, таким образом, волей-неволей стал позиционироваться как безопасный сервис голосового общения. Но давайте оставим в стороне вопрос о самой необходимости решения проблем безопасности в Skype, а посмотрим лучше, как эти проблемы здесь решаются.
(Дальнейший текст требует от читателя определенного представления о шифровании данных; желающие могут самостоятельно изучить, например, "Введение в криптографию".)
18 октября 2005 года Том Берсон (Tom Berson), эксперт по криптографии и компьютерной безопасности, опубликовал "Оценку безопасности Skype" (англ., PDF). По его словам, эту оценку ему поручили дать сами разработчики сервиса Skype в апреле этого же года. Берсон изучил принцип работы системы изнутри и поделился им с общественностью, уделяя достаточное внимание деталям.
Если верить Берсону, в Skype широко и в целом с умом используется криптография, при этом шифрование производится только по стандартам (эксперт перечисляет стандарт симметричного шифрования AES, систему публичных ключей RSA, схему восстановления сообщений с цифровой подписью ISO 9796-2, алгоритм криптографического хеширования SHA-1 и потоковый шифр RC4). Все процедуры, так или иначе связанные с шифрованием и расшифровыванием данных, базируются на этих стандартных примитивах.
Ключевой (во всех смыслах) момент всей системы - так называемый закрытый ключ центрального сервера Skype. В каждой клиентской программе хранятся соответствующий ему открытый ключ и идентификатор этой ключевой пары.
Процесс регистрации нового пользователя Skype выглядит примерно следующим образом:
1. Пользователь выбирает желаемое Skype-имя и пароль. Skype-клиент генерирует ключевую пару RSA для этого имени. Закрытый ключ этой пары, а также хеш-функция пароля записываются на компьютере пользователя в наиболее недоступном месте (клиент Skype для Windows делает это при помощи Windows CryptProtectData API).
2. Клиентская программа устанавливает с сервером защищенную сессию, пакеты шифруются по алгоритму AES с 256-битным ключом. Ключ этот генерируется на клиентской машине (и, очевидно, передается на сервер в зашифрованном при помощи открытого ключа сервера виде).
3. В ходе защищенной сессии клиентская программа передает на сервер желаемое пользователем Skype-имя, хеш-функцию пароля и открытый ключ для этого имени. Сервер проверяет означенное Skype-имя на уникальность и корректность и в случае успеха сохраняет данные о клиенте в своей базе (Берсон пишет, что сохраняются Skype-имя и хеш-функция от хеш-функции пароля).
4. На основании зарегистрированного Skype-имени, открытого ключа пользователя и идентификатора своего ключа сервер формирует, подписывает своей электронной подписью и пересылает клиенту персональный идентификационный сертификат для этого пользователя.
Попробую объяснить суть всех этих манипуляций чуть более простыми словами: при регистрации нового пользователя центральный сервер и клиентская программа обмениваются некими данными. Обмен происходит в защищенном от посторонних глаз режиме. Сервер сохраняет у себя данные, необходимые для идентификации этого пользователя (при необходимости). Клиент же получает от сервера, помимо всего прочего, персональный идентификационный сертификат.
Этот идентификационный сертификат - очень интересная штука. Дело в том, что процесс общения между пользователями Skype происходит при помощи технологии, основанной на соединении одноранговых узлов (peer-to-peer communications). Если говорить упрощенно (фактически в Skype этот механизм организован хитрее), между клиентами формируется прямое соединение, и, сколько бы пользователей Skype ни общалось между собой по Сети, их общение не оказывает никакой нагрузки на центральный сервер. Наличие же у пользователей заверенных сервером идентификационных сертификатов позволяет каждому из них убедиться в аутентичности собеседника, даже не обращаясь к серверу.
(Тут, безусловно, нужно отдавать себе отчет, какую именно аутентичность пользователя гарантирует такая система. Разумеется, если вы общаетесь со Skype-пользователем по имени vasya_pupkin, это еще не значит, что с вами разговаривает человек по имени Вася Пупкин. Система гарантирует лишь, что может быть только один Skype-пользователь vasya_pupkin и что, если вы захотите связаться с ним, Skype свяжет вас именно с ним. Также следует понимать, что никто не может помешать Васе Пупкину отдать свой логин какой-нибудь Свете Клюкиной, или записать "на всякий случай" свой пароль крупными буквами на стене, или даже транслировать ваш с ним разговор по местной радиостанции.)
Далее, поскольку каждый сертификат содержит открытый ключ пользователя, Skype-клиенты пользователей А и Б могут легко установить между собой защищенную сессию. Фактически каждый из них генерирует по 128 бит, обменивается этим числом с другим (вот пригодились и открытые ключи) и составляет из двух половинок 256-битный ключ защищенной сессии. Иными словами, их общение очень неплохо шифруется по современным меркам, а значит, если даже какому-то Г и удастся перехватить их разговор, толку от этого будет мало. Более того, для каждой сессии между двумя пользователями генерируется новый ключ, так что если этому Г и удастся каким-то чудом подобрать ключ к одному разговору (а времени на это уйдет немало), то ни на что другое этот ключ больше не сгодится.
Тщательно изучив указанные алгоритмы, Том Берсон провел серию экспериментов (так называемых "атак"), пытаясь пробить в брешь в протоколе соглашения о ключе защищенной сессии. Он не мог бы называться специалистом в своей области, если бы не сумел найти в системе несколько слабостей, о которых и сообщил разработчикам. Примечательно, что за каких-то десять дней, прошедших с опубликования Берсоном "Оценки безопасности Skype", они успели обнаружить и залатать сразу две дыры в своей системе (дыры касаются клиентской программы, а потому пользователям Skype придется закачивать ее обновленную версию).
Относительно исследований Берсона стоит также добавить, что они касались версии 1.3 программы для Windows и что - на момент изучения - ему не удалось заметить в коде никаких лазеек, которые могли бы установить разработчики, движимые некими неблаговидными целями.
Попробуем теперь сделать выводы. Судя по всему, создатели программы приложили массу усилий, чтобы добиться безопасности при использовании их продукта. Очевидно, что разговоры при помощи Skype гораздо более защищены от прослушивания, чем, к примеру, разговоры по телефону (мы сейчас не говорим о сервисах SkypeIn и SkypeOut, позволяющих связать компьютер с обычным телефоном).
И тем не менее всем, кто пользуется этой удобной во всех отношениях программой, не мешает осознавать разницу между защищенностью и неуязвимостью. Во-первых, криптография оперирует только вероятностями: теоретически любой код можно подобрать, имея достаточно времени и терпения, но код тем лучше, чем больше времени может уйти на этот подбор. А во-вторых, не забывайте, что вместо того, чтобы пытаться взломать сложный замок на двери, вор может попросту влезть в форточку... или сделать копию неосторожно оставленного без присмотра ключа.
Автор: Игорь Крейн
Источник: www.hostinfo.ru
|