Volo チャットシステム
概要
目的
Voloはエンドツーエンド暗号化チャットシステムで、ウェブおよびモバイルユーザー向けに安全でプライベートなメッセージングプラットフォームを提供します。強力な暗号化と認証メカニズムを通じて、ユーザーデータの機密性と不正アクセスからの保護を確保します。
価値
このアプリケーションはユーザーのプライバシーとセキュリティを最優先とし、エンドツーエンドの暗号化されたメッセージングを提供します。直感的なインターフェースと機能セットがユーザー体験を向上させ、信頼とエンゲージメントを育みます。主流のメッセージングサービスに対する安全な代替手段を提供することで、ユーザーがデジタルなやり取りを真にコントロールできるようにします。
範囲
範囲には、認証、鍵交換、チャット機能、および連絡先管理、検索、招待、プロフィール、ソーシャルメディア統合などの追加機能を持つ機能豊富なメッセージングプラットフォームの開発とデプロイが含まれます。
目標
目標は、ユーザーが不正アクセスや監視のリスクなく安全にコミュニケーションできる安全でプライベートなメッセージングプラットフォームを作成することです。ユーザーのプライバシーを最優先とし、強力なセキュリティ対策を実装することで、デジタル会話のための信頼できる環境を提供することを目指します。
エンドツーエンド暗号化チャットシステムの開発は、ストレージとコンピューティングリソースの分散型マーケットプレイスを確立するというIagonの戦略的目標と一致しています。安全なメッセージング機能を統合することで、Iagonエコシステム内のデータプライバシー、セキュリティ、アクセシビリティを優先します。
データプライバシーとセキュリティ:エンドツーエンド暗号化の実装により、ユーザーのコミュニケーションが保護され、Iagonの分散型マーケットプレイス全体のデータプライバシーとセキュリティが向上します。
ユーザーの信頼と確信:データプライバシーを優先することでユーザー間の信頼を育み、透明性と信頼性の高いエコシステムを構築するというIagonの目標をサポートします。
ユーザー体験の向上:VoloはIagonのサービスへのアクセシビリティを促進し、透明性と包括性を育み、ユーザー体験を向上させます。
将来の拡張:Voloは将来の発展のための基盤を築き、包括的な分散型グリッドというIagonのビジョンをサポートします。
背景
このプロジェクトはIagonのエコシステム内の重要なセキュリティギャップに対処し、ユーザーの信頼と確信を高めます。
課題
安全なメッセージングの欠如により、ユーザーはプライバシー侵害に対して脆弱な状態に置かれ、プラットフォームへの信頼と確信が損なわれます。
企業の目標/価値観との整合性
このシステムの開発は、データプライバシー、セキュリティ、ユーザーの信頼に対するIagonのコミットメントを強化し、そのミッションと一致します。
既存製品への影響
Voloの実装はIagonを際立たせ、セキュリティ強化を求めるユーザーを引きつける可能性があり、同様のプライバシー対策を欠く既存製品に影響を与えます。
要件
| エピック | タスク |
|---|---|
| ユーザー登録 | ユーザーはGoogleやTwitterなどのソーシャルアカウントでOAuthを使用して登録できます。 |
| デバイス登録 | - ユーザーはサービスを使用するために最初のデバイスを登録する必要があります。 - 署名用とメッセージング用の2つの非対称鍵ペアを生成します。 - サーバーからランダムなナンスを受け取り、署名鍵で署名し、デバイスIDと公開鍵ペアとともにサーバーに送信します。 - サーバーが検証し、公開鍵ペアの下でデバイスを登録します。 |
| 新しいデバイスの追加 | - ユーザーはアカウントに新しいデバイスを追加できます。 - 旧デバイス:ランダムなパスフレーズを生成してQRコードを作成します。 - 旧デバイス:鍵導出関数(KDF)を使用してセッション鍵(S)を生成します。 - 新デバイス:QRコードをスキャンしてパスフレーズを取得し、KDFを使用してセッション鍵(S)を生成します。 - 新デバイス:署名用とメッセージング用の2つの非対称鍵ペアを生成します。 - セッション鍵(S)を使用してデバイス登録のメッセージを暗号化します。 - 旧デバイスがユーザーIDとセッショントークンをサーバーに送信して新デバイスを認証します。 - 新デバイスが新しいデバイスIDを生成し、新たに生成された公開鍵とともに旧デバイスに署名して送信します。 - 旧デバイスが署名を検証し、署名鍵でデータに署名して新デバイスに送信します。 - 新デバイスが旧デバイスの署名とデータをサーバーに送信して検証・登録(ブロックチェーンへの公開を含む)します。 |
| チャット | チャットメッセージのバックアップ: - ユーザーはIagonストレージサービスを購読することでチャットメッセージをバックアップできます。 - メッセージをバックアップするには: - ユーザーはパスワードベースの鍵導出関数(PBKDF)を使用してバックアップ鍵を生成するためのパスワードまたはパスフレーズを選択します。 - バックアップ:バックアップが必要なメッセージはバックアップ鍵を使用して暗号化されます。 - ソルトはメッセージとともにバックアップサーバーに送信されて保存されます。 |
| 連絡先 | - ユーザーはユーザー名を使用して他のユーザーを連絡先に追加して素早く発見できます。 |
| 検索 | - ユーザーは特定のチャットやユーザーを検索して新しい会話を開始できます。 |
| 友達を招待 | - ユーザーはメールまたは招待リンクを通じて友達をプラットフォームに招待できます。 |
| グループ | - ユーザーは複数のメンバーでグループを作成できます。 - グループ作成/管理者がすべてのメンバーのデバイスと安全な通信のための鍵交換を開始します。 |
| プロフィール | - ユーザーはユーザー名、説明、プロフィール写真を設定できます。 |
| ソーシャルアカウント | - ユーザーは他のユーザーによる発見を容易にするためにソーシャルメディアアカウントをリンクできます。 |
| 会話の検証 | - ユーザーは互いのデバイス間で会話のセーフティナンバーを比較することで会話のセキュリティを検証できます。 - このチェックは中間者(MITM)攻撃から守り、QRコードを通じて実行できます。 - 会話のセーフティナンバーは、会話に関与するすべてのユーザーとデバイスの利用可能な公開鍵の連結をハッシュ化することで生成されます。 |
| 鍵交換 | メッセージを送信する前に、ユーザーAはユーザーBと暗号化鍵を共有する必要があります。 - 送信者(ユーザーA)は以下の手順を使用して受信者(ユーザーB)の各デバイスと自分のデバイスと鍵交換を実行します: - 生成と暗号化 - 送信者(ユーザーA)がランダムなセッション鍵を生成します。 - セッション鍵は受信者(ユーザーB)と送信者(ユーザーA)のデバイスの公開鍵で暗号化されます。 - 送信者(ユーザーA)が秘密鍵で暗号化されたセッション鍵に署名します。 - メッセージの受信: - メッセージを受信する各デバイス(ユーザーBとユーザーAに属する)が署名を検証し、メッセージを復号化してセッション鍵を取得します。 - セッション鍵の更新: - セッション鍵は一定時間または一定数のメッセージの送受信後に再生成でき、継続的な通信セキュリティを確保します。 - メッセージの暗号化と復号化: - 共有セッション鍵は鍵導出関数(KDF)を使用して対称鍵を生成するために使用されます。 - 送信者は生成された対称鍵でメッセージを暗号化し、受信者は同じ鍵を使用してメッセージを復号化します。 |
システム概要

WebSocketサーバー
ユーザーはリアルタイムのメッセージ交換のためにWebSocket接続を確立するために接続します。WebSocketサーバーはすべての開いた接続をソケット接続マネージャーに登録します。
ソケット接続マネージャー
ソケットサーバーへの各ユーザーの開いた接続に関する情報を保存します。
鍵配布サーバー
デバイスのすべての公開鍵は鍵配布サーバーによって保存・管理されます。
ウェブサーバー
認証、ユーザー情報、グループ情報などを含むすべてのHTTP/HTTPSリクエストのAPIエンドポイントを公開します。
チャットサービス
ユーザーが送信するすべてのメッセージはチャットサービスによって処理されます。メッセージを処理し、すべての宛先デバイスのメッセージキューにプッシュします。
メッセージキュー
すべてのメッセージはまずメッセージキューにプッシュされます。
メッセージ配信サービス
メッセージ配信サービスはメッセージキューを読み取り、特定の宛先デバイスの開いたWebSocket接続に配信します。開いた接続がない場合は、保留中のメッセージをデータベースにプッシュします。
アプリデータベース
ユーザー情報、グループ情報、プロフィール情報などのすべての情報はアプリデータベースに保存されます。
鍵ストア
ユーザーのデバイスのすべての鍵は鍵ストアに保存されます。
保留メッセージストア
すべての保留中のメッセージは保留メッセージストアに保存されます。メッセージは一定時間後または一定数に達した後に自動的に削除されます。
注:メッセージングシステム内のすべてのサーバーはIagonの分散型コンピュートに置き換えられる予定です。