brunch

You can make anything
by writing

C.S.Lewis

by 서준수 Dec 21. 2016

Multiplex Password

과거 글 2011.3.1

Convenient and Safe Login System : Multiplex Password


 생각난 아이디어를 정리했던 글이다. 이 자료를 기반으로 특허 등록도 도전해 봤지만 2년의 기다림 끝에 최근에 특허 거절 결정서를 받았다. 이유는 비슷한 아이디어가 미국 특허에 있기 때문이었다. 관련한 내용은 따로 정리할 예정이다.


1. 서론

 네트워크를 기반으로 성장한 컴퓨터 산업의 이야기는 전혀 새로운 것이 아니다. 특히 최근에 전 세계적으로 급격히 보급된 스마트폰과 그로 인한 인프라로 형성된 SNS의 힘은 열풍을 넘어서 폭풍이 되었다고 말할 수 있다.

 이집트 혁명은 SNS의 영향력을 보여준 더없이 좋은 사례이다. 또한 미국 오리건주 법원은 재판 배심원의 적격 여부를 판단할 때 후보자이 페이스북을 미리 참조한다고 한다. 이런 눈부신 네트워크 서비스의 성장에 따른 영향력에는 그에 따른 위험도 도사리고 있다. 대부분의 네트워크 서비스에서 반드시 거쳐야 할 과정이 바로 본인에 대한 인증절차인 '로그인'이다. 하지만 타인이 비밀번호를 탈취하여 자신의 계정에 로그인한다면 어떨까? 막대한 영향력과 급속도로 퍼져나가는 인터넷의 특성을 고려한다면 작은 문제가 아니다. 특히 계정의 주인이 영향력이 큰 인물일수록 그 문제는 더욱 심각해질 수 있다.

 실제로 2011년 1월 24일, 프랑스 르몽드지는 니콜라 사르코지 프랑스 대통령 페이스북 계정이 해킹당했으며, 사르코지가 차기 대선에 불출마하고 이를 기념하는 파티를 열겠다는 거짓 메시지가 올라와 있었다고 보도한 바 있다. 또한 미국 IT 전문매체인 매셔블 등 주요 외신들은 페이스북의 공동창업자 겸 CEO인 마크 주커버그의 펜페이지가 해킹당한 것으로 추측된다는 기사와 함께 이로 인한 파장으로 페이스북이 '1회용 비밀번호'와 같은 개인정보 보안 강화 조치를 발표했다고 보도했다.

 비단 영향력 있고 유명한 인물이 아닐지라도 수많은 개인정보를 담고 있는 계정을 해킹당하는 것은 위험하긴 매한가지다. 메신저나 SNS 서비스 계정을 해킹당하면 지인들에게도 많은 피해를 줄 수가 있고 게임 계정 등을 해킹당해 자신이 열심히 노력하여 얻은 결과물들을 도둑맞을 수도 있다.

 현재 안전한 로그인으로 주목받고 있는 방법은 OTP(One Time Password)이다. 금융보안 연구원의 OTP통합인증기술은 얼마 전 ITU-T(국제 전기통신연합 전기통신 표준화부문) 국제표준으로 채택되었다. 하지만 매번 새로운 비밀번호를 받는 과정과 익숙하지 못한 문자열을 입력하는 불편함이 OTP의 사용을 주저하게 만든다. 또한 OTP를 전송받을 휴대전화 등의 단말기가 없는 사람 혹은 상황에서는 사용에 제약이 따른다. 이런 점을 개선하여 기존의 로그인 방식보다 안전하면서 OTP보다 편리하게 로그인할 수 있는 새로운 방식을 제안하고자 한다.


2. 본론

 이용자의 계정을 탈취하려는 대부분의 크래커들이 노리는 것은 수단과 방법이 다를 뿐 결국 해당 계정의 패스워드이다. 뒤에서 몰래 패스워드를 훔쳐보는 아날로그적 방법에서부터 좀 더 기능화된 키 로그(Key log) 그리고 한창 기승을 부렸던 ARP Spoofing까지 방법은 달랐지만 결국 패스워드 탈취가 목적이었다. 앞서 말한 OTP의 성격을 고려하면 OTP는 password라기보다는 passcode라고 부르는 것이 더 어울린다. 여기서 제시할 방법은 여전히 password의 성격을 고수하고 있다고 할 수 있다.

 그럼 본격적으로 편리하고 안전한 로그인 방법을 소개하겠다. 여기서 제시하는 새로운 로그인 방법의 핵심은 사용자가 한 계정에 대해서 n개의 패스워드를 지정하는 것이다. 계정 생성 단계에서 계정에 몇 개의 패스워드를 부여할지를 사용자가 선택하고 그 개수만큼 패스워드를 지정한다. 이것을 n차  다중 패스워드(Multiplex Password)라고 부르기로 하자. 그리고 로그인할 때 n개의 패스워드를 순차적으로 사용하도록 한다. 이때의 패스워드를 n-(n-1) 차, n-(n-2) 차,..., n차로 부르기로 한다. 그리고 접속 로그를 모두 기록하여 사용자가 따로 확인할 수 있도록 한다. 접속 로그는 접속 성공 유무를 모두 기록하여 크래커가 자신의 계정으로 접속했는지를 넘어서 접속을 시도했는지에 대한 정보를 제공하도록 한다. 접속했었다면 이미 해킹된 것이므로 별 의미가 없기 때문이다.

 이제 다중 패스워드가 어떤 이유로 안전성에 도움이 되는지 살펴보자. 일단 기존의 로그인 방식을 사용한 아래의 사례를 살펴보자.


 S씨는 오랜만에 PC방을 찾았다. 평소에는 거의 게임을 하지 않지만 PC방에 온 김에 온라인게임을 하기로 마음먹고 로그인하려고 한다. 이때 S씨는 게임 계정을 입력하고 패스워드를 입력한 후 로그인 버튼을 누른다. S씨는 게임을 재미있게 즐기고 안전하게 로그아웃하고 PC방을 나섰다. 며칠 뒤 PC방에서 오랜만에 즐긴 게임이 문득 생각나 집에서 게임을 하기 위해 로그인하였다. 그런데 S씨의 게임 캐릭터 상태가 심상치 않았다. 멋진 갑옷과 각종 고가 아이템들이 흔적도 없이 사라진 것이다. 해킹임을 직감한 S씨는 고객센터로 연락해 보았지만 피해일로부터 일주일이 지난 상태라 확인이 불가능하다는 답변만 들었다.


 이번에는 S씨의 게임 계정에 3차 다중 패스워드가 적용되어 있다고 가정하자. 이런 조건을 가지고 위와 같은 상황을 재구성해보자.


 S씨는 오랜만에 PC방을 찾았다. 평소에는 거의 게임을 하지 않지만 PC방에 온 김에 온라인게임을 하기로 마음먹고 로그인하려고 한다. 이때 S씨는 게임 계정을 입력하고 패스워드를 입력한 후 로그인 버튼을 누른다. 그리고 다음 화면에서 나타난 '1차 패스워드를 입력하세요.'라는 문구를 확인하고 1차 패스워드를 입력한 후 로그인한다. S씨는 게임을 재미있게 즐기고 안전하게 로그아웃하고 PC방을 나섰다. 며칠 뒤 PC방에서 오랜만에 즐긴 게임이 문득 생각나 집에서 게임을 하기 위해 로그인하였다. 이번 로그인에서는 2차 패스워드를 입력하라는 문구는 확인하고 그에 맞게 패스워드를 입력했다. 접속 로그를 확인하니 PC방에 다녀왔던 날 저녁에 접속 시도를 하였지만 실패한 흔적이 있었다. S씨는 해킹 시도임을 직감하고 1차 패스워드를 변경하였고 고객센터에 이러한 사실을 알렸다.


 위의 두 사례를 비교하면 똑같은 상황이지만 결과는 확연히 다르다는 것을 알 수 있다. 즉, 크래커에게 패스워드가 노출된 것은 두 사례 모두 가지는 공통점이지만 크래커가 획득한 패스워드가 이용 가능한가 아닌가에서 해킹을 당하느냐 마느냐의 엄청난 차이가 발생한다. 이용할 수 없는 패스워드라면 아무런 의미가 없다. 자물쇠에 맞지 않는 열쇠가 무의미한 것과 마찬가지이다. 여기서 또 다른 중요한 포인트는 접속 로그를 남긴 것이다. 접속 로그가 남지 않았다면 패스워드의 노출 여부를 판단할 수 없다. 패스워드 노출 여부를 알지 못한 채로 방치한다면 잠재적으로 크래커에게 해킹될 우려가 있다. 크래커가 1차 패스워드를 탈취한 상태에서 실제 사용자가 2차, 3차 패스워드를 사용하고 다시 1차 패스워드를 사용할 순서가 왔을 때를 노리다면 속수무책이기 때문이다. 따라서 접속 로그가 남지 않는다면 해킹 예방률이 떨어진다. 접속 로그를 남기는 방식은 두 번째 사례에서처럼 해당 서비스 접속 후 로그를 확인할 수도 있지만 e-mail이나 sms와 같은 방법으로 대체해도 무방하다. 어떤 방식으로든 접속 유무를 확인할 수만 있다면 충분하다. 왜냐하면 접속 로그는 해킹 유무를 판별하고 그에 대응하기 위한 보조 수단이지 실제로 직접적인 해킹을 막아준 것은 바로 한 계정에 여러 패스워드를 사용한 다중 패스워드이다. 아무리 접속 로그를 재빠르고 정확하게 알려준다고 해도 패스워드가 하나라면 해당 서비스의 접속을 종료하고 패스워드를 바꾸기 위한 시간이 필요하다. 만약 PC 등이 없어서 그럴 여건이 되지 못하는 상황이라면 그 시간은 훨씬 커지고 피해도 자연스레 커지게 될 것이다.

 이제 다중 패스워드의 좀 더 구체적인 구현 방법과 원리를 살펴보자.


 2.1) 회원가입

 회원가입 단계에서는 사용자가 기존 방식을 사용할 수 있는 선택권과 패스워드의 개수를 직접 설정할 수 있게 하여 편의성을 제공한다. 즉 1개의 패스워드를 선택하면 기존의 로그인 방식과 같은 것이 되고 그 외의 개수는 선택할 수 있도록 한다. 부가적으로 다양한 접속 로그 방식을 선택할 수 있는 기능을 제공한다.


그림1. 회원가입 예시


2.2) 로그인

 로그인 시에는 n차 비밀번호를 순차적으로 사용하기 때문에 먼저 아이디를 입력하여 로그인을 시도한 후에 해당 아이디의 DB에서 읽어온 n값을 토대로 어떤 패스워드를 입력해야 하는지에 대한 정보를 보여준다. n값은 로그인 성공 시에 +1이 되며 값이 n보다 커지면 1로 초기화하여 1~n값을 순환하도록 한다.


그림2. 로그인 예시


2.3) 접속 로그

 로그인 시에 아이디 입력을 해서 패스워드 입력 페이지로 넘어갔을 때 이미 해당 아이디의 DB에 로그를 남길 준비를 해야 한다. 패스워드 입력 페이지에서 패스워드가 틀렸을 경우 'n차 패스워드 접속 시도 : 실패'라는 로그를 기록해야 하기 때문이다. 또한 n차 패스워드가 아닌 무작위 접속에 대한 실패도 구별해서 따로 기록해야 좀 더 효율적인 패스워드 관리가 가능하다. 패스워드가 일치하면 'n차 패스워드 접속 시도 : 성공'이라는 로그를 남기고 접근을 허용한다.


2.4) 해킹 피해 예방 원리

 크래커에게 노출될 수도 있는 공공장소에서 로그인할 경우에 다중 패스워드 중 특정 순서의 패스워드를 입력하게 된다. 이때 크래커에 의해 자신의 패스워드가 탈취되었고 탈취된 패스워드가 1차 패스워드라고 가정하자. 크래커는 훔친 정보를 이용해서 로그인을 시도하려고 하겠지만 1차 패스워드로 이미 접속했기 때문에 다시 접속할 때는 2차 패스워드를 입력해야 한다. 하지만 크래커는 2차 패스워드에 대한 정보는 갖고 있지 않기 때문에 로그인할 수 없다. 결과적으로 크래커는 정보는 가로챘지만 사용자 계정에 대한 직접적인 해킹은 실패한 것이다.

그림3. 다중 패스워드의 해킹 피해 예방 원리


 만약 일반적인 로그인 방법으로 단일 패스워드를 사용했다면 위와 같은 경우에서 해킹을 예방할 수 없고 패스워드 노출과 동시에 해킹의 피해를 입게 된다.

그림4. 일반 로그인 시 해킹 피해의 예


2.5) Flow Chart

 Flow Chart는 Pseudo Code로 작성하였다.


그림5. 로그인 과정 Flow Chart


3. 결론

 보안 기술이 날이 갈수록 발전한다고 하지만 그에 따라 해킹 기법도 다양하게 진화하고 있다. 취약점이 발견되면 해킹으로 이어지고 그 취약점을 극복하면 새로운 취약점이나 새로운 방식을 고안해 다시 해킹을 시도한다. 이런 악순환이 반복되면서 보안과 해킹은 서로 동반성장을 하고 있다. 여기서 다룬 내용이 복잡하고 깊은 수준의 해킹 기법에 대한 방어법은 아니지만 뛰어난 해킹 실력을 가진 진짜 해커는 해커 윤리 강령을 준수할 것이라고 믿고, 해킹 툴을 이용하여 변변찮은 해킹을 일삼는 하찮은 수준의 크래커들을 상대하기에는 상당히 유용한 방법이 될 것이라고 생각한다. 기존의 방법에 비하면 해킹 피해를 확실히 줄일 수 있을 것이라고 믿는다. 물론 OTP와 같이 해킹을 거의 완벽하게 차단할 수 있는 훌륭한 방법이 존재하지만 앞서 말했듯이 매번 패스워드를 발급받아야 하는 불편함을 없애면서도 기존의 방법보다는 더 안전한 로그인 모델을 제시하고자 했다. 이런 관점에서 목적에 상당히 잘 부합하는 방법이 되지 않았나 하는 생각이 든다.

매거진의 이전글 애플, 혁신의 덫과 스티브 잡스의 부재
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari