2016년 9월 7일 수요일

SEAndroid

본 문서는 OLPP(Object Linked Programming Paradigm)으로 작성되었습니다. 

SEAndroid의 목적 : 보안 향상. 쓸대없긴 하지만 어떤 메카니즘인지는 알면 좋음.
SEAndroid : 상태, 이미 Android phone에 들어가 있다. - 그래서 알아야 함. 
                       행동, 삼성폰에서 활동하고 있고, 그리 많지는 않은 엔지니어들이 개발하고 있다.

SEAndroid와 연관된 객체들 
- NSA의 스테판 스몰리(미국에서 리눅스와 안드로이드를 많이 쓰니 국가적 보안에 신경 쓴다고 생각한다)
- TRESYS의 빌 로버츠 : 해커다. 스테판 스몰리랑 친하고 SEAndorid 코어 부분을 거의 혼자 만들고 머지했다고 해도 과언이 아니다. 트레시스는 RHEL 리눅스 정책을 만드는 회사로 SELinux와 관련 있다. 구글에 가고 싶어 했는데 Google Security 팀에서 너무 잘해서 안 뽑았나 보다.(거기도 정치 많겠지) 해커고, 지금도 AOSP에 기여하고 있다. 뒤에 또 이야기한다.
- 삼성 : 안드로이드 점유율 오랜 기간 1위(지금도 1위인가?) SE for Android라는 이름으로 변경하여 KNOX에 탑재시켰다. 참고로 SEandorid는 구글이 만든 거 아니다. SELinux를 NSA에서 만들었고 그걸 포팅한 것이 SEAndroid다. 지금은 구글이 신경 많이 쓰고 있겠지. iOS 보안을 대체할 유일한 대항 마니까. 정책을 만드는 데는 유저 테스팅이 필요한데 수십억 써서 정책 만들고 죽 쒀서 개 주듯이 구글에 주었다. 안드로이드 투자받으러 왔을 때 차 버려서 구글에서 인수한 것이 이런 태풍을 몰고 올 줄은 상상도 못 하였을 것이다.

역사


SEAndroid의 공식 위키는

에서


으로 옮겨졌다. google이 상표권을 주장하는 바람에 NSA에서도 SEAndroid를 못쓰고, 삼성에서도 SE for Android라는 거추장스러운 이름으로 쓴다.

AOSP에 SEAndroid 코드의 대부분을 머지한 사람은 Bill Roberts다. NSA의 Stephen Smalley 가 가장 큰 도움을 주었고, Core 보다 더 중요한 정책은 삼성이 만들었다.

삼성 자체 스토어 하면 안드로이드 못 만들게 한다던 안드로이드는 그전에, 관련 정책을 Open 하지 않으면 Android 승인을 주지 않겠다던 구글 때문에 결국 정책을 빼앗긴다. AOSP 코드야 구글에서 브랜치 관리를 하는 것이니 머지하면 모두 구글 것이 된다.
 특허 빼먹고 버렸던 모토로라의 PLAY를 직접 경험해 보니 확실히 구글은 대단한 회사다.

What is SEAndroid?


SEAndroid는 파일 시스템에 상태 값이 하나 더 추가된 것이 전부이다. 그 상태 값은 부팅 시 정책에 의해서 관리가 되며 root가 접근하지 못한다. root 자체도 부팅 후에 권한이 생성되는 것이다. root 접근하고자 하는 context가 파일이던 메모리던 시스템 장치던 해당 권한이 없다면 변경시킬 수가 없다. 그래서 root 권한을 획득해도 안전하다. 당연히 깰 수 있는 방법은 있다. 리눅스 이미지 자체를 조작하면 된다.

What is TIMA?

TrustZone-basedIntegrity Measurement Architecture

커널 조작을 막는 기술이다. 우리가 인터넷에서 받은 파일이 조작되었는지 아닌지 보려면 해시 키 값을 조사하면 된다. 그와 비슷한 기술이다.

SEAndroid 내부 구현은 복잡하나 단순히 하나의 접근 필드를 만드는 것일 뿐 이 듯. TIMA 역시 변조된 커널을 찾는 기술이다. 그러나 부트로더를 조작하면 또 크래킹이 가능하다.

What is Trusted Boot?


부트로더가 변경되었는지 아닌지 체크한다. 구현은 복잡하다. 목적은 하나다. 부트로더 변경 막아서 커널 보호하는 것. Secure boot라고도 한다. 뭐라고 하든 말든... 

여기서 H/W 엔지어 니는 궁금증이 생긴다. 엔지니어링 모드가 막히는 것이라도 TRACE32로 플래싱 할 때 잘 조작해서 하면 안 될까? 어차피 내 맘대로 바꿀 수 있는 것이잖아.

그래서 들어간 기능이

H/W Root of Trust


오래전 인텔이 MMX 명령어를 칩에 새겨 넣듯, 보안 코드를 아예 칩에 새겨 버린다. 

그래도 크래킹 해보자고 할 수 도 있다.

BGA 타입으로 실장 된 칩을 뽑아서 일일이 펌웨어를 뽑아서 펌웨어 읽어서 복사하고 새로운 칩에 조작해서 넣은 다음 다시 실장.

허튼짓이다.

왠지 스캔들 있을 것 같은 오바마 폰 가져와서 엄청난 비용을 들여도 큰 사건을 터뜨릴 수 있다면.

문제는 오바마 폰을 뺏는 게 더 힘들고, 더군다나 스캔들은 없을 것 같다. 뭐 양민 학살하라고 명령 내릴 것 같지도 않고, 설사 그렇다고 해도 내부자가 이미 위키릭스를 통해 폭로하겠지.

즉, 더 이상 생각하는 것은 비용 낭비다.

What is KNOX?


이것을 다 합한 것이 KNOX다. 게다가 컨테이너를 추가하여 VMWARE나 좀 더 유연한 DOCKER 의 역할을 수행한다. 간단히 말하면 물리적 폰 2개를 폰 하나에 집어넣었다고 보면 된다. MDM과 결합하여 회사에 들어가면 폰을 회사 환경으로 바꾸고 외부로 자료 유출이 되지 않게 할 수 있다.

그래서 미 펜타곤에서도 보안 인증을 해 줬다. 되게 까다로운 절차를 통과했다.

Fin.


SEAndroid의 경우 정책을 강력하게 하면 못 막을 게 없다. root도 막는데... 속도를 항상 고려했기 때문에 속도도 그리 느리지 않다. 그러나 강한 정책은 사용자 편의성을 떨어뜨린다.

이 정도면 매우 간단하게 숲을 보았다. 다음 회부터는 매우 지루한 이야기를 할 것이며, 이번 주에 마무리지으려고 한다. 마무리 안되어도 그만두려고 한다. 어차피 이 정도 Security를 돌릴만한 회사는 그리 많지 않으며(LG 친구들이 좋아하겠네) 돌릴 회사들은 돌리고 있고(삼성에서는 더 많이 업그레이드되었겠지), 다른 보안 담당자들은 이 정도만 이야기해도 스스로 소스 찾아서 보면 다 이해될 내용이기 때문이다.

3년간의 시간이 이렇게 짧은 글로 표현되다니, 나도 깜짝 놀란다. 부디 관련해서 궁금했던 분들에게 많은 도움이 되었으면 한다. 행여나 구글 깐 것 같은 느낌이 들었다면 사실만 적었으니 오해 말고, 사실 구글이 대단한 것은 그 안의 구성원이 아니다. 구글 출신들은 창업을 많이 한다는 것이다. 일자리를 창출하고 사람들이 굶지 않게 해주는 그룹이다. 비슷한 단어로 서울대, 대기업 출신, 사회 부적응자처럼 보이는 geek 하고 실력 있는 엔지니어들이 있다.

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...