Share via


방법: 하드웨어 암호화 장치 액세스

업데이트: 2007년 11월

CspParameters 클래스를 사용하여 하드웨어 암호화 장치에 액세스할 수 있습니다. 예를 들어, 이 클래스를 사용하여 스마트 카드, 하드웨어 난수 생성기 또는 하드웨어로 구현된 특정 암호화 알고리즘과 응용 프로그램을 통합할 수 있습니다.

CspParameters 클래스는 적절하게 설치된 하드웨어 암호화 장치에 액세스하는 CSP(암호화 서비스 공급자)를 만듭니다. 레지스트리 편집기(Regex.exe)를 사용하여 HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider라는 레지스트리 키를 검사하여 CSP의 가용성을 확인할 수 있습니다.

키 카드를 사용하여 데이터에 서명하려면

  1. CspParameters 클래스의 새 인스턴스를 만들고 정수 공급자 형식과 공급자 이름을 생성자에 전달합니다.

  2. 새로 만든 CspParameters 개체의 Flags 속성으로 해당 플래그를 전달합니다. 예를 들어, UseDefaultKeyContainer 플래그를 전달합니다.

  3. AsymmetricAlgorithm 클래스(예: RSACryptoServiceProvider 클래스)의 새 인스턴스를 만들고 CspParameters 개체를 생성자로 전달합니다.

  4. Sign 메서드 중 하나를 사용하여 데이터에 서명하고 Verify 메서드 중 하나를 사용하여 데이터를 확인합니다.

하드웨어 난수 생성기를 사용하여 난수를 생성하려면

  1. CspParameters 클래스의 새 인스턴스를 만들고 정수 공급자 형식과 공급자 이름을 생성자로 전달합니다.

  2. RNGCryptoServiceProvider의 새 인스턴스를 만들고 CspParameters 개체를 생성자로 전달합니다.

  3. GetBytes 또는 GetNonZeroBytes 메서드를 사용하여 난수를 만듭니다.

예제

다음 코드 예제에서는 스마트 카드를 사용하여 데이터에 서명하는 방법을 보여 줍니다. 코드 예제에서는 스마트 카드를 노출하는 CspParameters 개체를 만든 다음 CSP를 사용하여 RSACryptoServiceProvider 개체를 초기화합니다. 그런 다음 일부 데이터에 서명하고 해당 데이터를 확인합니다.

Imports System
Imports System.Security.Cryptography



Module SCSign

    Sub Main(ByVal args() As String)
        ' To idendify the Smart Card CryptoGraphic Providers on your
        ' computer, use the Microsoft Registry Editor (Regedit.exe).
        ' The available Smart Card CryptoGraphic Providers are listed
        ' in HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.

        ' Create a new CspParameters object that identifies a 
        ' Smart Card CryptoGraphic Provider.
        ' The 1st parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider Types.
        ' The 2nd parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.
        Dim csp As New CspParameters(1, "Schlumberger Cryptographic Service Provider")
        csp.Flags = CspProviderFlags.UseDefaultKeyContainer

        ' Initialize an RSACryptoServiceProvider object using
        ' the CspParameters object.
        Dim rsa As New RSACryptoServiceProvider(csp)

        ' Create some data to sign.
        Dim data() As Byte = {0, 1, 2, 3, 4, 5, 6, 7}


        Console.WriteLine("Data   : " + BitConverter.ToString(data))

        ' Sign the data using the Smart Card CryptoGraphic Provider.
        Dim sig As Byte() = rsa.SignData(data, "SHA1")

        Console.WriteLine("Signature : " + BitConverter.ToString(sig))

        ' Verify the data using the Smart Card CryptoGraphic Provider.
        Dim verified As Boolean = rsa.VerifyData(data, "SHA1", sig)

        Console.WriteLine("Verified")

    End Sub

End Module
using System;
using System.Security.Cryptography;

namespace SmartCardSign
{
    class SCSign
    {
        static void Main(string[] args)
        {
            // To idendify the Smart Card CryptoGraphic Providers on your
            // computer, use the Microsoft Registry Editor (Regedit.exe).
            // The available Smart Card CryptoGraphic Providers are listed
            // in HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.


            // Create a new CspParameters object that identifies a 
            // Smart Card CryptoGraphic Provider.
            // The 1st parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider Types.
            // The 2nd parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.
            CspParameters csp = new CspParameters(1, "Schlumberger Cryptographic Service Provider");
            csp.Flags = CspProviderFlags.UseDefaultKeyContainer;

            // Initialize an RSACryptoServiceProvider object using
            // the CspParameters object.
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp);

            // Create some data to sign.
            byte[] data = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7 };

            Console.WriteLine("Data         : " + BitConverter.ToString(data));

            // Sign the data using the Smart Card CryptoGraphic Provider.
            byte[] sig = rsa.SignData(data, "SHA1");

            Console.WriteLine("Signature    : " + BitConverter.ToString(sig));

            // Verify the data using the Smart Card CryptoGraphic Provider.
            bool verified = rsa.VerifyData(data, "SHA1", sig);

            Console.WriteLine("Verified     : " + verified);

        }
    }
}
using namespace System;
using namespace System::Security::Cryptography;
int main()
{

   // To idendify the Smart Card CryptoGraphic Providers on your
   // computer, use the Microsoft Registry Editor (Regedit.exe).
   // The available Smart Card CryptoGraphic Providers are listed
   // in HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.
   // Create a new CspParameters object that identifies a 
   // Smart Card CryptoGraphic Provider.
   // The 1st parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider Types.
   // The 2nd parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.
   CspParameters^ csp = gcnew CspParameters( 1,L"Schlumberger Cryptographic Service Provider" );
   csp->Flags = CspProviderFlags::UseDefaultKeyContainer;

   // Initialize an RSACryptoServiceProvider object using
   // the CspParameters object.
   RSACryptoServiceProvider^ rsa = gcnew RSACryptoServiceProvider( csp );

   // Create some data to sign.
   array<Byte>^data = gcnew array<Byte>{
      0,1,2,3,4,5,6,7
   };
   Console::WriteLine( L"Data           : {0}", BitConverter::ToString( data ) );

   // Sign the data using the Smart Card CryptoGraphic Provider.
   array<Byte>^sig = rsa->SignData( data, L"SHA1" );
   Console::WriteLine( L"Signature  : {0}", BitConverter::ToString( sig ) );

   // Verify the data using the Smart Card CryptoGraphic Provider.
   bool verified = rsa->VerifyData( data, L"SHA1", sig );
   Console::WriteLine( L"Verified       : {0}", verified );
}

코드 컴파일

  • SystemSystem.Security.Cryptography 네임스페이스를 포함합니다.

  • 스마트 카드 판독기와 드라이버가 컴퓨터에 설치되어 있어야 합니다.

  • 카드 판독기 관련 정보를 사용하여 CspParameters 개체를 초기화해야 합니다. 자세한 내용은 카드 판독기 설명서를 참조하십시오.

참고 항목

기타 리소스

암호화 작업