본문 바로가기

전체 글

(5)
Local Token 0.4 Release Note 로컬 생성 결제 토큰이 처음이라면, 이전 글을 먼저 읽어주세요! 최근 앱과 백엔드에서 로컬 생성 결제 토큰 구현을 시작했는데, 구현 중에서 치명적인 논리적 오류 찾아 사양 일부를 수정해야 했어요.하지만 이번 업데이트는 단순히 이 오류만 고치는 것이 아니라, 암호화 알고리즘 교체, TLV 포맷 도입, 키 유도 함수 등 보안적으로도 큰 변경이 이루어졌어요.TL;DR사양 논리 오류 수정HKDF로 암호 키 유도오프라인 무차별 대입 공격(Offline brute-force attack) 대응AES-GCM 사용 중지 및 XChaCha20-Poly1305 도입16 바이트를 줄여 QR 버전 5 사용 가능 (이전: 버전 6)TLV 포맷 도입Nonce 값으로 UUIDv7 사용Additional Data 필드 추가 HMAC..
QR 코드에 최대한 많이 때려넣기 결제용 QR 코드는 단순히 일회용 토큰으로만 구성될 수 있지만, 로컬 생성 결제 토큰처럼 사용자 ID나 결제 수단 정보 등 추가적인 데이터가 충분히 담길 수 있어요. 네이버 페이에서 사용되고 있는 EMV-QR 표준은 이미 탬플릿 지시자나 결제 수단 정보(Track 2 Equivalent Data)와 인증 코드 같은 부가 정보를 담고 있어요. 하지만 QR 코드로 전달할 수 있는 데이터의 양은 훨씬 제한적이에요. 이론상 가장 큰 QR 코드는 약 2,900자 까지 담을 수 있지만, 이 경우 QR 코드의 크기가 너무 거대해져서 특히 모바일 앱에서 사용하기엔 적절하지 않아요. 바코드도 하나의 디자인 요소로 볼 수 있기 때문에 QR 코드의 크기에 대한 제한도 필요해요. 특히 로컬 생성 결제 토큰은 사용자 기기에서 ..
🤫오프라인이지만 온라인이어야 해요 - 로컬 생성 결제 토큰 디미페이는 네이버페이와 카카오페이처럼 사용자 휴대폰에서 제시되는 QR 코드로 오프라인 결제를 제공해요. 그런데 디미페이를 포함한 이런 대중적인 오프라인 결제 서비스를 사용하기 위해 공통적으로 필요한 게 있어요. 바로 "인터넷"이에요. 오프라인 결제를 하는데, 온라인이어야 한다니, 뭔가 모순적이지 않나요? 사실 요즘 밖에서 인터넷을 사용하지 못하는 사람은 많이 없다고 생각해요. 그래서 크게 중요하게 생각하지 않을 수도 있는데, 저희가 인터넷 환경에 신경쓰는 이유는 디미페이가 학생들을 위한 결제 서비스이기 때문이에요. 학생들은 상대적으로 모바일 데이터가 부족한 경우가 많아요. 인터넷이 안돼서 친구가 대신 결제해 주고 나중에 송금해 준다는 걸 저희 팀원에게 들었을 때 꾀 충격적이었어요. 모든 학생이 차별 없이..