この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 2915|答える: 0

[出典] ASP.NET Core(22)はIDataProtectionProviderのデータ保護に基づいています

[リンクをコピー]
掲載地 2023/08/15 10:21:16 | | | |
要件:開発過程では、暗号化や復号化のシナリオに遭遇することがあります。例えば、メール認証では暗号化された文字列が搭載され、ユーザーがリンクをクリックしてインターフェースにジャンプすると、システムは通常通り文字列内容を復号し、メール認証機能を実現します。

PowerShell<machineKey>を使って要素を生成する
https://www.itsvse.com/thread-10644-1-1.html

machineKey でデータを暗号化 ASP.NET
https://www.itsvse.com/thread-9535-1-1.html

ASP.NET machineKeyの役割とその使い方
https://www.itsvse.com/thread-2705-1-1.html

ASP.NET Coreはデータ保護機能を提供しています:ハイパーリンクのログインが見えます。

メインパッケージ

データ保護に関わる主なパッケージは以下の通りで、必要に応じて参照されています。

  • Microsoft.AspNetCore.DataProtection.Abstractionsの標準。 NET CORE抽象化層のコンポーネントパッケージ命名。 IDataProtectionProviderやIDataProtectorなどの主要なインターフェースサービスが含まれています。
  • Microsoft.AspNetCore.DataProtectionには、コアとなる暗号操作、鍵管理、設定、拡張性が含まれます。
  • Microsoft.AspNetCore.DataProtection.Extensions 拡張。 インスタンス作成のためのファクトリーメソッドとキーのストレージ拡張メソッドを提供します。 このパッケージは非DIモードで使用されます。
  • Microsoft.AspNetCore.DataProtection.SystemWebは<machineKey>、ASP.NET 4.xの暗号化および復号メカニズムとの互換性を実装しています。
  • Microsoft.AspNetCore.Cryptography.KeyDerivationは、PBKDF2パスワードハッシュルーチンの実装を提供します。 ハッシュ暗号化が必要なときに使ってください。


IDataProtectionProviderとIDataProtectorの違い

IDataProtectionProviderはMicrosoftのProviderモデルに基づいており、インスタンス作成のためのポリシーを提供します。 IDataProtectorオブジェクトはIDataProtectionProvider.CreateProtector(purpose)メソッドを呼び出して作成します。
IDataProtectorは暗号化と復号を担当するサービスで、主に保護とアンプロテクトの2種類の手法を提供します(それぞれに多くのオーバーロードおよび拡張メソッドがあります)。 簡単に言うと、protectは暗号化に使われ、unprotectは復号化に使われます。
IDataProtectionProviderのCreate メソッドパラメータは、分離機能を提供する文字列です。 パスできない文字列で作成されたIDataProtectorは、同じオブジェクトを暗号化していても異なる暗号化結果を得ます。 IDataProtector自体も暗黙のIDataProtectionProviderであり、CreateProtector(purpose)メソッドも提供しています。 つまり、簡単に実装できるということですマルチテナントアプリケーションモード



以下に覚えておくべきポイントをいくつか挙げます。

IDataProtectionProviderおよびIDataProtectorインスタンススレッド安全ターゲット。
アンプロテクトメソッドは、復号が失敗したことを例外をスローして呼び出し元に通知することです。 例外クラスはCryptographicExceptionです。

ASP.NET Coreは使いやすいデータ保護です

データの暗号化と復号を行う新しいインターフェースが追加され、コードは以下の通りです。

テストは以下の通りです:



IDataProtectionProviderは、以下のコードを持つシングルトンパターンです:ハイパーリンクのログインが見えます。



キー管理

ユーザープロファイルが利用可能であれば、キーは%LOCALAPPDATA%\ASP.NET\DataProtection-Keysフォルダ。 OSがWindowsの場合、鍵はDPAPIを使って静止状態で暗号化されます。 以下に示すように:



鍵の寿命

デフォルトでは、キーライフサイクルは90日です。 キーが期限切れになると、アプリケーションは自動的に新しいキーを生成し、そのキーをアクティブなキーとして設定します。 無効化された鍵がシステム上に残っている限り、アプリケーションはそれらによって保護されたデータを復号できます。 詳細については、キー管理をご覧ください。ハイパーリンクのログインが見えます。

デフォルトアルゴリズム

デフォルトで使用される負荷保護アルゴリズムはAES-256-CBC(機密性)とHMACSHA256(真正性)です。 90日ごとに変更される512ビットのマスターキーは、各ペイロードに基づいてこれらのアルゴリズムの2つのサブキーを導出するために使われます。

ASP.NET Coreにおけるキーストレージプロバイダー

ファイルシステム:PersistKeysToFileSystem
Azure Storage: PersistKeysToAzureBlobStorage, this needs reference: Azure.Extensions.AspNetCore.DataProtection.Blobs
Redisストレージ:PersistKeysToStackExchangeRedis、参照が必要:Microsoft.AspNetCore.DataProtection.StackExchangeRedis。

参考:ハイパーリンクのログインが見えます。

クラスタ化および分散型

サーバー鍵が一貫していない場合、例えばサーバーAの暗号化とサーバーBの復号化が不一致の場合、例外が投げ出されます(下図参照)、同じ鍵を展開する必要があります。



同じキーを次のように設定します:

プログラムが実行されると、publish_itsvseフォルダーの下に自動的にキー*.xmlキーファイルが生成されますこのファイルを異なるサーバーで一貫性を持っておきましょう! 以下に示すように:



ASP.NET コア保護構成

ASP.NET COREは豊富なAPIサポート、パスワードの永続性、設定、カスタマイズ機能を提供します。

  • PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Azureクラウドストレージのシナリオ。
  • PersistKeysToFileSystem。 暗号化アルゴリズム、鍵、依存関係を記録するローカルファイルシステムのストレージ方式。
  • ProtectKeysWith*。 暗号化はこの命名方法の拡張によって提供されます。 例えば、ProtectKeysWithCertificate(ProtectKeysWithCertificate)
  • SetDefaultKeyLifetime。 キーの寿命をデフォルトで90日に設定してください。
  • SetApplicationName。 アプリ名を設定してください。 デフォルトでは、データ保護の仕組みは各アプリケーションから完全に隔離されています。 アプリ間でキー共有は、同じアプリ名を設定することで実現できます。
  • DisableAutomaticKeyGeneration。 キーが自動的にロールバックされるのを防ぎましょう。 多くの場合、パスワードを変更したりクラスタサービスに入らせたりしたくはなく、キーアップデートのロールバックを担当する専用サービスがあり、他のペイロードは共有場所から取得すればよいだけです。
  • UseCryptographicAlgorithms。 カスタム暗号化および復号アルゴリズムを使用してください


参考:ハイパーリンクのログインが見えます。





先の:PowerShellを使って&lt;machineKey&gt;要素を生成してください
次に:ジオネットワーキングソリューションとしては、Tailscale、ZeroTier、WireGuard、OmniEdge、Ngrokを比較してください
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com