Введение

SILC (Secure Internet Live Conferencing protocol) — это протокол, обеспечивающий безопасные синхронные конференции (подобно IRC) через Интернет.

Компоненты

Протокол SILC можно разделить на три основные части: протокол SILC Key Exchange (SKE), протокол SILC Authentication и протокол SILC Packet. Протокол SILC дополнительно определяет команды SILC, которые используются для управления сеансом SILC. SILC предоставляет каналы (группы), никнеймы, личные сообщения и другие общие функции. Однако, никнеймы SILC, в отличие от многих других протоколов (например, IRC), не являются уникальными; пользователь может использовать любой никнейм, даже если он уже занят. Реальная идентификация в протоколе осуществляется с помощью уникального идентификатора клиента. Протокол SILC использует это для предотвращения коллизий никнеймов, проблемы, распространенной во многих других протоколах. Все сообщения, отправляемые в сети SILC, являются двоичными, что позволяет им содержать любые типы данных, включая текст, видео, аудио и другие мультимедийные данные. Протокол SKE используется для установления ключа сеанса и других параметров безопасности для защиты протокола пакетов SILC. Сам SKE основан на алгоритме обмена ключами Diffie–Hellman (форма асимметричной криптографии), а обмен защищен цифровыми подписями. Протокол SILC Authentication выполняется после успешного выполнения протокола SKE для аутентификации клиента и/или сервера. Аутентификация может основываться на парольной фразе или цифровой подписи, и в случае успеха предоставляет доступ к соответствующей сети SILC. Протокол SILC Packet предназначен для обеспечения безопасности бинарных пакетов, гарантируя защиту и аутентификацию содержимого каждого пакета (состоящего из заголовка пакета и полезной нагрузки). Пакеты защищены с помощью алгоритмов, основанных на симметричной криптографии, и аутентифицированы с использованием алгоритма кода аутентификации сообщений (Message Authentication Code, HMAC). Каналы (группы) SILC защищены с помощью симметричных ключей канала. При желании можно добавлять цифровую подпись ко всем сообщениям канала. Также возможно защитить сообщения с помощью частного ключа канала, который был предварительно согласован участниками канала. Личные сообщения между пользователями в сети SILC защищены ключами сеанса. Однако возможно выполнить протокол SKE между двумя пользователями и использовать сгенерированный ключ для защиты личных сообщений. Личные сообщения могут быть опционально подписаны цифровой подписью. Когда сообщения защищены ключевым материалом, сгенерированным с помощью протокола SKE, или предварительно согласованным ключевым материалом (например, парольными фразами), SILC обеспечивает безопасность даже в случае компрометации сервера SILC.

История

SILC был разработан Пеккой Риконеном в период с 1996 по 1999 год и впервые представлен публике летом 2000 года. Были написаны клиент и сервер. Спецификации протокола были предложены, но в конечном итоге запрос на публикацию был отклонен IESG в июне 2004 года, и на сегодняшний день RFC так и не был опубликован. В настоящее время существует несколько клиентов, наиболее продвинутыми из которых являются официальный клиент SILC и плагин для irssi. Протокол SILC также интегрирован в популярный клиент мгновенных сообщений Pidgin. Другими графическими клиентами являются Silky и Colloquy. Разработка клиента Silky была приостановлена и проект заброшен 18 июля 2007 года из-за многолетней неактивности. Последняя новость на сайте Silky сообщала о планах полностью переписать клиент. По состоянию на 2008 год было создано три реализации протокола SILC. Большинство клиентов SILC используют libsilc, являющуюся частью SILC Toolkit. SILC Toolkit распространяется под двойной лицензией: GNU General Public License (GPL) и пересмотренной лицензией BSD.

Безопасность

Как описано в FAQ SILC, чаты защищены за счет генерации симметричных ключей шифрования. Эти ключи должны быть сгенерированы где-то, и это происходит на сервере. Это означает, что чаты могут быть скомпрометированы, если сам сервер будет скомпрометирован. Это лишь разновидность атаки «человек посередине». Предлагаемое решение заключается в том, чтобы участники чата генерировали собственную пару асимметричных ключей – открытый и закрытый. Закрытый ключ известен только участникам чата и передается вне канала связи. Открытый ключ используется для шифрования сообщений, отправляемых в чат. Этот подход все еще уязвим, если закрытый ключ одного из участников чата будет скомпрометирован, или если он поделится ключом с другим лицом без согласия группы.

Сети

SILC использует аналогичную структуру, как и IRC: нет единой глобальной "сети SILC", а существует множество небольших независимых сетей, состоящих из одного или нескольких серверов. Однако утверждается, что SILC способен лучше масштабироваться при большом количестве серверов в одной сети. "Оригинальной" сетью считается SILCNet, работающая по принципу round robin. Но по состоянию на май 2014 года из четырех серверов активен только один (при этом нестабильный). Большинство сетей SILC прекратили своё существование из-за падения популярности SILC.