본문으로 건너뛰기

RSA 암호화

RSA는 공개키(Public Key)와 개인키(Private Key)라는 두 개의 키를 사용하는 비대칭 암호화 알고리즘입니다.

결제 시스템에서는 신용카드 번호, 비밀번호와 같은 민감한 정보(Credential) 를 브라우저(Frontend)에서 서버(Backend)로 전송할 때, 중간에 탈취되더라도 해커가 내용을 알 수 없도록 보호하는 데 사용됩니다.


🔄 작동 원리 (Mechanism)

대칭키(AES)와 달리, **잠그는 키(공개키)**와 **여는 키(개인키)**가 서로 다르다는 것이 핵심입니다.

  1. 공개키 (Public Key): 누구나 가질 수 있습니다. 데이터를 암호화하는 데만 사용됩니다. (브라우저에 배포)
  2. 개인키 (Private Key): 서버만 몰래 가지고 있습니다. 암호화된 데이터를 복호화하는 데 사용됩니다.

💳 결제 연동 활용 (E2E Encryption)

가맹점이 고객의 카드 정보를 직접 다룰 때, 보안 규정(PCI-DSS)을 준수하기 위해 End-to-End(종단간) 암호화를 적용합니다.

  1. 키 발급: KICC 서버로부터 Public Key를 발급받습니다.
  2. 암호화: 사용자가 입력한 카드번호를 브라우저단에서 RSA로 암호화합니다.
  3. 전송: 평문 카드번호는 절대 전송하지 않고, 암호화된 문자열만 서버로 보냅니다.
  4. 결제 요청: 가맹점 서버는 이 암호문을 그대로 KICC에 전달하거나, 복호화 후 재암호화하여 카드사로 보냅니다.

⚠️ 보안 주의사항

🚨 개인키(Private Key) 노출 절대 금지

RSA의 안전성은 개인키의 기밀성에 달려 있습니다.

  • 절대 금지: 개인키를 JavaScript 소스코드에 포함하거나, 클라이언트로 전송하는 행위.
  • 개인키가 유출되면 해커가 모든 암호화된 결제 정보를 복호화하여 볼 수 있게 됩니다.