問題タブ [dpapi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# で KeyContainer に権限を設定しようとしても効果がない
NetworkService アカウントがキーにアクセスできるようにプログラムで許可するために、次のコードを使用しています。
このコードはエラーなしで実行されますが、キー コンテナーのアクセス許可には影響しません。
ただし、コマンドライン ツール aspnet_regiis を使用して同じことを行うと、完全に機能します。
完全な管理者権限で実行しています。これらの権限で実行していない場合、例外がスローされます。また、最初にキーを作成したユーザーとして実行しています。
キー コンテナには、常に次のアクセス ルールがあります。
aspnet_regiis を使用すると、SID S-1-5-20 がこのリストに追加されます。コードから影響を与えることはできません。
AddAccessRule の代わりに SetAccessRule を使用するだけでなく、sid からセキュリティ識別子を文字列形式で作成しようとしました。
コードからこの ACL リストに実際に影響を与える方法はありますか?
.net - 開発中の接続文字列の保護
開発中は接続文字列を保護する必要があります。サーバーでは、問題なく動作する DPAPI を使用します。多くのマシンで接続文字列を復号化する必要があるため、DPAPI は開発中のオプションではありません。
dev に使用されるユーザー名/パスワードの一部はかなり機密性が高く、それらが流出することは望ましくありません。すべての開発者がそれらを復号化できるのは問題ありません。他の誰かが開発構成ファイルを手に入れた場合、その人が接続文字列を復号化できないようにしたいだけです。外部の制約により、機密性の高いユーザー名/パスワードの代わりにすべてのサービス アカウントを使用することはできません。
私の最初の傾向は、RSA プロバイダーを使用して、証明書を暗号化し、開発マシンにインストールすることです。
私の質問は次のとおりです。
1) この問題にどのように取り組みますか?
2) RSA アプローチを採用している場合、これよりも最新のドキュメントはありますか?
ありがとう
iphone - IOS のキーチェーンを Windows の DPAPI と比較できますか?
iOS では、Windows で利用可能な暗号化/復号化 DPAPI 関数に相当する API を探しています (CRYPTPROTECT_LOCAL_MACHINE フラグが設定されていません)。
目的は、一部のアプリケーション データをローカルに永続化し、そのアクセスをアプリケーション自体のみに制限することです。
キーチェーン機能について読みましたが、辞書にはユーザーレベルのアクセス権があるようです (スマートフォンのログオン中にロック解除されます)。通常、独自のキーチェーンを持つなど、アプリケーションだけがその情報にアクセスできるようにしたいと考えています。
これに関するアドバイスはありますか?
windows - Windows ドメイン管理者は、私の DPAPI 暗号化ファイルを復号化できますか?
このように DPAPI を使用してパスワードを暗号化したい
そして、ドメイン管理者が生成されたBLOBを復号化できるかどうか疑問に思います 。
ただし、ドメイン環境では、ドメイン管理者がパスワードを安全に変更でき、暗号化されたファイルに引き続きアクセスできます。
ドメイン管理者は、別のパスワードを使用してデータを再暗号化できるようにするために、最初にデータ (または暗号化されたマスター キー) を復号化する必要があるようです。
asp.net - DPAPI を使用した安全な暗号鍵
同じドメイン内の別のユーザー アカウントで実行されている別の asp.net アプリケーションによって復号化される機密データを暗号化する asp.net アプリケーションを作成しています。
DPAPI を使用してキー管理を OS レベルに渡すという記事をたくさん読みました。
このシナリオで DPAPI を使用するにはどうすればよいですか? 暗号鍵をファイルやデータベースに保存したくありません。
c# - C#でのデータ暗号化とキー管理
どのルートを取るか、長所と短所は何ですか、どちらがより安全です。
1)AESキーを生成し、それを使用してデータを暗号化してから、RSAを使用してAESキーを暗号化し、暗号化されたデータと暗号化されたAESキーをファイルに保存し、RSAキーペアをKeyContainerに保存します。
2)または、DPAPI ProtectedDataクラスを使用してデータを暗号化し、ファイルに保存してから、使用したエントロピーProtectedData.Protect()
をどこかに保存します。(おそらく、RSAで暗号化し、RSAキーペアをKeyContainerに保存し、暗号化されたエントロピーをデータを含むファイル?)
編集:詳細については、アプリケーションのファイルシステムの使用を保護する必要があります。したがって、アプリケーションがファイルシステムに保存するファイルはすべて暗号化する必要があります。このファイルは、同じアプリケーションまたは同じアプリケーションスタックの別のコンポーネントによって使用されている可能性があります。
security - Microsoft Access 2010 と ODBC 接続文字列のセキュリティ
バインドされていないフォームで Microsoft Access 2010 を使用しています。リンクされたテーブルは許可されません。それ以外の場合、接続文字列はテーブル定義に格納されます。したがって、名前のないクエリ定義を使用して SQL SERVER にアクセスすることになります。これはマイクロソフトが推奨しています。ただし、どこかから接続文字列を取得する必要があります。そのため、難読化された名前のメソッドから返すことをお勧めします。アプリケーション ソースに接続文字列をプレーン テキストで埋め込まないことをお勧めします。そのため、暗号化を使用します。
これを行う良い方法は、アプリケーションの最初の実行時にアプリケーション管理者に接続文字列を定義するように要求し、この msdn の記事に従ってください。
...アプリケーションを実行するアカウントのユーザー固有のキーを使用して DPAPI を介してその値を暗号化し、暗号化された値を Windows レジストリに保存します。
accde は、ログオンした Windows ユーザー アカウントから起動します。その後、アプリ管理者は、上記の推奨事項に従って、ログインしてデータベースへの接続をセットアップできます。
私が今持っているように見える最も弱いリンクは、Windowsユーザーアカウントです。セキュリティスキームの実装を知っていれば、そのアカウントにログインした人は誰でも接続文字列を解読できたようです。これは、システムがまだ十分に安全でないことを意味します。
新しい Windows ユーザーを作成することもできますが、それはそのユーザーのパスワードを安全に保管する必要があることを意味します。つまり、秘密情報にアクセスするために使用されるパスワードを保護するという、正方形 1 に戻ることを意味します。
もっと簡単な方法があるはずです。アイデアはありますか?
c# - どうすればエントロピーを保護できますか?
DPAPIは機密情報の保護に最適です。残念ながら、DPAPI の「オプションのエントロピー」は基本的に、保護しなければならない別の機密情報です。皮肉。
推測するのが難しい、使用できる「エントロピー」の可能性のある(卑劣な)ソースは何ですか? あるいは、どうすればエントロピーを保護できますか? ステガノグラフィかな?
参考までに: 私はエントロピー自体に完全に依存しているわけではありません。他の障害と暗号化のレイヤーがあります。別の障害物を置きたいだけです。
追加の参考情報: これは、私がパラノイアと好奇心から保護している個人的なプロジェクトです。
.net - ProtectedData.Unprotect メソッドが復号化に失敗する
データベースへの接続に使用するパスワードを復号化する必要があるビルド プロセスがあります。PowerShell を使用して、データ保護 API (DPAPI) を使用して、ビルド サーバーのマシン スコープでパスワードを暗号化しています (自分のドメイン アカウントでログインしています)。
復号化は、ビルド ユーザーとして実行される CruiseControl.NET によって実行される PowerShell スクリプトでも行われます。
ただし、への呼び出しUnprotect
は失敗し、次のメッセージが表示されます。 docs によると、このエラーは偽装を使用して発生する可能性があり、偽装コードはユーザーのプロファイルをロードする必要があります。
セキュリティ上の理由から、ビルド ユーザーは、ターミナル サービスを介してログオンする権利を拒否されています。この問題をテストするために、ビルド サーバーに自分自身としてログインし、runas を使用してビルド ユーザーとして PowerShell プロンプトを開きました。
次に、PowerShell スクリプトを実行してパスワードの保護を解除/復号化すると、同じエラーが発生します。
Process Monitorを使用して障害やアクセス拒否イベントを監視しましたが、何もありませんでした。
自分のドメイン アカウントでログインすると、パスワードを解読できます。
どうしたの?ビルド ユーザーのプロファイルが読み込まれていませんか? これを有効にするために、私が知らないセキュリティ設定がどこかにありますか? パスワードを解読できないのはなぜですか?
c# - データの署名と検証に DPAPI を使用する
現在、.NET 4.0 C# 環境で署名/検証を実装する最善の方法を理解しようとしています。
私の要件は、自分のシステム内で 1 人の「ユーザー」としてデータに署名できるようにすることです。後で、そのデータは消費者によって検証される必要があります。
これを達成するために、私は証明書を使用しようとしていますが、これが私が苦労し始めるところです。私の混乱の1つの側面は、DPAPIを証明書管理に使用できるとアドバイスされたことですが、DPAPIドキュメントを読むと、ローカルホスト/ユーザーの任意のデータを保護/保護解除する方法しか提供していないようです. このデータはたまたま秘密鍵である可能性がありますが、特に証明書を扱うわけではありません。
最初の質問は、DPAPI は何らかの形でローカル証明書ストアまたはその他の証明書管理ソリューションにリンクしていますか?
コードが証明書を見つける必要がなく、代わりに、(データ ソースで) 署名されるか (コンシューマーで) 検証される便利な API にデータを渡すだけであることが望まれました。
コメントをお待ちしております。