---
title: プライバシーとセキュリティ
description: MIDAS のデータ処理・保存の仕組み、外部通信、電子署名、ライセンス条件、ブラウザ要件を集約しています。業務利用の判断材料として参照してください。
priority: 0.8
---

# プライバシーとセキュリティ {#privacy-and-security}

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

## データの処理場所 {#data-processing}

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

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

## データの保存場所 {#data-storage}

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

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

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

## 外部通信 {#external-communication}

アプリ (app.midas-app.org) には第三者のアクセス解析やトラッキングスクリプトはありません。CSP[^4] の `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 自身のオリジンと拡張リポジトリのみに制限されます。メインスレッド側の設定と独立して、Worker 内のコードが他のホストに到達することはできません。

本サービスは、機能改善のため、以下のイベントの発生を Cloudflare Workers Analytics Engine に送信します。

- ランチャー画面の表示
- プロジェクト画面の表示
- JavaScript の未処理エラー（エラーの種類を示すトークンを含む。例: `TypeError`、`RangeError`）

各イベントには、アプリケーションのバージョン番号、リクエスト元の国/地域、User-Agent 文字列が付随します。国/地域と User-Agent はクライアントから送信せず、Cloudflare Workers が受信したリクエストから取得します。

ユーザーが扱うデータの内容、ファイル名、カラム名、使用した機能の名称、エラーメッセージ本文、スタックトレース、セッション ID は送信しません。個人の行動系列は復元できません。

ドキュメントサイト (midas-app.org) ではアクセス解析に Cloudflare Web Analytics を使用しています。ページビュー、リファラー、国/地域、デバイス種別、ブラウザ種別、アクセス日時を収集します。Cookie は使用しません。

アプリおよびドキュメントサイトは Cloudflare のインフラストラクチャを通じて配信されています。Cloudflare はこの過程でリクエスト情報（IPアドレスを含む）を処理・保持します。提供者はセキュリティ上の必要がある場合に限りこれらの情報を参照し、ユーザーの行動追跡やプロファイリングには使用しません。詳細は[プライバシーポリシー](../../privacy-ja)を参照してください。

## 電子署名 {#digital-signatures}

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

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

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

署名鍵はパスワード付きファイルとしてバックアップ・復元できます。バックアップファイルは AES-256-GCM で暗号化されます。暗号化鍵はパスワードから PBKDF2（SHA-256、100,000 回反復）で導出されます。詳しくは [MDS ファイル](mds-file-format) と [署名鍵の管理](trusted-keys) を参照してください。

### 署名バッジと信頼レベル {#signature-badge}

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

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

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

### unknown 署名ファイルの扱い {#unknown-signatures}

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

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

信頼できない相手から受け取る 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* を選ぶと署名者名の入力欄が開き、そこで確定すると鍵を信頼済みに登録してそのままファイルを開きます。

### 鍵の設計判断 {#key-design-decisions}

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

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

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

## データの削除 {#data-deletion}

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

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

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

## デプロイ形態 {#deployment-model}

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

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

## ライセンスと商用利用 {#license-and-commercial-use}

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

## ブラウザ要件 {#browser-requirements}

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

- **WebAssembly**: DuckDB による SQL 実行
- **OPFS (Origin Private File System)**: プロジェクトデータの保存
- **IndexedDB**: 署名鍵・バックアップ設定の保存
- **Web Crypto API**: 電子署名の生成と検証
- **Service Worker**[^6]: オフライン対応 (PWA)
- **File System Access API**[^7] (任意): プロジェクトの[自動バックアップ](storage-management#backup-folder)。Chromium 系ブラウザ (Chrome, Edge 等) のみ対応。Firefox・Safari では利用できません

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

動作の検証は2つの方法で行っています。1つは自動テストで、Linux と Windows 上の Chromium (Chrome / Edge) を対象とします。もう1つは開発者自身による日常的な利用で、macOS 上の Firefox で確認しています。

[^1]: [WebAssembly | MDN](https://developer.mozilla.org/en-US/docs/WebAssembly) - ブラウザ上でネイティブに近い速度でコードを実行できるバイナリ命令形式
[^2]: [Origin Private File System (OPFS) | MDN](https://developer.mozilla.org/en-US/docs/Web/API/File_System_API/Origin_private_file_system) - Web アプリケーションがオリジンごとに利用できるプライベートなストレージ領域
[^3]: [IndexedDB API | MDN](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API) - ブラウザが提供する構造化データの保存 API
[^4]: [Content Security Policy (CSP) | MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP) - Web ページが読み込めるリソースの出所を制限するセキュリティ機構
[^5]: [Web Crypto API | MDN](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) - ブラウザが提供する暗号処理の標準 API
[^6]: [Service Worker API | MDN](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) - ブラウザのバックグラウンドで動作し、オフライン対応を実現するスクリプト
[^7]: [File System Access API | MDN](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API) - Web アプリケーションからユーザーのローカルファイルシステムを読み書きする API

## See also {#see-also}

- **[MDS ファイル](mds-file-format)** - プロジェクトファイルの構造と電子署名
- **[署名鍵の管理](trusted-keys)** - 署名鍵の生成、エクスポート、信頼済み鍵の登録
- **[ストレージ管理](storage-management)** - プロジェクトの削除とストレージ容量の確認
- **[PWA・オフライン利用](pwa-offline)** - アプリとしてのインストールとオフライン利用
