# Show GN: 인터넷 연결 없이 클라이언트에서 간편결제 QR코드 만들기

> Clean Markdown view of GeekNews topic #17928. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17928](https://news.hada.io/topic?id=17928)
- GeekNews Markdown: [https://news.hada.io/topic/17928.md](https://news.hada.io/topic/17928.md)
- Type: show
- Author: [rycont](https://news.hada.io/@rycont)
- Published: 2024-11-24T19:39:25+09:00
- Updated: 2024-11-24T19:39:25+09:00
- Original source: [blog.javien.dev](https://blog.javien.dev/4)
- Points: 17
- Comments: 3

## Summary

디미페이는 한국디지털미디어고등학교에서 인터넷 연결 없이도 결제가 가능한 인하우스 QR 간편결제 솔루션입니다. 이 솔루션은 TOTP에서 영감을 받아 결제 토큰을 생성하고, XChaCha20-Poly1305를 사용한 대칭키 암호화를 통해 보안을 강화하였습니다. 또한, Nonce(uuidv7)를 도입하여 결제코드의 유효성을 검증하고 리플레이 공격을 예방하며, TLV 포맷을 사용해 페이로드를 효율적으로 직렬화합니다.

## Topic Body

함께 보기: https://news.hada.io/topic?id=10280  
  
- 디미페이는 한국디지털미디어고등학교에서  
사용하는 인하우스 QR 간편결제 솔루션입니다.  
- 학생들은 저렴한 데이터 요금제를 사용하여 인터넷 연결이 자유롭지 않은 경우가 많았고, 인터넷 연결 없이도 결제할 수 있는 방법을 고민하였습니다.  
- 오프라인 결제 프로젝트를 리드한 팀원이 연구 과정을 블로그에 상세히 기록해두어서 공유합니다.  
  
기술적 접근:  
- TOTP에서 영감을 받은 결제토큰  
  - TOTP의 카운터와 HKDF를 활용하여 암호화에 필요한 키를 동적 생성  
  - XChaCha20-Poly1305를 사용한 대칭키 암호화  
- 결제코드 유효성 검증  
  - 이미 사용되었거나 만료된 토큰을 구분하기 위해 Nonce(uuidv7)를 도입함  
  - 논스가 가장 최근 결제 시간보다 과거에 생성되었다면 거래 거부  
  - 리플레이 공격을 예방하려는 의도  
- TLV(Tag-Length-Value) 포맷 도입: 페이로드를 유연하면서도 작게 직렬화할 수 있음

## Comments



### Comment 31697

- Author: lazydonkey456
- Created: 2024-11-26T08:16:55+09:00
- Points: 1

시연 영상을 보니까 퀄리티가 대박이네요

### Comment 31660

- Author: bbulbum
- Created: 2024-11-25T10:12:35+09:00
- Points: 1

Local Generated Pay... LG 페이네요 하하하하

### Comment 31662

- Author: seoseonyu
- Created: 2024-11-25T10:21:25+09:00
- Points: 1
- Parent comment: 31660
- Depth: 1

하하하하하
