다음을 통해 공유


machineKey 요소(ASP.NET 설정 스키마)

[이 설명서는 미리 보기 전용이며, 이후 릴리스에서 변경될 수 있습니다. 비어 있는 항목은 자리 표시자로 포함됩니다.]

폼 인증 데이터와 뷰 상태 데이터 및 out-of-process 세션 상태 ID의 암호화, 해독, 유효성 검사에 사용할 알고리즘을 구성합니다.

<machineKey 
  validationKey="AutoGenerate,IsolateApps" [String]
  decryptionKey="AutoGenerate,IsolateApps" [String]
  validation="HMACSHA256" [SHA1 | MD5 | 3DES | AES | HMACSHA256 | 
    HMACSHA384 | HMACSHA512 | alg:algorithm_name]
  decryption="Auto" [Auto | DES | 3DES | AES | alg:algorithm_name]
/>

특성 및 요소

다음 단원에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.

특성

특성

설명

decryption

선택적 String 특성입니다.

데이터 암호화 및 해독에 사용되는 알고리즘 형식(인증 데이터)을 지정합니다.

이 특성의 값은 다음 중 하나로 지정할 수 있습니다.

  • Auto 사용할 해독 알고리즘을 ASP.NET에서 자동으로 결정하도록 지정합니다. 이 특성의 기본값입니다.

  • AES ASP.NET에서 AES (Rijndael) 알고리즘을 사용하여 데이터를 암호화하고 해독하도록 지정합니다. AES는 기본 알고리즘이며 이 특성의 값이 Auto일 때 사용됩니다. 이 알고리즘은 미국 FIPS(Federal Information Processing Standards)와 호환됩니다.

  • DES  ASP.NET에서 DES(데이터 암호화 표준) 알고리즘을 사용하여 데이터를 암호화하고 해독하도록 지정합니다. 이 알고리즘은 레거시 용도로만 포함되어 있으며 이전 버전의 ASP.NET과 호환성이 필요한 경우에만 사용해야 합니다.

  • 3DES  ASP.NET에서 TripleDES 알고리즘(3DES)을 사용하여 데이터를 암호화하고 해독하도록 지정합니다. 이 알고리즘은 레거시 용도로만 포함되어 있으며 이전 버전의 ASP.NET과 호환성이 필요한 경우에만 사용해야 합니다.

  • alg:algorithm_name  ASP.NET에서 사용자 지정 알고리즘을 사용하여 데이터를 암호화하고 해독하도록 지정합니다. 암호화 알고리즘은 SymmetricAlgorithm에서 파생된 클래스에 정의되어야 합니다. ASP.NET에서는 SymmetricAlgorithm.Create 메서드를 호출하고 여기 지정된 알고리즘의 이름을 전달합니다.

decryptionKey

필수 String 특성입니다.

데이터를 암호화하고 해독하는 데 사용되는 키 또는 키를 생성하는 프로세스를 지정합니다. 이 특성은 뷰 상태가 암호화된 경우 폼 인증 암호화/해독 및 뷰 상태 암호화에 사용됩니다.

이 특성의 값은 다음 중 하나로 지정할 수 있습니다.

  • AutoGenerate, IsolateApps  키가 자동으로 생성되도록 지정합니다. 기본값입니다. AutoGenerate 수정자는 ASP.NET에서 난수 키를 생성하여 LSA(Local Security Authority)에 저장하도록 지정합니다. IsolateApps 수정자는 ASP.NET에서 응용 프로그램마다 응용 프로그램의 ID를 사용하여 고유 암호화 키를 생성하도록 지정합니다.

  • 키 값  수동으로 할당된 키를 지정합니다. decryptionKey 값은 웹 팜의 모든 서버에서 일관된 구성을 유지하도록 16진 문자열로 직접 설정해야 합니다. 키는 DES로 암호화된 경우 64비트(16개의 16진 문자)이며 3DES의 경우 192비트(48개의 16진 문자) 입니다. AES의 경우 키 길이가 128비트(32자), 192비트(48자) 또는 256비트(64자)일 수 있습니다. 가장 긴 키는 보안성이 가장 우수합니다. 난수 키는 RNGCryptoServiceProvider 클래스를 사용하여 수동으로 생성할 수 있습니다. 자세한 내용은 How To: Configure MachineKey in ASP.NET 2.0을 참조하십시오.

자세한 내용은 DecryptionKey를 참조하십시오.

validation

필수 MachineKeyValidation 특성입니다.

해시 알고리즘을 사용하여 데이터의 유효성을 검사하도록 지정합니다.

기본적으로 뷰 상태는 base-64 인코딩된 문자열로 전송됩니다. 인코딩된 데이터는 알아볼 수 없는 것 같지만 base-64 인코딩은 쉽게 디코딩되기 때문에 안전하지 않습니다. 뷰 상태에 중요한 데이터를 저장하는 경우 유효성 검사와 함께 ASP.NET에서 뷰 상태 데이터를 암호화하도록 지정할 수 있습니다. 웹 응용 프로그램의 모든 페이지 또는 선택한 페이지에 대한 뷰 상태 암호화를 지정할 수 있습니다. 이 옵션에 대한 자세한 내용은 ViewStateEncryptionModeRegisterRequiresViewStateEncryption()을 참조하십시오.

뷰 상태 암호화를 사용하려는 경우 이 특성을 AES로 설정합니다. 경우에 따라 decryptionKey 값은 뷰 상태 데이터를 암호화하는 데 사용되며 ASP.NET은 데이터 유효성 검사를 위해 HMACSHA1 해시 알고리즘을 사용합니다.

이 특성의 값은 다음 중 하나로 지정할 수 있습니다.

  • AES  뷰 상태가 암호화되었을 때 ASP.NET에서 AES(Rijndael) 암호화 알고리즘을 사용하여 데이터를 암호화하고 해독하도록 지정합니다. 이 옵션이 validation 특성에 대해 지정된 경우 유효성 검사를 위해 HMACSHA1 알고리즘이 사용됩니다.

  • MD5  ASP.NET에서 Message Digest 5(MD5) 해시 알고리즘을 사용하여 데이터의 유효성을 검사하도록 지정합니다. 이 알고리즘은 레거시 용도로만 포함되어 있으며 이전 버전의 ASP.NET과 호환성이 필요한 경우에만 사용해야 합니다.

  • SHA1  ASP.NET에서 HMACSHA1 해시 알고리즘을 사용하여 데이터의 유효성을 검사하도록 지정합니다. 이 알고리즘은 뷰 상태 암호화를 지원하도록 이 특성을 AES로 설정해야 하는 경우에만 사용해야 합니다. 그렇지 않을 경우, HMACSHA256, HMACSHA384 또는 HMACSHA512를 사용합니다.

  • 3DES  뷰 상태가 암호화되었을 때 ASP.NET에서 TripleDES(3DES) 알고리즘을 사용하여 데이터를 암호화하고 해독하도록 지정합니다. 이 옵션이 validation 특성에 대해 지정된 경우 유효성 검사를 위해 HMACSHA1 알고리즘이 사용됩니다. 이 알고리즘은 레거시 용도로만 포함되어 있으며 이전 버전의 ASP.NET과 호환성이 필요한 경우에만 사용해야 합니다.

  • HMACSHA256  ASP.NET에서 HMACSHA256 해시 알고리즘을 사용하여 데이터의 유효성을 검사하도록 지정합니다. 기본값입니다. 이 알고리즘은 미국 FIPS(Federal Information Processing Standards)와 호환되지 않습니다.

  • HMACSHA384  ASP.NET에서 HMACSHA384 해시 알고리즘을 사용하여 데이터의 유효성을 검사하도록 지정합니다. 이 옵션은 HMACSHA256 알고리즘에서 제공하는 것보다 더 강력한 보안을 요구하는 응용 프로그램에 사용할 수 있습니다. 이 알고리즘은 미국 FIPS(Federal Information Processing Standards)와 호환됩니다.

  • HMACSHA512  ASP.NET에서 HMACSHA512 해시 알고리즘을 사용하여 데이터의 유효성을 검사하도록 지정합니다. 이 옵션은 HMACSHA384 알고리즘에서 제공하는 것보다 더 강력한 보안을 요구하는 응용 프로그램에 사용할 수 있습니다. 이 알고리즘은 미국 FIPS(Federal Information Processing Standards)와 호환됩니다.

  • alg:algorithm_name  ASP.NET에서 사용자 지정 알고리즘을 사용하도록 지정합니다. 접두사 "alg:" 다음에는 KeyedHashAlgorithm에서 파생되는 클래스의 이름이 옵니다. ASP.NET에서는 Create() 메서드를 호출하고 여기 지정된 알고리즘의 이름을 전달합니다.

validationKey

필수 String 특성입니다.

데이터의 유효성을 검사하는 데 사용되는 키 또는 키가 생성되는 프로세스를 지정합니다. validationKey 값은 세션 사이에 세션 상태 변수가 격리되도록 out-of-process 응용 프로그램별 세션 ID를 생성하는 데도 사용됩니다.

이 특성의 값은 다음 중 하나로 지정할 수 있습니다.

  • AutoGenerate, IsolateApps  키가 자동으로 생성되도록 지정합니다. 기본값입니다. AutoGenerate 수정자는 ASP.NET에서 난수 키를 생성하여 LSA(Local Security Authority)에 저장하도록 지정합니다. IsolateApps 수정자는 ASP.NET에서 응용 프로그램마다 응용 프로그램의 ID를 사용하여 고유 암호화 키를 생성하도록 지정합니다.

  • 키 값  수동으로 할당된 키를 지정합니다. validationKey 값은 웹 팜의 모든 서버에서 일관된 구성을 유지하도록 16진 문자열로 직접 설정해야 합니다. 키의 길이는 사용되는 해시 알고리즘에 따라 달라집니다.

    • AES에는 256비트 키(16진수 문자 64개)가 필요합니다.

    • MD5에는 256비트 키(16진수 문자 32개)가 필요합니다.

    • SHA1에는 160비트 키(16진수 문자 40개)가 필요합니다.

    • 3DES에는 192비트 키(16진 문자 48개)가 필요합니다.

    • HMACSHA256에는 256비트 키(16진수 문자 64개)가 필요합니다.

    • HMACSHA384에는 384비트 키(16진수 문자 96개)가 필요합니다.

    • HMACSHA512에는 512비트 키(16진수 문자 128개)가 필요합니다.

    RNGCryptoServiceProvider 클래스를 사용하여 수동으로 생성할 수 있는 임의 키입니다. 자세한 내용은 How To: Configure MachineKey in ASP.NET 2.0을 참조하십시오. 이 항목은 HMACSHA256, HMACSHA384 또는 HMACSHA512 알고리즘을 나열하지 않습니다. 그러나, 프로세스는 올바른 키 길이를 지정하는 한 이러한 알고리즘에서도 작동합니다.

자세한 내용은 ValidationKey를 참조하십시오.

자식 요소

없음

부모 요소

요소

설명

configuration

공용 언어 런타임 및 .NET Framework 응용 프로그램에서 사용하는 모든 구성 파일의 필수 루트 요소를 지정합니다.

system.web

구성 파일에서 ASP.NET 구성 설정에 대한 루트 요소를 지정하며, ASP.NET 웹 응용 프로그램을 구성하고 응용 프로그램의 동작 방식을 제어하는 구성 요소를 포함합니다.

설명

다음 코드 예제에서는 validationKey 특성과 decryptionKey 특성을 모두 AutoGenerate로 설정하는 방법을 보여 줍니다. 서버의 각 응용 프로그램에 대해 고유한 키를 생성하도록 isolateApps 값이 지정됩니다.

<machineKey 
    validationKey="AutoGenerate,IsolateApps" 
    decryptionKey="AutoGenerate,IsolateApps" 
/>

다음 코드 예제에서는 validationKey 특성과 decryptionKey 특성을 수동으로 생성된 임의의 값으로 설정하는 방법에 대해 보여줍니다. validationKey 특성은 HMACSHA256 해시 알고리즘에 대해 256비트의 긴 키로 설정되며 decryptionKey 특성도 AES 암호화 알고리즘에 대해 가능한 가장 긴 256비트의 긴 키로 설정되어 있습니다. 이는 예제일 뿐이며 사용자 응용 프로그램에서 사용해서는 안됩니다.

<machineKey 
    validationKey="32E35872597989D14CC1D5D9F5B1E94238D0EE32CF10AA2D2059533DF6035F4F" 
    decryptionKey="B179091DBB2389B996A526DE8BCD7ACFDBCAB04EF1D085481C61496F693DF5F4" 
/>

참고 항목

작업

Walkthrough: Encrypting Configuration Information Using Protected Configuration

How to: Configure Specific Folders Using Location Settings

How to: Lock ASP.NET Configuration Settings

참조

system.web 요소(ASP.NET 설정 스키마)

configuration 요소(일반 설정 스키마)

System.Configuration

System.Web.Configuration

MachineKeySection

MachineKey

개념

Forms Authentication Across Applications

Securing Roles

Securing Membership

Securing Profile Properties

Securing SessionState

ASP.NET Configuration File Hierarchy

Securing Configuration

Configuration Inheritance

기타 리소스

일반 구성 설정(ASP.NET)

ASP.NET 구성 설정

Configuring ASP.NET Applications

ASP.NET Configuration API