sendは端末で本文・ファイル・ファイル名を暗号化し、サーバーには暗号文を保存します。初期版です。AIによる仕様・品質レビューとテストは第三者の暗号監査ではなく、独立した第三者による暗号・セキュリティ監査は未実施です。
- 正常なクライアントを使用する場合、運営の保存先から本文・ファイル名・内容種別を復号できません。
- 閲覧リンクと管理リンクは独立した秘密を使用し、DBには権限秘密のハッシュだけを保存します。
- 復号鍵はURLの
#以降に保持し、HTTP APIのURL・本文・ヘッダーには送信しません。 - manifestとチャンクには転送ID・用途・チャンク順序に結びつく認証を付け、改ざんや別転送の差し替えを拒否します。
- サーバーは失効・期限切れ後の新しい閲覧を拒否します。物理削除は別の上限付き定期処理で、失敗は再試行し、それまで予約容量を保持します。
- 未確定writing leaseの回復は時間だけに頼りません。失効した転送の同一immutable object keyに条件付きの永久ゼロバイトfenceを置くことで、遅延した元のIf-None-Match PUTを拒否してからleaseを回収します。fenceを通常GCやbucket-wide lifecycleで削除してはいけません。
- 100MB超のファイル受信はPC版Chrome/EdgeのFile System Access APIを使用し、4MiB単位で認証済み平文を一時保存先へ書き込みます。全文検証成功時だけclose、失敗・中止はabort。全ファイルをメモリに連結しません。
- 閲覧リンクを知る人は受信・転送できます。リンク検査サービスへリンクを渡すことも、そのサービスへ秘密を渡すことになります。
- 保存済みの平文や、失効前に開始した配信を回収できません。close開始後の保存確定とキャンセルの競合を完全に取り消すことも保証しません。
- 悪意あるJavaScript配信、感染端末、悪意ある拡張機能、XSSに対してWeb E2EEだけでは秘密を守れません。
- おおよそのサイズ、期限、通信日時、暗号文、権限ハッシュはサーバーに見えます。CDNはIPを扱います。アプリDBに生IPは保存せず、日替わりHMACをレート制限に用います。
- Workerのアプリケーションログ収集は無効です。配信基盤のセキュリティログ・バックアップ等はその基盤の保持設定・ポリシーに従います。すべてのメタデータが期限と同時に消えるとは約束しません。
- 転送ID再利用を防ぐD1 tombstone、未確定書き込みの復活を防ぐゼロバイトR2 fenceは保持します。fenceは内容を含みませんがobject key・作成時刻等のメタデータを持ち、障害が増えると件数が増えます。総予約容量は暗号文payloadの上限であり、このメタデータやリクエスト費用を含む請求の絶対上限ではありません。
- 受信平文はメモリと端末保存先に残り、リンクは履歴・同期・クリップボードに残り得ます。100MB以下と文章はBlob方式のため端末メモリによる制約が残ります。
- ウイルス検査はせず、自動プレビューしません。信頼できる送信者のファイルだけ開いてください。
- 管理リンク紛失時は手動失効できず、鍵紛失時は復旧できません。管理リンクだけでは内容を復号できません。
- canonical origin、send専用D1/R2(非公開)、専用本番secret、予約容量100GB・レート制限を設定する。公開は
--mode liveの明示でのみ有効。通常buildは無効を維持する。 - 期限切れ・不完全アップロード・削除失敗・永久fenceによる安全な回復をnative D1/R2で検証する。古いPUTが回復後に到着してもpayloadを作れないことと予約整合性を独立レビューする。実リソースの失効・GCも公開時に確認する。
- 静的配信に分析タグ等が注入されないこと、Workerログ無効、CSP/no-store/no-referrerを実HTTPで確認する。鍵、リンク、Authorization、本文をログ・試験報告に出さない。
- 公開の利用条件・プライバシー・通報先は
/policy.html。鍵を集めず転送IDで失効し、鍵を持たない運営は通常内容検査できないことを明記する。 - 10GB全量の実ブラウザー送受信・native disk SHA-256一致を試験する。保存先ピッカーの置換、ローカルR2、本番R2の検証範囲を区別する。
- 独立した第三者の暗号監査、実OS保存先ダイアログ、実iPhone、Safari/Firefoxの大容量受信は未検証または未対応。これらを検証済みと宣伝しない。大容量受信対応はPC版Chrome/Edgeに限定してUIに表示する。