2017-11-29 13 views
0

近日中にGDPRの規制に照らして、私が働く会社は、暗号アルゴリズムをアップグレードし、以前よりも大幅に多くのデータを暗号化することを検討しています。これを世話するように任命された人物として、私はAES-256で古いCAST-128暗号化(私は暗号化と言いますが、ハッシュ化、塩分化されずに毎回同じ暗号化の結果になった)を置き換え、データを移行します。ただし、暗号化キーはアプリケーションではまだハードコードされており、逆アセンブラで数分以内に抽出可能です。DPAPI鍵の格納と復元

当社の製品はデスクトップアプリケーションであり、ほとんどのお客様が社内にインストールしています。彼らのほとんどは、独自のDBもホストしています。彼らは製品の全体をローカルに持っているので、鍵を確保することはかなり難しい作業のようです。

いくつかの調査の末、私は次のアプローチを採用することに決めました。インストール中に、すべての顧客に対してランダムな256ビットの鍵が生成され、AES暗号化を使用してデータを暗号化するために使用されます。キーは、ユーザーモードでDPAPIで暗号化されます。このモードでは、データにアクセスできる唯一のユーザーは、制限された権限を持つ新しく作成されたロックダウンされたドメインサービスアカウントで、マシンに実際にログインできません。暗号化された鍵は、レジストリのACLで編集された部分に格納されます。暗号化モジュールはそのユーザーを偽装してその機能を実行します。

問題は、キーがインストール時にランダムに生成され、すぐに暗号化されるため、私たちはそれを持っていなくても問題ではないということです。お客様がこのアカウントを削除したり、サーバーOSを再インストールしたり、他の方法でキーを紛失したりすると、データは回復不能になります。したがって、実際の質問は次のようになります。

私は、顧客がキーが格納されているレジストリをバックアップし、再インストールまたはユーザーの削除後でも同じユーザーアカウントが存在する限り、同じマシン上に同じパスワードで作成された場合、同じDPAPIの秘密が作成され、その鍵を解読できるようになります。しかし、私はこれらの秘密が最初にどのように生成されるのか分からないので、それが本当であるかどうかはわかりません。これが実際に起こっているかどうかは誰でも確認できますか?私は、あなたがより良いものを考えることができるならば、まったく異なるキーストレージアプローチの提案にもオープンしています。

答えて

0

GDPRとのリンクはありませんが、これは単なる文脈であるとしましょう。

これは、ユーザーアカウント、パスワード、およびマシンより多くを必要とします。 DPAPIによるデータの暗号化にEntropyが追加されました。

参照:https://msdn.microsoft.com/en-us/library/ms995355.aspx#windataprotection-dpapi_topic02

ログオンパスワードを使用しての小さな欠点は、すべてのアプリケーション は、彼らが知っている 任意の保護されたデータにアクセスすることができ、同じユーザーで実行されているということです。もちろん、アプリケーションは自分自身の の保護されたデータを保存する必要があるため、データへのアクセスは他のアプリケーションではやや難しいかもしれませんが、確かに不可能ではありません。 これに対抗するために、DPAPIでは、データ保護のために のデータを追加すると、アプリケーションで追加の秘密情報を使用することができます。この付加的な秘密は、データを の保護解除する必要があります。技術的には、この「秘密」は二次 エントロピーと呼ばれるべきです。データを暗号化するために使用される鍵 が強化されていないにもかかわらず、別の アプリケーションの暗号化鍵を妥協させるために、同じユーザの下で実行されている1つのアプリケーションの難しさが増すためです。アプリケーションは、これらのエントロピーをどのように使用して保存するかについて注意する必要があります。 単純に保護されていないファイル に保存されている場合、敵対者はエントロピーにアクセスしてアプリケーションのデータ保護を解除するためにそれを使用することができます。さらに、アプリケーションは、 ユーザーに のプロンプトを表示するためにDPAPIで使用されるデータ構造を渡すことができます。この「プロンプト構造」により、ユーザはこの特定のデータに対してさらに のパスワードを指定することができます。この構造については、DPAPIの使用のセクションでさらに について説明します。

関連する問題