プライバシーとセキュリティ

MIDAS のデータ処理モデル、保存方式、外部通信、暗号化、ライセンス条件を説明します。

データの処理場所

CSV の読み込み、統計量の計算、グラフの描画、回帰モデルの推定など、すべてのデータ処理はブラウザ内で実行されます。MIDAS にはデータを受け取るアプリケーションサーバーがなく、ユーザーのデータがネットワークに出ることはありません。

SQL の実行には WebAssembly1 版の DuckDB を使用しています。DuckDB の Worker スクリプトには Content-Security-Policy ヘッダを付与して connect-src を DuckDB の WebAssembly バンドルを配信する CDN と公式拡張リポジトリのみに制限しており、Worker 内部から他のホストへの通信はブラウザが遮断します。二段目の防御として、起動時に DuckDB の拡張機能の自動インストール・自動ロードを無効化しています。これにより httpfs 拡張がロードされないため、万一 CSP を回避する経路があっても read_csv('https://...') は外部 URL を解決できません。

データの保存場所

保存先用途永続性
OPFS (Origin Private File System)プロジェクトファイルの保存ブラウザのサイトデータ消去で削除
IndexedDB署名鍵の保存ブラウザのサイトデータ消去で削除
localStorageアプリケーション設定の保存ブラウザのサイトデータ消去で削除
ユーザーのファイルシステムエクスポートした MDS ファイルユーザーが管理

OPFS2、IndexedDB3、localStorage はブラウザが提供するストレージ API で、データは app.midas-app.org のオリジンに紐づきます。他のサイトや他のブラウザプロファイルからはアクセスできません。同一ブラウザプロファイルを複数人で共有している場合は、誰でもデータにアクセスできます。共有端末では OS のユーザーアカウントを分けるか、ブラウザのプロファイルを分けてください。

MIDAS は保存データの暗号化を行いません。ディスク上のデータ保護が必要な場合は、OS のディスク暗号化(BitLocker、FileVault など)を使用してください。OPFS と IndexedDB のデータはブラウザのプロファイルディレクトリ内に保存されるため、フルディスク暗号化の対象に含まれます。

外部通信

アプリ (app.midas-app.org) にはアクセス解析やトラッキングスクリプトはありません。CSP4script-src'self' のみに制限しており、サードパーティスクリプトは実行されません。ユーザーが読み込んだファイルやプロジェクトのデータが外部に送信されることはありません。MIDAS がバックグラウンドで外部サーバーと通信することもありません。

「URL から開く」機能を使うと、ユーザーが指定した URL へファイル取得のリクエストが送信されます。この機能のために CSP の connect-src で HTTPS 接続を許可しています。取得したファイルはブラウザ内で処理され、取得先にデータを送り返すことはありません。Settings の Trusted URLs セクションで「Block connections to untrusted domains」を有効にすると、connect-src が信頼 URL リストのドメインのみに動的に制限されます。CSP は追加のポリシーで厳しくなるだけで緩めることはできないため、JavaScript による改竄はできません。DuckDB Worker には response header で別のより厳しい CSP を付与しており、connect-src が DuckDB の CDN と拡張リポジトリのみに制限されます。メインスレッド側の設定と独立して、Worker 内のコードが他のホストに到達することはできません。

ドキュメントサイト (midas-app.org) ではアクセス解析に Cloudflare Web Analytics を使用しています。ページビュー、リファラー、国/地域、デバイス種別、ブラウザ種別、アクセス日時を収集します。Cookie は使用せず、IP アドレスも保存しません。個人を特定できる情報は収集しません。詳細は Cloudflare のプライバシーポリシーを参照してください。

電子署名

MDS ファイルをエクスポートすると、電子署名が自動的に付与されます。

  • アルゴリズム: ECDSA P-256 + SHA-256
  • 実装: ブラウザの Web Crypto API5
  • 鍵の保管: 署名鍵ペアは IndexedDB に保存されます。鍵がブラウザの外に送信されることはありません

署名により、ファイルの改竄を検出できます。署名はファイルの内容を暗号化しません。署名者の名前は自己申告です。鍵の所有者が本人かどうかはフィンガープリントの照合で確認します。公開鍵基盤 (PKI) や認証局 (CA) との連携はなく、PGP の Web of Trust に近い信頼モデルです。

署名鍵はパスワード付きファイルとしてバックアップ・復元できます。詳しくは MDS ファイル署名鍵の管理を参照してください。

署名バッジと信頼レベル

MDS ファイルを開くと、メニューバーの右端に署名バッジが表示されます。

  • Official (緑): MIDAS に同梱された公式鍵による署名。ラベルは "Official"。
  • Trusted (青): 信頼済みリストに登録済みの鍵による署名。ラベルは鍵を登録したときに付けた名前。
  • Unknown (黄): 公式でも信頼済みでもない鍵による署名。ラベルは "Unknown"。フィンガープリント全体と自己申告の署名者名はバッジをクリックすると表示される。

バッジをクリックすると、フィンガープリント全体、自己申告の署名者名、署名日時を確認できます。unknown の場合はポップオーバーから鍵を登録でき、以降は信頼済みとして扱われます。

unknown 署名ファイルの扱い

MIDAS は既定では unknown 署名の MDS ファイルも確認ダイアログなしで開きます。バッジで unknown 状態を確認でき、フィンガープリントを照合してから鍵を信頼するか判断できます。

既定で警告なしに開けるのは、unknown 署名ファイルから外部サーバーに到達する経路 (DuckDB 拡張の自動ロードなど) を、信頼レベルによらず読み込み時点で塞いでいるためです。悪意ある MDS ファイルであっても、通常の分析フローで外向き通信を引き起こすことはできません。

信頼できない相手から受け取る MDS を頻繁に開くなど、毎回明示的に確認したい場合は、Settings > SecurityRequire confirmation for unknown signers を有効にしてください。この設定を ON にすると、unknown 署名の MDS を開くたびに確認ダイアログが表示されます。ダイアログのボタンは CancelTrust this signer and openOpen Anyway の 3 つで、Trust this signer and open を選ぶと署名者名の入力欄が開き、そこで確定すると鍵を信頼済みに登録してそのままファイルを開きます。

鍵の設計判断

署名鍵ペアはブラウザ内で生成され、Web Crypto API の extractable フラグは true に設定されています。鍵のエクスポートとバックアップにはこの設定が必要です。外部で生成した鍵をインポートする方式にすれば extractable: false にできますが、ユーザーが OpenSSL 等で鍵ペアを生成・管理する運用負荷が生じるため、ブラウザ内生成を選択しています。

extractable: true であるため、同一オリジン上で任意の JavaScript が実行された場合(XSS など)、秘密鍵が読み取られるリスクがあります。このリスクに対しては CSP の script-src で実行可能なスクリプトの出所を制限することで緩和しています。

秘密鍵が漏洩した場合は、新しい鍵ペアを生成し、相手方に新しい公開鍵を配布してください。鍵の集中管理や失効通知の仕組みは現在ありません。

データの削除

MIDAS のデータはブラウザのサイトデータとして保存されています。削除するには、ブラウザの設定から app.midas-app.org のサイトデータを消去してください。保存されたプロジェクト、署名鍵、信頼済み公開鍵がすべて削除されます。

個々のプロジェクトを選択して削除する場合や、ストレージの使用状況を確認する場合は、ストレージ管理画面を使用してください。

エクスポート済みの MDS ファイルはユーザーのファイルシステムにあるため、別途削除してください。

デプロイ形態

MIDAS は静的ファイルのみで構成される SPA であり、app.midas-app.org から配信されます。利用規約によりソフトウェアの複製・再配布は禁止されているため、オンプレミス環境への個別デプロイはできません。ユーザー認証やアクセス制御の機能はなく、組織向けの管理機能もありません。

PWA としてインストールすると、初回アクセス後はオフラインで利用できます。

ライセンスと商用利用

商用利用を含め、無料で利用できます。現在ベータ版として提供しているため、機能は予告なく変更される場合があり、分析結果の正確性や完全性については保証していません。統計計算の精度検証については数値計算の精度を参照してください。詳細は利用規約プライバシーポリシーを参照してください。

ブラウザ要件

MIDAS は次のブラウザ API を使用します。

  • WebAssembly: DuckDB による SQL 実行
  • OPFS (Origin Private File System): プロジェクトデータの保存
  • IndexedDB: 署名鍵の保存
  • Web Crypto API: 電子署名の生成と検証
  • Service Worker6: オフライン対応 (PWA)

Chrome、Edge、Firefox、Safari の最新版で動作します。Internet Explorer には対応していません。

CI の E2E テストは Linux と Windows の両環境で Chromium を使用しています。開発者は macOS / Firefox で日常的に動作確認しています。

See also

脚注

  1. WebAssembly | MDN - ブラウザ上でネイティブに近い速度でコードを実行できるバイナリ命令形式

  2. Origin Private File System (OPFS) | MDN - Web アプリケーションがオリジンごとに利用できるプライベートなストレージ領域

  3. IndexedDB API | MDN - ブラウザが提供する構造化データの保存 API

  4. Content Security Policy (CSP) | MDN - Web ページが読み込めるリソースの出所を制限するセキュリティ機構

  5. Web Crypto API | MDN - ブラウザが提供する暗号処理の標準 API

  6. Service Worker API | MDN - ブラウザのバックグラウンドで動作し、オフライン対応を実現するスクリプト