본문으로 건너뛰기

시크릿 키 (Secret Key)

시크릿 키(Secret Key) 란, 가맹점과 KICC 시스템만이 서로 공유하고 있는 고유한 비밀키(대칭키) 입니다.

API 연동 시 데이터가 변조되지 않았음을 증명(무결성 검증) 하거나, 민감한 정보를 암호화할 때 사용하는 가장 중요한 보안 수단입니다.


🛡️ 주요 역할 (Roles)

KICC 결제 서비스에서 시크릿 키는 크게 두 가지 핵심 용도로 사용됩니다.

1. 데이터 무결성 검증 (HMAC-SHA256)

결제 금액이나 주문 번호가 전송 중에 해커에 의해 변조되는 것을 막기 위해 사용합니다.

  • 원리: [원본 데이터] + [시크릿 키]를 해시 함수(SHA256)로 돌려 생성된 서명 값(authHash)을 함께 전송합니다.
  • 검증: KICC 서버는 동일한 키로 해시를 생성하여 값이 일치하는지 확인합니다.

2. 데이터 암호화 (SEED)

개인정보나 카드 정보 등 평문으로 보낼 수 없는 데이터를 암호화하는 데 사용됩니다.

  • 알고리즘: KISA(한국인터넷진흥원) 표준인 SEED 블록 암호화 알고리즘의 키로 사용됩니다.

🏗️ 보안 아키텍처 (Security Architecture)

시크릿 키는 가맹점의 신분증과 같습니다. 따라서 브라우저(Frontend)나 모바일 앱 소스코드에 절대 포함되어서는 안 되며, 오직 백엔드 서버에만 존재해야 합니다.


🚨 개발자 필수 보안 수칙

절대 노출 금지

시크릿 키가 유출될 경우, 해커가 가맹점을 사칭하여 결제 취소를 하거나 데이터를 위변조할 수 있습니다.

  1. 저장 위치: 소스코드(Git)에 하드코딩하지 말고, 환경변수(.env) 나 별도의 보안 키 관리 시스템(KMS) 에 저장하세요.
  2. 전송 금지: 어떤 경우에도 시크릿 키 자체를 API 파라미터로 전송하거나, 클라이언트(프론트엔드)로 내려주지 마세요.
  3. 재발급: 만약 키가 유출되었다고 의심되면, 즉시 가맹점 관리자 페이지에서 키를 폐기하고 재발급 받아야 합니다.