주메뉴바로가기 본문바로가기

Part 2 비밀번호 무력화하는 백도어

암호와 비밀번호는 엄연히 다르다. 암호는 메시지나 통화 내용 등을 제3자가 알아보지 못하게 글자나 숫자, 부호 등으로 변경시키는 것을 의미하며, 비밀번호는 본인을 증명하는 고유한 문자열이다. 1파트에서 다뤘던 내용이 암호에 대한 마스터키였다면, 2파트에서 다루고자 하는 것은 비밀번호의 마스터키에 대한 내용이다.


애플과 블랙베리에 마스터키는 존재하는가

마스터키는 말 그대로 어떤 문이든 열고 들어갈 수 있는 만능열쇠다. 스마트폰에 적용시키자면 사용자가 지정한 비밀번호를 우회해서 들어갈 수 있는 방법, 즉 ‘백도어’를 의미한다. 백도어는 ‘뒷문이 열렸다’는 뜻으로, 인증절차(비밀번호와 같은)를 거치지 않고 시스템에 접근할 수 있도록 만든 일종의 통로다. 백도어가 존재한다면 사용자가 아무리 어려운 비밀번호를 설정해놓더라도 모두 무력화될 수 있다. 따라서 스마트폰에 제조사만 아는 백도어가 존재하는지 여부가 큰 관심을 모으고 있다.

이전부터 여러 중국 스마트폰 제조업체들이 스마트폰에 백도어를 만들어뒀다는 의혹이 있었다. 하지만 본격적으로 백도어 논란에 불이 붙은 건 지난 2월, 팀 쿡 애플 CEO가 미국 연방수사국(FBI)의 백도어 제공 요청을 거절하면서부터였다. FBI는 지난해 12월 미국 캘리포니아 주 샌버나디노에서 발생한 장애인시설 총격 테러범의 수사를 위해 애플 측에 아이폰의 잠금 장치를 풀 수 있는 백도어 제공을 요구했다. 아이폰의 잠금 장치는 알파벳 대문자, 소문자, 숫자가 섞인 6자리 조합이 가능하며, 조합의 수는 568억 개에 달한다. 아이폰이 암호를 인식하는 데 걸리는 시간이 12분의 1초이므로 1초에 12개씩 입력하는 게 한계다. 따라서 일일이 입력하는 방식으로는 비밀번호를 푸는 데 최장 144년이 걸린다. 더구나 아이폰은 틀린 비밀번호를 10번 입력하면 기기 내 데이터가 자동으로 삭제되는 기능도 있다. 애플은 “잠금을 해제할 수 있는 백도어는 존재하지 않으며 새롭게 만들어 FBI에 제공할 의사도 없다”고 공식입장을 밝혔다.

올해 4월에는 캐나다 연방경찰(RCMP)이 블랙베리 스마트폰의 보안을 해제할 마스터키(백도어)를 가지고 있다는 사실이 밝혀지기도 했다. 미국의 인터넷 언론 매체인 바이스뉴스는 4월 14일 “RCMP가 2010년부터 블랙베리의 마스터키를 이용해 범죄 용의자들의 블랙베리 스마트폰 메시지(BBM)를 감청했다”는 기사를 발표했다. 바이스뉴스는 그들이 입수한 RCMP의 기술 보고서에 이와 같은 사실이 쓰여 있었으며 정확히 그 키가 무엇이며 어디에 있는지 등은 밝히지 않았다고 말했다. 블랙베리는 공식적으로 백도어의 존재에 대해 어떤 입장도 내놓지 않은 상태다.



단 두 줄의 코드로 얻어낸 관리자 권한

백도어의 종류는 여러 가지다(위 그림 참조). 그 중 백도어를 만드는 가장 손쉬운 방법은 로그인 시스템의 소스 코드에 특정 사용자 이름과 암호를 직접 삽입하는 방법이다. “이건 너무 들통나기 쉬울 것 같은데?”라고 생각하는 독자들은 아래 예시를 보자.
 

2003년에 실제 발생한 ‘리눅스 백도어 미수사건’에서 문제가 됐던 부분이다. 아마 프로그래밍을 ‘좀 한다’하는 독자들도 위의 소스코드에서 무엇이 잘못됐는지 찾기가 쉽지 않을 것이다. 위의 코드는 누군가 백도어를 만들기 위해 리눅스(Linux)의 소스 코드 한 줄을 교묘히 바꾼 것이다. 리눅스는 소스 코드를 완전히 공개한 ‘공개 운영체제’다. 누구나 소스 코드를 변경할 수 있다. 첫째 줄의 코드는 원래 (current->uid == 0) 이었지만, 누군가 (current ->uid = 0)으로 수정했다. 프로그래밍 언어에서 ‘=’과 ‘==’은 하늘과 땅 차이다. ‘a==0’은 a가 0일 때를 확인하는 것이지만(등가 여부 확인), ‘a=0’은 a에 0을 할당한다는 뜻이다.

위의 코드는 금지 문서에 접근할 때 실행되는 함수의 일부 코드며, 리눅스에서 uid(사용자 아이디)가 0인 것은 모든 정보에 접근할 수 있는 최고 관리자 권한(루트권한)을 의미한다. 이를 종합하면 기존의 코드(==)는 금지 문서에 접근할 권리가 있는지 확인하는 코드였다. 하지만 ‘==’이 ‘=’로 바뀌면서 금지 문서에 접근하면 루트권한을 얻는 코드로 변경된 것이다. 이 사실을 아는 해커는 금지 문서에 접근만 하면 루트권한을 얻게 된다. 다행히 집단지성의 힘으로 백도어를 찾아냈지만 여전히 누구의 소행인지는 추측만 무성하다. 이런 식으로 코드 자체를 변경한다면 확실하게 백도어를 심을 수 있다는 장점(?)은 있다. 하지만 다른 사람에 의해 발각됐을 때 “고의성이 없었다”는 변명을 할 수가 없다. 김태봉 KTB솔루션 대표는 “만약 블랙베리의 마스터키(백도어)가 이런 방식으로 존재한다면, 소스 코드가 어떤 식으로든 공개됐을 때 회사가 고의적으로 백도어를 만들었다는 비난을 피하긴 어려울 것”이라고 말했다. 물론 블랙베리가 소스 코드를 공개할 리는 만무하지만 말이다.

완전범죄에 가까운 컴파일러 백도어

이런 비난을 피하고자 직접 소스 코드를 수정하지 않고 백도어를 심는 방법도 있다. 바로 컴파일러(compiler)의 소스 코드를 수정하는 것이다. 컴파일러는 사람이 쓴 소스 코드를 컴퓨터가 이해할 수 있는 기계어로 바꿔주는 일종의 번역 프로그램이다. 만약 컴파일러에 백도어를 심어 원본 소스 코드에 없던 특정 코드를 삽입하면 마스터키를 만들 수 있다. 예컨대 ‘Ctrl + 8’을 누르거나 정해진 비밀 번호를 입력하면 프로그램의 특정 기능에 접근할 수 있도록 하는 식이다.

운영체제 유닉스의 개발을 주도한 케니스 레인 톰슨(현재 구글 소속)은 1984년에 발표한 기고문(Reflections on trusting trust)에서 이미 컴파일러 백도어의 위험성을 경고했다. 백도어의 유무를 감시할 때 보통은 사람이 쓴 소스 코드를 분석하지, 이를 기계어로 변환하는 컴파일러를 확인하는 경우는 드물기 때문이다. 또 컴파일러 하나로 여러 소스 코드를 변환하기 때문에, 백도어가 삽입되도록 만들어진 컴파일러가 변환한 모든 프로그램에는 백도어가 숨어 들어간다. 김승주 고려대 정보보호대학원 교수는 이를 무선공유기를 해킹하는 것에 비유했다. 무선공유기 하나를 해킹함으로써 공유기에 연결된 모든 컴퓨터를 해킹할 수 있는 것과 유사하기 때문이다.
 

컴파일러 백도어는 찾기도 어렵다. 붕어빵에 비유하면 원본 소스 코드가 붕어빵에 들어가는 재료, 컴파일러가 붕어빵을 만드는 틀이다. 그런데 틀에 벌레집(백도어)이 붙어있었다. 벌레가 붙어있는 붕어빵을 발견한 가게 주인은 원인을 찾기 위해 재료를 뒤지지만 재료에는 문제가 없다. 그 상태로 계속 붕어빵을 만들고 틀에 있는 벌레가 붕어빵에 붙어 나오는 상황이 반복된다. 마찬가지로 컴파일러에 백도어가 숨겨져 있으면 실행 파일을 새로 만들어도 또 백도어가 숨어 들어가기 때문에 찾기도 어렵고 없애기도 어렵다. 톰슨은 기고문에서 “컴파일러에서 문제가 되는 코드만 지우면 백도어의 흔적은 어디에도 남지 않는 완전 범죄”라고 말하기도 했다.

이외에도 어디에 백도어를 심느냐에 따라, 어떤 원리를 이용하느냐에 따라 수없이 많은 방식의 백도어가 존재한다. 김태봉 대표는 “관리의 목적이든 악용하려는 목적이든 제조업체들은 언제든 자사 제품에 백도어를 구현할 가능성이 있다”며 “(백도어를) 어떤 목적으로 사용하는지, 사용자에게 백도어의 사용 여부를 제대로 알렸는지 사회가 끊임없이 감시해야 한다”고 말했다. 이상진 고려대 정보보호대학원 교수는 “설사 관리의 목적으로 백도어가 제작됐다 하더라도 제3자가 알게 되면 침입의 통로로 악용될 수 있기 때문에 제품 출시 전에 반드시 모든 백도어는 삭제돼야 한다”고 말했다.



관련기사를 계속 보시려면?

Intro. 당신의 스마트폰은 안전합니까
Part 1 원격으로 조종하는 마스터키, 스파이앱
Part 2 비밀번호 무력화하는 백도어
Part 3 스마트폰 해킹, 막아낼 방패는 있을까
글 : 최지원 과학동아
이미지 출처 : GIB, BBC one

과학동아 2016년 06호
과학동아 2016년 06호 다른추천기사