Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

Open棟梁で提供される、暗号・復号化 部品。

ポリシー

  • Managed優先(.NET Standard対応を考慮)
  • Managedが無ければCSPを使用というポリシーで実装。
  • 必要に応じて、下記のCNG対応を行う(CNGサポートを追加)。

※ CSP = Crypto Service Provider
※ Cng = Crypto Next Genaration

CNG対応

方針

  • CNGでしか提供されないアルゴリズムは、CNGで実装する。
  • 必要に応じて、CNGサポートを追加(後方互換維持のため、置き換えはしない)。

調査結果

  • Managedが無く、CSPとCNGがサポートされるプロバイダは以下。
    • MD5
    • SHA1
    • TripleDES
    • RSA
    • DSA
  • CNGでしか提供されないアルゴリズム。
    • ECDsaCng?
    • ECDiffieHellmanCng?
  • なお、調査を進めてみたトコロ、
    .NET Standard 2.0でも以下のようなクラスの存在を確認。

予想外に、CSPもCNGラッパーも確認できる
(CNGはLinux上ではどうなる?→ OpenSSLプロバイダが追加されつつある)。

暗号ハッシュ

https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Frameworks/Infrastructure/Public/Security/GetHash.cs

通常のハッシュを取得

対応プロバイダ(アルゴリズム)

https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Frameworks/Infrastructure/Public/Security/EnumHashAlgorithm.cs

CSP (CryptoServiceProvider?)

  • MD5_CSP
  • SHA1_CSP
  • SHA256_CSP
  • SHA384_CSP
  • SHA512_CSP

CNG (CryptographyNextGeneration?)

  • MD5_CNG
  • SHA1_CNG
  • SHA256_CNG
  • SHA384_CNG
  • SHA512_CNG

Managed

  • RIPEMD160_M
  • SHA1_M
  • SHA256_M
  • SHA384_M
  • SHA512_M

メソッド

ハッシュ取得(バイト)

GetHashBytes?メソッド

ハッシュ取得(文字列)

GetHashString?メソッド

キー付きハッシュ

https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Frameworks/Infrastructure/Public/Security/GetKeyedHash.cs

キーを使用してハッシュを取得

対応プロバイダ(アルゴリズム)

https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Frameworks/Infrastructure/Public/Security/EnumKeyedHashAlgorithm.cs

CSP

  • HMACMD5
  • HMACSHA1
  • HMACSHA256
  • HMACSHA384
  • HMACSHA512

Managed

  • HMACRIPEMD160,
  • MACTripleDES,

メソッド

ハッシュ取得(バイト)

GetHashBytes?メソッド

ハッシュ取得(文字列)

GetHashString?メソッド

秘密鍵暗号方式

https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Frameworks/Infrastructure/Public/Security/SymmetricCryptography.cs

対称アルゴリズムによる暗号化・復号化

アルゴリズム

https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Frameworks/Infrastructure/Public/Security/EnumSymmetricAlgorithm.cs

対応プロバイダ

  • CSP (CryptoServiceProvider?)
    • AES_CSP
    • DES_CSP
    • RC2_CSP
    • TDES_CSP
  • CNG (CryptographyNextGeneration?)
    • AES_CNG
    • TDES_CNG
  • Managed
    • AES_M
    • Rijndael_M

CipherMode?, PaddingMode?指定

  • CipherMode?
    • CBC
    • CFB
    • CTS
    • ECB
    • OFB
  • PaddingMode?
    • None
    • Zeros
    • ANSIX923
    • ISO10126
    • PKCS7

メソッド

暗号化

  • EncryptString?メソッド
  • EncryptBytes?メソッド

復号化

  • DecryptString?メソッド
  • DecryptBytes?メソッド

公開鍵暗号方式

https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Frameworks/Infrastructure/Public/Security/ASymmetricCryptography.cs

非対称アルゴリズムによる暗号化・復号化

アルゴリズム

https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Frameworks/Infrastructure/Public/Security/EnumASymmetricAlgorithm.cs

対応プロバイダ

  • CSP
    • RsaCsp?,
  • CNG
    • RsaCng?,
  • OpenSsl?
    • RsaOpenSsl?
  • 自動選択
    • X509

PaddingMode?指定

padding指定可能

  • NET45以前
    bool fOAEP = true or false;
  • NET45以前
    RSAEncryptionPadding padding = ...;

メソッド

秘密鍵と公開鍵を取得

暗号化

  • EncryptString?メソッド
  • EncryptBytes?メソッド

復号化

  • DecryptString?メソッド
  • DecryptBytes?メソッド

ハイブリッド・暗号化(キー交換)

https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Frameworks/Infrastructure/Public/Security/KeyExg/BaseKeyExchange.cs

アルゴリズム

https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Frameworks/Infrastructure/Public/Security/KeyExg/EnumKeyExchange.cs

  • RSAPKCS1KeyExchange?
  • RSAOAEPKeyExchange?
  • ECDiffieHellmanCryptographyNextGeneration?,

Rsa

  • 基底
    RsaKeyExchange?
    • RsaAlice? : RsaKeyExchange?
    • RsaBob? : RsaKeyExchange?
  • RsaOaep?
    • RsaOaepAlice? : RsaAlice?
    • RsaOaepBob? : RsaBob?
  • RsaPkcs1
    • RsaPkcs1Alice : RsaAlice?
    • RsaPkcs1Bob : RsaBob?

Ecdh

  • 基底
    EcdhKeyExchange? : BaseKeyExchange?
  • EcdhCng?
    • EcdhCngAlice? : EcdhKeyExchange?
    • EcdhCngBob? : EcdhKeyExchange?
    • AesCryptoServiceProvider?

メソッド

暗号化

  • Encryptメソッド

復号化

  • Decryptメソッド

署名・検証

https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Frameworks/Infrastructure/Public/Security/DigitalSign.cs

RSA/DSA

クラス

  • DigitalSignX509.cs
  • DigitalSignXML.cs
  • DigitalSignParam?.cs

アルゴリズム

https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Frameworks/Infrastructure/Public/Security/EnumDigitalSignAlgorithm.cs

  • On Windows
    • RsaCSP_MD5
    • RsaCSP_SHA1
    • RsaCSP_SHA256
    • RsaCSP_SHA384
    • RsaCSP_SHA512
    • DsaCSP_SHA1(SHA256以降はエラーになるため、現状サポートなし。)
  • On Linux
    • RsaOpenSsl_MD5
    • RsaOpenSsl_SHA1
    • RsaOpenSsl_SHA256
    • RsaOpenSsl_SHA384
    • RsaOpenSsl_SHA512
    • DsaOpenSsl_SHA1

ECDsa

クラス

  • DigitalSignECDsaCng?.cs
  • DigitalSignECDsaOpenSsl?.cs
  • DigitalSignECDsaX509.cs

アルゴリズム

https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Frameworks/Infrastructure/Public/Security/EnumDigitalSignAlgorithm.cs

  • On Windows
    • ECDsaCng_P256
    • ECDsaCng_P384
    • ECDsaCng_P521
  • On Linux
    • ECDsaOpenSsl_P256
    • ECDsaOpenSsl_P384
    • ECDsaOpenSsl_P521

メソッド

署名

Signメソッド

検証

Verifyメソッド

パスワード関連

乱数生成

対応プロバイダ

RNGCryptoServiceProvider?

メソッド

  • RandomByte?
  • RandomByte?
  • Base64Secret
  • Base64UrlSecret?
  • Generate

キー生成

対応プロバイダ

Rfc2898DeriveBytes?を使用したキー生成

メソッド

なし。内部利用のみ。

パスワード・ハッシュ化

https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Frameworks/Infrastructure/Public/Security/Pwd

  • GetPasswordHashV1.cs
  • GetPasswordHashV2.cs

その他

JWTの生成と検証

部品の検証ツール

暗号化プロバイダ・テスト・ツール

以下のツールで、.NETの各種の暗号化プロバイダをテストできる。

暗号化・復号化ツール

以下のツールで、各種、暗号・復号化 部品を検証できる。

ツール

このツールの使用前に、「ココ」と同じ手順で、証明書をインストールする。

このツールの使用する証明書のパスは、

  • C:\root\files\resource\X509
  • RSA
    • SHA256RSA.cer
    • SHA256RSA.pfx
  • DSA
    • SHA256DSA.cer
    • SHA256DSA.pfx
  • ECDSA
    • SHA256ECDSA.cer
    • SHA256ECDSA.pfx
    • SHA384ECDSA.cer
    • SHA384ECDSA.pfx
    • SHA512ECDSA.cer
    • SHA512ECDSA.pfx
  • 以下は汎用認証サイトで利用
    • SHA256RSA_Server.cer
    • SHA256RSA_Server.pfx
    • SHA256ECDSA_Server.cer
    • SHA256ECDSA_Server.pfx
    • SHA256RSA_Client.cer
    • SHA256RSA_Client.pfx
    • SHA256RSAClientCert?.pfx

参考

マイクロソフト系技術情報 Wiki

暗号化アルゴリズム

.NETの署名・暗号化アルゴリズム

.NET 開発基盤部会 Wiki

高度午前 - 技術要素 - セキュリティ - 暗号・認証

SC:対策技術 - 暗号


添付ファイル: filetool.png 100件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-09-17 (火) 10:41:30 (33d)