toshirot / mychat

chat on Elysia
MIT License
0 stars 0 forks source link

エンドツーエンドの暗号化について #10

Open toshirot opened 6 months ago

toshirot commented 6 months ago

エンドツーエンドの暗号化 SignalプロトコルやOff-the-Record Messaging(OTR)プロトコルなどについて

・Off-the-Record Messaging(OTR)プロトコル

Off-the-Record Messaging Protocol version 3 https://otr.cypherpunks.ca/Protocol-v3-4.1.1.html Off-the-Record Messaging https://otr.cypherpunks.ca/

オフレコ メッセージング( OTR ) は、インスタント メッセージングの会話に暗号化を提供する暗号化プロトコルです。OTR は、128 ビットのキー長のAES対称キー アルゴリズム、1536 ビットのグループ サイズのDiffie-Hellman キー交換、およびSHA-1ハッシュ関数の組み合わせを使用します。OTR は、認証暗号化に加えて、前方秘匿性順応性のある暗号化を提供します。 https://en.wikipedia.org/wiki/Off-the-record_messaging

・Signalプロトコル Wiki

Github Signal https://github.com/signalapp

エンドツーエンド暗号化されたメッセージの送受信を可能にする暗号プロトコルである。 https://ja.wikipedia.org/wiki/Signal%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB#:~:text=Signal%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB%EF%BC%88%E6%97%A7%E7%A7%B0%3A%20TextSecure%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB,%E3%81%99%E3%82%8B%E6%9A%97%E5%8F%B7%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82

Signal(シグナル)は、Signal Foundation[9]が開発しているオープンソースメッセンジャーソフトウェアである[10]。すべての通信内容がエンドツーエンドで暗号化されるため、非常に高いセキュリティレベルが確保される[11][12][13]。対応OSは、AndroidiOSWindowsmacOSLinux。主な機能は、文章・ファイルの送受信、音声通話、ビデオ通話など[14]。2022年4月時点で、SignalのAndroid版は1億回以上ダウンロードされている[15]。また、独裁国権威主義国)などの検閲国でもサービスを利用可能にする「プロキシ構築方法」がサポートから公開されている[16]https://www.weblio.jp/content/Signal+%28%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%29?dictCode=WKPJA

toshirot commented 5 months ago

ここまで複雑なプロトコルが必須なのだろうか。 現在考えてるのは共通鍵AES。シンプルで好き。 考えなければならないのは、その管理方法。

・因みに公開鍵は今回は使えないと思う。 >https://github.com/toshirot/mychat/issues/2#issuecomment-2024129251 ・パスフレーズなどをサーバー側のDBなどに置くのも駄目

const decrypt_js = (str, salt) => CryptoJS.AES.decrypt(str,  salt).toString(CryptoJS.enc.Utf8)
const encrypt_js = (str, salt) => CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(str), salt).toString()
toshirot commented 5 months ago

先日、ChatGPTにアドバイスされた、Google AuthenticatorなどのTOTPやSignalプロトコルなどを検討したけど、結局のところ

end-to-end で暗号化するには、口頭含めてchatサーバーとは別の方法で秘密のフレーズを共有さえできれば良いように思える。 ログイン認証もセッションもいらない。

end-to-endで暗号化するなら、AuthenticatorもSMSもむしろ、脆弱性につながると思う。

違うだろうか?