
Tinfoil Chat (TFC) は、 FOSS+FHD の ピアツーピア メッセージングシステムであり、高い保証性を備えたハードウェアアーキテクチャに依拠して、ユーザーを パッシブ収集、 MITM 攻撃、 そして最も重要な リモート鍵窃取 から保護します。 TFC は、最も複雑な脅威モデルの一つを持つ人々のために設計されています。すなわち、エンドポイントをハッキングすることで従来のセキュアメッセージングアプリのエンドツーエンド暗号化を回避する、組織犯罪グループや国家系ハッカーです。
/rr コマンドの使用を中止してください。TFC は、 XChaCha20-Poly1305 による エンドツーエンド暗号化 を 否認可能認証 とともに用いて、個々の受信者およびグループに送信されるすべてのメッセージとファイルを保護します。 対称鍵は、 事前共有 されているか、 X448 を用いて交換され、その base-10 の フィンガープリント は帯域外チャネルを介して検証されます。TFC は、 BLAKE2b ベースの ハッシュラチェット により、メッセージごとの 前方秘匿性 を提供します。 すべての永続ユーザーデータは XChaCha20-Poly1305 を用いてローカルで暗号化され、その鍵はパスワードとソルトから Argon2id を用いて導出され、そのパラメータはベストプラクティスに従って自動的に調整されます。TFC の鍵生成は、Linux カーネルの getrandom() に依拠しています。これは ChaCha20 ベースの CSPRNG のためのシステムコールです。
TFCはすべての通信を Tor 匿名ネットワーク経由でのみルーティングします。(v3) Tor Onion Services を使用することで、Torネットワークから決して外に出ることのないP2P通信を実現します。これにより、ユーザーが誤って自らの匿名性を解除してしまうことが困難になります。また、(非)集中型メッセンジャーとは異なり、誰が誰と、いつ、どれだけ通信しているかといったユーザーメタデータにアクセスできる第三者サーバーが存在しないことも意味します。このネットワークアーキテクチャにより、TFCはユーザーのデバイス上でのみ動作します。広告やトラッキングはなく、ユーザーに関するデータを一切収集しません。すべてのデータは常にユーザーが管理する鍵で暗号化され、データベースがユーザーのデバイスから外に出ることはありません。
Onion Servicesを使用するということは、アカウント登録が不要であることも意味します。初回起動時に、TFCはユーザー用のランダムなTFCアカウント(Onion Serviceアドレス)を生成します。例えば
4sci35xrhp2d45gbm3qpta7ogfedonuw2mucmc36jxemucd7fmgzj3ad です。このTFCアカウントを知っていれば、誰でもユーザーにコンタクトリクエストを送信し、そのユーザーの現実の身元、IPアドレス、地理位置情報を一切知ることなく会話することができます。地理位置情報が保護されているため、攻撃者はデバイスが地球上のどこにあるのか分からないため、物理的攻撃は非常に困難になります。同時に、これは通信の検閲耐性も高めます。TFCをブロックするには、国単位でTorを一律にブロックする必要があります。
TFCには、ユーザーのネットワーク接続デバイスがハッキングされた場合でも、通信の種類、量、スケジュールを隠すトラフィックマスキングモードも備わっています。ハッカーからのさらなるメタデータ保護を提供するため、TFCのインターネット接続部分は Tails 上で実行できます。Tailsはプライバシーと匿名性に特化したオペレーティングシステムで、ユーザーの個人ファイルを一切含まず(これによりエンドポイントが誰のものかを推測することが困難になります)、匿名性を確保するための 追加の保護層 を提供します。
TFCは、強力な エンドポイントセキュリティ を提供するハードウェア構成での使用を想定して設計されています。この構成では、エンドポイントごとに3台のコンピューターを使用します。暗号化と復号化のプロセスは、2台の分離されたコンピューター、すなわちSource ComputerとDestination Computerに分離されます。これら2台のデバイスはTFC専用です。この分割された TCB は、ユーザーの日常用コンピューターであるNetworked Computerを介してネットワークとやり取りします。
TFCでは、データはSource ComputerからNetworked Computerへ、そしてNetworked ComputerからDestination Computerへと一方向的に移動します。データフローの一方向性は強制されます。データは、無料のハードウェア設計である データダイオード を介してのみ、あるデバイスから別のデバイスへと渡され、このデータダイオードは各デバイスにつき1本のUSBケーブルで3台のコンピューターに接続されます。Source ComputerとDestination Computerは、インターネットにも、データダイオード以外のいかなるデバイスにも接続されません。
光アイソレータ内の光リピータが、物理学の基本法則によってデータ伝送の方向を強制します。この保護は非常に強力であるため、認証済みのデータダイオード実装は、通常、システム間でデータの分類レベルが異なる重要インフラ保護や政府ネットワークで見られます。例えば、データダイオードは原子力発電所の安全システムの測定値へのアクセスを許可する一方で[1]、同時に攻撃者がこれらの重要なシステムを悪用することを防ぐことができます。別のユースケースは、安全性の低いシステムから、外部への持ち出しから保護する必要がある機密文書を含むシステムへデータをインポートできるようにすることです[2]。
TFCでは、ハードウェアデータダイオードにより、TCBのどちらの半分にも双方向でアクセスできないことが保証されます。保護はハードウェアの機能の物理的制限に依存しているため、マルウェア、さらにはゼロデイエクスプロイトであっても、データダイオードによって提供されるセキュリティを回避することはできません。
ハードウェアが揃えば、ユーザーが行うべきことは、各コンピュータでデバイス固有のTFCプログラムを起動するだけです。
上の図では、Aliceが自身のソースコンピュータで実行されている送信プログラムにメッセージとコマンドを入力します。送信プログラムは平文データを暗号化および署名し、暗号文をデータダイオードを介してソースコンピュータから自身のネットワーク接続コンピュータへ中継します。
Aliceのネットワーク接続コンピュータ上のリレープログラムは、コマンドと送信メッセージのコピーをデータダイオードを介して自身の宛先コンピュータへ中継します。Aliceの宛先コンピュータ上の受信プログラムは、受信したメッセージ/コマンドを認証、復号、および処理します。
Aliceのリレープログラムは、Tor Onion Serviceを介してBobとメッセージやファイルを共有します。BobのリレープログラムのWebクライアントは、AliceのOnion Serviceから暗号文を取得し、自身のデータダイオードを介して自身の宛先コンピュータへ転送します。その後、Bobの受信プログラムが受信したメッセージ/ファイルを認証、復号、および処理します。
Bobが応答するとき、彼は自身のソースコンピュータ上の送信プログラムにメッセージを入力し、同様のプロセスを経て、Aliceは自身の宛先コンピュータ上の受信プログラムからメッセージを読み取ります。これらすべてはシームレスかつ自動的に行われます。
上記のアーキテクチャは、古典的データダイオードモデルと代替データダイオードモデルの両方を同時に利用して、2人のユーザー間の双方向通信を可能にすると同時に、ハードウェアで強制されるエンドポイントセキュリティを提供します:
宛先コンピュータは古典的データダイオードモデルを使用します。つまり、安全でないネットワーク接続コンピュータからデータを受信できますが、ネットワーク接続コンピュータへデータを送り返すことはできません。受信プログラムは、これらの制約の下で機能するように設計されています。受信プログラムはすべての受信データを認証および検証しますが、マルウェアが宛先コンピュータに侵入する可能性は排除されていません。そのような事態が発生した場合でも、データダイオードがすべての外向きトラフィックを防ぐため、マルウェアは機密鍵や平文をネットワーク接続コンピュータへ持ち出すことはできません。
ソースコンピュータは代替のデータダイオードモデルを使用します。これは、送信プログラムが侵害される心配なく、暗号化されたデータを安全でないネットワーク接続コンピュータへ出力できることを意味します。データダイオードはソースコンピュータへのデータ送信を可能にするハードウェアを備えていないため、ソースコンピュータをあらゆるリモート攻撃から保護します。送信プログラムはまた、データダイオードによって導入されるデータフローの制約の下で動作するように設計されています。鍵交換を可能にするため、短い楕円曲線公開鍵はユーザーによって手動で入力されます。
ネットワーク接続コンピュータは、リモート攻撃者によって侵害される可能性があるという前提で運用されます。リレープログラムを通過するすべての機密データは、例外なく認証付き暗号化によって保護されます。攻撃者はソースコンピュータまたは宛先コンピュータから復号鍵を持ち出すことができないため、ネットワーク接続コンピュータから取得した暗号文は攻撃者にとって価値がありません。