Open棟梁Project - マイクロソフト系技術情報 Wiki
目次 †
概要 †
・アルゴリズム の編集
一通り揃っている。
Managed、CSP、CNG実装とは? †
- Managedで終わる名称のProviderは、.NET実装と思われる(mscorlib.dll)。
- CryptoServiceProvider?(CSP)で終わる名称のProviderは、「暗号化サービス プロバイダー (CSP) を使用する」とある(System.Core.dll)。
- Cngで終わる名称のProviderは、PlatformNative?のCryptography Next Generation (CNG) 実装を使用している(System.Core.dll)。
参考 †
CSP †
CNG †
どれを使用すべき? †
.NET Framework の暗号モデル †
https://msdn.microsoft.com/ja-jp/library/0ss79b2x.aspx
には、以下のようにある。
- マネージ実装
.NET Framework をサポートするすべてのプラットフォームで利用可能。
ただし、マネージ実装はFIPSに認定されておらず、ラッパー クラスよりも低速である場合がある。
- CAPI 実装
CSPラッパー。以前のOSで使用可能だが、開発中止となっている。
- CNG 実装
CNGラッパー。まさに最新の実装であり、新しい開発が行われる。
- アルゴリズムの選択
- データのプライバシー
- データの整合性
- デジタル署名
- キー交換
- 乱数生成
- RNGCryptoServiceProvider?
CngKey? †
以下の様な違いがあるが、
RSACngのキーはCngKey?クラスによって管理され、RSACngのコンストラクタに注入できますが、
RSACryptoServiceProvider?は独自のキー操作に結びついています。
どちらでも良さそう。
.NETの暗号化Providerの列挙 †
ハッシュ †
暗号ハッシュ(HashAlgorithm?) †
https://msdn.microsoft.com/ja-jp/library/system.security.cryptography.hashalgorithm.aspx
キー付きハッシュ(KeyedHashAlgorithm?) †
https://msdn.microsoft.com/ja-jp/library/system.security.cryptography.keyedhashalgorithm.aspx
暗号化 †
秘密鍵暗号方式(SymmetricAlgorithm?) †
https://msdn.microsoft.com/ja-jp/library/system.security.cryptography.symmetricalgorithm.aspx
公開鍵暗号方式(AsymmetricAlgorithm?) †
AsymmetricAlgorithm?の内、暗号化・復号化が可能な公開鍵暗号方式は、RS256(RSA)のみ。
https://msdn.microsoft.com/ja-jp/library/system.security.cryptography.asymmetricalgorithm.aspx
署名・検証(AsymmetricAlgorithm?) †
署名・検証は、AsymmetricAlgorithm?の内の、以下のProviderを使用する。
https://msdn.microsoft.com/ja-jp/library/system.security.cryptography.asymmetricalgorithm.aspx
参考 †
DOBON.NET: VB.NET, C#, 無料ソフトウェア... †
http://dobon.net/index.html
暗号ハッシュ †
秘密鍵暗号方式 †
公開鍵暗号方式 †
署名・検証 †
乱数生成、キー生成 †
Open棟梁の暗号ラッパー †
暗号ハッシュ †
Managed優先、無ければCSPを使用というポリシーで実装。
https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Frameworks/Infrastructure/Public/Util/GetHash.cs#L162
キー付きハッシュ †
HMACの実装が不足している(hmacmd5、hmacripemd160、hmacsha256、hmacsha384、hmacsha512)。
https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Frameworks/Infrastructure/Public/Util/GetKeyedHash.cs#L182
秘密鍵暗号方式 †
Managed優先、無ければCSPを使用というポリシーで実装。
(AesCryptoServiceProvider?が例外的に余分に実装されている)
https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Frameworks/Infrastructure/Public/IO/SymmetricCryptography.cs#L430
公開鍵暗号方式 †
https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Frameworks/Infrastructure/Public/IO/ASymmetricCryptography.cs
署名・検証 †
なし。