본문 바로가기

이슈 & 뉴스

FBI, 테러범의 아이폰 보안 뚫다!


FBI와 애플의 테러범 아이폰을 둘러 싼 신경전에 대해서는 많이들 아실 것이라 생각합니다.


미국 캘리포니아주 샌 버너디노에서 14명을 사살하고 붙잡힌 총기 테러범의 아이폰에 관련된 신경전이었는데요.


FBI는 테러범의 아이폰에 다수의 증거가 있을 것이라 판단하였으나, 이 아이폰의 보안을 풀 방법이 전혀 없었습니다. 비밀번호 오류가 일정 횟수 이상이 되면 더 이상 보안을 풀 수 없게 설정되어 있었으니까요.


때문에 오바마 정부는 애플 측에 보안을 풀어달라고 요청했지만, 애플은 고객과의 신뢰와 관련된 문제라며 이 요청을 거부했고, 정부는 법원에 강제 협조를 요청한 상황이었습니다.


이에 대해 많은 찬반 논란이 있었습니다. 수 많은 고객들과의 신뢰를 지켜야한다, 애플이 보안을 풀어줄 의무는 없다 등 애플의 결정을 옹호하는 측이 있는가 하면, 애플이 범죄자를 지원한다, 고객과의 신뢰보다 법이 바로 서는 것이 중요하다 등 애플을 비판하는 목소리도 있었습니다.



그리고 현지 시간으로 28일, FBI는 연방지방법원에 애플에 관한 강제 협조 요청을 취하하면서, 자신들이 테러범의 아이폰 5c 해킹을 풀어냈다고 밝혔습니다. 


FBI는 이스라엘의 보안 회사 Cellebrite와 협력하였고, 전문가들은 아이폰 5c의 플래시를 수 없이 많이 복사하는 NAND Mirroring 방식으로 보안을 풀었을 것이라 예측하고 있습니다. 일정 경우의 수를 시도하면 보안을 풀 수 없는 아이폰의 메모리를 수 없이 많이 복사하여, 수 없이 많은 경우의 수를 시도할 수 있도록 한 것이죠.


수 없이 많은 경우의 수, 가능한 모든 경우의 수를 시도하는 해킹 방법을 무차별 대입(brute force)*이라고 부릅니다. 모든 경우의 수를 대입하기에, 풀지 못하는 암호가 없는 대신 많은 시간과 비용이 소모됩니다. 게다가 이번 아이폰 5c의 사례처럼, 오류가 일정 횟수를 넘어가면 더 이상 암호를 입력할 수 없는 방식에는 사용할 수 없는 방식이지요. 플래시 메모리를 무제한 복사할 수 있는 역량과 자원을 갖춘 FBI 같은 조직만이 이러한 애플의 보안을, 그것도 많은 시간과 비용을 들여서 해제할 수 있는 것 입니다.


이로서 FBI와 애플의 신경전은 애플의 승리로 돌아간 것 같습니다. 한국의 몇 기자들은 애플의 보안 헛점을 노린 FBI의 승리라고 보도하였으나, 애플은 FBI와 협력하지 않으므로 인해 고객들의 충성심을 높였고, FBI는 브루트 포스라는 최후의 수단을 사용하였죠. 이로써 애플은 'FBI가 아닌 이상 우리의 보안을 뚫지 못한다" 아니, "FBI라도 쉽게 보안을 뚫지 못한다"라는 기업 이미지를 재고할 수 있었습니다. 


물론 애플이 FBI의 수사에 협조하지 않은 것에 대한 비판도 피해갈 수 없겠지요. 상당히 복잡한 문제라고 생각합니다. 판단은 여러분들 스스로에게 맡기겠습니다. 



* 무차별 대입 방식 (brute force) : 브루트 포스는 '모든 경우의 수'를 무차별적으로 대입하여 문제에 대한 답을 구하거나 암호를 해제하는 방식입니다. '모든 경우의 수'라고 하니 매우 단순해 보이지만, 네 자리의 암호를 해제하려면 10^4 인 10000개의 경우의 수가 필요하고, 아이폰 5c처럼 6자리의 암호를 해제하려면 1000000의 경우의 수가 필요합니다. 여기에 알파벳과 특수문자가 조합된다면 경우의 수가 수도 없이 많아집니다. 때문에 이를 처리할 수 있는 고성능의 CPU와 수 많은 시간이 필요하기에 현실적으로 불가능한 방법입니다.


아이폰 5c는 6개의 숫자 암호에, 10번 이상 오류를 내면 더 이상 함호 해제를 시도할 수 없으므로, 최대 100000개의 플래시 메모리를 복사해야 하는 것이죠. 이렇게 메모리를 복사할 역량을 가진 조직이 많지 않기에 아이폰 사실상 아이폰의 암호를 해제하는 것은 불가능하다고 보시면 되겠습니다.


추가적으로, 이러한 무차별 대입 방식은 수 많은 자원을 소모하기에 문제를 푸는 방식에 있어서 무차별 대입 방식보다 훨씬 효율적으로 답을 구할 수 있는 방식을 연구하는 것이 프로그래머들의 일이라고 할 수 있습니다. 이번 이세돌 9단과의 대결로 화제가 된 알파고 역시 '학습'을 통해서 게임의 흐름과 관계 없는 경우의 수를 계산에서 모두 제외시키도록 알고리즘 되어있지요. 그렇게 경우의 수를 대폭 줄이고, 그 중에서 승리에 가장 유리한 수를 찾도록 되어있습니다. 이처럼 브루트 포스 방식을 쓰지 않기 위한 수 없이 많이 노력하는 개발자들을 보면 브루트 포스 방식이 얼마나 최후의 수단인지 알 수 있겠네요. ^^ (아마도 FBI와 Cellebrite 역시 실제로 브루트 포스 방식을 쓰기 보다는 자기들만의 알고리즘을 이용했으리라 예상됩니다.)


  • f(a,b) = f(a-1,b) + f(a,b-1) (a,b >= 1 )
  • f(0,0) = 1, 임의의 자연수 n에 대해 f(n,0) = f(0,n) = 1