페이팔의 글로벌 개발부장인 조너선 르블랑(Jonathan LeBlanc)은 IT 컨퍼런스에서 “Kill all Passwords”라는 다소 공격적인 주제로 여러 차례 발표하였다. 발표 내용에 따르면, 사람들은 여전히 ‘123456’, ‘qwerty’, ‘password’와 같은 단순한 패스워드를 사용하고 있으며, 더욱 놀라운 사실은 Top 1,000에 포함되는 패스워드를 사용하는 사람이 무려 91%가 넘는다고 한다. 결국 사용자의 안전한 인증을 위한 패스워드가 사용자의 안전을 더욱 위협하는 웃지 못할 상황이 되고 있다.
사용자 인증(authentication)은 “something you know”, “something you have”, “something you are” 중 하나 이상의 방법을 사용한다.([그림 1] 참조) “Something you know”는 패스워드와 같이 무엇인가를 알고 있다면 인증되는 방법이다. “Something you have”는 스마트카드와 같이 무엇인가를 가지고 있다면, “Something you are“는 지문 등 생체 정보를 통해 누구인지를 식별해 낼 수 있다면 인증되는 방법이다. 패스워드 인증 방식은 스마트카드를 소유할 필요도 지문을 스캔하기 위한 추가 디바이스도 필요 없기 때문에 여러 분야에서 널리 사용되고 있다.
안전한 패스워드를 만드는 것은 생각보다 간단치 않다. 우선 패스워드의 보안성을 높이기 위해 길고 복잡한 패스워드를 사용해야 한다. Howsecureismypassword.net에 의하면, 숫자로만 이루어진 6자리 패스워드는 최신 컴퓨터의 무차별 대입(brute-force) 공격에 의해 0.000025초면 깨진다(crack). 영어 대소문자와 특수 기호를 추가하여 복잡하게 만든 8자리 패스워드는 2일이 걸리고, 여기에 한자리만 추가해도 7개월이나 걸린다고 한다.([표 1] 참조) 결국 복잡하고 긴 패스워드는 안전하지만 그만큼 기억하기는 힘들어진다.
패스워드를 만드는 것만큼 저장하는 방법도 중요하다. 아무리 길고 복잡한 패스워드를 만들더라도 평문(plaintext) 형태로 저장되면 안전하지 않다. 또한 패스워드가 해시 값 형태로 저장되더라도 솔트(salt)(1)와 반복(iteration) 없이 만들어지면 레인보 테이블(2) 등을 이용한 사전(dictionary) 공격에 취약해진다.
일반적으로 키 스트레칭(key stretching)이라는 기법을 사용하여 사용자가 입력한 패스워드에 일정 길이의 솔트를 붙이고 여러 번 해시를 반복하여 얻은 값을 패스워드 대신 저장한다. 예를 들어, 패스워드에 32byte 이상의 솔트를 붙이고 보안 측면에서 안전하다고 인정된 SHA2 등의 해시 함수를 10만 번 이상 돌려 얻은 값을 저장한다. 이렇게 키 스트레칭되어 저장된 패스워드는 무차별 대입 공격이나 사전 공격에 안전하다.
길고 복잡하게 패스워드를 만들고 키 스트레칭하여 저장해도 누군가 중간에서 패스워드를 가로채면 무용지물이다.
흔히 하는 이야기로 어깨너머로 보는 경우(shoulder surfing)가 대표적이다. 좀 더 발전된 방법으로 고해상도 비디오카메라나 키보드 해킹을 통한 스니핑(3) 기법도 사용되며, 파밍(4)이나 피싱(5)으로 패스워드를 탈취하는 경우도 증가하고 있다. TLS/SSL과 같은 보안 채널을 통하지 않고 패스워드를 송·수신하는 경우는 해커들의 가장 쉬운 먹잇감이 된다. 패스워드를 알고 있기만 하면 사용자 인증이 되는 “something you know”의 근원적인 문제다.
사용성이 떨어지는 길고 복잡한 패스워드의 대안은?
최근 패스워드의 한계를 극복하기 위해 “something you have”와 “something you are”를 혼합한 다중-요소 인증(multi-factor authentication) 방법이 각광받고 있다. 예를 들어, 사용자 인증을 위해 패스워드 입력 후 지문 등을 스캔하여 추가 인증을 받는 방식이다. 패스워드가 유출되더라도 추가 인증 방법에서 인가되지 않은 사용자를 걸러낼 수 있다. 특히 지문인식 하드웨어의 인식률 향상과 이를 탑재한 스마트폰의 빠른 보급은 다중-요소 인증의 확산에 기여하고 있다.
사실 생체 정보를 이용한 사용자 인증 방법은 오래전부터 연구되어 왔다. 생체 인증을 위해서는 지문, 홍채 등을 스캔할 수 있는 하드웨어가 필요하다. 이러한 스캐너의 인식률 역시 실제 사용에 적합한 수준이어야 한다. 기존 하드웨어의 인식률은 낮았고 가격은 비교적 높고 크기도 컸다. 그러나 비약적인 기술 발전으로 적당한 수준의 인식률을 갖는 지문 센서가 스마트폰의 홈버튼에 넣을 수 있을 만큼 작아졌다. 물론 규모의 경제 덕분에 가격도 낮아졌다. 이로 인해 최근 출시되는 대부분의 스마트폰에 지문인식 스캐너가 탑재됨으로써 생체 인증을 위한 지문 인식이 간편해졌다. 패스워드 보다 안전하고 편리한 생체 인증을 누구나 휴대하는 스마트폰에서 쉽게 사용 할 수 있는 세상이 열렸다. 이는 추가 장치를 가지고 다녀야 하는 생체 인증의 마지막 걸림돌을 해결한 셈이다.
산업계에서는 FIDO Alliance(6)가 생체 인증과 USB 동글을 이용한 다중-요소 인증에 대한 사실상(de-facto) 표준으로 자리매김하고 있다. 특히 FIDO는 해킹 위험이 크던 기존의 생채 인증 체계를 혁신하는 새로운 표준을 제공한다. 생체 정보를 서버에 전송하지 않고 사용자 디바이스에서 처리하기 때문에 생체 정보 유출에 대한 걱정을 줄일 수 있다. 이들이 제안한 표준은 Universal Authentication Framework(UAF)와 Universal 2nd Factor(U2F) 등 두 가지 프로토콜이다([그림 3] 참조). UAF는 지문 등과 같은 생체 정보를 이용하여 패스워드 없이 사용자 인증하는 방법(something you are), U2F는 패스워드를 통한 사용자 인증 후 USB 동글을 이용한 추가 인증 방법(something you have)을 제안한다.
생체 인증 기술이 발전하더라도 패스워드는 당분간 사라지지 않을 것으로 보인다. 다만 지금과 같이 숫자, 대소문자, 특수문자가 포함된 10자리 이상의 길고 어려운 패스워드는 더 이상 필요 없다. 간단한 PIN 코드와 지문을 결합한 다중-요소 인증 방법이 대중화될 것이다. 사용자 인증에 있어 사용성과 보안성이라는 두 마리 토끼 모두를 잡는 날이 머지않았다. 더 나아가 인공지능의 발달과 함께 게이트를 통과하는 사람의 걸음걸이나 자세를 통해 사용자를 인증하는 날도 곧 도래할 것으로 본다. 또한 생체 인증이야말로 국내 공인인증서 시스템의 문제점을 보완할 수 있는 적합한 대안이 아닐까 생각한다.
(1) 솔트(salt) : 해시 함수에서 해시 값을 생성할 때 추가되는 임의의 문자열
(2) 레인보 테이블(rainbow table) : 해시 함수를 사용하여 변환 가능한 모든 해시 값을 저장시켜 놓은 표. 해시 형태로 저장된 패스워드로부터 원래의 패스워드를 유추해 내는데 주로 사용
(3) 스니핑(sniffing) : 주고받는 내용을 중간에 가로채서 엿보는 행위
(4) 파밍(pharming) : 악성코드에 감염된 사용자 PC를 조작하여 금융 정보를 빼내는 행위
(5) 피싱(phishing) : 이메일 또는 메신저를 통해 신뢰할 수 있는 사람 또는 기업이 보낸 메시지인 것처럼 가장하여 비밀번호 등 기밀을 요하는 정보를 부정하게 얻어내는 행위
(6) FIDO Alliance : FIDO(Fast Identity Online) 기술의 표준 방식을 정하기 위해 2012년 설립된 글로벌 컨소시엄. 현재 이사회 멤버로는 페이팔, 알리바바, 구글, 레노버, 마이크로소프트, 녹녹랩스, 퀄컴, 삼성, 비자, 크로셜텍 등 세계적 굴지의 인터넷 기업 참여. https://fidoalliance.org/