인터넷 보안 - 나의 계정을 지키자

시스템 잡설  |   2013. 1. 3. 21:49

터넷을 사용하면서 아이디 / 비밀번호(이하 패스워드)는 하나 이상은 가지게 되었다. 인터넷 공간에서 자신의 아이디는 현실 세계의 신분증과 같은 것이지만 우리는 쉽게 아이디 / 패스워드를 만들어서 그런지 그 중요성이나 그에 관련된 보안의 중요성은 쉽게 생각하지 못하는 경우가 많다. 만드는 것도 쉽게 만들고, 자주 들어가지 않으면 기억하지 못하고, 그래도 쉽게 비밀번호를 찾거나 복원할 수 있기에 큰 비중을 두고 생각하지 않는 경향이 되어간다. 한편으로는 너무 일상적인 입력이 되어버렸기 때문에 동일 아이디 / 패스워드로 모든 웹 서비스를 이용하는 사람들도 증가하고 대부분의 사람들은 한개, 두개 정도 변하지 않는 패스워드를 가지고 있거나 패스워드를 바꾼다고 해도 동일한 패스워드로 다 바꿔버리는 경우가 대부분이다. 



심지어 친한 사이에는 아이디 / 패스워드도 공유하거나, 단지 게임을 하기 위해서 타인의 개인정보를 이용해서 만들어지는 아이디 / 패스워드로 생각하지 못한 피해를 보거나, 온라인 금융 및 결재 관련된 서비스에서는 돈과 관련이 되어 있기 때문에 민감하게 잘 관리하고 보안에 신경써야 할 것이다. 우리의 삶과 별로 상관없어 보이는 인터넷 상의 보안은 사실 우리의 실제 생활가 가장 민감하게 연결되어 있고 개인의 정보 뿐만 아니라 개인 사생활에 걸친 공개되면 안되는 정보들이 노출될 수 있는 가장 신경써야 하는 부분이다. 그러나 인터넷의 보급과 편의성이 증가하면서 상대적으로 보안에 대한 의식과 필요성은 크게 증가하지 않는 것이 사실이다. 


세부적으로 인터넷 상의 어떤 보안 기술이 적용되고 우리가 안전하다고 생각하는 국내 보안에 관련된 문제점을 이야기하고 싶지만 이 부분에 대해서 너무도 자세하면서 쉽게 설명한 내용이 있어 해당 블로그를 링크로 대체한다. 웹툰으로 구성되어 일반인들도 쉽게 이해할 수 있는 수준으로 기본적인 부분부터 전체적 인터넷 보안에 대한 이해를 위한 자료 중 전세계에 걸쳐 최고의 자료라고 추천하고 싶다. 


SSL 이란 무엇인가 1부

SSL 이란 무엇인가 2부 


SSL의 작업: 보기만 해도 복잡하다. 사용자는 그냥 잘 되려니 믿고 따르면 된다.



인터넷이 시작하면서, 그리고 사용자들이 인터넷에 의존하는 비중이 증가하며 인터넷은 의도하지 않은 다양한 방법으로 보안을 뚫었고 그에 따라 보안과 더불어 암호화 기술의 발달로 이제는 어느 정도, 비교적 안심할 수 있는 수준의 보안 구조를 만들었다. 웹툰의 SSL 을 통해 알 수 있듯이 웹 서비스가 SSL를 잘 지원하고 보안이 된다면, 우리가 입력하고 통신하는 내용들이 암호화되어 중간에 그 데이터를 가로채도 이론상 해독할 수 없는 단계이다. 사실 사용자 입장에서 어떤 기술이 어떻게 적용되었는지 구체적으로 아는 것보다는 어떤 상태가 보안 수준이 높은 상태이고 어떤 상태가 취약한 상태인지는 알아 두는 것이 좋을 것이다. 



▨ 아이디 / 패스워드가 노출되기 쉬운 기술적 환경


1. SSL 이 지원되지 않은 상태: 웹툰에서 SSL에 대한 내용과 같이 SSL 이 지원되는 웹 서비스는 페이지 앞에 특정 아이콘이나, 주로 http 가 아닌 https 로 표시가 된다. 가능하다면 https 로 시작하는 환경으로 인터넷 작업을 하는 것이 필요하다. 대부분 규모가 있는 사이트는 SSL 를 지원하고 자신의 환경설정에서 Secured HTTP 옵션을 설정할 수 있다. 따라서 페이스북, 구글 서비스 등은 자신의 환경 설정에서 해당 부분을 확인하고 사용하는 것을 추천한다. 



불과 3~4년전만 하더라도 SSL 보안이 설정되지 않은 메일 설정으로 의도적으로 상대방의 메일 내용을 획득할 수 있는 방법이 많았다. 이제 기본적으로 지원하는 메일 서비스가 대부분이고 가능하면 SSL 옵션은 기본으로 설정하는 것이 좋다. 그리고 특별한 이유가 있지 않는한 가급적 SSL을 지원하지 않는 서비스는 사용하지 않는 것이 바람직하다. 


2. 공개된 무선랜을 조심하라: 모바일 기기뿐만 아니라 대부분의 컴퓨터가 무선랜 환경에서 인터넷을 사용하고, 카페나 공공기관에 암호나 인증 없이 바로 사용할 수 있는 공개된 형태의 무선랜이 있다. 급하게 인터넷을 사용해야한다면 모르겠지만 가급적이면 공개되어 있다고 하더라도 사용하지 않는 것이 좋다. 따라서 한번 접속했던 공개 무선랜의 경우에 다시 SSID (무선랜 이름) 만 동일하고 공개되면 자동으로 접속될 가능성이 있기 때문에 해당 무선랜 SSID 를 삭제하거나 모바일 기기의 경우 필요한 경우 무선랜을 켜놓는 습관도 보안에 도움이 될 수 있다. 



3. 보안에 도움이 되는 소프트웨어를 사용하자: 가장 생각해야 할 소프트웨어는 백신관련 소프트웨어일 것이다. 요즘은 공개되어 있는 백신도 많기 때문에 자신의 기호에 따라서 적절하게 선택하는 것이 좋을 것이다. 학교나 기관에 소속되어 있다면 해당 기관에서 구매한 라이센스를 사용하는 방법도 있다 이런 백신 프로그램은 단순히 백신만을 탐지하는 것이 아니라 악의적인 기능을 사용자 몰래 실행하게 하는 말웨어(malware)나 개인정보나 개인의 사용 내용을 탐지해서 빼내는 스파이웨어(spyware)나 키로거(keylogger)와 같은 부분도 탐지하는 역할을 한다. 


> Microsoft security essentials : 다운받기

> Avira free antivirus : 다운받기


그리고 무엇보다 보안에 안정적인 브라우저를 사용하는 것이 좋다. SSL 표준뿐만 아니라 인터넷 페이지에 숨어 있는 악성 코드, 프로그램 등이 실행되지 않도록 브라우저에서 막아줄 수 있다면 더욱 안심하고 사용할 수 있을 것이다. 


4. 검증되지 않은 소프트웨어를 사용하지 말자: 무료로 사용할 수 있는다 이유로 불법 자료를 사용할 때는 그안에 악성코드가 담겨 있다면 그 책임도 사용자에게 있다. 그러나 요즘의 백신 프로그램이나 브라우저는 이런 악성코드의 탐지에 어느정도 신뢰할 수 있기 때문에 적절한 소프트웨어만 잘 사용한다면 이런 문제도 해결할 수 있다. 그러나 문제가 발생할 수 있다는 경고에도 소프트웨어를 사용하고 싶은 욕심에 허용한다면 그건 어쩔 수 없이 사용자의 문제일 것이다. 



▨ 아이디 / 패스워드 관리를 위한 습관


1. 동일한 아이디 / 패스워드는 피하라: 거의 대부분의 사용자는 동일 아이디 / 패스워드 혹은 아이디가 다르다고 해도 패스워드는 동일한 경우가 대부분이다. 당장은 별 문제가 없을지 몰라도 어떤 이유든 패스워드가 노출이 된다면 거의 모든 웹 서비스에 아이디 / 패스워드가 노출이 자동으로 되는 것이다. 특히, 특정 업체가 가지고 있던 개인정보가 해킹을 당한다면, 그리고 그 안에 노출된 패스워드가 담겨 있다면 자신의 아이디 / 패스워드는 말 그대로 공개되는 것이다. 따라서 웹 서비스마다 다른 패스워드를 설정하는 습관이 필요하다. 이는 아이디 / 패스워드가 노출되는 것을 막기 위해서가 아니라 어떤 이유든 어떤 곳에서 노출이 되었을 때 이차적인 피해를 막는 최소한의 방법이기 때문이다. 


그러나 대부분 이런 설정에 대해서 무척이나 불편해 한다. 웹 사이트 마다 다르게 하면 기억하기도 어렵고 나중에는 기억하지 못할 것을 걱정하기 때문이다. 그러나 여기에 자신만의 묘수를 사용할 수 있다. 몇가지 예를 들면 일정하게 동일한 문구 password 라고 주로 사용한다면 그 다음에 숫자는 각 사이트의 이름에 따라 변경해주는 것이다. 예를 들어 사이트 이름이 '몽달이'라는 곳이라면 두번째 음의 '달'의 획수가 10획이어서 뒤에 0을 붙어주고 그 다음으로 첫번째 획수가 '몽'이니 7번이니 Shift 7 를 눌러 & 를 붙어 password0& 과 같이 자신의 규칙을 만들어 놓는 방법도 있을 것이다. 


2. 사전 단어 (dictionary word) 나 유추가능한 단어는 피하라: 간단하게 설명하면 사전에 나온 단어를 사용하지 않는다. 사전 단어는 그 자체로 문제가 아니라 패스워드의 일부만 노출이 되었을 때도 유추가 가능하다는 거이 문제이다. 자신의 이름 영문 이니셜, 공개된 자신에게 의미있는 숫자 (생일, 집주소 등) 를 피하고 개인적 생각이지만 한글 단어, 이름을 영타로 입력하는 방법 (e.g. 패스워드 → votmdnjem) 도 사실 추천하지 않는다. 차라리 음은 같은데 숫자인 경우 예를 들어 e 는 2 로 대체하거나 B 는 8 로 대체하는 등의 자신이 연상시킬 수 있는 것으로 대체해서 숫자나 특수문자를 포함시키는 방법도 있다. 


3. 모바일 기기를 조심하라: 모바일 기기의 앱들 중에는 아이디 / 패스워드를 입력해서 들어가는 경우가 있고 옵션으로 아이디 / 패스워드를 저장할 수 있도록 해주기도 한다. 그런데 재밌는 것은 대부분은 저장하지 않는 것이 보안을 생각하는 것이라고 생각한다. 그러나 사실은 그 반대이다. 공공장소에서 누가 패스워드 입력하는 것을 보아라 모바일 기기는 자판이 없는 관계로 자신이 어떤 자판을 입력하는지 확신하기 어려워 현재 입력하는 자판을 크게 보여주거나 아니면 패스워드 입력 부분에 마지막 입력중인 것은 숨김(*; asterisk)으로 표시하지 않는다. 저장하면 자신의 모바일 기기를 보는 사람이 해당 앱을 통해 자신의 블로그 혹은 페이지에 들어갈 수 있단 생각에 암호를 저장하지 않지만 사실 암호가 노출되면 해당 개인정보뿐만 아니라 동일한 패스워드를 사용하는 사람이라면 거의 모든 페이지가 노출되는 것이다. 따라서 보안을 생각하는 입장이라면 차라리 암호를 저장하는 것이 더 현명한 방법이다. 보안의 가장 큰 원칙은 노출되는 기회를 줄이는 것이다. 내가 입력하는 매 순간이 모두 노출될 수 있는 가장 큰 위험이 있을 때이다. 



4. 사용빈도가 적은 아이디 / 패스워드는 차별화하라: 사용빈도가 많거나, 적거나 관계없이 패스워드가 동일하다면 취약한 사이트에서 해킹을 통해 노출된 패스워드는 사용빈도가 많은 사이트에도 동일하게 노출된다. 그 반대도 문제이다. 한참 문제가 되었던 모회사의 메신저 서비스처럼 사람들이 만들어 놓고 방치해두었는데 이를 이용해 지인들에게 피싱(phishing)하는 경우도 있다. 사실 사이트마다 다르게 패스워드를 다르게 설정하면 가장 좋지만 그 많은 사이트를 그렇게 적용한다는 것도 무척이나 어려운 일이다. 따라서 사용빈도가 많은 사이트는 첫번째 습관처럼 자신의 규칙에 맞는 자신만 기억할 수 있는 방법을 적용하고 그 외의 사이트 등은 아예 자신도 기억하지 못하는 패스워드를 만드는 것이다. 아이디 / 패스워드 관리 프로그램을 보면 랜덤으로 패스워드를 만들어주고 기록할 수 있도록 해준다. 사용빈도가 많지 않기에 접속할 때마다 참조해서 들어가도 문제가 없는 사이트들은 차라리 자신도 모르는 의미없는 패스워드를 만드는 것도 방법이다. 



5. 공용 컴퓨터 / 의심되는 컴퓨터 사용을 자재하라: 아무리 자신의 패스워드를 잘 만들었다고 해도 어떤 악성 프로그램이 설치된지 모르는 컴퓨터에서 자신의 패스워드를 입력하는 것은 분명 현명한 선택은 아니다. 


웹서비스에서 보안을 강화한다는 목적으로 패스워드 길이, 특수문자, 숫자 등의 조합을 의무적으로 넣도록 한다. 그러나 사실 해킹이나 자신의 패스워드가 노출될 때 짧다고 보안에 취약하고, 길다고 보안이 잘되는 것은 아니다. 실제로 중요한 것은 어떤 지점에서, 어떤 방식으로 취약한가가 더 중요하다. 어떤 의미에서 털려도(?) 되는 중요한 개인정보가 없는 웹서비스에서 평소에 자주 쓰는 패스워드나 복잡한 형태의 패스워드를 쓰기 보다는 오히려 단순하고 기억하기 쉬운 형태에서 약간의 변형을 준 짧은 형태의 패스워드를 써서 마음편히 털려도 그만이라 생각하는 것도 나쁜 방법은 아니다. 


이외에도 사실 사용자들이 생각해야 할 많은 습관들이 있지만 앞서 SSL를 설명한 블로그의 다른 내용을 참조했으면 좋겠다. 우리나라의 보안 구조와 우리가 착각하고 있는 보안의 일면들을 살펴볼 수 있기 때문이다. (처음엔 다 링크할 생각은 아니었지만 어느 하나 놓치기 아까울만큼 좋은 내용이라 모두 소개합니다.)


[웹툰05] 공인인증서의 치명적 문제 1/2

[웹툰06] 공인인증서의 치명적 문제 2/2

[웹툰07] 한국식 보안 상황에서 살아남는 법 1/2

[웹툰08] 한국식 보안 상황에서 살아남는 법 2/2

[웹툰09] 거짓말로 점철된 한국 보안 1/2

[웹툰10] 거짓말로 점철된 한국 보안 2/2

[웹툰11] 부인 방지 - 가장 황당한 사기 1/2

[웹툰12] 부인 방지 - 가장 황당한 사기 2/2


¶ 사족(Personal appendix): 웹툰을 살펴보면 우리나라의 금융, 관공서 등 주요 기관의 인터넷 환경은 보안을 위해서 복잡한 환경을 요구하는 것을 알 수 있다. 아이디 / 패스워드와 관련해서는 아니지만 보안 측면에서 개인적으로는 퇴행이라는 생각뿐이다. 자신이 원하는 브라우저도 선택하기 힘들고 그리고 원하지 않는 강제적인 공인인증서, 보안카드, 웹사이트의 추가보안 설치 프로그램(ActiveX 포함)은 오히려 보안의 가장 큰 걸림돌이라고 생각한다. 그런데 쓰지 않을 수 없기 때문에 개인적으로 가상 공간(Virtual Machine)을 실행시켜 그 공간 안에서만 해결한다. 쉽게 말해 평소 사용하는 운영체재 안에 또다른 운영체재를 돌리는 것이다. VirtualBox 라는 솔루션을 통해서 무료로도 가능하다. 


한숨나오는 ActiveX



▨ 새로운 패러다임의 패스워드를 생각한다. 


론상(?) 웹 서비스가 SSL을 지원하고 사용자가 쓰는데 편리성과 보안성을 모두 만족할 수는 없을까 고민하던 사람들에 의해서 (사실 대부분은 암호학을 연구하는 수학자 등이 많았다.) 다양한 방법이 제시되었다. 가장 유명한 방법은 OTP (One-time Password) 라는 방식으로 아이디/패스워드를 입력하고 혹은 아이디만 입력하고 OTP에서 표시하는 숫자를 입력하는 것이다. 해당 시간에 유효한 패스워드는 하나만 가능하고 비록 그 숫자가 노출되어도 다음번엔 변경되기에 소용없다. 그리고 아이디/패스워드 조합과 함께 입력되기 때문에 OTP 를 잃어버려도 해당 계정에 대한 새로운 OTP 키를 발생해서 잃어버린 OTP를 무효로 만들 수 있다. 


생각해보면 우리나라의 주민등록번호같이 막무가내 방식도 없다. 예를 들어 여권의 경우 만약 분실을 하게 되면 새로운 번호를 발급하여 예전 여권번호는 무효화시키고 새로운 번호를 발급해서 사용자와 연결만 시켜주면 된다. 그러나 주민등록번호는 하나로 고정되어 있기 때문에 주민등록번호를 기본 개인정보로 이용해 인증을 하는 경우에는 주민등록번호하나만으로 순차적으로 개인정보가 노출될 가능성이 더 높아지게 된다. 



앞서 설명한 내용 중에 패스워드 관리 프로그램을 통해서 난수(랜덤)의 패스워드를 만들어내는 것이 사용자 측면에서 기억할 수 없기 때문에 불편하지만 그만큼 노출되어도 추가적인 위험은 상당히 줄어든다. 잘 생각해보면 사용자에게 조차 무의미한 패스워드가 사실 보안의 측면에서는 가장 좋은 방법이라는 역설적인 발견을 할 수 있다. 따라서 OTP 와 같이 무의미한 난수, 그러나 인증이 가능한 로직에 의해서 만들어져 해당 사용자인지 아닌지 인증을 할 수 있는 방법또한 실제로는 나에게 의미없는 패스워드인 동시에 매 유효 시간마다 무의미한 패스워드를 만들어내는 것이 핵심이다. 그런데 OTP 발생기기를 소지해야한다는 불편함이 존재한다. 


▨ 2-step verification 


바일 기기가 보급되면서 별도의 OTP 발생기기를 모바일 기기에서 사용가능하다면 어떨까? 즉, 앱의 형태로 동일한 기능으로 난수를 발생시켜줄 수 있는 기능을 하는 것이다. 그러나 처음 2-step verification 이란 이름으로 구글에서 로그인 방법을 제시했을 때 느낌은 무척 불편하겠구나 싶었다. 그러나 보안을 강화하는 방법으로 한번 써보자는 생각을 했고 결과적으로 말하자면 선택하지 않는 것이 더 불편하구나!로 마음이  변했다. 그 이유는 설정하는 방법을 먼저 소개하고 이어 설명할 것이다. 


a. 계정 정보에서 2-step verification 설정하기 


먼저 자신의 구글 계정(구글 앱스 계정도 동일)으로 로그인하면 다음과 같이 비밀번호를 저장할 것인지 물어본다. 본인만 사용하는 컴퓨터 혹은 본인만 사용가능한 계정이라면 저장하는 것을 권장한다. 만약 다음과 같이 물어보지 않는다면 브라우저의 설정 내용중 '저장된 비밀번호'를 관리하는 부분에서 설정하면 된다. 



보이는 화면은 조금씩 다를 수 있지만 본인의 계정에서 Account (계정 정보) 에 들어간다. 만약 해당 화면이 보이지 않는다면 Gmail 의 설정화면에서 Accounts → Google Account Settings 로 들어가면 된다. (영어 기준으로 설명하겠습니다.) 



계정 설정으로 들어가면 Password (암호설정) 부분이 나오고 현재 패스워드는 언제 변경한 것인지 정보가 나온다. Manage Security 로 들어가면 2-step verification 화면이 나온다. 



Edit 를 눌러 들어가면 2-step verification 에 대한 간단한 설명을 보여준다. 



첫번째 설정화면은 자신이 사용하는 모바일폰을 입력한다. 아이디 / 패스워드를 입력하고 받게 될 난수 코드를 문자로 보내주거나 문자가 가능하지 않은 모바일폰의 경우에는 음성으로 알려주게 된다. 여기까지 보면 매번 로그인할 때마다, 그리고 심지어 구글 계정으로 로그인해야하는 모바일기기, 수많은 앱에서 설정해주는 구글 계정에서 이렇게 매번 입력해줘야 하나 고민이 쌓이기 시작한다. 그래도 보안을 위해 일단 해보자. 



입력하고 나서 받은 verification code 를 입력해준다. 일치한다면 다음으로 넘어간다. 



만약 로그인한 컴퓨터가 자신의 개인 컴퓨터이고 계속해서 사용할 컴퓨터라면 사용중인 컴퓨터를 30일동안 OTP 없이 계속 인증해주는 화면이다. 따라서 한달에 한번 정도 입력해주면, 맨 처음 아이디 / 패스워드로 입력한 부분은 브라우저에 저장되고, 2-step verification 의 OTP 는 등록된 컴퓨터로 30일 동안 별도로 입력하지 않아도 자동으로 로그인한 상태로 사용할 수 있다. 그래서 별도의 설정을 지우거나 초기화하거나 로그오프하지 않는 한 30일 동안은 로그인을 아이디 / 패스워드 입력없이도 바로 사용가능한 것이다. 



이후 2-step verification 이 설정된 것을 알리는 메세지가 나온다. 



확인하면 2-step verification 의 설정화면이 나온다. 우선 살펴볼 설정화면은 모바일폰도 잃어버리고 전혀 인증할 기기가 없을 때 접속할 수 있는 방법을 제공해주는 Printable backup codes 를 보면, 모바일기기가 없어서 인증 코드를 받을 수 없는 상황에서 인증하기 위해서... 


2-step verification 설정화면


다음과 같이 10개의 숫자 조합이 나오게 되고 이를 통해서 인증이 가능하다. 따라서 이 숫자 조합은 다른 곳에 별도로 저장을 하거나 프린트를 해서 마지막 백업 수단으로 가지고 있을 필요가 있다. 또한 이 코드가 타인에게 노출된 상태에서는 새롭게 만들어서 새로운 백업 조합을 만들 수 있다. 



아이디 / 패스워드를 입력하고 인증 코드를 받을 수 있는 방법은 두가지이다. 첫번째는 좀 전 설정한대로 모바일폰으로 받는 것이다. 추가 백업 모바일폰을 설정할 수 있다. 


두번째는 스마트폰의 앱을 통해서 아이폰이나 안드로이드폰, 블랙베리의 앱을 통해서 가능하다. 물론 스마트폰이 아닌 아이팟터치와 같이 앱을 사용할 수 있는 기기는 모두 가능하다. Mobile application 항목에서 자신에게 맞는 기기를 선택하면 QR 코드가 나온다. 



그전에 자신의 기기에 맞는 OTP 앱을 설치해야 한다. 설치하고 계정 등록하여 해당 QR 코드를 찍으면 자신의 계정에 맞는 OTP 계정이 만들어진다.



해당 인증 코드를 입력하면 앞으로 인증 시 앱으로 확인하여 인증할 수 있게 된다. 이렇게 설정이 되면 내가 사용하는 컴퓨터는 아이디 / 패스워드 입력을 거의 하지 않고 로그인해서 사용하기 편리하다. 오히려 아이디 / 패스워드 가지고 입력하는 것이 더 번거로워질 것이다. 그리고 외부에 나가 공용 컴퓨터에서 접속을 하더라도 해당 컴퓨터에서 Trusted Computer 로 인증을 하지 않는다면 공용 컴퓨터에서 자신의 패스워드를 실수로 저장하더라도 두번째 인증 코드 (OTP)로 인증할 수 없기 때문에 익명의 사용자가 로그인할 수 없게 된다. 또한 공용 컴퓨터에 악성 코드가 존재해 아이디 / 패스워드가 노출되는 상황에서도 인증 코드를 모르기 때문에 소용이 없게 된다. 


그런데 여기에서 한가지 문제점이 떠오를 수 있다. 내 컴퓨터에서야 편하게 접속한다고 해도 모바일 기기에서는 매번 이렇게 아이디 / 패스워드로 접속하고 인증 코드를 입력해야 하나? 아니 그보다는 모바일기기에서 인증 코드 OTP를 입력하는 항목조차 본적이 없는 것 같다. 그렇다면 이 좋은 보안 도구는 실패인가? 


2-step verification 설정 항목에서 Application-specific passwords 란 항목을 살펴볼 수 있다. 아하! 2-step verification 의 인증코드를 지원하지 않는 모바일기기에서 계정을 로그인하기 위해서 필요한 임시 패스워드를 만드는 것이구나 느낌이 온다. 구글 계정을 등록할 기기, 혹은 앱 등으로 예를 들어 My Android Device, iPhone Gmail, Google Talk 등 자신이 등록에 필요한 대상을 입력하면 16자리 임의의 코드가 만들어진다. 임시로 기록해 놓고 자신의 안드로이드 기기에 계정을 설정할 때 만들어진 패스워드를 입력하면 된다. 




이렇게 하면 인증 코드가 아닌 아이디 / 특화된 패스워드를 통해서 원하는 모바일 기기나 구글 서비스에 로그인 할 수 있다. (구글 토크 클라이언트도 위와 같은 패스워드가 필요하다.) 구글 계정을 통해서 알아보았지만 2-step verification 은 구글에서만 가능한 것이 아니라 dropbox 와 같은 서비스에서도 가능하다. 방법과 도구는 동일하게 사용 가능하다. 




b. 2-step verification 의 장점 


처음에는 불편할 것 같은 방법의 느낌이었지만 오히려 기존의 아이디 / 패스워드를 입력하는 방식보다 덜 번거롭고, 공용 컴퓨터에서 접속해야 하는 상황에서도 기존의 방법보다 덜 위험하다는 것을 알 수 있다. 또한 등록한 모바일폰 / 모바일기기 / 백업 코드를 통해서 우리가 패스워드를 잃어버렸을 때도 충분히 대처할 수 있는 다양한 방법을 제시하기 때문에 아이디 / 패스워드가 노출되어도 덜 위험한 것을 알 수 있다.  


그런데 사용하면서 느낀 가장 놀라운 장점은 바로 Application-specific 패스워드 방식이 주는 보안성이다. 만약 자신이 구글 계정으로 안드로이드폰에 계정 등록을 해서 사용하고 있다고 가정하자. 최철저는 2-step verification 을 사용하지 않고 아이디 / 패스워드만으로 계정을 등록했고 임보안은 2-step verification 을 사용했다. 두명이 동시에 스마트폰을 잃어버렸다고 생각하자. 기기에 암호를 걸어서 보안을 설정할 수 있는데 귀찮아서 암호 설정을 둘다 못했다고 생각해보자. 


최철저: 핸드폰을 잃어버렸다.습득자는 최철저의 계정이 로그인된 안드로이드폰으로 메일이며 일정이며, 주소록을 모두 확인하였다. 그래서 최철저는 집으로 가서 컴퓨터로 구글 계정에 접속해서 해당 "계정 암호"를 변경했다. 더이상 습득자는 사용할 수 없게 되었다. 


임보안: 똑같이 집으로 가서 계정 설정으로 들어가서 암호는 그대로 놔두고 application-specific 패스워드에서 "해당 기기를 위해 등록한 암호"를 Revoke(제거)했다. 더 이상 습득자는 사용할 수 없게 되었다. 


보안성에서는 별로 달라보이지 않지만 편리성에서는 확연한 차이를 이후 볼 수 있다. 


최철저: 최철저가 해당 계정으로 등록한 아이팟 터치뿐만 아니라 구글 토크 클라이언트 그리고 아이팟 터치의 앱에서 구글 계정을 사용해 로그인한 모든 앱에 일일히 들어가 변경한 암호로 변경해줘야 한다.  


임보안: 새로 구매한 안드로이드폰을 위한 새로운 application-specific 패스워드를 설정해주고 입력해서 계정 등록하면 된다. 만약 제거한 패스워드를 사용한 앱이나 서비스가 있다면 그것만 찾아서 변경해주면 된다. 


여기에서 한가지 살펴볼 내용 중에 하나는 iOS 와 안드로이드 OS 의 차이점이다. 안드로이드는 초기에 구글 계정을 등록(다중 계정도 지원)해서 다양한 앱을 설치해서 해당 앱이 구글 계정이 필요하면 별도로 아이디 / 패스워드를 입력하는 것이 아니라 한번 인증된 등록된 계정 중 하나를 사용하면 된다.[각주:1] 그러나 iOS 안에서 구글 계정의 로그인이 필요한 앱이 있다면 모두 별도의 등록을 해줘야 한다. 따라서 iOS의 경우에는 기기를 잃어버리면 이후 다시 설정을 해줄때 구글 계정을 사용하는 만큼 입력해줘야 하지만 안드로이드는 한번만 설정해주면 이후 앱에서 선택할 수 있다. 부가적으로 안드로이드에서 지원해주는 다중 계정으로 특정 앱에서도 여러개의 계정을 통해 접속할 수 있다는 말이다. 


앱에서도 시스템 계정으로 등록된 계정을 암호 입력없이 바로 사용가능하다.




▨ 완벽한 보안을 위해서... 


렇게 다양한 방법으로 보안을 철저하게 했으니 나의 계정은 안전할 것이라고 생각한다면 현실적으로는 맞는 말이지만 이론적으로는 역시나 뚫릴 수 없는 패스워드는 없다는 것이 사실이다. 앞서 설명했지만 가장 좋은 패스워드는 사용자도 알 수 없는 무의미한 패스워드이다. 그런 맥락으로 패스워드 관리 프로그램이 발생하는 무작위의 암호나 2단계 인증을 통한 패스워드, Application-specific 패스워드 모두 만들어진 방법이다. 그렇지만 시간과 노력이 필요할 뿐 인간이 최종사용자(End-User)인 공간에서 뚫리지 않는 보안은 없다. 다만 좀더 어렵고 복잡해서 그 가능성을 낮출 뿐이다. 생체코드나 복제불가능한 코드를 통해서 노력도 하고 심지어 컴퓨터조차도 인식할 수 없는 상당히 역설적인 얽힌(Tangled) 패스워드 등 많은 노력을 하지만 중요한 것은 자신의 계정이 노출 될 수 있다는 가능성을 열어두고 더 보안적인 방법을 익혀두는 것이다. 


1. VPN(가상사설네트워트) 등 보안된 공간에서 활동하기: 이 부분에 대해서는 이견이 많을 수 있고 무엇이 더 좋은지는 다양한 선택이 존재하지만 만약 사용자가 특정 기관이나 단체에 소속되어 있다면 그 기관의 네트워크 안에서 보호를 받을 수 있는 것이 더 좋다고 생각된다. 기본적으로 해당 네트워크의 관리는 어느정도 수준이 되어 보안에 대한 방어를 잘 하고 있다는 가정하이다. 내부 뿐만 아니라 가능하다면 외부에서도 VPN 등의 방법으로 인증된 네트워크 클라이언트 환경을 선택하는 것이 좋다. 


2. 웹 서비스의 다양한 보안 기능을 주시하라: 웹 서비스 중에 한 계정으로 여러명이 동시에 접속을 하거나 다른 지역에서 접속하는 등 이상 현상이 목격이 되면 사용자에게 알려준다. 이런 알람이나 이상 로그를 확인하고 만약 의심되는 부분이 있다면 계정의 보안을 향상시키거나 패스워드를 변경해야 한다. 



웹서비스 안에는 다양한 보안 기능을 제공해준다. 우리가 관심없어 보지 않은 기능들이 많다. 예를 들어 페이스북 안에는 강제로 Secured http (SSL) 를 사용하는 옵션은 기본적으로 설정해주는 것이 좋다. 이 기능은 페이스북 뿐만 아니라 트윗터 등 주요 웹서비스에서 찾아 볼 수 있는 기능이고 앞서 설명한 것처럼 설정해주는 것이 보안의 기본이다. (구글 서비스도 찾아보면 있다.) 그외 로그인 위치를 기록하거나 새로운 로그인 위치에서 위치에 대한 별명을 설정해서 사용자가 모르는 곳에서 접속하는 것을 확인할 수 있다. 


3. 로그인 횟수를 가능한 줄여라: 외부에 나가서 자신의 계정에 있는 문서를 프린터 하기 위해서 공용 컴퓨터에서 로그인 했을 때 앞서 제시한 다양한 보안 방법으로 강화할 수 있지만 가능하다면 로그인을 하지 않는 것이 더 좋다. 만약 자신이 공용 컴퓨터에서 프린트해야 할 일이 있다면 어떻게 할 수 있을까? 요즘에 많이 서비스되는 파일 클라우드 서비스에서는 로그인없이 공개 설정을 할 수 있다. 즉, 누구나 주소만 알면 접근할 수 있는 폴더 혹은 공간을 만들 수 있다. 



공유 주소에는 해당 URL를 아는 사람만 접근할 수 있는 Key 가 포함된 주소로 공유하는 경우가 있는데 이때는 짧은 URL 서비스 (e.g.: bitly 서비스) 등을 통해서 자신만으로 짧은 주소로 기억하기 쉽게 만들어 이용하는 방법도 좋을 것이다. 



▨ 마치면서... 


음 글을 쓰기 시작할 때는 국내 포털 서비스에서 제공하는 보안에 관련된 서비스도 써볼려고 했다. 그러나 보안에 대한 일반적인 내용을 확인하고 국내 포털 서비스를 접속하면 한숨부터 나오는 현상이 일어난다. 미닉스님의 블로그에서 자세하게 설명되어 있기 때문에 더이상 부언하지 않아도 국내의 인터넷 환경이 어떤 수준인지 느낄 수 있을 것이라고 생각한다. 



싱가포르나 미국에서 살면서 브라우저에 상관없이 표준 SSL 방식으로 금융 서비스 및 결재 서비스를 사용하는데 아무런 문제가 없었다. 그런데 유독 우리나라는 SSL 표준도 지키지 않고 오히려 보안을 위한 괴물 애드온 프로그램으로 사용자들에게 강요한다. 선택은 사용자의 몫이다. 그리고 보안도 마찬가지다. 그러나 보안에 대한 인식과 현재 가능한 방법을 알지 못하면 기존의 방식이 최선으로 인식할 수 밖에 없고 새로운 방식은 귀찮게 다가올 수 밖에 없다. 부족한 내용으로 이렇게 보안에 대한 이야기를 쓴 가장 큰 이유는 바로 인터넷 서비스 업체가 보안을 신경쓰고 철저하게 해도 가장 취약한 것은 사용자 본인이라는 점이다. 그래서 보안을 강화시키는 가장 빠르고 효과적인 방법은 바로 스스로 보안에 대한 인식과 습관을 가지는 것 뿐이 아닐까... 



  1. 개발자가 이를 적용해야 한다. 이 부분도 안드로이드에서는 앱을 선택하는 기준으로 생각해볼 필요가 있다. [본문으로]