署名鍵の管理

MDS ファイルの署名と検証に使用する鍵の管理方法を説明します。

概要

MIDAS からエクスポートした MDS ファイル には電子署名が付与されます。 電子署名により、受け取った人はその MDS ファイルを誰が作成したかを確認できます。出どころの確かな分析かどうかを判断する手がかりになります。

MDS ファイルを信頼するかどうかは署名者の信頼レベルによって変わります。 信頼レベルは3種類あります。

信頼レベル説明
OfficialMIDAS の提供者の鍵による署名
Trusted自分の鍵(自己署名)または登録済みの公開鍵による署名
Unknown未登録の署名者による署名

自己署名のファイルが Trusted と表示されるのは、署名した本人の端末で開いた場合に限ります。受け取った相手の端末では、相手があなたの公開鍵を登録していなければ Unknown と表示されます。信頼レベルは既定ではファイルを開けるかどうかには影響せず、Unknown のファイルも警告なしで開きます。詳しくは 未知の署名者の MDS を開く を参照してください。

鍵ペア(秘密鍵と公開鍵の組)はブラウザの IndexedDB に保存されます。ブラウザのサイトデータを消去すると鍵ペアも削除されます。鍵を失うと同じ鍵で署名を続けられなくなるため、早めに バックアップ を作成してください。署名鍵の管理は Settings ダイアログの Signing Keys タブで行います。メニューバーから Help > Settings... を選択し、Signing Keys タブをクリックしてください。

Signing Keys タブの画面

電子署名の仕組み

MDS ファイルの電子署名は公開鍵暗号に基づいています。署名者は秘密鍵でファイルに署名し、受け取り側は署名者の公開鍵で検証します。ファイルの内容が署名後に変更されると検証に失敗するため、改竄や破損を検出できます。

電子署名が確認できるのは、ファイルを誰が作成したかです。署名が有効でも、その作成者を信頼してよいかや、ファイルの内容そのものが安全であることまでは保証しません。

秘密鍵は自分の端末だけに保管し、他人に渡さないでください。相手に渡すのは Export Public Key で出力される公開鍵ファイルだけです。鍵ペアのバックアップファイルには秘密鍵が含まれるため、共有相手に渡してはいけません。

署名はファイルの内容を暗号化しません。MDS ファイルを入手した人は、署名の有無にかかわらずファイルの内容を読めます。ファイルの機密性が必要な場合は、OS のディスク暗号化や別途の暗号化手段で保護してください。

署名に含まれる署名者名は自己申告です。本人の鍵かどうかは名前ではなく フィンガープリントの照合 で確認します。

MIDAS には鍵の集中管理サーバーがありません。信頼レベルは、受け取り側が署名者の公開鍵を登録しているかどうかで決まります。署名者が自分の端末で鍵を削除・再生成しても、受け取り側の登録状況や既存の MDS ファイルの検証結果には影響しません。新しい鍵を使ってもらうには、改めて公開鍵を配布してください。

フィンガープリントの照合

フィンガープリントは公開鍵から計算される 32 桁の16進数で、公開鍵を一意に識別します。登録しようとしている公開鍵が確かに相手本人のものかを、フィンガープリントの照合で確認できます。

照合の手順:

  1. 送り手が Help > Settings... を開き Signing Keys タブの My Signing Key セクションでフィンガープリントを確認し、本人のサイトやメールの署名欄など、公開鍵ファイルとは別の場所に掲示する
  2. 受け取り側が Register Trusted Key ダイアログに表示されるフィンガープリントと、掲示されたフィンガープリントを照合する

両者が一致すれば、登録しようとしている公開鍵が確かに本人のものだと確認できます。

署名検証の失敗

ファイルの内容が署名後に変更されると、署名との整合性が崩れ、検証に失敗します。メール添付やクラウドストレージでの転送中にファイルが破損した場合も同様です。検証に失敗した MDS ファイルは開けません。送り手にファイルの再送を依頼してください。

検証の失敗は、署名者が未登録であること(Unknown)とは異なります。Unknown は署名自体は正しく、ファイルは開けます。検証の失敗は署名が暗号的に無効、またはファイルが破損している場合で、ファイルを開けません。

自分の鍵ペアを管理する

新しい鍵を生成する

初めて MDS ファイルをエクスポートするとき、エクスポートのダイアログで署名者名を入力すると鍵ペアが作成されます。手動で生成する場合は、Signing Keys タブで Generate New Key ボタンをクリックします。鍵ペアが既に存在する場合、このボタンは無効になります。新しい鍵を生成するには、先に既存の鍵を削除してください。鍵を生成したら、早めにバックアップを作成してください。

署名者名は署名に含まれ、他のユーザーがファイルを開いたときに表示されます。

公開鍵をエクスポートする

他のユーザーに公開鍵を共有するには、Export Public Key ボタンをクリックします。JSON 形式のファイルがダウンロードされます。

このファイルを MDS ファイルを共有したい人に渡すことで、共有相手が MDS ファイルを開く際に、その MDS ファイルの作者が確かにあなたであると検証できるようになります。

公開鍵ファイル自体は秘密ではないため、メール添付や社内のファイルサーバーで渡して構いません。受け取り側が本人の鍵だと確認できるよう、フィンガープリントを本人のサイトやメールの署名欄に掲示しておくとよいでしょう。

鍵ペアをバックアップする

鍵ペアを別のブラウザやデバイスに移行するには、バックアップを作成します。

  1. Backup Key Pair ボタンをクリック
  2. パスワードを入力(復元時に必要)
  3. パスワードを再入力して確認
  4. Export ボタンをクリック

バックアップファイルのうち秘密鍵は、MIDAS がパスワードで暗号化します。MIDAS は入力されたパスワードから暗号化鍵を導出し、その鍵で秘密鍵を暗号化します。鍵の導出にはパスワードから鍵を作る方式 PBKDF2 を反復回数 100,000 回で、暗号化には AES-256-GCM を使います。署名者名、フィンガープリント、公開鍵、鍵の作成日時は、MIDAS が暗号化せずにファイルへ書きます。パスワードを忘れると復元できなくなるため、パスワードの控えを安全な場所に保管してください。

バックアップから復元する

バックアップから鍵ペアを復元するには、Import Key Pair ボタンをクリックします。これは他者の公開鍵を登録する Import Public Key とは別のボタンです。

  1. バックアップファイル(.json)を選択
  2. バックアップ時に設定したパスワードを入力
  3. Import ボタンをクリック

既存の鍵ペアがある場合、確認なしで上書きされます。上書きすると元の鍵は失われ、その鍵で署名した既存の MDS ファイルは以後 Trusted として扱われなくなります。インポート前に現在の鍵を バックアップ してください。

署名者名を変更する

My Signing Key セクションで名前の横にある Edit ボタンをクリックすると、署名者名を変更できます。変更が反映されるのは以降のエクスポートだけです。ブラウザへの保存は署名しないため、署名者名を使いません。エクスポート済みの MDS ファイルに含まれる署名者名は変わりません。

鍵ペアを削除する

Delete Key ボタンをクリックすると、鍵ペアを削除できます。事前に バックアップ を取っていない場合、削除した鍵は復元できません。削除後に新しい鍵を生成すると、以前とは異なるフィンガープリントになります。新しい鍵で署名したファイルを相手に Trusted として扱ってもらうには、改めて新しい公開鍵を配布してください。

他者の公開鍵を登録する

他のユーザーから受け取った公開鍵を登録すると、そのユーザーの署名を信頼済み(Trusted)として扱えます。

公開鍵をインポートする

  1. Trusted Keys セクションで Import Public Key ボタンをクリック
  2. 公開鍵ファイル(.json)を選択
  3. フィンガープリントを確認
  4. 識別用の名前を入力
  5. Register ボタンをクリック

Register Trusted Key ダイアログ

フィンガープリントを照合して公開鍵の真正性を確認してください。手順はフィンガープリントの照合で説明しています。

登録した鍵の名前を編集する

Registered 鍵の一覧で鍵をクリックすると詳細が表示されます。Edit ボタンをクリックして名前を変更できます。

登録した鍵を削除する

Registered 鍵の一覧で Remove ボタンをクリックすると、登録を解除できます。解除後、その鍵による署名は Unknown として扱われます。

公式鍵について

Trusted Keys セクションの Official には、MIDAS の提供者の鍵が表示されます。公式鍵による署名は常に信頼済みとして扱われます。公式鍵は MIDAS アプリ本体に組み込まれており、ユーザーの登録操作を必要としません。

公式鍵は編集・削除できません。

未知の署名者の MDS を開く

MIDAS は既定では署名者が Unknown の MDS ファイルを確認ダイアログなしで開きます。これは、MIDAS が MDS ファイルを読み込んだだけでは外部サーバーへ通信しないためです。MDS ファイルの内容から外部へ通信しうるのは、列に設定した リンク表示 のリンク先 URL、レポート本文の Markdown リンク、Reload Dataset によるインポート元 URL の再取得、SQL クエリの 4 つです。信頼レベルが Unknown のプロジェクトでは、MIDAS は列のリンク表示とレポート本文の Markdown リンクを無効にし、列の値とリンクのテキストをそのまま表示します。どちらのリンクも、リンクになるのはスキームが http または https の URL だけです。Reload Dataset の再取得は信頼レベルによらず使えますが、ユーザーがクリックしたときだけ通信します。再取得には URL からのインポートと同じ制限(HTTPS のみ、転送先を取得しない、厳格モードでの拒否)が効きますが、信頼済み一覧にない URL の警告は表示しません。SQL クエリによる外部 URL の読み取りは、DuckDB に適用される CSP が拒否します。

現在開いているプロジェクトの信頼レベルは、メニューバー右端の署名バッジで確認できます。バッジは、Official では Official を、Trusted では署名者名を、Unknown では Unknown を表示します。署名後にプロジェクトを編集すると (modified) が付きます。新規作成したプロジェクトには署名がないため、バッジは表示されません。バッジをクリックすると、署名者名、フィンガープリント、署名日時を表示します。URL から開いたプロジェクトではその URL も、複数の署名者を経たファイルでは 来歴 の一覧も表示します。署名者が Unknown のときは、この表示の Trust this signer でその署名者をその場で信頼済みとして登録できます。

信頼レベルが Unknown のためにリンクを無効にしている画面には、MIDAS がその理由と、Unknown の署名者を信頼登録すればリンクが有効になることを警告として表示します。Data Table、Filtered Data、Contributing rows の各タブでは、表示中のデータセットにリンク表示の列があるときに表の上へ警告を表示します。レポートでは、本文にスキームが http または https のリンクがあるか、本文に載せたデータテーブルの表示列にリンク表示の列があるときに本文の上へ警告を表示します。Reading View には署名バッジがないため、警告を表示しません。

プロジェクトの信頼レベルは 来歴 に含まれる全員の信頼レベルのうち最も低いものなので、Unknown の署名者は最後に署名した人とは限りません。最後の署名者が Unknown のときは、署名バッジの表示の Trust this signer で登録します。来歴の途中の署名者が Unknown のときは、同じ表示の来歴一覧でその署名者の Trust をクリックして登録します。Unknown の署名者をすべて登録すると、プロジェクトを開き直さなくても警告が消えてリンクが描画されます。

共有相手から MDS ファイルを受け取る前に、相手の公開鍵を信頼済みとして登録しておくことを勧めます。登録後は、その鍵で署名されたファイルを MIDAS は Trusted として扱います。

Unknown の署名で確認ダイアログを出す

毎回明示的に確認したい場合は、Help > Settings... を開き Security タブで Require confirmation for unknown signers を有効にしてください。有効にすると、MIDAS は最後に署名した人が Unknown の MDS ファイルを外部から開くたびに確認ダイアログを表示します。判定に使うのは最後の署名者だけで、来歴の途中に Unknown の署名者がいても最後の署名者が Trusted ならダイアログは出ません。ブラウザに保存済みのプロジェクトを開き直すときも出ません。

ダイアログは自己申告の署名者名とフィンガープリントを表示し、次の 3 つの選択肢を示します。

  • Cancel: ファイルを開かずにダイアログを閉じる
  • Trust this signer and open: 識別用の名前を入力して鍵を信頼済みに登録し、そのままファイルを開く
  • Open Anyway: 今回だけ、鍵を登録せずに開く

署名者名は自己申告なので、本人の鍵かどうかは フィンガープリントの照合 で確かめてください。

See also