인증ㆍ보안
인증ㆍ보안
카카오써트에서 제공하는 SDK에는 "인증"과 "보안"이 내부적으로 구현되어 별도의 개발이 필요하지 않으므로, 본 가이드는 참고 목적으로만 이용하여 주시기 바랍니다.
인증
카카오써트 API는 "토큰 기반 인증 시스템"을 이용하여 이용자를 식별하고 통신 위변조를 차단하여 상호 신뢰할 수 있는 통신환경을 보장하고 있습니다. 토큰 기반 인증을 완료한 프로그램 공급사만이 카카오써트 API 호출이 가능합니다.
1. 토큰 발급
프로그램 공급사는 API 통신전문 위변조 방지를 위하여 카카오써트에서 발급한 인증정보(LinkID, SecretKey)로 생성한 HMAC-SHA256 Signature를 HTTP Authorization Header에 입력하여 보안 토큰을 발급받습니다.
HTTP Authorization Header 입력 예시
Authorization: BAROCERT LinkID Signature
Signature 의사코드(pseudocode)
Content-MD5는 전문에 Contents가 없는 경우(GET request)에는 빈 문자("")로 처리합니다. Date는 UTC 시간으로 기재되어야 하며, Authorization Header 또는 x-lh-date Header 중 하나의 Header에 반드시 입력되어야 합니다.Canonicalized-LINKHUBHeaders는 HTTP Header에 카카오써트가 정의하는 Header를 추가로 입력하는 정보로 'x-lh-'로 시작하는 HTTP Header에 Canonicalization한 결과입니다.
Authorization = "LINKHUB" + " " + LinkID + " " + Signature;
Signature = Base64( HMAC-SHA256( SecretKey, UTF-8-Encoding-Of( StringToSign ) ) );
StringToSign = HTTP-Verb + "\n" +
Content-MD5 + "\n" + Date + "\n" +
CanonicalizedLINKHUBHeaders + ResourceURI [include query string];
CanonicalizedLINKHUBHeaders = >described below<
- 1. 모든 Header 이름을 소문자로 변환합니다. e.g. x-lh-Date -> x-lh-date
- 2. Header를 이름순으로 정렬합니다.
- 3. 동일한 Header 이름에 대해서는 공백 없는 콤마 구분자로 하나로 합하여 처리합니다.
- 4. Key와 value를 구별하는 콜론(;)의 앞/뒤 공백은 제거합니다.
- 5. Header의 key는 제외하고 value만 개행문자(\n)로 합하여 하나의 문자열로 처리합니다.
2. 토큰 이용
발급받은 토큰을 Authorization Header에 입력하여 카카오써트 API를 호출합니다.
카카오써트는 BearerTokenValue를 이용하여 별도의 약속된 암호 알고리즘으로 프로그램 공급사를 식별합니다.
HTTP Authorization Header 입력 예시
Authorization: Bearer BearerTokenValue
카카오써트는 수신한 API 토큰 값을 별도의 약속된 암호화 알고리즘으로 해석하여 프로그램 공급사를 식별하여 서비스를 제공합니다.
Signature 의사코드(pseudocode)
Authorization = Signature;
Signature = Base64( HMAC-SHA256( SecretKey, UTF-8-Encoding-Of( StringToSign ) ) );
StringToSign = HTTP-Verb + "\n" +
Uri + "\n" +
Date + "\n" +
Content-MD5 + "\n"
Content-MD5는 전문에 Contents가 없는 경우(GET request)에는 빈 문자("")로 처리합니다. Date는 UTC 시간으로 기재하여 x-bc-date Header에 Api 버전인 2.0을 x-bc-version Header에 반드시 입력해야 합니다.
보안
카카오써트는 기술적, 물리적, 절차적으로 보안 3단계를 구축하여 고객사가 안심하고 연동하실 수 있도록 안정적이고 체계적인 개발 환경을 제공합니다.
1. 전구간 필드 레벨 암호화(Field Level Encryption) 의무 적용
카카오 인증을 위해 수집된 고객사의 모든 개인정보(이름, 생년월일, 휴대폰번호, 원문) 보호를 위하여 카카오써트는 필드 레벨 암호화를 검증된 SDK로 제공하여 중요한 민감 데이터의 보안을 강화합니다.

2. AWS 인프라
카카오써트의 모든 서버는 AWS(Amazon Web Services) 클라우드 인프라에서 안전하게 관리되고 있습니다. 엄격한 보안 요구 사항을 충족하도록 설계된 AWS 인프라는 데이터의 기밀성, 무결성 및 가용성을 보장하여 다양한 고객사의 니즈를 충족하는 서비스를 제공하고 있습니다.
적용중인 주요 보안 솔루션
-
KMS(Key Management Service)
카카오써트에서 발급된 암호화 키는 AWS KMS에서 안전하게 보관/관리합니다.
-
Inspector
시스템 취약성 및 의도하지 않은 네트워크 노출에 대하여 지속적으로 관리합니다.
-
SecurityHub
시스템 보안 상태를 통합하여 보안 표준에 부합하도록 관리합니다.
-
GuardDuty
악의적인 활동을 모니터링하고 위협을 탐지하여 상세하게 보안 결과를 관리합니다.
3. ISO 27001 국제정보보안
카카오써트는 국제표준화기구(ISO)와 국제전기기술위원회(IEC)에서 제정한 정보 보호 분야에서 가장 권위 있는 ISO 27001 보안 인증을 획득하였습니 다. 이 과정에서 정보보호 정책, 물리적 보안, 접근 통제 등 총 14개 영역 114개 표준 통제 항목에 대한 엄격한 심사과정을 통과하여 정보, 유출, 해킹, 보안 위협에 효과적인 대응이 가능한 보안 체계를 갖추고 있음을 인증 받았습니다.
