변조 방지(Integrity Protection)란?

eunhee·2025년 11월 14일

결제시스템

목록 보기
3/15

🔐 결제 서비스에서 변조 방지가 필요한 이유

온라인 결제는 금액, 주문번호, 가맹점 ID(mid) 등 중요한 정보가 오가는 과정이다.
이 데이터가 중간에서 바뀌면 (예를 들어 금액을 낮춰 보내거나, 다른 주문번호로 조작하면)
부정 결제, 오결제, 환불 사고가 발생할 수 있다.

그래서 결제 시스템에서는 반드시 전송되는 데이터가 변경되지 않았음을 보증하는 기술인
변조 방지(Integrity Protection)가 필요하다.


🏷️ 변조 방지란?

결제 요청이 생성된 이후, 누군가가 데이터를 수정했는지 여부를 검증하는 기술
PG(결제대행사)가 ‘이 데이터는 가맹점이 보낸 그대로 맞다’고 확인할 수 있게 하는 장치다.

방식

이 값이 PG와 가맹점 양쪽에서 동일하게 나오면 데이터가 변조되지 않은 것으로 인정한다.

  • 해시(Hash) : SHA256, SHA512 등 단방향 알고리즘으로 값 생성
  • 서명(Signature) : HMAC, RSA 등으로 서명
  • 비밀키(Key)를 이용한 조합 : mid, 금액, timestamp 등을 merchant key와 함께 해싱해 값 생성
  • Nonce/Timestamp 사용 : 재사용 공격 방지

🔑 왜 업체마다 방식이 다를까?

각 PG사는 내부 정책·보안규정·기술 스택이 다르기 때문에
어떤 필드를 조합할지, 어떤 해시 알고리즘을 쓸지, 어떤 비밀키를 활용할지 각자 정의한다.

예시

구성 요소와 방식은 서로 다르다.

  • 어떤곳은 amount + order_id + site_cd + payUrl + trdId + paymentMethod + secretKey 를 SHA256로 암호화
  • 다른 곳은 oid + mid + amount + secureKey 를 HMAC-SHA512 혹은 MD5로 암호화
  • 또 다른 곳은 RSA 개인키로 서명(Signature)

방식은 다르지만 변조 방지의 목적은 모두 같다.

결제 요청이 변조되지 않았다는 것을 PG가 검증할 수 있게 하는 것.

profile
안녕하세요. 개발 로그입니다.

0개의 댓글