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
署名・検証  †
なし。