Skip to content

About

🔐 Windows向け自己復号型暗号化メッセージ作成ツール。Argon2idとXChaCha20-Poly1305を使用し、テキスト・HTML本文と添付ファイルを暗号化して単一EXEとして出力します。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

🔐 プライバシー設計と透明性・安全性

CipherCapsule は、メッセージ本文と添付ファイルを強力な認証付き暗号で保護し、受信者がパスワードを入力して内容を閲覧できる、Windows向けの自己復号型暗号化メッセージ作成ソフトウェアです。

本ソフトウェアは、プライバシーの保護、暗号処理の透明性、データの完全性、利用者による制御を重視して設計されています。

🛡️ 1. プライバシー保護の基本方針

保護項目 実装内容
🔒 メッセージ本文 TEXT・HTMLともに認証付き暗号で保護
📎 添付ファイル ファイル内容を分割して暗号化
🏷️ 添付ファイル名 暗号化されたマニフェスト内で保護
🔑 パスワード 暗号鍵導出に使用し、生成EXEに平文保存しない
🗝️ 暗号鍵 暗号化ごとに新しいランダム鍵を生成
🌐 外部通信 メッセージ表示に不要な外部通信を禁止
📝 設定ファイル パスワード・本文・暗号鍵を保存しない
🧩 HTML表示 JavaScript実行・外部リソース読込みを制限
📋 コピー制御 作成者がViewerでの通常のコピー操作を許可・禁止できる
✅ 改ざん検出 認証タグとハッシュによって不正な変更を検出
🔍 ソースコード 公開ソースと依存関係情報により設計を検証可能

CipherCapsule自身には、メッセージをサーバーへアップロードする機能、ユーザー行動を収集するテレメトリ、バックグラウンド更新、権限昇格、常駐・自動起動の仕組みを実装していません。

暗号化・復号処理はローカル環境で実行されます。

ただし、WindowsやWebView2 Runtimeなど、OS・外部コンポーネントが独自に行う処理や通信まで保証するものではありません。

🔑 パスワードの取扱い

CipherCapsuleは、入力されたパスワードからArgon2idによって暗号鍵を導出します。

パスワードそのものを暗号化EXEに埋め込んだり、INIファイルへ保存したりすることはありません。

Builderでは連続して暗号化EXEを作成できるように、暗号化成功・失敗・キャンセル後も入力したパスワードを保持します。

保持されるのは現在のアプリケーション起動セッション内だけです。

アプリケーション終了後にパスワードを復元する機能はありません。

暗号鍵や機密バッファは、利用を終えた段階で可能な範囲で消去します。ただし、.NETの管理メモリ、OSのページング、クリップボード、ブラウザーキャッシュなどから、過去の機密データを完全消去できる保証はありません。

共有パソコンでは、使用後にCipherCapsuleを終了してください。

🌐 HTML表示と外部リンクの安全性

HTML本文はWebView2で表示しますが、受信したHTMLを一般的なWebページとして無制限に実行することはありません。

  • JavaScriptの実行を禁止
  • iframe・フォーム・埋込みスクリプト等を除去
  • 不必要な外部リソース要求を遮断
  • 外部画像の自動ダウンロードを禁止
  • HTMLからのファイルダウンロードを制限
  • 不要なブラウザー権限を拒否
  • ホストオブジェクトへのアクセスを禁止
  • HTML描画にContent Security Policy(CSP)を適用

外部リンクはHTTP・HTTPSに限定しています。

リンクがクリックされると確認ダイアログが表示され、利用者が許可した場合のみ、Windowsの既定ブラウザーで開きます。

仕様ダイアログの固定GitHub URLは、利用者のクリックで直接既定ブラウザーへ渡します。受信HTML本文のリンクは上記の確認を維持します。

リンク先のサイトをCipherCapsule内のWebView2で直接閲覧させる仕組みではありません。

なお、利用者が外部リンクを開いた後の通信・Cookie・アクセス記録等は、開いたブラウザーとリンク先Webサイトの管理対象になります。

📎 添付ファイルと平文データの保護

添付ファイルは暗号化された状態でEXE内へ格納されます。

受信者がパスワード認証に成功しても、添付ファイルを自動実行することはありません。

添付ファイルをディスクへ復号保存するのは、受信者が明示的に保存操作を行った場合です。

保存時には、認証付き復号と安全な一時ファイル処理を実施します。

ただし、保存されたファイルは通常の平文ファイルです。保存後の保護は、利用者のWindows環境、アクセス権、BitLocker等の設定に依存します。

🔍 透明性とセキュリティ上の限界

CipherCapsuleは、暗号化データの機密性と改ざん検出を目的としています。

一方、以下を保証するものではありません。

  • スクリーンショットや外部カメラによる撮影の防止
  • OCRによる文字の取得防止
  • 管理者権限を持つ第三者からの完全な保護
  • マルウェアに感染した端末での機密保持
  • OSメモリ・ページファイル・キャッシュの完全消去
  • 送信者の本人確認
  • 未署名EXEのプログラム部分が改ざんされていないことの自動保証

特に重要なのは、暗号化メッセージの認証と、EXEプログラムそのものの真正性は別問題という点です。

悪意ある第三者がViewerの実行コードを改変した場合、入力されたパスワードを盗むプログラムに置き換えられる可能性があります。

信頼できない送信元から受け取ったEXEを安易に実行しないでください。

CipherCapsuleの正式EXEは、現行版ではAuthenticodeによるコード署名を行っていません。Windows SmartScreenやセキュリティソフトウェアの警告が表示される場合があります。

Windowsの保護機能を無効化して使用することは推奨しません。


✉️ CipherCapsule

パスワードで守る、自己復号型の暗号化メッセージ

CipherCapsule v1.1.10

v1.1.10の改良

  • CCAPアイコンの自動登録を廃止し、過去の登録は管理記録と現在値を検証して安全な場合だけ元の値へ復元します。既知の登録用ICO・管理JSONも安全を確認して整理します。
  • HTMLエディターの診断JSON自動出力を廃止しました。
  • ASCII Armorの生成・認証付き復号をメモリ内処理に変更し、一時CCAPのディスク書込みを廃止しました。
  • WebView2の専用一時領域について、終了確認後の後処理を改善しました。
  • CCAP、自己復号EXE、暗号アルゴリズムとINI形式、Windows/Androidの共通形式を維持します。

正式EXE:CipherCapsule_v1.1.10.exe、174,413,751 bytes、SHA-256 C9FDFDD616AB08BC27BCE4E5A75EEAD40ACFE7B49B3BD3D34D0B7CF76E760A85。v1.1.10 Release · 対応ソース。コード署名はありません。Windows SmartScreen等が警告する場合は配布元とSHA-256を確認してください。

この版の開発時検証は新規56件、回帰28件、計84件成功/0件失敗です。正式EXEの起動、ASCII Armor、HTML表示、9~17pt、INI保存、通常終了をWindows GUIで確認しました。Android版との互換性は固定済みAndroid Coreを用いたホスト試験です。今回のAndroid実機相互操作と物理DPI切替は未検証です。他版が使用中の旧WebView2領域は安全のため保持します。

Windows内のすべての痕跡は消去しません。Prefetch・イベントログ等のOS管理記録は削除せず、INI設定は従来どおり保存します。所有元や安全性が不明な旧一時ファイルは無条件削除しません。メモリやストレージの物理的完全消去は保証しません。コピーした内容はOSのクリップボード履歴・同期に残る場合があります。

v1.1.9の改良(過去版)

独立した「暗号メッセージ」画面を追加しました。UTF-8で最大16KiBのTEXT本文をCipherCapsule ASCII Armor暗号文に変換し、利用者の明示的な「コピー」「貼り付け」でWindows/Android間へ送受信できます。日本語・絵文字・改行を保持します。既存CCAP全体をBase64化する独自形式で、OpenPGP/PGPとは互換性がありません。共通形式と制限を参照してください。

Argon2id、XChaCha20-Poly1305、CCAPコンテナー構造、通常の自己復号EXE・CCAP、TEXT/HTML・添付機能は維持しました。誤パスワードや不正形式を拒否し、認証失敗時には以前の復号本文を消去します。LF改行が一行表示になる不具合も修正しました。暗号文だけを明示操作でコピーし、平文やパスワードの自動コピーは行いません。OSのクリップボード履歴・同期に暗号文が残る可能性があります。

新規97件と代表的回帰6件のホスト試験は成功、失敗0件。正式EXEの実GUIではコピー・貼り付け、Unicode本文の復号、誤パスワードの拒否、9/12/17pt、幅変更、通常終了を確認しました。物理DPI切替とGUI上のキャンセル操作タイミングは未検証です。Android端末との物理クリップボード送受信は本版の検証に含めません。

正式EXE:CipherCapsule_v1.1.9.exe、174,442,410 bytes、SHA-256 B35E6381E85ABF0FD6F5E126B48616DA3B1C1077863D297D314BFAC446C5260C。v1.1.9 Release · 対応ソース · Android版。コード署名はなく、Windows SmartScreen等が警告する場合があります。配布元とSHA-256を確認してください。

v1.1.8の修正

  • GUIフォント9~17ptにTinyMCEのボタン・アイコン・余白・選択欄・メニュー寸法を連動。12pt基準でベンダースキンのUI寸法をアプリ管理CSSへ変換し、TinyMCEが固定するボタン幅も補正します。WebView全体やHTML本文はズームしません。
  • HTMLビジュアル/コードの要求を直列化し、最後の操作を優先。応答期限と型付き結果検証を追加し、失敗時は既存の本文を保護して再試行できます。変更のないコード往復では本文・キャレット・Undoを再設定しません。
  • 通常のCtrl+±とINI互換性、暗号Core・形式・依存資産は維持。切替の失敗時だけ、例外種別・エラーコード・状態を最小限記録し、HTML・秘密情報・例外メッセージは記録しません。

非表示ブラウザーのDOM・状態遷移・暗号互換性で81件成功/0件失敗を確認しています。2026年10月24日、利用者から実機手動確認は全項目合格との回答を受領しました。実モニターDPI切替は未検証です。完成済みEXEをそのまま配布し、公開作業で再ビルド・重複試験は行っていません。利用者の間欠症状そのものは再現しておらず、コードで確認した無期限待機・古い要求の反映・失敗応答の空文字化・状態復旧不足を修正したものです。

以下にはv1.1.7までの変更履歴も含みます。

v1.1.7の変更点

「暗号アルゴリズム仕様」内のGitHub URLをクリックすると、Windowsの既定ブラウザーで公式リポジトリを開けます。URLは固定のHTTPSのみ。ブラウザー起動に失敗した場合は日本語で警告し、仕様画面を継続利用できます。暗号化成功ダイアログの「保存先フォルダを開く」は、フォルダ起動成功時に成功ダイアログも閉じ、失敗時は警告と元の画面を保持します。初期全選択なし、先頭表示、選択・コピー・スクロールは維持します。

v1.1.7当時のv1.1.3からの累積変更

  • Viewerを含まない小容量の.ccapを追加。既存の認証付き暗号コンテナーを利用し、Builder本体でTEXT/HTML・添付を復号閲覧します。
  • 「自己展開アーカイブの作成」はONで自己復号EXE、OFFでCCAP。INIのOutputFormatを引き継ぎます。
  • SHA-512の右隣にSHA-256出力を追加。EXE/CCAP全体の.sha512/.sha256を独立選択でき、通常エラー時には出力をまとめて復元します。
  • CCAPはBuilder内の本文欄・添付一覧・ボタン・入力欄・余白・HTML編集領域へのD&Dで復号を優先。従来の普通のTXT読込み・添付追加も維持します。
  • v1.1.7当時、CCAPアイコンはBuilder起動時に現在ユーザーの.ccap/DefaultIconへ自動登録し、生成EXEと同じアイコンを表示します。設定用選択ボタンやD&D専用案内文はありません。既定の起動アプリやUserChoiceは変更しません。
  • CCAPのファイル選択・起動引数、入力保持、モーダルViewerの通常終了に対応。HTMLリンク・コピー制御・添付保存などは既存コードを共有します。

CCAPのダブルクリック起動を希望する場合は、Windowsの「プログラムから開く」で本EXEを手動選択してください。関連付けの自動変更は行いません。v1.1.7当時のアイコン設定は終了後も残りました。v1.1.10では自動登録を廃止し、条件を満たす旧登録を安全に復元します。

形式 閲覧方法 容量
自己復号EXE 生成EXEを単独起動 Viewerを含む
CCAP CipherCapsule v1.1.4以降で開く Viewerを含まない

v1.1.4の同内容測定例:本文のみ EXE 52,739,663 bytes/CCAP 382 bytes、複数添付 EXE 52,740,275 bytes/CCAP 994 bytes。旧版の測定値で、すべてのメッセージの圧縮率を保証しません。

現行の対応ソース:v1.1.10。配布:Release。ビルド手順、第三者ライセンス。

CipherCapsuleは、TEXT・HTML形式のメッセージと複数の添付ファイルを暗号化し、自己復号EXEまたは小容量のCCAPファイルとして出力するWindows用ソフトウェアです。

作成者は、メッセージ内容、添付ファイル、パスワード、コピー許可設定を指定するだけで暗号化EXEを作成できます。

受信者は生成されたEXEを起動し、正しいパスワードを入力することで、メッセージを閲覧し、必要に応じて添付ファイルを保存できます。

✨ 主な機能

  • 🔐 Argon2idとXChaCha20-Poly1305による強力な暗号化
  • ✉️ TEXT・HTMLの2種類のメッセージ形式
  • 📝 TinyMCE搭載の高機能ビジュアルHTMLエディター
  • 🔄 ビジュアル編集とHTMLコード編集の切替
  • 🔗 HTMLハイパーリンクの挿入・編集
  • 🖼️ ローカル画像のHTML埋込み
  • 📎 最大100個の添付ファイル
  • 🗝️ パスワード認証付き自己復号EXEの生成
  • 👁️ パスワードの表示・非表示切替
  • 📋 受信者によるテキストコピーの許可・禁止
  • 🛡️ 認証タグによる改ざん検出
  • #️⃣ SHA-512/SHA-256チェックサムファイルの独立生成
  • 📦 .NET公式圧縮によるViewerの軽量化
  • 🖥️ 日本語GUI、フォントサイズ変更、可動境界線
  • 💾 既存ファイル保護・安全な保存処理
  • 🌐 HTMLリンクの外部ブラウザー起動前確認

🧬 暗号アルゴリズムと暗号化アーキテクチャ

CipherCapsuleは、複数の暗号技術を組み合わせたハイブリッドな鍵管理構造を採用しています。

暗号処理には、実績のある暗号ライブラリ libsodium を使用しています。

暗号アルゴリズムを独自に設計・実装するのではなく、libsodiumの公開APIを利用しています。

🔬 採用する暗号技術一覧

用途 アルゴリズム・仕様
パスワードベース鍵導出 Argon2id v1.3
KDF演算パラメータ opslimit = 3
KDFメモリ使用量 256MiB
KDF Salt 128bit(16byte)
データの認証付き暗号化 XChaCha20-Poly1305
対称暗号鍵長 256bit(32byte)
XChaCha20-Poly1305 nonce 192bit(24byte)
認証タグ長 128bit(16byte)
マスター鍵 256bitランダムDEK
用途別鍵導出 libsodium crypto_kdf
添付ストリーム暗号化 crypto_secretstream_xchacha20poly1305
添付分割サイズ 最大1MiB/チャンク
添付暗号文整合性確認 SHA-256
生成EXE/CCAP全体のチェックサム SHA-512/SHA-256
乱数生成 libsodium randombytes_buf

1. 🔑 Argon2id v1.3 — パスワードからの鍵導出

ユーザーが入力するパスワードは、そのまま暗号鍵として使用されません。

CipherCapsuleは、パスワードとランダムSaltを入力として、Argon2idによって256bitの鍵暗号化鍵(KEK:Key Encryption Key)を導出します。

ユーザーパスワード
        │
        ├── ランダムSalt(16byte)
        │
        ▼
  Argon2id v1.3
  memory = 256MiB
  opslimit = 3
        │
        ▼
      KEK(256bit)

Argon2idは、メモリ使用量を必要とするパスワードベース鍵導出関数です。

計算量だけでなくメモリ資源も消費させることで、大量のパスワード候補を並列評価する攻撃のコストを高める設計です。

CipherCapsuleでは、1回の鍵導出につき256MiBのメモリパラメータを設定しています。

opslimit = 3はlibsodiumへ渡す演算コストパラメータであり、暗号強度が3倍になる、または必ず3回の単純なハッシュ計算だけを行うという意味ではありません。

Saltは暗号化処理ごとに新しく生成されます。

これにより、同じパスワードを複数のメッセージに利用しても、異なるSaltからKEKが導出されます。

Argon2idは弱いパスワードを強いパスワードへ変換する魔法ではありません。 短いパスワードや推測されやすい語句は、オフライン辞書攻撃・総当たり攻撃の対象となります。

長く、予測困難なパスフレーズの使用を推奨します。

2. 🔐 XChaCha20-Poly1305 — 認証付き暗号化

CipherCapsuleの中心的な暗号技術は、XChaCha20-Poly1305です。

これは、ストリーム暗号を基礎とするChaCha20系の暗号化技術と、Poly1305によるメッセージ認証を組み合わせたAEAD(Authenticated Encryption with Associated Data)方式です。

AEADは、単なるデータの秘匿だけでなく、暗号文と関連データの改ざん検出を提供します。

CipherCapsuleでは、libsodiumの次のAPIを使用します。

crypto_aead_xchacha20poly1305_ietf_encrypt

crypto_aead_xchacha20poly1305_ietf_decrypt

基本パラメータ:

  • 対称鍵長:256bit
  • nonce長:192bit
  • 認証タグ長:128bit

XChaCha20では拡張された192bitのnonce空間を利用でき、適切な乱数生成と鍵管理の下で、ランダムnonceの衝突リスクを極めて低くできます。

Poly1305認証に失敗したデータは、正常な平文として受け入れられません。

認証タグを単なるエラーチェック値として扱わず、暗号学的な認証結果として検証します。

AEADとAAD

CipherCapsuleでは、暗号化する平文だけでなく、暗号コンテナーのヘッダー情報をAAD(Additional Authenticated Data)として暗号処理へ関連付けます。

AADは暗号化されずに保持できる情報ですが、認証対象になります。

これによって、暗号文と関連するヘッダー情報を不正に組み替えた場合に、復号時の認証が失敗する設計です。

ただし、EXE全体のすべてのバイトがAEADの認証対象となるわけではありません。特にViewerプログラムそのものの真正性については、別途確認が必要です。

3. 🗝️ DEK・KEKによる鍵管理

CipherCapsuleは、パスワード由来の鍵を直接すべての添付ファイルへ使い回す構成ではありません。

暗号化ごとに新しい256bitのランダムDEK(Data Encryption Key)を生成します。

このDEKを、Argon2idから導出したKEKでXChaCha20-Poly1305により暗号化します。

この方式を一般に**鍵ラッピング(Key Wrapping)**と呼びます。

                 ┌─────────────────────┐
                 │ ユーザーパスワード    │
                 └──────────┬──────────┘
                            │
                    Argon2id + Salt
                            │
                            ▼
                       KEK(256bit)
                            │
                            │ DEKを認証付き暗号化
                            ▼
ランダム生成 ────► DEK(256bit)
                            │
                            ├── マニフェスト用鍵
                            │
                            └── 添付ファイルごとの鍵

暗号化されたDEKと鍵導出に必要なSalt・nonce・パラメータは、コンテナー内に格納されます。

平文DEKは格納しません。

受信者は正しいパスワードからKEKを再導出し、認証付き復号によってDEKを取得します。

この構造により、暗号化処理ごとに独立したDEKを使用できます。

4. 🧩 用途別鍵導出と鍵分離

取得したDEKをそのまますべての処理へ流用するのではなく、libsodiumのcrypto_kdf_derive_from_keyを利用して用途別の256bitサブキーを導出します。

このKDFは、libsodiumのBLAKE2bベースの鍵導出機構を利用します。

CipherCapsuleでは、用途を区別するために8byteのコンテキスト識別子とサブキーIDを使用します。

用途 コンテキスト サブキーID
マニフェスト暗号化 CCMANIF1 0
添付ファイル暗号化 CCATTCH1 1以降

添付ファイルごとに異なるサブキーIDを使用します。

これにより、マニフェストと各添付ファイルの暗号処理を暗号学的に分離します。

鍵分離は、暗号鍵の誤用や異なるデータ形式間の不適切な鍵共有を避けるための重要な設計原則です。

5. 📎 crypto_secretstream_xchacha20poly1305 — 添付ファイル暗号化

添付ファイルには、libsodiumの次のストリーム暗号化APIを使用します。

crypto_secretstream_xchacha20poly1305

これは大容量データを順次暗号化・復号するための認証付きストリーム処理機構です。

CipherCapsuleは、添付ファイル全体を必ずしも一度にメモリへ展開せず、最大1MiBのチャンクに分割して処理します。

各チャンクには認証情報が付与されます。

ストリームの最後には、TAG_FINALを指定します。

これにより、復号側でストリームの終了状態を検証します。

添付ファイル
     │
     ▼
最大1MiB単位に分割
     │
     ├── チャンク1 ── AEAD暗号化・認証
     ├── チャンク2 ── AEAD暗号化・認証
     ├── チャンク3 ── AEAD暗号化・認証
     │
     └── 最終チャンク
                  └── TAG_FINAL

libsodiumのsecretstreamでは、24byteのストリームヘッダーを使用し、各チャンクに17byteの暗号化オーバーヘッドが加わります。

復号処理では、各チャンクの認証に加え、最終タグとストリーム構造を確認します。

認証に失敗した添付ファイルは正常なファイルとして確定保存しません。

6. 📋 認証付きマニフェスト

CipherCapsuleは、本文と添付ファイルに関する情報をマニフェストとして管理します。

マニフェストには主に以下の情報が含まれます。

  • 本文形式(TEXT/HTML)
  • メッセージ本文
  • コピー許可設定
  • 添付ファイル名
  • 添付ファイルサイズ
  • 暗号化添付の位置・長さ
  • 添付暗号文のSHA-256

このマニフェスト全体をXChaCha20-Poly1305で認証付き暗号化します。

これにより、本文の書換えだけでなく、添付ファイルの名前、サイズ、並び、暗号文との対応関係などに対する不正な変更も検出対象になります。

なお、暗号化EXEの構造を読み取るために必要な一部の情報は平文です。

例えば、コンテナーのバージョン、KDFパラメータ、Salt、nonce、添付件数、データ長等は、必要に応じてヘッダーから確認できます。

「すべてのメタデータが秘匿される」という仕様ではありません。

7. 🛡️ SHA-256・SHA-512と完全性検証

CipherCapsuleは、暗号学的認証とハッシュによる整合性確認を組み合わせています。

ただし、それぞれの用途は異なります。

SHA-256

各添付ファイルの暗号化されたストリーム領域についてSHA-256を計算し、そのハッシュ値を認証付きマニフェストに格納します。

復号時は暗号文のハッシュを再計算し、記録値と比較します。

これにより、添付暗号文の置換・欠落・破損を、チャンク復号の前段階でも検出できます。

さらに実際の保存時には、secretstreamによる各チャンクの認証を行います。

SHA-256自体は認証付き暗号ではありません。暗号文の認証と組み合わせることで、コンテナーの整合性確認に利用しています。

SHA-512

Builderでは、暗号化EXE/CCAPの生成時にSHA-512とSHA-256のチェックサムファイルを独立選択して出力できます。

初期設定ではONです。

例:

SecureMessage.exe
SecureMessage.exe.sha512

SHA-512とSHA-256は、最終的に生成されたEXE/CCAPファイル全体を対象として計算します。

チェックサムファイルは、128桁の16進数ハッシュ値と対象ファイル名を含む形式です。

PowerShellでは次のように照合できます。

Get-FileHash -LiteralPath ".\SecureMessage.exe" -Algorithm SHA512
Get-Content -LiteralPath ".\SecureMessage.exe.sha512"

両者のハッシュ値が一致すれば、比較した2つのデータは同一のSHA-512ダイジェストを持つことが確認できます。

ただし、EXEとチェックサムファイルの両方が攻撃者に置き換えられた場合、SHA-512の一致だけでは攻撃を見破れません。

信頼できる別経路で入手したハッシュ値との比較や、信頼できるコード署名等による真正性確認が重要です。

SHA-512は暗号化アルゴリズムでも電子署名でもありません。


🖥️ 動作環境

項目 仕様
OS Windows 11 x64
開発言語 C#
フレームワーク .NET 10
GUI Windows Forms
HTML編集 TinyMCE 8.10.0
HTML描画 Microsoft Edge WebView2
暗号ライブラリ libsodium
配布形式 Self-contained・単一EXE
言語 日本語

.NETランタイムは自己完結型EXEに内包されます。

そのため、通常の利用に.NET SDKを別途インストールする必要はありません。

HTML編集・HTML表示にはMicrosoft Edge WebView2 Runtimeが必要です。

未導入の場合は、Microsoft公式WebView2ページを参照してください。


📦 入力制限

項目 最大値
メッセージ本文 UTF-8換算8MiB
添付ファイル数 100個
添付ファイル1個 256MiB
添付ファイル合計 512MiB
パスワード 256 Unicodeコードポイント
埋込み画像1個の入力サイズ 256KiB
埋込み画像の最大幅・高さ 各4,096px
埋込み画像の最大画素数 4Mi画素

パスワードは空欄にできません。1文字でも生成できますが、安全性の観点から長いパスフレーズを推奨します。

埋込み画像はPNG・JPEGを対象とし、安全性検証後に内部でPNGとして再符号化されます。HTML内の埋込み画像合計にも容量制限があります。


🚀 使い方

✉️ 暗号化メッセージを作成する

  1. CipherCapsule_v1.1.10.exeを起動します。
  2. メッセージ形式としてTEXTまたはHTMLを選択します。
  3. 本文を入力します。
  4. 必要に応じて添付ファイルを登録します。
  5. テキストコピーの許可・禁止を指定します。
  6. パスワードを入力します。
  7. 「自己展開アーカイブの作成」をON(EXE)/OFF(CCAP)で選び、「暗号化する」をクリックします。
  8. Windowsの保存ダイアログでEXE/CCAPの保存先を指定します。
  9. 暗号化完了後、生成されたファイルを確認します。

SHA-512/SHA-256出力を有効にした分のチェックサムも作成されます。OFFでは既存のチェックサムを自動削除しません。

暗号化後も、Builderを終了するまではパスワードが保持されるため、同じパスワードで続けて別のメッセージを作成できます。

ただし、同じパスワードの使い回しより、用途ごとの強力で独立したパスワードを使用することを推奨します。

🔓 暗号化メッセージを閲覧する

  1. 送信元を確認した自己復号EXEを直接起動するか、Builderの「暗号化ファイルを開く…」または画面内D&DからCCAPを開きます。
  2. パスワードを入力します。
  3. 正しいパスワードであればメッセージが表示されます。
  4. HTMLリンクは確認後に既定ブラウザーで開けます。
  5. 添付ファイルは必要なものを選択して保存します。

パスワードは、可能であればEXEファイルとは異なる通信経路で共有してください。

パスワードを紛失した場合に備えた復旧用バックドアやマスターキーは設けていません。


📝 HTMLエディター

CipherCapsuleには、TinyMCE 8.10.0を使用した日本語対応のHTMLエディターを搭載しています。

WordPressのクラシックエディターに近い編集体験を目指しています。

主な機能:

  • ビジュアル/コード編集の切替
  • 太字・斜体・下線・取り消し線
  • 文字色・背景色・フォントサイズ
  • 段落・見出し・引用
  • 箇条書き・番号付きリスト
  • 左・中央・右・両端揃え
  • インデント調整
  • 表の挿入・編集
  • HTTP/HTTPSリンクの設定
  • ローカル画像の挿入
  • 特殊文字・水平線
  • Undo/Redo
  • HTMLプレビュー

ビジュアルモードでは、選択した文字列にHTTP/HTTPS URLを貼り付けることで、リンクを設定できます。

コードモードでは、通常のHTMLソース編集として動作します。

なお、受信者用ViewerにはHTML編集エンジンを組み込まず、安全な静的HTMLの表示に限定しています。


📦 自己復号EXEの構造と軽量化

CipherCapsuleが生成するEXEには、暗号化データと自己復号用Viewerが組み込まれています。

したがって、メッセージ本文が数文字であっても、Viewerの実行環境に相当する一定のファイルサイズが発生します。

v1.1.1では、.NETのSingleFile圧縮機能を利用することで、Viewerを大幅に軽量化しました。

実測例:

比較項目 旧版 v1.1.1
生成EXE 約113.46MiB 約50.29MiB
起動時間中央値 0.634秒 0.765秒

同等のテストデータで、生成EXEの容量を約55.7%削減しました。

これは.NETの実行ファイル圧縮によるもので、暗号アルゴリズムや認証強度を弱めたものではありません。

ファイルサイズや起動時間は、本文・添付容量および実行環境によって変わります。


🧪 品質検証

v1.1.7追加リンク・フォルダ終了試験:17件成功/0件失敗。 固定HTTPS宛先、既定ハンドラーへのディスパッチ、引数・昇格なし、異なるURLの拒否、起動失敗後の継続、フォルダ起動成功時だけ成功ダイアログを閉じる動作を非対話で確認。公開ソースからの同じ17件の限定ビルド確認は合算しません。

継承記録はv1.1.4の333件、アイコン・D&D関連68件、チェックサム関連22件(各失敗0)。これらを今回の全件再実行結果や、単一の新規合計として扱っていません。v1.1.3以前の実GUI実績も新機能の手動検証に読み替えません。

v1.1.10の正式EXEでは、暗号化・復号、HTMLプレビュー、通常終了をGUIで確認しました。物理DPI切替は未検証です。

これらは開発時点のテスト結果であり、第三者による正式なセキュリティ認証、暗号学的安全性の数学的証明、すべての端末での動作保証を意味するものではありません。


🛠️ 開発者向け情報

主な実装コンポーネント:

コンポーネント 役割
Builder 暗号化メッセージEXEの生成
Viewer パスワード認証・本文閲覧・添付保存
Core 暗号化、コンテナー、添付処理
Shared WebView2表示、GUI共通処理
Tests 暗号処理・HTML・GUI関連試験

v1.1.10で継承する主な依存関係:

  • .NET SDK 10.0.402
  • libsodium 1.0.22
  • Microsoft.Web.WebView2 1.0.4258.31
  • AngleSharp 1.8.5
  • TinyMCE Community 8.10.0

ソースからの再ビルドには、.NET SDK、Python 3、Node.jsおよび所定の依存アーカイブが必要です。

依存パッケージのバージョンと完全性検証情報は、ロックファイルやビルドスクリプトで管理します。

ビルド処理では、libsodiumアーカイブの固定SHA-256と署名検証、TinyMCE関連アーカイブの固定整合性値を確認する設計です。

署名・整合性検証に失敗する依存ファイルを、そのまま信頼して使用しないでください。

GitHubから取得したソースでは、必要な依存アーカイブを揃えた状態で、リポジトリ直下から次のコマンドを実行します。公開用の補助スクリプトが作業領域内にSource構成を用意し、依存アーカイブを検証してから既存のビルドスクリプトを実行します。

python scripts/build_repository.py --stage

このコマンドは隔離した作業領域へステージング成果物を生成します。試験の実行手順と既存の検証結果はBUILDING.mdを参照してください。実GUI確認は利用者による手動操作です。


⚠️ セキュリティに関する重要な注意事項

パスワード強度

短いパスワードや既知の単語は推測される可能性があります。

Argon2idの使用によって攻撃コストを増大させても、パスワードそのものの推測容易性は解消されません。

EXEファイルの真正性

自己展開アーカイブを選んだ場合、本ソフトウェアが生成するメッセージはEXEファイルです。CCAPは実行コードを含まないデータファイルです。

EXEは単なる受動的な暗号化文書ではなく、Windows上で実行されるプログラムです。

信頼できない相手から受け取ったEXEは実行しないでください。

暗号化コンテナーの認証に成功しても、EXEの実行コードが元のCipherCapsule Viewerであることまで証明されるわけではありません。

チェックサムと送信元確認

SHA-512チェックサムは、信頼できる経路で確認済みのハッシュと比較して初めて有効な検証手段になります。

チェックサムファイルをEXEと一緒に受け取っただけでは、送信者の本人確認にはなりません。

データの完全消去

CipherCapsuleは不要になった機密バッファや一時データを可能な範囲で消去します。

ただし、ファイルシステム、SSD、OSの仮想メモリ、バックアップ、ブラウザープロファイル等からの復元可能性を完全に排除するものではありません。

データ保存中の異常終了

暗号化EXE/CCAPと選択したSHA-512/SHA-256ファイルを、OS上で同時に原子的に確定させることは保証していません。

通常のエラー時には保護・復元処理を行いますが、電源断や強制終了では一時ファイル・退避ファイルが残る可能性があります。

配布前には最終EXEとチェックサムの一致を確認してください。


📜 ライセンス

CipherCapsuleのプロジェクトソースコードは、付属のライセンス文書に基づき、GNU General Public License version 2 またはそれ以降のバージョン(GPL-2.0-or-later) の条件で提供されます。

著作権表示、GPLライセンス本文、ソース提供に関する条件を遵守してください。

本ソフトウェアには、独自のライセンスを持つ第三者コンポーネントが含まれます。

主なコンポーネント:

  • libsodium
  • TinyMCE Community
  • Microsoft WebView2
  • AngleSharp
  • .NET Runtime

TinyMCE CommunityはGPLモードで組み込まれており、クラウド版や商用プラグインは使用していません。

各ライブラリの再配布条件と著作権表示は、対応するライセンス文書を確認してください。

ソースやバイナリを再配布する場合は、適用されるGPLおよび第三者ライセンスに従い、必要な対応ソースとライセンス情報を提供する必要があります。


🔐 最後に

CipherCapsuleは、メッセージ本文と添付ファイルの機密性を保ちつつ、利用者が暗号化処理を自分で管理できることを目的として開発しています。

暗号技術の強度だけでなく、データの扱い、外部通信の制限、改ざん検出、ソースコードの透明性、危険な操作の防止を重視しています。

一方、暗号化だけですべてのセキュリティ問題を解決できるわけではありません。

強力なパスワード、信頼できるファイル配布経路、安全なWindows環境、適切な運用を組み合わせることで、より安全に利用できます。

🔐 CipherCapsule — 大切なメッセージを、確かな暗号技術で守る。

About

🔐 Windows向け自己復号型暗号化メッセージ作成ツール。Argon2idとXChaCha20-Poly1305を使用し、テキスト・HTML本文と添付ファイルを暗号化して単一EXEとして出力します。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages