世界を動かす技術を、日本語で。

HNに表示: 記憶を失った場合、コンピュータへのアクセスを取り戻す方法は?

概要

  • Shamir's Secret Sharingage暗号化 を組み合わせたファイル暗号化・復号ツール
  • 復号キーを 信頼できる友人 に分割配布し、閾値以上の協力でのみ復元可能
  • 完全オフライン動作 ・自己完結型バンドル、サーバーやインターネット不要
  • オープンソース で、コードと設計思想はGitHubで公開
  • デモバンドルを使った 2分間体験 が可能

Shamir's Secret Sharingベースのファイル暗号分割ツール

  • ファイルを 暗号化 し、復号キーを 複数の友人 に分割配布
  • 例:5人に分割、うち3人が協力すれば復号可能な設定
  • 単独の友人 ではデータにアクセス不可
  • それぞれの友人には recover.html を含む自己完結型バンドルを配布
    • recover.htmlは ブラウザでオフライン実行、インターネット不要
    • サイトが消滅しても 復元機能 は維持
  • ファイル暗号化 → キーを5分割 → 友人に配布
    • 任意の3人が シェアを結合 → 復号 → ファイル復元
  • 組み合わせ自由な 復号プロセス (例:5人中3人)

本ツールの特徴と非対応事項

  • 特徴

    • ブラウザ上で動作する完全オフラインツール
    • リカバリーキーを友人間で分割管理 可能
    • オープンソース (Apache-2.0ライセンス)
    • 自己完結型 バンドルで、サイト不要で復元可能
  • 非対応事項

    • サービスや企業 ではない
    • アカウントシステムやクラウド製品 ではない
    • データ保存機能 は持たない
    • 単体でバックアップソリューション にはならない

2分で体験できるデモ手順

  • デモバンドル (3つのサンプルバンドル)をダウンロード
  • bundle-alice/recover.html をブラウザで開く
  • BobとCarolのREADME.txt をページにドラッグ&ドロップ
  • 閾値到達で自動復号 の動作確認
  • 友人による 実際の復元体験 をシミュレーション可能

信頼性・検証性・技術的背景

  • オープンソースコード はGitHubで公開
  • 暗号設計の自己監査ドキュメント を同梱
  • すべてローカル実行、ファイルは端末から出ない
  • まずデモバンドルで挙動確認 を推奨
  • age を暗号化エンジンに採用(現代的・高評価)

開発背景

  • 事故や記憶喪失時 も大切なデータにアクセスできる仕組みの必要性
  • 単独の人やサービス に全てを委ねない設計思想
  • Shamir's Secret Sharing の利点活用
  • 友人が協力して簡単に復元できる自己完結型ツール がなかったため自作
  • 同様のニーズを持つ他者の役にも立つ ことを期待し公開

個人的な動機と実装技術

  • 自転車事故による脳震盪 でログイン情報喪失リスクを実感
  • Hashicorp Vault実装のShamir's Secret Sharingage暗号化 の組み合わせ
  • WASMパッケージ でオフライン・ブラウザUX実現
  • 5人中3人や7人中5人 など、柔軟な閾値設定
  • 家族や友人が協力して重要データを復元 できる安心感
  • デモはウェブサイトで即体験可能、全てブラウザ内動作

Hackerたちの意見

ローテクだけど、秘密のパスワードは物理的なジャーナルに書いてるんだ。それを耐火・防水の金庫に入れて、パートナーと私だけが知ってる場所に隠してる。パスワードマネージャーも使ってるよ。他のことは全部パスワードマネージャーに入れてる。

一般的に、死んだときのバックアッププランはこのシナリオにも使えるかもしれないね。死んだときに明かしたくないことについて、もうちょっと考える必要があるかも。

代替案として、パートナーと私(あと2人の親しい友人も)でお互いの秘密を含むパスワードマネージャーを持ってる。これは記憶喪失のシナリオを助けるためというより、死後のサービスへのアクセス(特にサブスクリプションの停止とか)を考えた結果だね。信頼度が低い場合は、弁護士を秘密の仲介者として使うのもアリかも(遺言の一部として)。

これだね。物理的な金庫はデジタルではできないことを提供してくれる。認証情報なしで入るのは難しいけど、不可能ではない。インターネットでは、誰でもアクセスできるか、何かがうまくいかないと復元不可能になるかのどっちかだよね。

俺もそうしてるけど、「耐火性」には注意が必要だよ。家が全焼するような火事だと、耐火の銃器保管庫や小さい耐火ロックボックスも壊れちゃうし、壊れなくても中身が熱くなりすぎて燃えちゃうからね。銀行の貸金庫は、火事に対してもっと頑丈なセキュリティを提供してくれるかも。銀行は家より燃えることが少ないからね。火に対して本当に頑丈にするには、数フィート埋めるくらいじゃないと実現できないかも。

確かに、シンプルな方がいいこともあるよね。俺はいつも動き回ってるから、金庫はあまり合わないんだ。何かが起こることが心配でもあるしね。一つのバスケットに全ての卵を入れないっていう原則でやってるんだ。

ああ、友達が昔これを作ったんだよね。 https://michael-solomon.net/keybearer https://github.com/msolomon/keybearer

まじで!?こんな解決策を探してたんだ。多くはシャミールを使って暗号化できるけど、実際にブラウザからファイルをアップロードできて、使いやすいUXを持ってるのはなかったんだよね。14年前?ほんとにすごいよ、友達。俺のZIPバンドルはWASMのせいで1-2メガバイトなんだけど、君はこんな少ないサイズで達成したんだね。素晴らしい仕事だよ!俺のについても聞きたいな。違いの一つは、リカバリーアプリを含むZIPファイルを作成して、技術に詳しくない友達向けの説明書もPDFで用意してることなんだ。全体的に、リカバリー体験をできるだけスムーズにしようとしてるんだ。でも、君のバージョンは俺が見つけた中で唯一、基本的に俺のやってることを実現してるものだよ。他はどこかで足りてないんだ。

いいね!私の変なアイデアを使ってみるのもいいかも。パスワードの一部を送信する前に捨てたり変更したりできるんだ。ログインするとき、サーバーはその欠けた部分を総当たりで探すことになる。ペットや車の数とか、2024年の車の色みたいなセキュリティ質問を追加することもできる。これを使って総当たりを助ける。目標は、5つ未満のシャードで復号できるようにすることだけど、計算負荷は好きなだけ重くできる。もし誰もピンクの車を覚えてなかったら、x時間余計にかかるよ。

おお、それは厳しいね(笑)!一応、私のアプリは完全にクライアントサイドで動いてるけど、面白いアイデアだね…

「キー強化」や「ペッパリング」についての面白い考え方だね。

それはセキュリティ質問を回りくどくやる方法みたいだね…。

Hacker Newsで議論の続きを見る