「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-戻る
--[[.NET config]]
--[[セキュリティ]]

* 目次 [#f752fbc3]
#contents

*概要 [#rbff6e61]
-.NET の config

-DevPartnerの解析結果で気がついたのだけど、~
\*.configのRSA 暗号化はconnectionStringSection以外も可能らしい。

*対象 [#c3eacfea]

**ファイル [#ha500c83]

***[[app.config>.NET config#e51676cd]] [#qc050273]
app.configのビルド出力が、*.exe.configになる。

***[[web.config>.NET config#u3d1af27]] [#u6f9490f]
ASP.NET のWebアプリケーション毎の設定

***[[machine.config>.NET config#w7a425f2]] [#efdd9542]
マシンの設定として、暗号化/復号化キーを含む。
マシンの設定として、暗号化・復号化、署名・検証のキーを含む。

-ASP.NET と MachineKey の関係をまとめてみた - しばやん雑記~
https://blog.shibayan.jp/entry/20130331/1364728631

***その他、任意の*.configファイル [#z7f00ee3]
appSettingsSectionを切り出した*.configなど。

**Section [#rb2c82b0]
通常、暗号化の必要な機密情報を収めたSectionを[[aspnet_regiis.exeで暗号化>#i39af3d5]]。

***appSettings [#e28e8767]
カスタム アプリケーションの設定

***connectionStrings [#hf921e45]
DBMSなどへの、接続文字列

***identity [#ee4b7b6a]
[[偽装>サービス・タスク系のアカウント問題#vaded437]]資格情報

***sessionState [#j782e6f2]
セッション状態プロバイダ用の接続文字列

***暗号化できないSection [#td37a5e7]
-以下のSectionは通常、暗号化が出来ない。
--processModel
--runtime
--mscorlib
--startup
--system.runtime.remoting
--configProtectedData
--satelliteassemblies
--cryptographySettings
--cryptoNameMapping
--cryptoClasses

-ただし、aspnet_setreg.exe ツールを使用すれば暗号化が可能。

--例
---ASP.NET ユーティリティを使用して資格情報およびセッション状態の接続文字列を暗号化する方法~
https://support.microsoft.com/ja-jp/help/329290/how-to-use-the-asp.net-utility-to-encrypt-credentials-and-session-state-connection-strings

*方法 [#ae0fc12f]
以下の方法で暗号化できる。

**プロバイダ [#af6b24b8]
[[CNG>.NETの署名・暗号化アルゴリズム#fde2f12c]]のプロパイダを使用している模様。

***キーコンテナ(鍵コンテナ) [#h1e73306]
-[[CNG>.NETの署名・暗号化アルゴリズム#fde2f12c]]キーコンテナ(鍵コンテナ)を使用する。

--このため、キーコンテナ(鍵コンテナ)のアクセス権云々でハマることがある模様。

--また、開発サーバから運用サーバへのデプロイのシナリオ、~
Web ファームでの RSA 暗号化シナリオでは、~
カスタムの RSA 暗号鍵をエクスポート&インポートすることで対応する。

-参考
--web.configの暗号化 | どっとねっとふぁん~
https://blogonos.wordpress.com/2006/02/23/web-config%E3%81%AE%E6%9A%97%E5%8F%B7%E5%8C%96/

***RSAProtectedConfigurationProvider [#xd5574d9]
-既定のプロバイダ
-RSA 公開鍵暗号化を使用して、データの暗号化と暗号化解除

***DPAPIProtectedConfigurationProvider [#h0c48ab3]
-Windows データ保護 API (DPAPI) を使用して、データの暗号化と暗号化解除

**ツール、API [#h3467046]
***aspnet_regiisコマンドライン・ツール [#i39af3d5]
-[[Web.config>#u6f9490f]]しか暗号化出来ない(ディレクトリ指定しかサポートしない)ので、~
\*.configを対象とする場合は、[[Web.config>#u6f9490f]]にリネームしてaspnet_regiisで暗号化処理をする。

-参考
--構成セクションの暗号化と複合化~
https://msdn.microsoft.com/ja-jp/library/zhhddkxy.aspx
--チュートリアル : 保護された構成を使用した構成情報の暗号化~
https://msdn.microsoft.com/ja-jp/library/dtkwfdky.aspx

***API(自作プログラム) [#sb15dc06]
SectionInformation.ProtectSectionメソッド、Configuration.Saveメソッドを使用する。

-ASP.NETから
--ASP.NETの構成ファイルを暗号化する: ある SE のつぶやき~
http://fnya.cocolog-nifty.com/blog/2009/05/aspnet-a98d.html

-Installerから
--yan note: .NET 構成ファイルapp.configの暗号化~
http://yan-note.blogspot.jp/2010/06/netappconfig.html

-MSDN ライブラリ > .NET 開発 > .NET Framework 4.6 and 4.5 > .NET Framework クラス ライブラリ
--Configuration.Save メソッド (System.Configuration)
https://msdn.microsoft.com/ja-jp/library/ms134087.aspx
--SectionInformation.ProtectSection メソッド (String) (System.Configuration)~
https://msdn.microsoft.com/ja-jp/library/system.configuration.sectioninformation.protectsection.aspx

*参考 [#g5cdc475]
**msdn [#x8f611b2]
-How To: RSA を使用して ASP.NET 2.0 内の構成セクションを暗号化する方法~
https://msdn.microsoft.com/ja-jp/library/ff650304.aspx

**その他 [#o3c3334c]

-むりせず♪なまけず? ~ぷろくらすてぃねいたーの言い訳雑記~
--構成ファイルの暗号化/復号化
---(前編)~
http://blogs.wankuma.com/carbonara/archive/2009/03/28/170316.aspx
---(中編)~
http://blogs.wankuma.com/carbonara/archive/2009/03/30/170434.aspx
---(後編)~
http://blogs.wankuma.com/carbonara/archive/0001/01/01/170475.aspx
---(補足)~
http://blogs.wankuma.com/carbonara/archive/2009/04/08/170991.aspx

----
Tags: [[:.NET開発]], [[:セキュリティ]], [[:暗号化]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS