키 관리 상호운용성 프로토콜
Key Management Interoperability ProtocolKMIP(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 웹사이트에서 공개적으로 이용할 수 있다.
공급업체는 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 기능의 사용에 대한 구체적인 예도 제공한다.
버전 이력
버전 | 위원회 초안 | 주요 기능 |
---|---|---|
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] 관리 작업 삭제 |
참고 항목
- 키 관리
- 키(크립토그래피)
- 암호화
- 스토리지 작업 그룹의 IEEE P1619 보안
참조