login register Sysop! about ME  
qrcode
    최초 작성일 :    2017년 08월 28일
  최종 수정일 :    2017년 08월 28일
  작성자 :    soggun
  편집자 :    soggun (송원석)
  읽음수 :    8,374

강좌 목록으로 돌아가기

필자의 잡담~

이번 컬럼은 ASP.NET Core 데이터 보안 강좌 중에서 머신 수준의 정책을 구성하는 방법에 대한 글입니다.

모든 컬럼은 http://docs.asp.net의 내용을 참고하여 번역한 것입니다. Windows 뿐만 아니라 Linxu, OS X에서도 동작하는 완전한 크로스 플랫폼 서버기술인 ASP.NET Core! 기대해 주세요.

본 번역문서는 개인적인 취지로 번역되어 제공되는 문서로, 원문을 비롯한 모든 저작권은 마이크로소프트사에 있습니다. 마이크로소프트사의 요청이 있을 경우, 언제라도 게시가 중단될 수 있습니다. 본 번역문서에는 오역이 포함되어 있을 수 있으며 주석도 번역자 개인의 견해일뿐입니다. 마이크로소프트사는 본 문서의 번역된 내용에 대해 일체의 보장을 하지 않습니다. 번역이 완료된 뒤에도 제품이 업그레이드 되거나 기능이 변경됨에 따라 원문도 변경되거나 보완되었을 수 있으므로 참고하시기 바랍니다.

원문: https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/configuration/machine-wide-policy

머신 수준 정책

데이터 보호 시스템이 Windows에서 실행되는 경우, 데이터 보호를 소비하는 모든 응용 프로그램에 적용될 머신 수준의 기본 정책을 제한적으로 설정할 수 있습니다. 기본적인 개념은 머신에 존재하는 모든 응용 프로그램들을 직접 일일이 변경할 필요 없이 관리자가 일부 기본 설정을 (사용되는 알고리즘이나 키 수명 등) 변경하고자 하는 경우도 있다는 것입니다.

주의 : 시스템 관리자가 기본 정책을 설정할 수는 있지만 강제로 적용할 수는 없습니다. 응용 프로그램 개발자는 언제든지 모든 값을 자신이 선택한 값 중 하나로 재정의 할 수 있습니다. 기본 정책은 개발자가 특정 설정에 대한 값을 명시적으로 지정하지 않은 응용 프로그램에만 영향을 줍니다.

기본 정책 설정하기

관리자는 시스템 레지스트리의 다음 키 하위에 알려진 값들을 설정해서 기본 정책을 설정할 수 있습니다.

레지스트리 키: HKLM\SOFTWARE\Microsoft\DotNetPackages\Microsoft.AspNetCore.DataProtection

만약 64 비트 운영 체제를 사용하고 있으면서, 32 비트 응용 프로그램의 동작에도 영향을 주려면 이 키에 대응하는 Wow6432Node 하위의 키도 동일하게 설정해줘야 합니다.

지원되는 값들은 다음과 같습니다:

  • EncryptionType [string] - 데이터 보호에 사용되는 알고리즘을 지정합니다. 이 값은 "CNG-CBC", "CNG-GCM", 또는 "Managed" 중 하나여야 하며, 다음 절에서 자세하게 살펴봅니다.

  • DefaultKeyLifetime [DWORD] - 새로 생성되는 키의 수명을 지정합니다. 이 값은 일 단위로 지정되며 7보다 크거나 같아야 합니다.

  • KeyEscrowSinks [string] - 키 에스크로에 사용되는 형식들을 지정합니다. 이 값은 세미콜론(;)으로 연결된 키 에스트로 싱크들의 목록으로, 이 목록의 각 요소들은 IKeyEscrowSink를 구현하는 형식들의 정규화된 어셈블리 이름입니다.

암호화 형식

EncryptionType 값이 "CNG-CBC"로 지정되면, 기밀성을 위해 CBC 모드 대칭형 블럭 암호화를 사용하고 신뢰성을 위해 Windows CNG에서 제공되는 서비스를 이용해서 HMAC를 사용하도록 구성됩니다 (보다 자세한 정보는 사용자 지정 Windows CNG 알고리즘 지정하기를 참고하시기 바랍니다.) 추가적으로 다음과 같은 값들이 지원되며, 이 값들은 각각 CngCbcAuthenticatedEncryptionSettings 형식의 속성에 대응합니다:

  • EncryptionAlgorithm [string] - CNG가 인식하는 대칭형 블럭 암호화 알고리즘의 이름입니다. 이 알고리즘은 CBC 모드로 열립니다.

  • EncryptionAlgorithmProvider [string] - 알고리즘 EncryptionAlgorithm을 생성할 수 있는 CNG 공급자 구현의 이름입니다.

  • EncryptionAlgorithmKeySize [DWORD] - 대칭형 블럭 암호화 알고리즘에 대해 파생되는 키의 길이(비트)입니다.

  • HashAlgorithm [string] - CNG가 인식하는 해시 알고리즘의 이름입니다. 이 알고리즘은 HMAC 모드로 열립니다.

  • HashAlgorithmProvider [string] - 알고리즘 HashAlgorithm을 생성할 수 있는 CNG 공급자 구현의 이름입니다.

EncryptionType 값이 "CNG-GCM"로 지정되면, 기밀성을 위해 갈루아(Galois)/카운터 모드 대칭형 블럭 암호화를 사용하고 신뢰성을 위해 Windows CNG에서 제공되는 서비스를 사용하도록 구성됩니다 (보다 자세한 정보는 사용자 지정 Windows CNG 알고리즘 지정하기를 참고하시기 바랍니다.) 추가적으로 다음과 같은 값들이 지원되며, 이 값들은 각각 CngGcmAuthenticatedEncryptionSettings 형식의 속성에 대응합니다:

  • EncryptionAlgorithm [string] - CNG가 인식하는 대칭형 블럭 암호화 알고리즘의 이름입니다. 이 알고리즘은 갈루아(Galois)/카운터 모드로 열립니다.

  • EncryptionAlgorithmProvider [string] - 알고리즘 EncryptionAlgorithm을 생성할 수 있는 CNG 공급자 구현의 이름입니다.

  • EncryptionAlgorithmKeySize [DWORD] - 대칭형 블럭 암호화 알고리즘에 대해 파생되는 키의 길이(비트)입니다.

EncryptionType 값이 "Managed"로 지정되면, 기밀성을 위해 관리되는 SymmetricAlgorithm을 사용하고 신뢰성을 위해 KeyedHashAlgorithm을 사용하도록 구성됩니다 (보다 자세한 정보는 관리되는 사용자 지정 알고리즘 지정하기를 참고하시기 바랍니다.) 추가적으로 다음과 같은 값들이 지원되며, 이 값들은 각각 ManagedAuthenticatedEncryptionSettings 형식의 속성에 대응합니다:

  • EncryptionAlgorithmType [string] - SymmetricAlgorithm을 구현하는 형식의 정규화된 어셈블리 이름입니다.

  • EncryptionAlgorithmKeySize [DWORD] - 대칭형 암호화 알고리즘에 대해 파생되는 키의 길이(비트)입니다.

  • ValidationAlgorithmType [string] - KeyedHashAlgorithm을 구현하는 형식의 정규화된 어셈블리 이름입니다.

만약 EncryptionType 값에 그 밖에 다른 값이 지정되면 (null 값이나 빈 값 이외의), 데이터 보호 시스템이 구동 시 예외를 던집니다.

주의 : 형식 이름에 관한 기본 정책 설정(EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks)을 구성하는 경우, 반드시 응용 프로그램에서 해당 형식을 사용할 수 있어야 합니다. 결론적으로 이 말은 데스크탑 CLR 상에서 실행되는 응용 프로그램의 경우, 해당 형식을 포함한 어셈블리가 GAC에 설치되어 있어야 한다는 뜻입니다. 그리고 .NET Core에서 실행되는 ASP.NET Core 응용 프로그램의 경우, 해당 형식을 포함한 패키지가 설치되어 있어야 한다는 뜻입니다.


authored by


 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})