토스로 저장된 내 계좌를 선택해 송금했는데 다른사람 계좌로 들어갔다는 사건이 발생했습니다.
네이트 판에 올라온 원 글은 임시조치로 블라인드 처리 됐군요.
일단 오 송금을 겪은 고객과 토스 양쪽 모두 자신의 잘못이 없다는 입장인데, 혹시나 만에 하나 양쪽 모두 정말로 잘못하지 않았을 수도, 고객은 정말로 정확히 계좌를 선택했고 토스의 송금 로직에도 어떠한 오류가 없었음에도 다른 계좌로 송금이 이루어질 수 있을까요?
!!주의!! 이하의 내용은 이런 일이 있을수도 있겠다는 가능성의 영역이며, 이번 사건이 이렇게 되었을 것이다 라는 의미는 아님을 미리 밝힙니다.
Single Event Upset
SEU, 번역하자면 “단일사건고장”이라 불리는 오류가 있습니다.
https://en.m.wikipedia.org/wiki/Single-event_upset
방사성 물질이나 우주선(Cosmic ray)의 전하를 띤 입자가 반도체를 관통하면서 데이터가 저장되는 영역(한 비트)의 값을 변경시켜 발생합니다.
컴퓨터의 연산 로직 상 어떠한 오류가 없었음에도 뜬금없이 메모리상의 데이터가 바뀌는거죠.
거의 대부분의 경우 바뀌어도 의미 없는 영역이거나 하여 큰 문제는 없지만요.
이런일이 정말 있을까 싶은 생각이 드는게 당연합니다만, 항공우주 업계에서 SEU의 대비는 예전부터 진지하게 고려되었던 주제이기도 합니다. 항공기가 날아다니는 고도에는 지상보다 전하를 띤 입자가 더 많거든요. 항전장비의 감항인증 기준에도 포함되어 있고, 최근에는 자동차 업계의 표준에도 포함될거라는 기사도 있네요.
그럼 이런 시나리오가 나올 수도 있지 않을까 합니다.
1. 고객이 자신의 계좌를 입금계좌로 선택하고 송금을 누릅니다.
2. 토스는 입금계좌 번호를 받아 확인하고, 출금계좌에서 돈을 인출합니다.
- 출금 은행에는 내 계좌로 송금했다는 기록이 남습니다.
3. SEU 발생, 입금계좌번호의 값이 바뀝니다.
4. 토스는 바뀐 입금 계좌로 돈을 집어넣습니다.
- 토스에는 바뀐 계좌로 돈을 보냈다고 기록이 남습니다.
5. ????
6. Profit!
물론 이런 일은 실제로 일어나지 않았을 가능성이 더 높습니다. 실제로 일어났다고 하더라도 증명할 수는 없겠죠.
자동차 업계에 대한 기사인데, SEU가 뭔지 쉽게 설명이 되어 있습니다.
http://www.digitaltoday.co.kr/news/articleView.html?idxno=114679
토스의(그리고 다른 유사 업체나 은행의) 내부 검증 프로세스를 알 수 없으니 SEU 이야기는 어디까지나 재미로 하는 추측일 뿐입니다.