web-dev-qa-db-ja.com

シークレット共有暗号化スキームの「現実の」実装はありますか?

ユーザーAが自分のファイルを復号化できるTrueCryptのようなものを想像してください。または、組織内の10人の取締役のうち3人がユーザーAのファイルを復号化できます。私が理解しているように、これは DNSSECルートキー に似ています。必須 wikientries 。秘密共有を利用したファイル暗号化の商用またはオープンソースの実装を知っている人はいますか?

17
scuzzy-delta

商用PGP製品には、少なくとも10年間この機能がありました。現在、この機能を備えています。

http://www.pgpi.org/doc/pgpintro/#p24 および http://www.symantec.com/business/support/index?page=content&id=HOWTO41916

6
Jeff Ferland

Ubuntu linuxの一部であり、Shamirの秘密の分割と結合を実装する、少なくとも2つの無料の実装があります。

  • gfshare: buntuマンページ:gfshare-gf(2 ** 8)でのShamir秘密共有の説明 は、任意のファイルを共有に分割できる秘密共有(gfsplitとgfcombine)の両方のツールを提供します。開発者が使用するライブラリ。

  • " ssss "パッケージは、共有するフレーズのセットに分割するために、128文字以下のパスフレーズの入力を求めるssss-splitプログラムを提供します。次に、ssss-combineプログラムは、十分な数の共有フレーズを要求し、秘密を出力します。

gfshareはファイルで直接機能しますが、ssssはパスフレーズを分割するために使用され、gpg、openssl、または別の暗号化ユーティリティで使用できます。したがって、gfshareは、ユースケースにとってはより単純に見えるでしょう。

21
nealmcb

これが私がPythonにまとめたShamirの秘密共有ライブラリです https://github.com/rxl/secret-sharing

シークレットを分割するのは本当に簡単です:

>>> from secretsharing import SecretSharer
>>> shares = SecretSharer.split_secret("c4bbcb1fbec99d65bf59d85c8cb62ee2db963f0fe106f483d9afa73bd4e39a8a", 2, 3)
['1-58cbd30524507e7a198bdfeb69c8d87fd7d2c10e8d5408851404f7d258cbcea7', '2-ecdbdaea89d75f8e73bde77a46db821cd40f430d39a11c864e5a4868dcb403ed', '3-80ebe2cfef5e40a2cdefef0923ee2bb9d04bc50be5ee308788af98ff609c380a']

...そして秘密を回復する:

>>> SecretSharer.recover_secret(shares[0:3])
'c4bbcb1fbec99d65bf59d85c8cb62ee2db963f0fe106f483d9afa73bd4e39a8a'

そして、ビットコインの秘密鍵やbase32のような秘密と共有のフォーマットをたくさんサポートしています:

>>> from secretsharing import BitcoinToZB32SecretSharer
>>> shares = BitcoinToZB32SecretSharer.split_secret("5KJvsngHeMpm884wtkJNzQGaCErckhHJBGFsvd3VyK5qMZXj3hS", 2, 3)
['b-aweuzkm9jmfgd7x4k595bzcm3er3epf4dprfwzpprqa3exbuocs9byn4owfuqbo', 'n-btetgqqu8doacarsbyfdzpyycyj6gfdeaaxrpfx33pdjk4ou1d5owjdmdi1iegm9', 'd-njh33f14q7smucmh8iq8uaewc8mzub3mzptrwsegfiz3hc1fozkkjtguc4trh6sq']
5
Ryan

物理的/ ITクロスオーバーには、緊急時のBreak Glassシナリオが付属しています-秘密の一部の所有者は金庫からそれらを取得し、短期間の緊急アクセス許可を承認するためにパスフレーズを一緒に入力します。これは、大規模な組織、特に金融サービスではかなり一般的です。

暗号化アルゴリズムがロックを解除するためにyキーのうちxキーを処理するという、純粋に技術的なソリューションの実際の実装を見たことがありません。

私が述べたブレークガラスシナリオのような単純なものに対する解決策としてそれを必要とするシナリオは何でしょうか。

4
Rory Alsop

Hashicorpの Vault は、ストレージバックエンドからシークレットを読み取り、復号化する 「開封」プロセス の一部としてShamirのシークレット共有を使用します。

私が現在働いている会社では、PGPを使用してこれを実施しています。主要なエスクロー手続きに使用されます。すべてを復号化できるマスターキーは、シールバッグのコンポーネントに格納されています。 3人が一緒になって初めて、他の人の秘密を解読できます。

2
Henri

キーの共有は、ハードウェアセキュリティモジュールでも使用されます。たとえば、管理者アカウントのロックを解除します。 Amazon CloudHSMのドキュメントでは、キーの共有についてかなりよく説明されています。 Amazon CloudHSM:About M of N

1

暗号化製品(atakama.com)にVSSを幅広く使用している会社で働いています。

このペーパーでは、この手法をかなりうまくまとめています: https://pdfs.semanticscholar.org/d229/92b176286979e53789a994a7547995d1e154.pdf

  • Atakamaのクラウド暗号化システムのキーは、「検証可能な」秘密の共有を使用して分割されます。

  • 係数のコミットメントは、素数のべき乗ではなく、楕円曲線DLPをセキュリティに依存しています。

VSSの価値(一般的に、私たちの使用例だけではありません)は、誰かが秘密を公開することなくセキュリティデバイスを追加および削除できることです-新しく構築された共有は元の秘密から派生することが保証されます。

これにより、攻撃者がしきい値スキームユーザーをだまして無効なキーを適用するのを防ぎます。 (これは、情報の漏洩を強制するために使用される可能性があります。)

0
Erik Aronesty