AML 심사 체계
어떤 명단을 어떻게 대사하고, 무엇을 근거로 등급을 매기고, 발급 이후 무엇을 다시 보는지. 규제 요구와 구현 모듈의 대응도 함께 둡니다.
isVerified() 하나를 믿고 통과시키는 순간, 우리 통제의 품질이 그들의 의무 이행 품질이 됩니다. 그래서 감사가능성과 오탐 통제가 부가 기능이 아니라 제품의 본체입니다.1. 심사 파이프라인
발급 요청은 검사 7종을 순서대로 통과해야 합니다. 비해당 검사도 결과를 남깁니다 — “그 검사를 안 했다”와 “해당이 없었다”는 감사에서 전혀 다른 말이기 때문입니다.
| 검사 | 무엇을 보나 | 데이터 | 상태 |
|---|---|---|---|
| OWNERSHIP | 대상 지갑의 EIP-191 서명. 서명 원문에 케이스 번호가 묶여 심사 없는 발급을 막습니다. | 온체인 서명 | 라이브 |
| IDENTITY | 선언 정보의 형식·범위 정합성. L1은 제3자 검증이 없으므로 형식만 봅니다. | 본인 선언 | 라이브 |
| ADDRESS | 지갑 주소가 제재 지정 목록에 있는지. 적중은 하드 차단입니다. | OFAC 디지털자산 주소 | 라이브 |
| SANCTIONS | 이름 대사. 95점 이상 차단, 85점 이상 검토. | OFAC SDN · UN Consolidated | 라이브 |
| EXPOSURE | 제재 지정 주소와의 온체인 접촉. 발급 이후에도 계속 보는 축의 첫 측정점입니다. | gKRW 전송 로그 | 라이브 |
| JURISDICTION | FATF 조치 촉구 관할 여부. 검토가 아니라 거절입니다. | FATF 성명 | 라이브 |
| RISK | 위험평가 종합. 등급이 어테스테이션 만료와 재심사 주기를 실제로 정합니다. | 인자 6종 | 라이브 |
| PEP · 부정적 언론 | 정치적 주요인물·부정적 보도 대사. | 벤더 연동 예정 | 로드맵 |
| VENDOR | 휴대폰 본인확인(L2), 신분증·안면 eKYC(L3). | 미연동 | 로드맵 |
FAIL 하나면 발급하지 않습니다. HIT는 케이스를 열고 발급을 보류합니다. 자동 승인은 전 검사가 통과했을 때만입니다.
2. 명단 — 무엇을 적재했나
| 소스 | 발행 기관 | 적재 | 상태 |
|---|---|---|---|
| OFAC SDN | U.S. Treasury | 엔티티·별칭·생년월일·국가 + 디지털자산 주소 | 라이브 |
| UN Consolidated | UN 안전보장이사회 | 개인·단체 엔티티와 별칭 | 라이브 |
| EU 제재 목록 | EU 이사회 | 미적재 | 로드맵 |
| 금융위 금융거래제한대상자 | 금융위원회 | 기계 판독 가능한 공개 배포본이 없어 미적재. 수기 등재 경로만 열어 둠 | 로드맵 |
| 테러자금금지법 지정 명단 | 외교부·금융위 | 미적재 | 로드맵 |
| PEP | 복수 출처 | 미적재 | 로드맵 |
국내 명단은 글로벌 KYC 벤더가 대부분 다루지 않는 축이고, 우리가 채워야 할 공백입니다. 다만 지금 적재돼 있지 않다는 사실을 목록에 그대로 둡니다.
판정 시점의 명단 버전(원본 파일 해시들의 해시)이 케이스와 증적에 기록됩니다. 명단이 갱신돼도 “그때 그 명단으로는 통과였다”를 재현할 수 있어야 하기 때문입니다.
3. 매칭 — 표기 조작에 대한 방어
제재 회피는 대개 표기 조작으로 시작합니다. 정규화가 이것을 걷어내지 못하면 뒤의 유사도 계산은 의미가 없습니다.
- ·보이지 않는 문자 제거 — 제로폭 공백·서식 문자로 정확일치를 깨뜨리는 수법.
- ·동형문자 폴딩 — 라틴 문자와 겉모습이 같은 키릴·그리스 문자를 라틴으로 되돌립니다.
- ·발음기호 제거 — Ramón → ramon.
- ·어순 무관 토큰 매칭 — 짝지어진 토큰의 평균 유사도에 양방향 커버리지의 조화평균을 곱합니다. 성 하나만 겹치는 경우가 과대평가되지 않습니다.
- ·생년월일 대조 — 이름만으로는 동명이인을 가를 수 없습니다. 일치하면 점수를 올리고, 어긋나면 내리되 이름이 사실상 같으면 검토선 아래로는 내리지 않습니다 — 위조 생년월일일 수도 있기 때문입니다.
2만여 건을 매 요청마다 전수 비교하지는 않습니다. 토큰 색인으로 후보를 좁힌 뒤 후보만 채점합니다(AML 실무의 blocking). 채점한 후보 수가 케이스에 남습니다.
4. 위험평가 — 등급이 무엇을 바꾸는가
위험등급이 아무것도 바꾸지 않으면 모델은 장식입니다. 여기서 나온 등급이 어테스테이션의 만료와 다음 재심사 시점을 정합니다.
| 인자 | 가중치 | 내용 |
|---|---|---|
| 관할 위험 | 25 | 국적·거주국의 FATF 관할 위험, 국적과 거주국의 불일치 |
| 명단 대사 | 25 | 이름 대사 최고 점수 |
| 지갑 주소 지정 | 20 | 제재 지정 지갑 여부 |
| 거래상대방 노출 | 15 | 제재 주소와의 온체인 접촉 건수 |
| 지갑 이력 | 10 | 과거 폐기 이력, 신규 지갑 여부, 거래 건수 |
| 선언 정합성 | 5 | L1은 제3자 검증이 없다는 사실 자체를 점수에 반영 |
무조건 격상이 따로 있습니다. 제재 명단 일치·제재 지정 지갑·조치 촉구 관할은 가중합에 섞을 인자가 아닙니다. 다른 인자가 아무리 좋아도 결론이 바뀌면 안 되므로 등급을 그대로 최고로 올립니다.
| 등급 | 점수 | 만료 | 재심사 주기 |
|---|---|---|---|
| 1 낮음 | 0–24 | 365일 | 365일 |
| 2 보통 | 25–44 | 365일 | 180일 |
| 3 주의 | 45–64 | 180일 | 90일 |
| 4 높음 | 65–84 | 90일 | 30일 |
| 5 매우 높음 | 85–100 | 30일 | 7일 |
5. 발급 이후 — 매일 다시 대조한다
발급 시점에 통과한 지갑도 명단이 갱신되거나 온체인 행위가 바뀌면 더 이상 통과가 아닙니다. 매일 00:00 KST에 활성 로스터 전체를 다시 대사하고, 적중하면 그 자리에서 폐기합니다. 사람이 버튼을 누르지 않습니다.
활성 로스터 재구성 (온체인 Issued 이벤트 → isKycVerified 확인)
↓
제재 지정 주소 대사 · 제재 주소와의 온체인 접촉 검사
↓
적중 → 케이스 생성 → 폐기 증적 레코드 → reasonHash로 revoke() 트랜잭션
↓
게이트 즉시 차단 (isVerified false)재대사의 범위 — 여기가 지금의 한계입니다
이름 축은 매일 돌지 않습니다. 우리가 이름을 저장하지 않기 때문입니다. 이름 축 상시 감시는 검증 벤더의 모니터링 웹훅을 받는 것이 설계이고, 아직 연동돼 있지 않습니다. 지금 매일 도는 것은 개인정보 없이 가능한 두 축입니다 — 지갑 주소와 온체인 접촉.
6. 증적 — 해시의 원본
온체인 evidenceHash는 증적 레코드의 해시입니다. 레코드를 보관하지 않으면 그 해시는 검증할 수 없는 32바이트일 뿐입니다. 발급·폐기·재대사마다 레코드를 만들어 앞 레코드의 해시를 품게 이어 붙입니다. 중간을 고치면 그 뒤가 전부 어긋납니다.
레코드에는 개인정보가 없습니다. 이름·생년월일은 검사 결과로만 남고, 동일인 다지갑 연결에 쓰는 솔티드 해시만 저장합니다(솔트는 서버에만 있으므로 레코드로 이름을 되돌릴 수 없습니다).
사본은 발급 응답으로 대상자에게 전달됩니다. 사본과 온체인 해시만 있으면 우리를 믿지 않고도 검증이 성립합니다 — 저장소는 운영 편의이지 신뢰의 근거가 아닙니다.
7. 폐기 사유 코드
사유를 자유 문자열로 두면 통계도 정책도 만들 수 없습니다. 사유마다 재발급 가능 여부가 다릅니다.
| 코드 | 사유 | 재발급 |
|---|---|---|
| SANCTIONS_HIT | 재대사에서 요주의 명단과 일치 | 오탐 해소 전에는 불가 |
| ADDRESS_HIT | 지갑 주소 자체가 제재 지정 | 같은 주소로는 불가 |
| EXPOSURE_HIT | 제재 주소와의 온체인 접촉 | 소명 후 재심사 가능 |
| RESCREEN_FAIL | 정기 재심사에서 확인 불가 | 자료 보완 후 가능 |
| USER_REQUEST | 대상자 본인 철회 | 언제든 가능 |
| KEY_COMPROMISE | 지갑 키 유출 신고 | 새 지갑으로만 |
8. 규제 요구 ↔ 구현 대응
| 근거 | 요구 | 대응 | 상태 |
|---|---|---|---|
| FATF R.1 | 위험기반 접근 — 식별·평가·경감 | 위험평가 모델 + 등급별 만료·재심사 | 라이브 |
| FATF R.10 | 고객확인 — 신원확인과 검증 | L1 본인 선언 (검증은 벤더 위임 예정) | 개발 중 |
| FATF R.12 | PEP 식별·강화감시 | 미구현 | 로드맵 |
| FATF R.15 | 가상자산·신기술 위험 | 지갑 주소 대사 + 온체인 노출 검사 | 라이브 |
| FATF R.16 | 트래블룰 — 송수신인 정보 | 수취인 사전확인 신호 제공 (연동 전) | 로드맵 |
| 특금법 §5의2 | 고객확인·재이행 | 등급별 재심사 주기 + 일일 재대사 | 개발 중 |
| 특금법 §5의4 | 기록보존 5년 | 증적 해시체인 (영속 저장소는 다음 단계) | 개발 중 |
| FIU 업무규정 | 위험등급별 고객확인 재이행 주기 | 등급 → 만료·재심사 주기 연결 | 라이브 |
| FIU 2026 계획 | 비수탁 지갑 거래의 위험경감 | 지갑 소유권 증명 이력 + 상태 번들 제공 | 로드맵 |
| PIPA | 최소수집·파기 | 이름 미저장, PII 온체인 0바이트, 솔티드 해시만 보관 | 라이브 |
| NIST SP 800-63 | 신원보증 수준(IAL) 표기 | 등급 정의서 공표 | 라이브 |
조문 인용은 법무 검토 전 단계입니다. 이 표는 “어떤 기능이 어떤 의무에 대응하는가”의 지도이지 법률 의견이 아닙니다.
9. 하지 않는 것
- ·자산 동결·이전 — 우리 조치는 인증 철회까지입니다. 자산에 손대지 않습니다.
- ·STR·CTR 직접 보고 — 보고 주체는 파트너 VASP입니다. 우리는 참고자료를 제공합니다.
- ·본인확인기관 — 검증 실행은 공인 벤더에 위임합니다.
- ·대량 PII 보유 — 사람 축은 벤더 판정을 소비하고, 지갑·온체인 축만 직접 수행합니다.
- ·온체인 위험등급 공개 — 오탐 1건이 영구 낙인이 됩니다. 위험 밴드는 서명된 오프체인 응답으로 전달합니다.