Технически въпроси в Telegram
Общи въпроси
Защита срещу известни атаки
Шифроване
Удостоверяване
Общи въпроси
Въпрос: Защо използвате собствения си протокол?
Въпрос: Къде мога да прочета за протокола?
Подробна документация за протокола е достъпна на тази страница. Ако имате въпроси, пишете на Twitter.
Забележка:Всяко съобщение, криптирано с MTProto, винаги съдържа следните данни, които ще бъдат проверени по време на декриптирането, за да се направи системата защитена срещу известни проблеми:
- сървърна сол (64-битова) - сървърна сол (64-битова);
- идентификатор на сесията - идентификатор на сесията;
- message sequence number - пореден номер на съобщението;
- дължина на съобщението
- времето, когато съобщението е изпратено, е време.
Q: Защо не използвате X [ваш избор]
Въпреки че несъмнено съществуват други начини за постигане на същите криптографски цели, ние вярваме, че настоящото решение е едновременно сигурно и успява в нашата вторична цел да надминем несигурните месинджъри по отношение на скоростта и стабилността на доставка.
Въпрос: Защо разчитате на класически крипто алгоритми?
Слабостите на такива алгоритми също са добре известни и са били използвани от нападателите от десетилетия. Ние използваме тези алгоритми в тази реализация, защото, както вярваме, те водят всяка известна атака до неуспех. Въпреки това ще се радваме да видим доказателства за противното (досега не е имало такива), за да подобрим нашата система.
Въпрос: Аз съм експерт по сигурността и смятам, че вашият протокол е несигурен.
Ако имате други коментари, ще се радвамечуйте ги на [email protected].
Защита срещу известни атаки
Атаки с известен обикновен текст
Според дефиницията атаката с обикновен текст е вид криптоаналитична атака, при която атакуващият има и двете версии на текста: криптирана и оригинална.
AES IGE, използван в MTProto, е устойчив на подобни атаки. Освен това обикновеният текст в MTProto винаги съдържа сървърната сол и ID на сесията.
Адаптивна атака на обикновен текст
Съгласно дефиницията атака с адаптивно избран обикновен текст е вид атака в криптоанализа, която предполага, че криптоаналитикът може да избере обикновения текст и да получи съответния шифрован текст.
MTProto използва AES в режим IGE, който е защитен срещу подобни атаки. Известно е, че IGE е уязвим към блокови адаптивни атаки, но MTProto коригира това по следния начин.
Всяко съобщение в обикновен текст, което трябва да бъде шифровано, съдържа следните данни, които се проверяват по време на дешифрирането:
- сървърна сол (64-битова) - сървърна сол (64-битова);
- message sequence number - пореден номер на съобщението;
- времето, когато съобщението е изпратено, е време.
Освен това, за да замените обикновения текст, вие също трябва да използвате правилния AES ключ и вектор за инициализация в зависимост от auth_key. Това прави MTProto устойчив на атаки с адаптивен обикновен текст.
Атаки с избран шифрован текст
По дефиниция атаката с шифрован текст е криптографска атака, при която криптоаналитик събира информация за шифър, като отгатва шифрования текст и го дешифрира, като се има предвид неизвестнотоключ. При такава атака нападателят може да въведе един или повече известни шифровани текстове в системата и да получи открити текстове. С тези данни нападателят може да се опита да възстанови ключа, използван за дешифриране. В MTProto всеки път, когато дадено съобщение се дешифрира, се прави проверка дали msg_key съвпада с SHA-1 на декриптираните данни. Чистият текст (декриптирани данни) също винаги съдържа информация за дължината на съобщението, неговия пореден номер и солта на сървъра. Това анулира атаките с шифрован текст.
Повторете атаки
Повторните атаки са невъзможни, тъй като всяко съобщение в обикновен текст съдържа сол на сървъра, уникален идентификатор на съобщението и пореден номер.
Атака "Човек в средата" (MitM)
Telegram има два режима на комуникация: редовни чатове, използващи криптиране клиент-сървър, и тайни чатове, използващи криптиране от край до край и защитени от атаки човек по средата.
Трансферът на данни между клиента и сървъра е защитен от подобни атаки по време на генерирането на ключ Diffie-Hellman благодарение на алгоритъма за публичен ключ RSA, който е вграден в клиентите на Telegram. След това, ако клиентите на събеседниците се доверят на сървърния софтуер, тайните чатове между тях са защитени от сървъра от атаки човек по средата.
Специално за тези, коитонесе доверяват на сървъра, в приложението е достъпно сравнение на секретни кодове. Ключовете се изобразяват като изображения (пример). Чрез сравняване на изобразените ключове, потребителите могат да потвърдят, че не е извършена атака "човек по средата".
Шифроване
Въпрос: Използвате ли IGE? Той е бил хакнат!
Да, използваме IGE, но в нашата реализация всичко е наред с него. Фактът, че не използваме IGE заеднос други елементи на нашата система, както и MAC, прави опитите за хакване на IGE безсмислени.
IGE, подобно на обичайния режим на блокова верига на шифрован текст (CBC), е податлив на блокови адаптивни атаки. Но адаптивните атаки са заплаха само когато един и същ ключ се използва в множество съобщения (това не е случаят в MTProto).
Адаптивните атаки са дори теоретично невъзможни в MTProto, тъй като за да се дешифрират съобщения, те трябва първо да бъдат напълно въведени, тъй като ключът на съобщението зависи от неговото съдържание. Що се отнася до неадаптивните CPA атаки, IGE е защитен от тях, както и CBC.
В: Използвате ли схемата Encrypt-then-MAC, MAC-then-Encrypt или Mac-and-Encrypt?
Нашата схема е близка до MAC-and-Encrypt, но има значителна модификация: ключът за криптиране и векторът за инициализация зависят от хеша.
- Използваме SHA-1 за проверка на целостта.
- SHA-1 е необходим за сурова некриптирана информация.
- Ключът на съобщението зависи от SHA-1.
- Моля, обърнете внимание, че AES ключът зависи от SHA-1.
В резултат на това зависещата от данните ключова променлива е защитена от всички известни видове атаки.
Въпрос: Защо използвате SHA-1 вместо MAC?
От техническа гледна точка, в нашата реализация SHA-1 може да се нарече специален вид MAC (но не и HMAC), тъй като се използва и като ключ за криптиране.
Удостоверяване
Въпрос: Задължителна ли е проверката на ключ между клиенти?
Тайните чатове не използват задължително удостоверяване чрез услуги на трети страни или информация, която вече е известна на клиентите на събеседниците след предишния обмен на данни. По-късно вероятно ще добавим възможност за напреднали потребители да деактивират инициализацията тайночатове без предварително потвърждение на ключа (чрез QR код, NFC и др.).
Въпрос: Поддържа ли се директна секретност?
Forward Secrecy е достъпен в Secret Chats, но в момента изисква допълнителни действия от потребителя: ще трябва да изтриете Secret Chat и да създадете нов или да излезете от акаунта си (това ще изтрие всички Secret Chat).
Предната секретност се поддържа от протокола: примитивът p_q_inner_data_temp може да се използва за генериране на временни ключове с ограничен TTL за постигане на PFS. Работим върху нашите приложения, за да добавим поверителност и към обикновените чатове в Telegram. Понастоящем е възможно да създадете клиент за препращаща тайна чрез нашия API.
НЕОФИЦИАЛЕН сайт за Telegram на български език.
Тук се събират приложения, базирани на MTProto, превежда се част от документацията от официалния сайт, работи и Webogram.