プライバシーとセキュリティ
MIDAS のデータ処理モデル、保存方式、外部通信、暗号化、ライセンス条件を説明します。
データの処理場所
CSV の読み込み、統計量の計算、グラフの描画、回帰モデルの推定など、すべてのデータ処理はブラウザ内で実行されます。ユーザーが読み込んだファイルの内容、分析結果、プロジェクトのデータを受け取るサーバーはなく、これらがネットワークに出ることはありません。MIDAS が自ら外部へ送信するのは 利用状況の送信 に挙げたイベントだけで、そこにユーザーのデータは含みません。
データの保存場所
| 保存先 | 用途 | 永続性 |
|---|---|---|
| OPFS (Origin Private File System) | プロジェクトファイルの保存 | ブラウザのサイトデータ消去で削除 |
| IndexedDB | 署名鍵の保存 | ブラウザのサイトデータ消去で削除 |
| localStorage | アプリケーション設定の保存 | ブラウザのサイトデータ消去で削除 |
| ユーザーのファイルシステム | エクスポートした MDS ファイル | ユーザーが管理 |
OPFS1、IndexedDB2、localStorage はブラウザが提供するストレージ API で、データは app.midas-app.org のオリジンに紐づきます。他のサイトや他のブラウザプロファイルからはアクセスできません。同一ブラウザプロファイルを複数人で共有している場合は、誰でもデータにアクセスできます。共有端末では OS のユーザーアカウントを分けるか、ブラウザのプロファイルを分けてください。
MIDAS は保存データの暗号化を行いません。ディスク上のデータ保護が必要な場合は、OS のディスク暗号化(BitLocker、FileVault など)を使用してください。OPFS と IndexedDB のデータはブラウザのプロファイルディレクトリ内に保存されるため、フルディスク暗号化の対象に含まれます。
外部通信
CSP による通信制限
アプリ (app.midas-app.org) には第三者のアクセス解析やトラッキングスクリプトはありません。CSP3 の script-src は、アプリ自身のオリジンから配信されるスクリプトのみを許可します。例外として、配信インフラの Cloudflare がボット検知のスクリプト (JavaScript Detections) を注入する場合があり、その際は CSP に該当スクリプトを許可する nonce が追加されます。ユーザーが読み込んだファイルやプロジェクトのデータが外部に送信されることはありません。
「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 が MIDAS 自身のオリジンと DuckDB 公式の拡張配布ホスト(extensions.duckdb.org)のみに制限されます。メインスレッド側の設定とは独立しており、Trusted URLs の設定を変えても Worker 内のコードが他のホストに到達することはできません。二段目の防御として、起動時に DuckDB の拡張機能の自動インストール・自動ロードを無効化しています。これにより httpfs 拡張がロードされないため、万一 CSP を回避する経路があっても read_csv('https://...') は外部 URL を解決できません。
利用状況の送信
ここまでの CSP は、アプリが意図しない外部通信を防ぐ仕組みです。これとは別に、MIDAS は機能改善のため、以下のイベントの発生を Cloudflare Workers Analytics Engine に自ら送信しています。
- ランチャー画面の表示
- プロジェクト画面の表示
- JavaScript の未処理エラー(エラーの種類を示すトークンを含む。例:
TypeError、RangeError)
各イベントには、アプリケーションのバージョン番号、リクエスト元の国/地域、User-Agent 文字列が付随します。国/地域と User-Agent はクライアントから送信せず、Cloudflare Workers が受信したリクエストから取得します。
ユーザーが扱うデータの内容、ファイル名、カラム名、使用した機能の名称、エラーメッセージ本文、スタックトレース、セッション ID は送信しません。個人の行動系列は復元できません。
ドキュメントサイトのアクセス解析
ドキュメントサイト (midas-app.org) ではアクセス解析に Cloudflare Web Analytics を使用しています。ページビュー、リファラー、国/地域、デバイス種別、ブラウザ種別、アクセス日時を収集します。Cookie は使用しません。
配信インフラ
アプリおよびドキュメントサイトは Cloudflare のインフラストラクチャを通じて配信されています。Cloudflare はこの過程でリクエスト情報(IPアドレスを含む)を処理・保持します。提供者はセキュリティ上の必要がある場合に限りこれらの情報を参照し、ユーザーの行動追跡やプロファイリングには使用しません。詳細はプライバシーポリシーを参照してください。
電子署名
エクスポートされる MDS ファイルには必ず電子署名が付きます。初めてエクスポートするときに署名者名を入力すると署名鍵が作成されます。ブラウザ内への保存には署名は付きません。
- アルゴリズム: ECDSA P-256 + SHA-256
- 実装: ブラウザの Web Crypto API4
- 鍵の保管: 署名鍵ペアは IndexedDB に保存されます。鍵がブラウザの外に送信されることはありません
署名により、ファイルを誰が作成したかを確認でき、署名後の改竄も検出できます。署名はファイルの内容を暗号化しません。署名者の名前は自己申告です。鍵の所有者が本人かどうかはフィンガープリントの照合で確認します。公開鍵基盤 (PKI) や認証局 (CA) との連携はなく、PGP の Web of Trust に近い信頼モデルです。
署名鍵はパスワード付きファイルとしてバックアップ・復元できます。バックアップファイルは AES-256-GCM で暗号化されます。暗号化鍵はパスワードから PBKDF2(SHA-256、100,000 回反復)で導出されます。詳しくは MDS ファイル と 署名鍵の管理 を参照してください。
署名バッジと信頼レベル
MDS ファイルを開くと、メニューバーの右端に署名バッジが表示されます。バッジが示すのはファイルの来歴(作成者と、編集して再エクスポートした人の全員)から決まる信頼レベルで、来歴に含まれる全員のうち最も低いレベルが表示されます。
- Official (緑): MIDAS に同梱された公式鍵による署名。ラベルは "Official"。
- Trusted (青): 信頼済みリストに登録済みの鍵による署名。ラベルは鍵を登録したときに付けた名前。
- Unknown (黄): 公式でも信頼済みでもない鍵が来歴に含まれる。ラベルは "Unknown"。
このブラウザで新規作成したプロジェクトには署名も来歴もないため、バッジは表示されません。開いた後に編集して保存すると、内容が署名されたファイルと一致しなくなったことを示す "(modified)" がラベルに付きます。
バッジをクリックすると、フィンガープリント全体、署名者名、署名日時、検証状態を確認できます。署名者名は、official なら公式の表示名、trusted なら登録時に付けた名前、unknown なら自己申告名(「(self-reported, unverified)」の注記付き)です。来歴に複数の署名者がいる場合は Provenance セクションに全員が表示されます。unknown の署名者はポップオーバーから鍵を登録でき、以降は信頼済みとして扱われます。
unknown 署名ファイルの扱い
MIDAS は既定では unknown 署名の MDS ファイルも確認ダイアログなしで開きます。バッジで unknown 状態を確認でき、フィンガープリントを照合してから鍵を信頼するか判断できます。
既定で警告なしに開けるのは、unknown 署名ファイルから外部サーバーに到達する経路 (DuckDB 拡張の自動ロードなど) を、信頼レベルによらず読み込み時点で塞いでいるためです。悪意ある MDS ファイルであっても、通常の分析フローで外向き通信を引き起こすことはできません。加えて、unknown 由来のプロジェクトでは Data Table のリンク表示が無効になり、ファイルに仕込まれたリンクを開かせる攻撃を防ぎます。この制限は編集して保存し直しても解除されません。
信頼できない相手から受け取る MDS を頻繁に開くなど、毎回明示的に確認したい場合は、Help > Settings... を開き Security タブで Require confirmation for unknown signers を有効にしてください。この設定を ON にすると、unknown 署名の MDS を開くたびに確認ダイアログが表示されます。ダイアログのボタンは Cancel・Trust this signer and open・Open 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 は第三者のオープンソースソフトウェアを組み込み、サンプルデータセットを同梱しています。組み込んだライブラリと、第三者が作成したサンプルデータセットのライセンスは Third-Party Licenses で確認できます。MIDAS が作成した合成データのライセンスはサンプルデータセットに記載しています。
ブラウザ要件
MIDAS は次のブラウザ API を使用します。
- WebAssembly5: DuckDB による SQL 実行
- OPFS (Origin Private File System): プロジェクトデータの保存
- IndexedDB: 署名鍵の保存
- Web Crypto API: 電子署名の生成と検証
- Service Worker6: オフライン対応 (PWA)
Chrome、Edge、Firefox、Safari の最新版で動作します。Internet Explorer には対応していません。
動作の検証は2つの方法で行っています。1つは自動テストで、Linux と Windows 上の Chromium (Chrome / Edge) を対象とします。もう1つは開発者自身による日常的な利用で、macOS 上の Firefox で確認しています。
See also
- MDS ファイル - プロジェクトファイルの構造と電子署名
- 署名鍵の管理 - 署名鍵の生成、エクスポート、信頼済み鍵の登録
- ストレージ管理 - プロジェクトの削除とストレージ容量の確認
- PWA・オフライン利用 - アプリとしてのインストールとオフライン利用
脚注
-
Origin Private File System (OPFS) | MDN - Web アプリケーションがオリジンごとに利用できるプライベートなストレージ領域 ↩
-
IndexedDB API | MDN - ブラウザが提供する構造化データの保存 API ↩
-
Content Security Policy (CSP) | MDN - Web ページが読み込めるリソースの出所を制限するセキュリティ機構 ↩
-
Web Crypto API | MDN - ブラウザが提供する暗号処理の標準 API ↩
-
WebAssembly | MDN - ブラウザ上でネイティブに近い速度でコードを実行できるバイナリ命令形式 ↩
-
Service Worker API | MDN - ブラウザのバックグラウンドで動作し、オフライン対応を実現するスクリプト ↩
このページの Markdown 版もあります。