* 주의 : 나는 영어를 잘 하지 못한다. 이걸 번역한것은 뇌에서 고등학교 수준의 영어로 번역해낸 것이다. 더욱 자세한 내용을 볼려면 원문을 읽어라
Looking at the Ecosystem
Understanding Android’s Roots ~ Version History
Android는 다양한 뜻을 포함 한다. 모바일 운영 체제인 Android를 만든 회사와 Android의 버전의 이름에 대한 역사이야기가 초반에 나온다. 읽어 보면 재미는 있다.
Examining the Device Pool
스마트 시계, 텔레비전 액세서리, 게임 콘솔, 오븐, 인공위성, 그리고 새로운 구글 글라스와 같은 장치들은 안드로이드에 의해 작동된다. 자동차 업계는 안드로이드를 차량의 인포테인먼트 플랫폼으로 사용하기 시작했다.
구글은 또한 운영체제를 만들면서 핸드폰을 만들기도 했는데 그것이 Nexus 라인이다. ( 나도 이거 있다 )
이 핸드폰의 장점은 사용자 정의 빌드를 사용하기 때문에 사용자가 원하는 os로 바꿀수 있다.
Open Source, Mostly
안드로이드의 대부분의 기능은 오픈 소스로 이루어져 있다. 이러한 오픈 소스를 보고 오픈 소스 매니아들이 구글에 소스 코드에 오류를 찾아서 제보하면 구글은 그 코드를 고친 새로운 버전 릴리즈를 제공합니다.
3.0의 소스코드는 4.0의 소스 코드가 출시되고 한달 뒤에 소스를 공개하기도 했다.
Understanding Android Stakeholders
별 내용이 아니다. 구글이 핵심 운영체제를 개발하면 하드웨어 제조사가 하드웨어 구성요소와 주변 장치를 만듭니다.
OEM은 최종 사용자 장치를 만들고 장치가 작동하는 다양한 구성 요소의 통합을 관리하고 통신사는 그게 전화나 문자, 데이터 사용이 가능하게 하는 것이다. 그림이 복잡해 보인다고 쫄지 말자
Google ~ users
안드로이드 시스템에서 각각 무슨 일을 하는지 알려준다. 하지만 여기를 넘기기에는 중요한 내용이 있기 때문에 넘길 수 없다. 꼭 한번 읽어 보길 바란다. 밑에는 내가 그 중에서 중요하다고 생각한 부분이다.
CPU Manufacturers
안드로이드는 리눅스 커널에 기반을 두고 있다.
안드로이드는 다양한 프로세스 아키텍처를 지원한다.
그중 ARM은 낮은 전력 소비로 인기가 많다.
ARM은 ARM11, Cortex-A8, Cortex-A9 및 Cortex-A15를 포함한 여러 마이크로프로세서 핵심 설계를 제공한다.
요즘날 볼수 있는것은 ARMv7 이라고 하는데 이책이 나온후 많은 시간이 지났으니 업데이트 됐을수도 있다.
Grasping Ecosystem Complexities
삼성이 d램과 NAND 제조의 40%의 점유율을 보여준다. 그것에 대한 타 회사들의 견제와 소송 이야기가 나온다.
Fragmentation
안드로이드 단편화에 대한 내용이 나온다. 우리의 삶속에서 android를 이용한 다양한 os가 있으며 os 를 변경하면 그것에 익숙해지는데 오랜 시간이 걸린다. 하지만 단편화를 하면 os를 바꿔도 익숙하면서 보안적인 측면에서 볼때 안정적이다. (글쓴이는 os의 단편화를 원하는것 같다.)
Compatibility
안드로이드의 호환성에 대해서 얘기한다. 호환성을 테스트 할 수 있는 링크나 기타 등등이 있는데 솔직히 이 부분은 딱히 중요한 내용은 아닌것 같다. ( 아닐시 지적해주시면 감사하겠습니다)
Update Mechanisms
게임이나 각종 android에서 사용하는 대부분의 어플리케이션들은 playstore 에서 업데이트가 가능하다.
하지만 운영체제의 업데이트는 펌웨어를 배포하거나 OTA(Over-the-air) 업데이트를 통해서 진행 된다.
운영체제의 업데이트는 먼저 구글이 문제를 해결하고 문제가 까다로워 지면 하드웨어에 의존하게 된다.
위에 말한 nexus 장치의 경우 업데이트 된 펌웨어를 최종 사용자에게 직접 릴리스 할 수 있지만 OEM 브랜드 장치를 업데이트 하려면 꽤나 까다로운 과정을 거치게 됩니다.
여기서 OTA란 네트워크를 통해서 이루어지는 업데이트를 뜻한다고 합니다.
Update Frequency
안드로이드 어플리케이션의 업데이트는 얼마 걸리지 않는 반면 안드로이드의 운영체제 업데이트는 아주 느리다.
먼저 구글이 취약점 발견으로부터 1~2주 이내에 AOSP에 취약점을 패치한다.
그때 OEM업체들은 취약점을 보완하기 위해 취약점 패치를 Cherry-pick 하여 내부 트리에 병합 한다.
(난 파파고를 돌렸을때 이게 체리를 선택한다고 나와서 한참 고민했다) 여기서 cherry-pick이란 특정 패치만 반영하는 것을 말한다.
Back-porting
백 포팅이란 현재 버전의 소프트 웨어에 대한 수정 사항을 이전 버전에 적용하는 행위를 가르킨다.
하지만 android 에서는 보안을 위한 백포트가 대부분 존재 하지 않는다. 밑에는 책에서 나온 최악의 시나리오다.
당시 안드로이드의 최신 버전은 4.2 이다. 하지만 4.0.4 이상에 영향을 주는 엄청난 취약점이 발견 되었다. 그렇다면 구글은 4.2.x 이상의 버전에만 취약점을 수정한다. 그렇다면 그 이전 버전은 취약점에 영구적으로 노출 되어 있다.
하지만 이 책이 써질 당시에는 이러한 공격이 공개적으로 알려져 있지 않았다.(지금은 모른다 0.<)
Android Update Alliance
.안드로이드 운영체제를 관리하는 구글은 2011년 5월에 업데이트 얼라이언스를 발표했다. 그 내용은 파트너가 최초 출시후 최소 18개월 동안 Android 기기를 업데이트 하도록 권장하는 것이다.
Updating Dependencies
안드로이드 프레임 워크는 'Webkit'이라는 웹 브라우저 엔진을 포함하고 있다.
구글의 크롬 브라우저를 비롯한 여러 다른 프로젝트에서도 이 엔진을 사용한다.
크롬은 안드로이드와 달리 몇 주 정도의 짧은 수명 주기를 가진다. 하지만 이러한 많은 취약점들은 anroid에서 사용되는 코드에서 발견된다. 이러한 취약점을 "half-day"취약점이라고 부른다.
Security versus Openness ~ Public Disclosures
여기서는 취약점 내용을 공개하느냐 마느냐에 대한 논쟁에 대해서 다룬다.
파워 유저들에게는 취약점을 공개하는 편이 좋지만 보안적인 측면에서는 취약점 공개는 좋지 않다. 라는 논쟁이 적힌 내용이다.
'안드로이드에 관하여 > 안드로이드 공부' 카테고리의 다른 글
Android Hacker's Handbook 2장 -1- (0) | 2021.01.24 |
---|---|
Where is my arm ? (0) | 2021.01.17 |
APK 보호기법 (0) | 2021.01.06 |
what is Smali code? (0) | 2021.01.02 |
Dex 파일 구조는 어떻게 되어 있는가 (2) | 2020.12.24 |