키 관리 상호운용성 프로토콜

Key Management Interoperability Protocol
2017 RSA 컨퍼런스의 OASIS 2017 interop 참가자들.

KMIP(Key Management Interoperability Protocol)는 키 관리 서버의 암호키 조작을 위한 메시지 형식을 정의하는 확장 가능한 통신 프로토콜이다.이를 통해 암호화 키 관리를 단순화함으로써 데이터 암호화를 용이하게 한다.키는 서버에 만든 다음 검색할 수 있으며, 다른 키에 의해 포장이 될 수 있다.인증서 서명 기능을 포함하여 대칭 키와 비대칭 키가 모두 지원된다.KMIP는 또한 클라이언트가 키에 직접 접근할 필요 없이 서버에 데이터 암호화 또는 암호 해독을 요청할 수 있도록 허용한다.

KMIP 표준은 2010년에 처음 발표되었다.클라이언트와 서버는 여러 공급업체에서 상업적으로 이용할 수 있다.KMIP 표준 노력은 OASIS 표준 기구에 의해 관리된다.기술적 세부 사항은 공식 KMIP 페이지위키에서도 확인할 수 있다.

설명

KMIP 서버는 대칭 및 비대칭 키, 인증서 및 사용자 정의 개체와 같은 관리 개체를 저장하고 제어한다.그런 다음 클라이언트는 서버에서 구현되는 보안 모델에 따라 이러한 개체에 액세스하기 위해 프로토콜을 사용한다.관리 개체를 생성, 찾기, 검색 및 업데이트하는 작업이 제공된다.

각각의 관리되는 개체는 암호키를 포함하는 키 블록과 같은 불변의 으로 구성된다.이러한 개체는 키에 대한 메타데이터를 저장하는 데 사용할 수 있는 돌연변이 속성을 구성한다.일부 속성은 암호 알고리즘 및 키 길이와 같이 값에서 직접 파생된다.다른 속성은 일반적으로 테이프 식별 데이터에서 파생되는 애플리케이션별 식별자와 같은 개체 관리를 위한 규격에 정의되어 있다.추가 식별자는 애플리케이션 필요에 따라 서버 또는 클라이언트에 의해 정의될 수 있다.

각 개체는 서버에서 생성되는 고유하고 불변의 개체 식별자로 식별되며 개체 값을 얻는 데 사용된다.관리되는 개체에는 개체 찾기에 사용할 수 있는 여러 가지 변이 가능하지만 전역적으로 고유한 이름 특성이 부여될 수도 있다.

물건들

KMIP에 의해 관리되고 있는 관리형 객체의 유형은 다음과 같다.

  • AES와 같은 알고리즘에 사용되는 대칭 키.
  • RSA나 ECDH와 같은 비대칭 알고리즘에 사용되는 공용 키와 개인 키. 공용 키와 개인 키를 저장하기 위해 별도의 객체를 사용하므로 사용자는 한 개만 액세스할 수 있는 권한을 가질 수 있다.관련 객체는 일반적으로 다른 객체의 고유 식별자를 포함하는 링크 속성을 포함한다.
  • 인증서 및 PGP 키.
  • 분할 키, 각 분할을 다른 분할과 독립적으로 관리할 수 있는 고유한 개체로 한다.
  • 암호와 같은 Secret Data.
  • 클라이언트 및 서버 정의 확장에 대한 불투명 데이터.
  • 인증서 서명 요청.

운영

KMIP가 제공하는 운영은 다음과 같다.

  • 대칭 키와 같은 새 관리 개체를 만들고 식별자를 반환하십시오.
  • 비대칭 키를 나타내는 두 개의 개체를 만드는 키 쌍 생성
  • 개체 고유 식별자가 지정된 개체 값을 검색하여 가져오십시오.반환된 값은 추가 보안을 위해 서버에 있는 다른 키로 포장(암호화)할 수 있다.
  • 외부에서 생성된 키 값을 등록하고 저장하십시오.
  • 속성 추가, 속성 가져오기, 속성 수정 및 속성 설정.이들은 관리 개체의 변이 가능한 속성을 조작하는 데 사용될 수 있다.
  • 술어를 기준으로 개체 목록을 찾고 검색하십시오.
  • 기존 키를 대체할 수 있는 새 키를 만드는 키 재키.일정 기간이나 사용 횟수가 지나면 서버가 자동으로 키를 회전시키는 데 사용할 수 있는 속성도 있다.Name(이름)은 새 키로 이동되며 일반적으로 암호화 및 서명 등의 보호 작업을 위한 키를 검색하는 데 사용된다.또한 이전 키는 암호 해독 및 서명 확인과 같은 프로세스 작업에 대해 Unique Identifier를 사용하여 검색할 수 있다.
  • (재-)인증 - 인증서 인증.
  • M 키의 N을 분할하고 결합하십시오.
  • 암호화, 암호 해독, MAC 등키 관리 서버에서 수행된 암호화 작업.키 자체는 압축을 풀 수 없다고 표시될 수 있으며, 이 경우 키의 가치는 결코 서버를 떠나지 않는다.
  • 다른 KMIP 서버로 키 내보내기 및 가져오기
  • NIST 키 라이프사이클 구현 작업.

키 라이프 사이클

각 키에는 국립표준기술원(NIST)에서 정의한 암호 상태가 있다.키는 초기 상태에서 생성되며, 사용하기 전에 활성화되어야 한다.그런 다음 키가 비활성화되어 결국 소멸될 수 있다.키에 '손상' 표시가 있을 수도 있다.

NIST 라이프사이클 지침에 따라 키 상태를 조작하기 위한 운영이 제공된다.키 상태는 상태 속성 또는 활성화 날짜와 같이 각 변환의 날짜를 기록하는 속성을 사용하여 조회할 수 있다.날짜는 미래로 지정될 수 있으므로 키가 만료되면 지정된 작업에 자동으로 사용할 수 없게 된다.

메시지 구조

KMIP는 메시지가 클라이언트에서 서버로 전송된 후 클라이언트가 회신에서 대기하는 상태 비저장 프로토콜이다.각 요청은 많은 작업을 포함할 수 있으므로 프로토콜이 많은 수의 키를 효율적으로 처리할 수 있다.비동기적으로 요청을 처리하는 고급 기능도 있다.

KMIP 프로토콜은 몇 가지 다른 유형의 인코딩을 지정한다.주요 내용은 TTLV(태그, 유형, 길이, 값)라고 하는 메시지의 유형 길이-값 인코딩이다.중첩된 TTLV 구조는 단일 이진 메시지에서 복잡한 다중 작동 메시지를 인코딩할 수 있다.

바이너리가 적합하지 않은 환경을 위한 프로토콜의 XML과 JSON 인코딩도 잘 정의되어 있다.그것을 필요로 하는 어플리케이션에도 매우 컴팩트한 CBOR 인코딩이 제공된다.

이들 프로토콜은 모두 TLS 프로토콜로 전송되어 무결성과 보안성을 확보할 수 있을 것으로 기대된다.그러나 서버의 다른 키를 사용하여 포장(암호화)된 키를 등록하고 검색할 수도 있어 보안 수준을 한층 더 높일 수 있다.

시스템 관리

KMIP는 시스템 오브젝트를 사용하여 적절한 권한을 부여받은 관리 클라이언트에 의해 KMIP 서버를 관리하기 위한 표준화된 메커니즘을 제공한다.

사용자 개체를 생성하고 특정 관리 개체에 대해 특정 작업을 수행할 수 있는 권한을 부여할 수 있다.Managed Objects와 Users 모두 그룹에 할당될 수 있으며, 이러한 그룹은 복잡한 운영 환경의 효율적인 관리를 용이하게 하는 계층을 형성할 수 있다.

KMIP는 또한 간단한 일회용 암호를 사용하여 자격 증명으로 엔드포인트를 제공할 수 있는 프로비저닝 시스템을 제공한다.

속성 기본값을 제공하여 단순한 클라이언트가 암호 및 기타 파라미터를 지정할 필요가 없도록 할 수 있다.예를 들어 관리 사용자는 모든 "SecretAgent" 키를 CBC 블록 체인이 있는 192비트 AES 키로 지정할 수 있다.그런 다음 클라이언트는 기본값을 제공하기 위해 "SecretAgent" 키를 만들도록 지정하면 된다.보안 정책을 구현하는 핵심 파라미터에 대한 제약도 강제할 수 있다.

KMIP 프로필

KMIP는 또한 특정 컨텍스트에 대한 공통 사용을 보여주는 KMIP 규격의 하위 집합인 프로파일 집합을 정의한다.특정 KMIP 구현은 프로파일 규격 문서에 명시된 모든 요건을 충족할 때 프로파일에 부합한다고 한다.OASIS는 스토리지 어레이[1] 및 테이프 라이브러리에 대한 컴플라이언스 요구사항을 설명하는 다양한 프로필을 제시했지만,[2] 어떤 조직이든 프로필을 생성할 수 있다.

PKCS#11과의 관계

PKCS#11하드웨어 보안 모듈을 제어하는 데 사용되는 C API이다.PKCS#11은 암호화와 암호 해독을 위한 암호화 연산과 더불어 단순한 키 관리를 위한 연산을 제공한다.PKCS#11 API와 KMIP 프로토콜 사이에는 상당한 중복이 있다.

이 두 표준은 원래 독립적으로 개발되었다.PKCS#11은 RSA Security에 의해 생성되었지만, 이 표준은 현재 OASIS 기술 위원회에서 관리되고 있다.PKCS#11과 KMIP 위원회 모두 가능한 경우 표준을 일치시키는 것이 목표다.예를 들어 PKCS#11 민감성 및 추출 가능 특성이 KMIP 버전 1.4에 추가되고 있다.KMIP와 PKCS#11 양쪽의 기술 위원회에는 많은 같은 사람들이 있다.

KMIP 2.0은 PKCS#11 메시지를 클라이언트에서 서버로 전송하는 표준화된 메커니즘을 제공한다.이를 사용하는 프로그램을 다시 컴파일할 필요 없이 서로 다른 PKCS#11 구현을 대상으로 하는 데 사용할 수 있다.

KMIP 구현

OASIS KMIP 기술 위원회는 OASIS 웹사이트에서 확인할 수 있는 알려진 KMIP 구현 목록을 유지하고 있다.2017년 3월 현재 이 목록에는 28개의 구현과 61개의 KMIP 제품이 있다.

구현 간 상호 운용성

KMIP 표준은 OASIS KMIP 기술 위원회가 제시한 공식 규격 문서, 시험장 및 프로파일을 사용하여 정의된다.이 문서들은 OASIS 웹사이트에서 공개적으로 이용할 수 있다.

2015 RSA 컨퍼런스의 인터롭 부스.각 벤더는 서로 상호 운용한다.

공급업체는 OASIS KMIP 기술 위원회가 각 RSA 보안 컨퍼런스 전 몇 개월 동안 구성한 프로세스 동안 상호운용성을 입증한다.이 시위들은 비공식적으로 인터롭스라고 알려져 있다.KMIP 인터롭스는 2010년부터 매년 개최되고 있다.다음 도표는 2012년 이후 각 클라이언트와 서버 공급업체 조합에 의해 수행된 개별 테스트의 수를 보여준다.

다음은 "MyKeyName"이라는 이름의 키를 찾아 다른 키로 포장된 값을 "c6d14516-4d38-0644-b810-1913b9aef4da"로 반환하라는 요청의 XML 인코딩을 보여준다. (TTTTLV는 더 일반적인 유선 프로토콜이지만 XML은 더 사람이 읽을 수 있다.)

< RequestMessage>   <요청하다헤더>     <프로토콜버전>       <프로토콜버전메이저> 타자를 치다"인테거" 값어치="3"/>       <프로토콜버전 미니어처 타자를 치다"인테거" 값어치="0"/>     </프로토콜버전>   </요청헤더>   <바치아이템>     <작전 타자를 치다"내성" 값어치="위치"/>     < 유니크바치아이템아이디 타자를 치다"ByteString" 값어치="1"/>     <RequestPayload>       <속담>         <이름 타자를 치다"텍스트 문자열" 값어치="MyKeyName"/>       </속성>     </RequestPayload>   </BatchItem>   <바치아이템>     <작전 타자를 치다"내성" 값어치="겟"/>     < 유니크바치아이템아이디 타자를 치다"ByteString" 값어치="2"/>     <RequestPayload>       < KeyWraphingSpecification>         < 왁싱메토드 타자를 치다"내성" 값어치="암호화"/>         <암호화키정보>           < 유니크아이덴티케이터> 타자를 치다"인테거" 값어치="c6d14516-4d38-0644-b810-1913b9aef4da"/>         </암호화키정보>       </KeyWraphingSpecification>     </RequestPayload>   </BatchItem> </RequestMessage> 

문서화

문서는 OASIS사이트에서 무료로 이용할 수 있다.여기에는 규격에 익숙하지 않은 사람들을 돕기 위한 공식적인 기술 사양과 사용 지침서가 포함된다.

시험 사례의 실질적인 라이브러리도 제공된다.이들은 클라이언트와 서버의 상호운용성을 시험하기 위해 사용되지만, 각 표준 KMIP 기능의 사용에 대한 구체적인 예도 제공한다.

버전 이력

KMIP 버전 및 기능 요약.
버전 위원회 초안 주요 기능
1.0 2010년 10월 초기 버전
1.1 2013년 1월
1.2 2014년 6월 암호화 작업(암호화, 암호 해독, 서명 등).테이프 라이브러리의 응용 프로그램 식별자를 포함한 프로필 소개
1.3 2015 스트리밍 암호화 작업, 클라이언트 등록, 오프셋/제한 위치 찾기, 템플릿 사용 안 함, RNG 쿼리
1.4 2016 향상된 비동기식 운영, 다른 서버로 키 가져오기/내보내기, PKCS #12, 표준화된 키 래핑 지원, 인증 속성, 클라이언트 및 서버 상관 관계 값, 기술 속성, AED 지원, AES-XTS 지원, Secret Data 생성, RSA PSS 지원, 쿼리할 확장 수 있는 확장 기능
2.0 2018 사용되지 않는 항목의 제거, 속성의 효율적인 표현, 사용자 지정 속성에 대한 "x-" 규약 교체, 클라이언트 로그 작업, 날짜 시간 확인 1마이크로초, 파괴된 위치, 더 나은 오류 처리 및 결과 이유, ; 개선된 클라이언트 프로비저닝, 새로운 CSR 개체, 속성 인덱스의 제거, 토큰화 지원; NIST Ke.y 유형 특성, 고정 길이 고유 식별자, 여러 개의 새 특성 및 쿼리 확장, 위임 로그인, 해시드 암호, 다중 고유 ID 자리 표시자, 데이터 참조를 사용한 ReE암호화 지원, 속성 설정 작업, PKCS #11 캡슐화.
2.1 2019 핑, 비동기 요청 처리 및 쿼리, 서버측 키 순환 표준화, 속성 기본값 설정 및 쿼리, 속성에 대한 제약 조건 설정 및 쿼리
3.0 2021 시스템 개체로 모델링된 KMIP 사용자의 명시적 개념 추가, 이름을 사용하는 다른 개체에 대한 참조에 대한 라이프사이클 개선, 개체 그룹 및 계층 구조 공식화,[4] 관리 작업 삭제

참고 항목

참조


외부 링크

  • "OASIS KMIP Technical Committee".