2015.06.19

라스트패스 해킹 : 앞으로 해야 할 일

Glenn Fleishman | Macworld
지난 월요일 비밀번호 저장 사이트 라스트패스(LastPass)가 믿을 수 없는 소식을 발표했다. 비밀번호 데이터베이스가 유출돼 사용자 계정 정보가 탈취됐다는 것이다. 라스트패스는 중앙 스토리지와 데이터 저장소(사용자가 이용하는 웹사이트 및 앱의 각종 비밀번호 및 정보를 저장한다) 간의 동기화를 제공하는 만큼, 여기에 저장된 비밀번호가 유출되면 사용자의 모든 비밀이 새어나가는 것은 아닌지 우려의 목소리가 컸다.

하지만 다행히도 라스트패스는 충분한 보안책을 적절히 시행해온 것으로 보여 이번 실패로 사용자들에게 심각한 피해가 전달되는 일은 없을 것으로 판단된다. 여기 라스트패스 사용자들에게 가해질 수 있는 위협의 유형과 이를 해결하는데 필요한 단계들에 대해 알아보자.

여러 단계의 방어망
데스크톱 및 스마트폰에서 서비스되던 초기 비밀번호 저장 소프트웨어들은 부족한 컴퓨팅 역량과 실행문제로 이용에 불편함이 컸다. 2012년 발표한 보고서를 통해 디지털 수사 소프트웨어 업체 엘콤소프트(Elcomsoft)는 스마트폰 비밀번호 관리 앱 17종에서 발견한 결함을 공개한 바 있다. 엘콤소프트가 발표한 문제들 가운데 일부는 상당히 심각한 수준에 있었다(또한, 일부 문제는 데스크톱 버전에서도 동일하게 확인된 것들이다). 이 보고서는 업체들이 문제를 해결하고 개선하도록 하는 계기가 됐고 이후 개발자들은 더욱 똑똑하고 철저한 솔루션을 내놓기 시작했다. 그리고 그런 노력의 효과가 이번 유출 사건에서 증명됐다.

(웹사이트용) 운영체제에서건, 앱의 데이터 스토리지 안에서건, 비밀번호는 손쉽게 복구할 수 없는 방식으로 저장돼야 한다. 인증이나 액세스에 이용되는 비밀번호를 요구하는 모든 시스템은 단뱡향 프로세스를 채택하는 것이 정상이다.

하지만 많은 웹사이트가 여전히 간단한 방식을 이용하고 있다. 이들은 사용자의 비밀번호를 확보한 뒤, 집중적인 수학적 운영을 실행하는 ‘해싱 알고리즘(hashing algorithm)’을 통해 이를 구동해 불가역의 결과값(해시)을 생성한다. 이 해시로는 본래 비밀번호를 밝혀내는 것이 불가능하다.

이 방식에서 시스템은 사용자가 로그인할 때마다 입력한 비밀번호를 저장소에 저장된 비밀번호 값과 비교하는 대신, 동일 해싱 프로세스를 거쳐 도출된 결과값 간의 비교를 진행해 일치 여부를 파악하게 된다.

라스트패스는 패스워드 저장소에 충분한 보안 체계를 마련해두었기에, 이번 유출 사고로 발생할 실질적인 피해는 없을 것이다. (그럼에도 마스터 패스워드 변경은 꼭 진행하자)

해커들이 비밀번호 파일을 탈취했다 해도, 곧바로 이 정보에 접근할 수 있는 것은 아니다. 비밀번호를 파악을 위해서는 크래킹(cracking) 작업을 실행하고 (기존의 탈취 데이터베이스에 기반해) 비밀번호 단어 수나 조합 등 비밀번호 정책을 검토하는 과정을 거쳐야 한다. 크래커들은 모든 가능한 조합을 무작정 입력하지 않고, 가장 가능성 있는 조합들을 먼저 시도한다. 예를 들어 문자와 숫자, 기호를 조합한 비밀번호를 요구받은 경우 사용자들은 ‘ec7*JH43(k’같은 조합보다는 ‘Apple1!’이라는 문자열을 입력할 가능성이 더 크다. 크래커들 역시 보다 효율적인 비밀번호를 파악하기 위해 이와 같은 방식을 따른다.

오늘날 고사양의 그래픽 카드를 갖춘 데스크톱 PC를 이용하면 일 초에 수십억 건(!)의 비밀번호 테스트를 진행할 수 있는데, 라스트패스와 같은 기업들은 이 작업을 느리게 하는 방식의 보안 레이어들 역시 구축하고 있다.

가장 먼저 라스트패스의 ‘소금치기(salt)’ 기법은 해싱에 앞서 사용자가 설정한 패스워드에 자체적으로 문자열을 추가해 크래킹을 방해한다. 예를 들어 ‘Apple1!’이라는 사용자의 비밀번호 앞에 ‘aA’라는 문자열을 추가해 일반적인 어휘 규칙을 흩뜨리는 식이다.

다음으로 해싱 과정을 복수로 진행하는 알고리즘 역시 마련되어 있다. 클라이언트 영역(혹은 네이티브, 웹 앱 내)에서 라스트패스가 설정하고 있는 기본 해싱 횟수는 무려 5,000회다.

세 번째로, 라스트패스 웹사이트나 싱크 클라이언트를 통해 라스트패스에 로그인할 때, 비밀번호는 전송되지 않은 상태로 머무른다. 원래 비밀번호 대신 해시값을 서버로 전송해 유출의 가능성에 대비하는 것이다. 서버로 전달된 해시 패스워드는 또다시 100,000회의 해싱 과정을 거친다.

모두 단순히 보여주기 식의 조치가 아니다. 이러한 조치들이 적용되면 1만 달러 선의 고사양 GPU를 가지고도 초당 30건 정도(평소에는 10억 단위의 처리가 가능했을)의 비밀번호밖에 테스트하지 못한다. 아스 테크니카(Ars Technica)의 한 전문가는 30건도 무리라며, 초당 테스트 횟수를 10회 정도로 추정하기도 한다.

하지만 이런 기법들도 일정한 법칙에 따라 이뤄지는 것이기 때문에 때론 부주의한 누군가의 힌트(“내 패스워드는 내 이름 뒤에 1을 붙인 거야.”)가 다른 여러 계정을 드러내는 출발점이 될 수도 있다. 계정에 접근하거나 그것을 구매(혹은 탈취)하려는 크래커들의 시도가 1,000배는 효율적이게 될 수 있는 것이다.

그러나 이런 대규모의 해독 가능성은 극히 낮다. 라스트패스에서는 그 가능성이 더 낮아질 것이다.

당신이 할 수 있는 것
라스트패스는 블로그를 통해 “암호화된 사용자 저장소는 무사하다”고 밝혔다. 이 발언이 반가운 이유는, 사용자가 마스터 비밀번호를 변경하기만 하면 탈취된 패스워드 정보는 전부 무용해지기 때문이다. 만일 저장소 자체가 공격받았다면, 그 정보는 웹 전반에서 악용될 수 있을 것이고, 또한 향후 유사한 영역을 공격할 보다 강력한 기법을 개발하는 데에도 도움을 줬을지도 모른다. 비밀번호를 수년, 아니 때론 평생 변경하지 않는 사용자들의 성격을 감안해보면 위협의 규모는 실로 막대했을 것이다.

라스트패스는 또 동일 비밀번호를 적용한 여타 계정들의 비밀번호도 변경할 것을 권고하기도 했다. 이메일 계정과 비밀번호 힌트가 유출됐기 때문에 연쇄적인 계정 공략이 가능해질 수 있다는 게 그 이유다. 아무리 적은 가능성이라도 만일을 위해 꼭 지침을 따르도록 하자. (이 역시 라스트패스를 비롯한 패스워드 관리 서비스 이용자들이라면 이미 따르고 있을 방식이다)

2단계(2-factor) 인증의 장점 역시 여전히 유효하다. 크래커들이 라스트패스로부터 정보를 탈취해 비밀번호를 복구해냈더라도, 접근권을 증명하는 토큰이 없다면 계정 접근은 불가능하다. (추측건대 라스트패스는 2단계 인증용 시딩(seeding) 정보도 안전하게 보관하고 있을 것이다)

마스터 비밀번호 설정과 관련해 한 가지 조언을 전하자면, 무조건 길고 손으로 입력하기 어려운 패스워드가 최선이 아니라는 점을 기억해야 한다. 특정 단어 등으로 이뤄진 길고 간단한 패스워드보다는, 짧더라도 복잡한 패스워드가 더 안전하다.

짧고 복잡한 비밀번호도, 머리로 생각해 구성하는 것보다 절대 같이 올 일이 없는 서너 단어를 이어 붙여 구성하면 보다 안정성이 높다. 그렇다고 스스로 기억하기도 어렵게 비밀번호를 구성하는 일은 피하도록 하자. 라스트패스의 마스터 비밀번호는 라스트패스에 저장할 수 없음을 기억하자. 일부 보안 전문가들은 특정 문장을 떠올린 뒤 거기에서 연관 없는 단어들을 뽑아내는 패스워드 구성법을 제안하기도 한다. 예를 들어 ‘숲을 달리다 원숭이를 보고 깜짝 놀라 나무에 발을 찧었다(you were running in the woods and stubbed your toe when you saw monkeys)’라는 문장을 떠올리고 여기에서 ‘runs stubbed monkeys’라는 세 어휘를 뽑아내면, 1000의 여섯 제곱 번 패스워드 체크를 시행해야 결과를 도출할 수 있는 안전한 패스워드를 만들어낼 수 있다.

라스트패스는 운이 좋았던 것이 아니다. 그들의 준비가 빛을 발한 것이다. 그들이 이번 침입에서 새로운 교훈들을 배웠길, 그리고 앞으로도 혹여나 문제가 발생한다면 이번처럼 투명하고 믿을만한 자세로 그것을 공유해주길 기대한다. 라스트패스의 사례는 손바닥만 한 탄탄한 보안성이 한 보따리만 한 치료보다 나은 것임을 여실히 보여줬다. editor@itworld.co.kr 


2015.06.19

라스트패스 해킹 : 앞으로 해야 할 일

Glenn Fleishman | Macworld
지난 월요일 비밀번호 저장 사이트 라스트패스(LastPass)가 믿을 수 없는 소식을 발표했다. 비밀번호 데이터베이스가 유출돼 사용자 계정 정보가 탈취됐다는 것이다. 라스트패스는 중앙 스토리지와 데이터 저장소(사용자가 이용하는 웹사이트 및 앱의 각종 비밀번호 및 정보를 저장한다) 간의 동기화를 제공하는 만큼, 여기에 저장된 비밀번호가 유출되면 사용자의 모든 비밀이 새어나가는 것은 아닌지 우려의 목소리가 컸다.

하지만 다행히도 라스트패스는 충분한 보안책을 적절히 시행해온 것으로 보여 이번 실패로 사용자들에게 심각한 피해가 전달되는 일은 없을 것으로 판단된다. 여기 라스트패스 사용자들에게 가해질 수 있는 위협의 유형과 이를 해결하는데 필요한 단계들에 대해 알아보자.

여러 단계의 방어망
데스크톱 및 스마트폰에서 서비스되던 초기 비밀번호 저장 소프트웨어들은 부족한 컴퓨팅 역량과 실행문제로 이용에 불편함이 컸다. 2012년 발표한 보고서를 통해 디지털 수사 소프트웨어 업체 엘콤소프트(Elcomsoft)는 스마트폰 비밀번호 관리 앱 17종에서 발견한 결함을 공개한 바 있다. 엘콤소프트가 발표한 문제들 가운데 일부는 상당히 심각한 수준에 있었다(또한, 일부 문제는 데스크톱 버전에서도 동일하게 확인된 것들이다). 이 보고서는 업체들이 문제를 해결하고 개선하도록 하는 계기가 됐고 이후 개발자들은 더욱 똑똑하고 철저한 솔루션을 내놓기 시작했다. 그리고 그런 노력의 효과가 이번 유출 사건에서 증명됐다.

(웹사이트용) 운영체제에서건, 앱의 데이터 스토리지 안에서건, 비밀번호는 손쉽게 복구할 수 없는 방식으로 저장돼야 한다. 인증이나 액세스에 이용되는 비밀번호를 요구하는 모든 시스템은 단뱡향 프로세스를 채택하는 것이 정상이다.

하지만 많은 웹사이트가 여전히 간단한 방식을 이용하고 있다. 이들은 사용자의 비밀번호를 확보한 뒤, 집중적인 수학적 운영을 실행하는 ‘해싱 알고리즘(hashing algorithm)’을 통해 이를 구동해 불가역의 결과값(해시)을 생성한다. 이 해시로는 본래 비밀번호를 밝혀내는 것이 불가능하다.

이 방식에서 시스템은 사용자가 로그인할 때마다 입력한 비밀번호를 저장소에 저장된 비밀번호 값과 비교하는 대신, 동일 해싱 프로세스를 거쳐 도출된 결과값 간의 비교를 진행해 일치 여부를 파악하게 된다.

라스트패스는 패스워드 저장소에 충분한 보안 체계를 마련해두었기에, 이번 유출 사고로 발생할 실질적인 피해는 없을 것이다. (그럼에도 마스터 패스워드 변경은 꼭 진행하자)

해커들이 비밀번호 파일을 탈취했다 해도, 곧바로 이 정보에 접근할 수 있는 것은 아니다. 비밀번호를 파악을 위해서는 크래킹(cracking) 작업을 실행하고 (기존의 탈취 데이터베이스에 기반해) 비밀번호 단어 수나 조합 등 비밀번호 정책을 검토하는 과정을 거쳐야 한다. 크래커들은 모든 가능한 조합을 무작정 입력하지 않고, 가장 가능성 있는 조합들을 먼저 시도한다. 예를 들어 문자와 숫자, 기호를 조합한 비밀번호를 요구받은 경우 사용자들은 ‘ec7*JH43(k’같은 조합보다는 ‘Apple1!’이라는 문자열을 입력할 가능성이 더 크다. 크래커들 역시 보다 효율적인 비밀번호를 파악하기 위해 이와 같은 방식을 따른다.

오늘날 고사양의 그래픽 카드를 갖춘 데스크톱 PC를 이용하면 일 초에 수십억 건(!)의 비밀번호 테스트를 진행할 수 있는데, 라스트패스와 같은 기업들은 이 작업을 느리게 하는 방식의 보안 레이어들 역시 구축하고 있다.

가장 먼저 라스트패스의 ‘소금치기(salt)’ 기법은 해싱에 앞서 사용자가 설정한 패스워드에 자체적으로 문자열을 추가해 크래킹을 방해한다. 예를 들어 ‘Apple1!’이라는 사용자의 비밀번호 앞에 ‘aA’라는 문자열을 추가해 일반적인 어휘 규칙을 흩뜨리는 식이다.

다음으로 해싱 과정을 복수로 진행하는 알고리즘 역시 마련되어 있다. 클라이언트 영역(혹은 네이티브, 웹 앱 내)에서 라스트패스가 설정하고 있는 기본 해싱 횟수는 무려 5,000회다.

세 번째로, 라스트패스 웹사이트나 싱크 클라이언트를 통해 라스트패스에 로그인할 때, 비밀번호는 전송되지 않은 상태로 머무른다. 원래 비밀번호 대신 해시값을 서버로 전송해 유출의 가능성에 대비하는 것이다. 서버로 전달된 해시 패스워드는 또다시 100,000회의 해싱 과정을 거친다.

모두 단순히 보여주기 식의 조치가 아니다. 이러한 조치들이 적용되면 1만 달러 선의 고사양 GPU를 가지고도 초당 30건 정도(평소에는 10억 단위의 처리가 가능했을)의 비밀번호밖에 테스트하지 못한다. 아스 테크니카(Ars Technica)의 한 전문가는 30건도 무리라며, 초당 테스트 횟수를 10회 정도로 추정하기도 한다.

하지만 이런 기법들도 일정한 법칙에 따라 이뤄지는 것이기 때문에 때론 부주의한 누군가의 힌트(“내 패스워드는 내 이름 뒤에 1을 붙인 거야.”)가 다른 여러 계정을 드러내는 출발점이 될 수도 있다. 계정에 접근하거나 그것을 구매(혹은 탈취)하려는 크래커들의 시도가 1,000배는 효율적이게 될 수 있는 것이다.

그러나 이런 대규모의 해독 가능성은 극히 낮다. 라스트패스에서는 그 가능성이 더 낮아질 것이다.

당신이 할 수 있는 것
라스트패스는 블로그를 통해 “암호화된 사용자 저장소는 무사하다”고 밝혔다. 이 발언이 반가운 이유는, 사용자가 마스터 비밀번호를 변경하기만 하면 탈취된 패스워드 정보는 전부 무용해지기 때문이다. 만일 저장소 자체가 공격받았다면, 그 정보는 웹 전반에서 악용될 수 있을 것이고, 또한 향후 유사한 영역을 공격할 보다 강력한 기법을 개발하는 데에도 도움을 줬을지도 모른다. 비밀번호를 수년, 아니 때론 평생 변경하지 않는 사용자들의 성격을 감안해보면 위협의 규모는 실로 막대했을 것이다.

라스트패스는 또 동일 비밀번호를 적용한 여타 계정들의 비밀번호도 변경할 것을 권고하기도 했다. 이메일 계정과 비밀번호 힌트가 유출됐기 때문에 연쇄적인 계정 공략이 가능해질 수 있다는 게 그 이유다. 아무리 적은 가능성이라도 만일을 위해 꼭 지침을 따르도록 하자. (이 역시 라스트패스를 비롯한 패스워드 관리 서비스 이용자들이라면 이미 따르고 있을 방식이다)

2단계(2-factor) 인증의 장점 역시 여전히 유효하다. 크래커들이 라스트패스로부터 정보를 탈취해 비밀번호를 복구해냈더라도, 접근권을 증명하는 토큰이 없다면 계정 접근은 불가능하다. (추측건대 라스트패스는 2단계 인증용 시딩(seeding) 정보도 안전하게 보관하고 있을 것이다)

마스터 비밀번호 설정과 관련해 한 가지 조언을 전하자면, 무조건 길고 손으로 입력하기 어려운 패스워드가 최선이 아니라는 점을 기억해야 한다. 특정 단어 등으로 이뤄진 길고 간단한 패스워드보다는, 짧더라도 복잡한 패스워드가 더 안전하다.

짧고 복잡한 비밀번호도, 머리로 생각해 구성하는 것보다 절대 같이 올 일이 없는 서너 단어를 이어 붙여 구성하면 보다 안정성이 높다. 그렇다고 스스로 기억하기도 어렵게 비밀번호를 구성하는 일은 피하도록 하자. 라스트패스의 마스터 비밀번호는 라스트패스에 저장할 수 없음을 기억하자. 일부 보안 전문가들은 특정 문장을 떠올린 뒤 거기에서 연관 없는 단어들을 뽑아내는 패스워드 구성법을 제안하기도 한다. 예를 들어 ‘숲을 달리다 원숭이를 보고 깜짝 놀라 나무에 발을 찧었다(you were running in the woods and stubbed your toe when you saw monkeys)’라는 문장을 떠올리고 여기에서 ‘runs stubbed monkeys’라는 세 어휘를 뽑아내면, 1000의 여섯 제곱 번 패스워드 체크를 시행해야 결과를 도출할 수 있는 안전한 패스워드를 만들어낼 수 있다.

라스트패스는 운이 좋았던 것이 아니다. 그들의 준비가 빛을 발한 것이다. 그들이 이번 침입에서 새로운 교훈들을 배웠길, 그리고 앞으로도 혹여나 문제가 발생한다면 이번처럼 투명하고 믿을만한 자세로 그것을 공유해주길 기대한다. 라스트패스의 사례는 손바닥만 한 탄탄한 보안성이 한 보따리만 한 치료보다 나은 것임을 여실히 보여줬다. editor@itworld.co.kr 


X