XHTML   CSS

TODAY 137
TOTAL 1,198,985

지엠스팸프리(ZmSpamFree)의 작동 원리에 대하여...

잦은질문 28번

NAME지앤미 TIME2010-12-13/21:43:44READ6000
TAGPOP0
이 글은, 오스터 님이 질문&답변 게시판에 올리신 질문과
그에 대한 제 답변입니다.

지엠스팸프리(ZmSpamFree), 또는
텍스트 이미지 캅챠를 이용한 스팸검증에 대한 이해를 돕고자
이곳에도 올립니다.

--------
오스터 님의 질문
--------
스팸 프로그램은 알려진대로 그저 폼값을 자동으로 입력하여 넘겨버리는 수준 이상으로 진화했습니다.
제가 여기서 스팸프리 프로그램을 다운받아 적용해 봤는데요, 한가지 의문이 있습니다.

스팸프리 프로그램은 당연히 폼값에서 어떤 랜덤한 숫자를 입력하게 해서 맞으면 글쓰기 성공, 틀리면 글쓰기 불가하게 만드는 프로그램 입니다.  

하지만 이것은 스팸로봇이 단순히 글쓰기 폼을 공략할 때 가능한 일이 아닌가 싶습니다.  스팸로봇이 글쓰기 폼이 아니라 글을 DB에 입력하도록 하는 최종 페이지에 직접 접근하여 글을 입력한다면 글쓰기 폼을 이용한 스팸방지는 무용지물이 되는 게 아닐까 생각해봅니다.

저는 이런 경우까지 생각해서 스팸 등록 방지 프로그램을 고안하고 있는데 좀처럼 아이디어가 앞으로 쭉쭉나가길 않아서 여기에 글을 남겨봅니다...  혹시 지앤미 님도 이런 경우를 생각해 본 일이 있으신가요?


--------
지앤미의 답변
--------
지엠스팸프리(ZmSpamFree)를 직접 적용해 보셨다고 말씀하셨는데요,
직접 적용해 보셨다면 감 잡으셨을텐데
지엠스팸프리(ZmSpamFree)에 대해서 잘못 알고 계신 것 같습니다.

지엠스팸프리(ZmSpamFree)의 작동은 아래와 같이 이루어집니다.

이해를 돕기 위해서
[A] : 글쓰기 페이지 (예: write.php)
[B] : 글쓰기 완료(DB에 저장) 페이지 (예: write_ok.php)
라고 가정하죠.

1. [A] 접속시
① 스팸방지코드(랜덤 수) 생성
② 숫자의 이미지화 (및 이미지 왜곡)
③ 접속 브라우저의 세션정보, 스팸방지코드(랜덤 수)를 서버에 저장

2. [B] 접속시
① 사용자가 입력한 스팸방지코드 확인
② 서버에 저장된 스팸방지코드(랜덤 수)와 비교
③ 틀렸을 경우 에러 출력 및 멈춤 (Denied.php에 로그 기록)
④ 맞았을 경우 DB에 데이터 저장 (Passed.php에 로그 기록)

--------

지엠스팸프리(ZmSpamFree)는 위와 같이 크게 2가지 기능을 합니다.
실제 사용자는 당연히 [A] 페이지에서 글을 작성한 후 [B] 페이지로 넘어갑니다.
그래서 [A]에서 정확한 스팸방지코드를 입력했을 경우
[B] 페이지에서 검증이 되면 DB에 저장하게 됩니다.

하지만, 일반적인 스팸로봇은 [A]를 거치지 않고 바로
[B] 페이지에 접속하여 해당 데이터를 입력합니다.
그러면 어떻게 될까요?
스팸봇은 [A]에 제시된 스팸방지코드를 보지 못했으므로
정확한 스팸방지코드를 입력할 수 없습니다.
따라서 당연히 스팸 등록은 차단되게 되는 것이지요.

--------

그렇다면, 스팸로봇이 [A]페이지를 거쳐서 [B]로 넘어가는 코스를 밟는다면
과연 스팸방지코드를 제대로 입력할 수 있을까요?

답 : 어렵습니다.

지엠스팸프리(ZmSpamFree)에서 제시하는 스팸방지코드는
텍스트(text)가 아닌 이미지(image)로 되어 있습니다.

'사과'라는 텍스트가 있습니다. 그리고
'사과 사진'이 있습니다.

사람은 '사과'라는 텍스트를 보고도 '사과'를 떠올리고
'사과 사진'을 보고도 '사과'를 떠올립니다.

하지만, 로봇의 눈으로는
'사과'라는 텍스트는 '사과'지만
'사과 사진'은 정확히 무엇을 의미하는지 모릅니다.
이미지는 텍스트와 달리 스팸봇의 입장에선
'0과 1로 이루어진 대용량 데이터'일 뿐입니다.

지엠스팸프리(ZmSpamFree)와 같은 텍스트 이미지 캅챠(Text Image Chaptcha)는
바로 이것을 이용한 것입니다.

'1234'라는 텍스트는 사람이나 컴퓨터나 똑같이 '1234'로 인식할 수 있지만
지엠스팸프리(ZmSpamFree)의 숫자 이미지는 사람만이 읽을 수 있지요.
스팸봇의 입장에선 그저 1개의 이미지 파일과 같습니다.

--------

물론, 컴퓨터 기술은 나날이 발전하여
자기 사진을 업로드하면 닮은꼴 연예인 사진을 제시할 정도로
이미지의 인식기술도 높아졌지요.
그리고 단순한 숫자를 이미지화한 이미지를
숫자로 인식할 수 있는 기술도 없는 것은 아닙니다.

그래서, 구글이나 MSN과 같은 세계적인 포털사이트의 이미지 캅챠는
스패머들이 기를 쓰고 해당 이미지를 분석하고 해석하는데 열을 올리곤 하지요.

하지만, 지엠스팸프리(ZmSpamFree)는 그러한 대형 포털에 쓰이지는 않기 때문에
그만큼 공격 가능성이 적다고 볼 수 있지요.

--------

그럼에도 불구하고, 지엠스팸프리(ZmSpamFree)가 뚫릴 가능성이 높은 이유는
'소스'를 무료로 공개했기 때문입니다.
숫자 데이터를 어떻게 이미지화하는지, 어떻게 왜곡하는지에 대한
소스를 전 세계 누구나 다 볼 수 있도록 공개했습니다.

만일, 제가 지엠스팸프리(ZmSpamFree)를 개발하고, 소스를 공개하지 않은 채
저 혼자만 사용한다면
앞으로 1~20년, 아니 그 이상 뚫릴 가능성이 없을 것입니다.
제가 관리하는 사이트에만 적용한다면, 그 사이트의 수도 제한될테고
무엇보다 소스가 공개되지 않았기 때문에 참으로 안전하겠지요.

저는 뚫릴 것을 각오하고 소스를 공개한 것입니다.

구글 또는 MSN에서 자사(自社)에서 사용하는 캅챠 프로그램 소스를 공개한다면
일 주일도 못 되어 뚫립니다.
소스 공개는 보안상 참으로 할 짓이 못 됩니다만,
더 많은 사용자들이 유용하게 사용했으면 하는 바람에서 소스공개한지
2년이 넘었네요.

소스 공개 후 지난 2년간
아직은 제대로 뚫렸다는 보고를 받지 못했습니다.

--------

오스터 님이 남겨주신 글만 가지고 볼 때
제 생각으로는, 아직 오스터 님은
지엠스팸프리(ZmSpamFree)의 작동 원리를
완전하게 이해하지는 않으신 듯합니다.
그리고, 구글, MSN, 네이버, 다음 등의 대형 포털에서도
지엠스팸프리와 똑같은 원리의 텍스트 이미지 캅챠를 사용하고 있습니다.

따라서, 스팸방지 프로그램을 구상 중이시라면
지엠스팸프리(ZmSpamFree)의 작동원리를 충분히 이해하시는 것이
도움이 될 것입니다.
다른 어떤 텍스트 이미지 캅챠를 이용한 스팸방지 프로그램도
원리는 같거든요.

또 궁금한 것이 있으면 글 남겨 주세요.
제가 아는 한 상세히 설명해 드리도록 하겠습니다.

2010-12-16/10:52:50 last modified.

잦은질문

NoCatSubjectDateRead
30 안내 이미지에 마우스 포인터 올리면 손가락 모양으로 바뀌게 하는 방법 2011-07-14 27094
29 안내 모바일 기기에서도 되나요? 2011-04-09 4392
28 안내 지엠스팸프리(ZmSpamFree)의 작동 원리에 대하여... 2010-12-13 6001
26 안내 로그파일이 안 보여요. 2010-04-26 4677
25 안내 스팸방지 이미지가 나오지 않는 경우(DEMO페이지에서는 잘 나옴) 2010-03-22 6445
24 안내 aaa.com 과 bbb.com 등 2개 이상의 도메인 사용시 2010-02-19 5122
23 안내 FTP만 가능한데 어떻게 설치하죠? (텔넷이 불가한 경우) 2009-12-02 3856
22 안내 프로그램을 깨끗이 지우고 싶어요. (uninstall.php 사용법) 2009-11-02 4778
21 안내 SpamFree.kr 라는 로고를 안 나오게 할 수 있나요? 2009-11-02 4122
20 안내 퍼미션(permission)에 대한 에러메시지 및 문제 해결 2009-10-07 9493
18 안내 네 자리 숫자도 많다. 한 두 자리로 줄여다오. 2009-07-13 3909
17 안내 이미지가 안 뜨거나, 화면이 백지상태로 아무 것도 안 나오는 경우 2009-07-13 5408
16 안내 100% 회원제 게시판인데 어디 어디 적용해야 하죠? 2009-04-16 3981
15 안내 왜 F5(새로고침)키로는 문제가 바뀌지 않죠? 2009-04-15 4943
14 안내 로그파일은 어떻게 봐야 하는거죠? 2009-04-12 5594
13 안내 에디트플러스 소개 및 사용방법 2009-03-20 10067
12 안내 처음엔 잘 되다가 시간이 지나면 이미지가 안 보여요. 2009-03-18 5019
11 안내 검증코드를 어디에 넣어야 할지 모르겠어요. 2009-03-08 4430
10 안내 스팸차단코드가 무조건 틀렸다고 나와요. (카페24) 2009-02-26 8172
9 안내 zm_crypt 는 뭐고 ZmSpamFree 는 뭐죠? 2009-01-14 3713
8 안내 제대로 설치한 것같은데 광고게시물이 올라와요. 2009-01-03 5201
7 안내 직접 설치해 주실 수는 없나요? 2009-01-02 3793
6 안내 설치 디렉토리가 정확히 어딘가요? 2008-12-09 3532
5 안내 파일을 불러오고 저장시 반드시 UTF-8로... 2008-12-07 8439
4 안내 제대로 설치한 것 같은데 에러가 나는 경우 2008-12-07 4064
3 안내 본 게시판에 설정된 환경설정 예 2008-12-02 4728
2 안내 스팸방지코드가 나오지 않거나 깨져 보이는 경우(카페24) 2008-12-02 10470

Elapsed 1.1391 sec.