RSA 암호화
RSA는 공개키(Public Key)와 개인키(Private Key)라는 두 개의 키를 사용하는 비대칭 암호화 알고리즘입니다.
결제 시스템에서는 신용카드 번호, 비밀번호와 같은 민감한 정보(Credential) 를 브라우저(Frontend)에서 서버(Backend)로 전송할 때, 중간에 탈취되더라도 해커가 내용을 알 수 없도록 보호하는 데 사용됩니다.
🔄 작동 원리 (Mechanism)
대칭키(AES)와 달리, **잠그는 키(공개키)**와 **여는 키(개인키)**가 서로 다르다는 것이 핵심입니다.
- 공개키 (Public Key): 누구나 가질 수 있습니다. 데이터를 암호화하는 데만 사용됩니다. (브라우저에 배포)
- 개인키 (Private Key): 서버만 몰래 가지고 있습니다. 암호화된 데이터를 복호화하는 데 사용됩니다.
💳 결제 연동 활용 (E2E Encryption)
가맹점이 고객의 카드 정보를 직접 다룰 때, 보안 규정(PCI-DSS)을 준수하기 위해 End-to-End(종단간) 암호화를 적용합니다.
- 키 발급: KICC 서버로부터
Public Key를 발급받습니다. - 암호화: 사용자가 입력한 카드번호를 브라우저단에서 RSA로 암호화합니다.
- 전송: 평문 카드번호는 절대 전송하지 않고, 암호화된 문자열만 서버로 보냅니다.
- 결제 요청: 가맹점 서버는 이 암호문을 그대로 KICC에 전달하거나, 복호화 후 재암호화하여 카드사로 보냅니다.
⚠️ 보안 주의사항
🚨 개인키(Private Key) 노출 절대 금지
RSA의 안전성은 개인키의 기밀성에 달려 있습니다.
- 절대 금지: 개인키를
JavaScript소스코드에 포함하거나, 클라이언트로 전송하는 행위. - 개인키가 유출되면 해커가 모든 암호화된 결제 정보를 복호화하여 볼 수 있게 됩니다.