2.2.4 Telegram
Данное приложение создано Павлом Дуровым, основателем социальной сети "ВКонтакте". С самого создания разработчики говорили о том, что отличительной чертой данного мессенджера является наличие шифрования. Чаты в этой программе делятся на обычные и секретные. Далее я буду рассматривать секретные чаты, так как только они в данной программе поддерживают сквозное шифрование.
Для шифрования данных разработчики используют протокол MTProto. Рассмотрим протокол шифрования данных в секретных чатах, который приведенный в документации [13]:
1) Инициатор запускает метод messages. getDhConfig, чтобы сгенерировать параметры для протокола Диффи-Хеллмана: простое число p и элемент высокого порядка g.
2) Инициатор вычисляет случайное 2048-битное число a, вычисляет g_a: = pow (g, a) mod dh_prime и запускает messages. requestEncryption, чтобы отправить запрос получателю.
3) Получатель принимает запрос, обновляет параметры для протокола Диффи-Хеллмана, вычисляет случайное 2048-битное число b по тем же правилам, что инициатор вычислил a.
4) После принятия запроса получатель вычисляет конечный общий ключ по формуле key = (pow (g_a, b) mod dh_prime), затем вычисляет g_b: = pow (g, b) mod dh_prime и запускает messages. acceptEncryption.
5) После получение g_b инициатор также вычисляет конечный общий ключ по формуле key = (pow (g_b, a) mod dh_prime).
6) Далее с помощью SHA-1 (алгоритм криптографического хеширования) вычисляются ключи шифрования:
a) Вычисляется msg_key путем выбора 128 бит из SHA-1 от текста сообщения;
b) x=0;
c) sha1_a = SHA1 (msg_key + substr (key, x, 32));
d) sha1_b = SHA1 (substr (key, 32+x, 16) + msg_key + substr (key, 48+x, 16));
e) sha1_с = SHA1 (substr (key, 64+x, 32) + msg_key);
f) sha1_d = SHA1 (msg_key + substr (key, 96+x, 32));
g) aes_key = substr (sha1_a, 0,8) + substr (sha1_b, 8,12) + substr (sha1_c, 4,12);
h) aes_iv = substr (sha1_a, 8,12) + substr (sha1_b, 0,8) + substr (sha1_c, 16,4) + substr (sha1_d, 0,8).
Данные шифруются 256-битным ключом aes_key и 256-битным вектором инициализации aes_iv, используя алгоритм шифрования AES-256 в режиме расширения неопределённого искажения (infinite garble extension, IGE).
7) Отпечаток ключа шифрования key_fingerprint и msg_key добавляются в начало массива байтов, после чего запускается messages. sendEncrypted.
8) Для расшифровки алгоритм из пункта 6 воспроизводится в обратном порядке.
Новые ключи в данном протоколе формируются в двух случаях: если старыми были зашифрованы 100 сообщений или если старым ключам больше недели и с помощью них зашифровали хотя бы одно сообщение. Для формирования новых ключей существует отдельный протокол, описанный на сайте разработчиков [14] и мало чем отличающийся от приведённого выше.
Стоит отметить полезную особенность секретных чатов - в их настройках можно указать время автоматического удаления сообщений. Например, поставить таймер на 5 секунд и тогда каждое сообщение будет автоматически удаляться через 5 секунд после доставки.
Исходные тексты клиентской части данного приложения представлены на портале GitHub [15]. Таким образом, клиентскую часть также могут инспектировать независимые эксперты. Исходные коды серверной части остаются закрытыми и публиковаться не собираются.
Из всего вышесказанного можно сделать вывод о том, что секретные чаты в мессенджере Telegram предоставляют возможность организовать действительно защищенный канал связи.
- Введение
- 1. Исследование принципов обеспечения безопасности частной информации на мобильных устройствах
- 1.1 Безопасность данных, хранящихся на мобильном устройстве
- 1.2 Информация о местоположении устройства
- 1.3 Безопасность данных, передающихся между мобильными устройствами
- 2. Сравнительный анализ существующих программных средств, предназначенных для обмена частной информацией
- 2.1 Краткие выводы сравнительного анализа
- 2.2 Подробный анализ приложений
- 2.2.1 WhatsApp
- 2.2.2 Viber
- 2.2.3 Signal
- 2.2.4 Telegram
- 2.2.5 Antox
- 3. Разработка программного средства, построенного на отечественных алгоритмах шифрования
- 3.1 Требования к эталонному приложению
- 3.1.1 Архитектура приложения
- 3.2 Описание программной реализации
- 3.1.2 Шифрование
- 3.2.2 Шифрование
- Персональная мобильная медицина
- 7.7. Мобильная реклама
- 6. Использование мобильных средств для продвижения товара.
- Средства мобильной связи и Интернет
- Сферы использования средств мобильной связи.
- Мобильные средства уборки навоза.
- 9.2.5.2. Мобильные радиотелефоны
- 7.2. Мобильная коммерция
- Мобильные угрозы