용어 정리
TBB – Trusted Board Boot
CoT – Chain of trust
iROM – Internal ROM
BL – Boot Loader
OM – Operation Mode
iSRAM – Internal SRAM
리셋
시스템이 리셋되면 iROM부터 PC가 시작된다
iROM에는 BL0을 수행하는 코드가 들어있어 OM Pin으로부터 부팅매체를 찾아 해당 디바이스로부터 BL1을 iSRAM으로 읽어들인다. 읽어들이는 과정에서 Secure Boot가 활성화 되어있으면 BL1의 무결성을 검사하고 BL1으로 제어권을 넘기게 된다.
BL0은 칩 제조사가 생산시점에서 기록하게되며 삼성 휴대폰의 경우 삼성 반도체가 역할을 맡는다(추정)
제어권을 넘겨받은 BL1은 BL2를 로딩하는데 역시 Secure Boot 활성 여부에 따라 무결성을 체크하고 BL2로 제어권을 넘겨준다
BL1은 2차벤더가 기록하게되며 삼성 휴대폰의 경우삼성 모바일 사업부, ODROID의 경우 HARDKERNEL에서 책임을 담당한다(강한 추정)
BL2는 일반적으로 u-boot이나 BLOB, grub 과 같은 널리 알려진 Boot Loader가 사용된다. (주로 u-boot)
ODROID의 경우 BL1에서 BL2의 무결성 검사를 진행하지 않아 사용자가 BL2을 변경할수 있다
삼성의경우 BL2의 무결성 검사에 실패하면 Knox를 trip 시켜 보안서비스 동작을 막는것으로 확인된다.
Boot Loader를 검증하는데에 RAS 서명이 사용되며 무결성 검사에 실패하면 CPU는 멈추게 된다.
대부분의 경우 BL1이 문제가 되며 (…) 자세하고 정확한 내용은 CPU의 USER Manual 을 참고해야 한다(그런데 구할길이 NDA 밖에 없다…)
참고
https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/firmware-design.md
https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/trusted-board-boot.md
https://github.com/limingth/ARM-Resources/blob/master/tiny210/Datasheet/S5PV210_UM_REV1.1.pdf
http://prog3.com/sbdm/blog/yueqian_scut/article/details/38983607
http://prog3.com/sbdm/blog/yueqian_scut/article/details/39004727
http://eoworld.tistory.com/entry/mango210-%EB%B6%80%ED%8C%85-%EA%B3%BC%EC%A0%95
http://chlrbgh0.tistory.com/entry/2-%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C-%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%8B%9C%EC%9E%91%EC%9D%80-Bootloader%EB%A7%90%EA%B3%A0-%EA%B5%AC%EC%A1%B0-%ED%8C%8C%EC%95%85%EB%B6%80%ED%84%B0
http://blog.naver.com/dong880510/140162794298
ps. 중국어 배우고싶다
XDA 보니까 이런게 있다 (http://forum.xda-developers.com/showthread.php?t=1233273)