Обзор криптографии Signal не выявил уязвимостей

от автора

Некоторые специалисты по информационной безопасности призывают отказаться от использования Telegram, указывая на его исторические проблемы с криптографией. В качестве оптимальной альтернативы часто называют Signal.

На чём основано это мнение и почему Signal считается более защищённым мессенджером?

Обзор криптографии Signal

Независимый аудит криптографии Signal проводился неоднократно, вот один из последних примеров (хотя это не полноценный аудит, а скорее выборочный обзор), по разделам:

  1. Принципы аудита
  2. Анализ кодовой базы и документации для определения приоритетности целей. Например, если в документации отсутствует описание какого-то модуля или технологии — это явное указание на необходимость аудита
  3. Шифрование сообщений и медиа
  4. Протоколы с храповиком для прямой секретности
  5. Различные криптографические функции
  6. Новая функция прозрачности ключей в Signal
  7. Резюме и выводы

Если вкратце, никаких уязвимостей не найдено.

Прозрачность ключей

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

Прозрачные ключи — наилучший способ решить эту проблему в большом масштабе.

Технология Key Transparency подразумевает публикацию «обязательств», содержащих открытый ключ пользователя и некоторые другие данные, в базе, доступной только для добавления (обычно дерево Меркла). Это позволяет третьим сторонам проверить, что:

а) записи вставлены в определённый момент в прошлом;
б) все записи настоящие.

При правильном проектировании можно создать систему, предотвращающую атаки с подменой ключа.

Signal пока официально не объявил о функции прозрачности ключей, но разработчики начали добавлять соответствующий код в библиотеку libsignal.

В качестве обязательств используется довольно простое применение HMAC-SHA256 с фиксированным ключом:

const FIXED_KEY: &[u8] = &[     0xd8, 0x21, 0xf8, 0x79, 0xd, 0x97, 0x70, 0x97, 0x96, 0xb4, 0xd7, 0x90, 0x33, 0x57, 0xc3, 0xf5, ];   pub fn commit(search_key: &[u8], data: &[u8], nonce: &[u8; 16]) -> Vec<u8> {     // The expected search_key inputs to this function are: an ACI, an E164,     // or a username. None should reach 2^16 bound.     let key_len: u16 = search_key.len().try_into().expect("search key too large");     // The expected data inputs to this function are: an ACI, or     // a serialized public key. Neither should reach 2^32 bound.     let data_len: u32 = data.len().try_into().expect("data too large");       let mut mac = HmacSha256::new_from_slice(FIXED_KEY).expect("can create hmac from fixed key");     mac.update(nonce);     mac.update(&key_len.to_be_bytes());     mac.update(search_key);     mac.update(&data_len.to_be_bytes());     mac.update(data);       mac.finalize().into_bytes().to_vec() }   pub fn verify(search_key: &[u8], commitment: &[u8], data: &[u8], nonce: &[u8; 16]) -> bool {     // No concern about timing attacks here, as commitments are public.     commit(search_key, data, nonce) == commitment }

Также присутствует код для создания левосбалансированного бинарного дерева, код для дерева Меркла на основе SHA256, использующего разделение доменов лист/родитель, доказательства непротиворечивости журнала прозрачности и верифицируемая функция рандома (VRF, RFC 9381) для анонимизации запросов к логам прозрачности.

Всё это склеено вместе в структуру KeyTransparency и одну базовую функцию.

Конечно, отсутствие уязвимостей не делает Signal идеальным инструментом для всех задач. Например, автор последнего обзора отмечает, что «отсутствие инструментов групповой модерации не позволяет рекомендовать его в качестве замены групповых чатов Telegram».

Отсутствует возможность опубликовать стикер в ответ на другое сообщение (а не просто отдельно) и некоторые другие функции.

«Но если нужен инструмент для приватного общения с друзьями и семьёй, даже если ваши чаты скучны, обыденны и абсолютно законны, то Signal — лучший вариант», — пишет он.

Что касается Telegram, то многие проблемы с безопасностью не решены до сих пор. Самое главное, что этот мессенджер до сих пор не реализовал сквозное шифрование по умолчанию для всех чатов, хотя это уже считается нормальной практикой в современных мессенджерах.

Атаки на Signal

В прошлом году Илон Маск и Twitter провели довольно интенсивную атаку на Signal, пытаясь выставить его небезопасным мессенджером.

Блокировка личных сообщений со ссылками на Signal в социальной сети X, источник

Это вызвало аргументированную критику со стороны известных специалистов по безопасности, таких как Мэтью Грин.

Мэтью Грин ещё раз подчеркнул ключевые тезисы, которые отличают зашифрованный мессенджер Signal от практически незащищённого Telegram:

  • В технологии Signal Protocol (также используемая в WhatsApp и некоторых других мессенджерах) открыт исходный код, и она тщательно изучена криптографами. Когда речь идёт о криптографии, это практически золотой стандарт для технологии (открытый код и проведённый аудит).

    Реализация алгоритма двойного храповика в Signal Protocol, источник

  • Telegram по умолчанию не использует сквозное шифрование. Если вы не запустите вручную зашифрованный «Секретный чат», все данные будут видны на сервере Telegram. «Учитывая, кто пользуется Telegram, этот сервер, вероятно, является магнитом для спецслужб», — пишет Мэтью Грин.
  • Клиент Signal тоже опенсорсный. Можно свободно скачать и изучить код клиента и криптобиблиотек. Код проверили многие эксперты. Это не гарантия отсутствия багов, но специалисты следят за темой.

Стоит также напомнить, что Signal Foundation — это некоммерческая организация, которая не ставит главной целью получение прибыли, в отличие от других мессенджеров. Здесь ситуация примерно такая же, как у опенсорсного бесплатного браузера Tor в сравнении с множеством коммерческих VPN-сервисов.


ссылка на оригинал статьи https://habr.com/ru/articles/900456/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *