知らない人のために: Telegram は、秘密のチャットと通常のチャットを提供する、部分的にオープンソースのWhatsappの代替(サーバーはクローズドソース)です。シークレットチャットはDiffie-Hellman鍵交換で暗号化され、エンドツーエンドで暗号化されます。バーコードを使用して相手の署名を確認できます。通常のチャットはエンドツーエンドで暗号化されていませんが、デバイス間で同期されるという利点があります。
テレグラムは、まったく新しいプロトコル MTProto を使用することで広く批判されています。 MTprotoが実際に安全であるかどうかはこの質問の範囲外であり、安全ではないと仮定します。
DHは秘密のチャットで使用されるので、MTProtoの侵害は秘密のチャットを侵害しますか? DHとMTprotoは、MTProtoが失敗した場合にDHが失敗するような方法で結合されていますか?それとも、秘密のチャットが脆弱になるために2つが失敗する必要があるように階層化されていますか?
つまり、MTProtoを信頼していない場合でも、DHのおかげで秘密のチャットを信頼できますか?
注:MTProtoもデバイス登録にDHを使用しますが、これは無関係です。
役立つ公式文書:
更新:
アントン・ガルシア・ドシルは、DHはキーを配布するための単なる方法であり、暗号化方法自体ではないと述べました。これは間違いなく真実であり、私はここで少しあいまいであることをお詫びします。私の質問のより明確な定式化は次のとおりです。2つのピアがDHキーを交換してエンドツーエンドの暗号化を開始したら、MTProtoは安全であることがわかっている暗号化方法を使用しますか?それとも、さらに別の自家製の暗号化方式を使用していますか?秘密のチャットに既知の暗号化方式Xを使用する場合、XとMTprotoは、MTProtoが失敗した場合にXが失敗するような方法で結合されていますか?それとも、秘密のチャットが脆弱になるために2つが失敗する必要があるように階層化されていますか?
Diffie-Helmannの目的(どういうわけかDHを認証していると思います)は、鍵の配布のみです。
MTProtoの目的は暗号化です。
Diffie-HelmannはMTProtoにキーを提供します。それはより高いレベルにあります。 MTProtoは「壊れています」が、安全なキーの確立はまだ行われています。したがって、DHはその目的(キー配布)で事実上失敗しません。
とはいえ、何らかの方法でキーをブルートフォースすることでMTProtoを解読できる場合(たとえば、キーの長さが短い場合)は、問題は依然としてDHではなくMTProtoにあります。
プロトコルは、最も弱いリンクと同じくらい強力です。この場合、MTProtoが信頼できないと考えると、プロトコル全体が信頼できません。
[〜#〜] edit [〜#〜]MTProto の仕様を見てください。質問を完全に理解するかどうかはわかりませんが、MTProtoの「アトミック」要素が不十分な結合によって有効性を失う可能性があるかどうかを尋ねると思います。 -AES-256は暗号化に使用されますが、これは許容範囲です。現時点では、ハッシュ関数として-SHA1を使用できます。 -キーの確立のためのDiffie-hellmanは問題ありません(認証がある場合)。後で確立されたキーは、エンティティ認証を提供するために、鮮度(時間とシーケンス番号)で暗号化するための1つのキーを導出します。
このプロトコルに関して私が見ることができる唯一の問題は、DHが認証されていない場合です。そうでない場合は、だれでも暗号化キーを生成できます(MITMで取得した共有キーと、鮮明に送信された鮮度のソースの両方を使用)。
end to endの場合も、AES-256を使用します。しかし、指紋は不自然に見えます(暗号化キーを再利用します)。
ダイジェスト= md5(key + iv)フィンガープリント= substr(digest、0、4)XOR substr(digest、4、4)
さらに、彼らはECBモードでAESを使用しているようですが、そのようなことも同じですが、それでも、一般的なプロトコルは全体的に「OK」のようです。 SnowdenまたはAssangeの場合は、念のために他の何かを使用してください;)
彼らはECBモードではなくIGEモードでAESを使用します。ただし、それでも通常のユーザーには問題がなく、ブロック暗号モードがないよりはましです。
データは、256ビットキーaes_keyと256ビットの初期化ベクトルaes-ivで暗号化され、AES-256暗号化と無限文字化け拡張(IGE)が使用されます。