ipsw 파일
2024년 12월 12일
ipsw #
Apple 기기의 펌웨어 파일의 확장자이다. iOS 운영체제와 관련된 시스템 이미지, 부트 로더, 베이스밴드, 커널, 애플 자체 앱 및 각종 시스템 리소스 등을 포함한 일종의 패키지 파일 형식이다.
기기의 운영체제를 설치하는데 사용되며, 애플서버에서 서명을 지원하는 동안만 사용 가능하다.
서명 #
애플이 이전버전의 iOS를 설치할 수 없도록 강제화 하는 방식이다. https://ipsw.me 에서 기기별 서명 지원 여부를 확인할 수 있다.
기기에 펌웨어가 플래시되는 과정 #
- itunes 등에서 펌웨어.ipsw 를 선택한다.
- 플래시 툴은 애플의 TTS(Tatsu Signing Server) 서버로 기기의 모델이나 고유식별정보(ECID)와 펌웨어의 정보를 함께 전달해서 요청한다.
- 서버에서는 APTicket(인증토큰)과 SHSH Blob이 응답된다.
- iBoot(부트로더)는 플래시되면서 APTicket, SHSH Blob을 사용해서 부팅이미지를 검증한다.
- 검증을 통과하면 정상적으로 펌웨어(ipsw + APTicket + SHSH Blob)가 생성되어 플래시된다.
SHSH Blob #
여기에서 SHSH Blob은 기기마다, 펌웨어마다 다른 값이기 때문에 플래시할 기기에서 추출되어야 한다. 예전에는 SHSH Blob을 백업해두고 기기를 다운그레이드 할때마다 사용했다.
APTicket #
하지만 현재(사실 오래전임)는 기기가 복원하거나 부팅할때마다 Nonce 값이 랜덤하게 생성되는데 이 값에 해당하는 APTicket 을 서버에서 응답해주고, 그 값을 펌웨어 플래시의 검증에 사용하기 때문에 현재 Nonce 에 맞는 APTicket이 있어야 플래시가 가능하여 플래시 하는 타이밍에 같은 Nonce가 아닌 이상 SHSH Blob의 재사용이 불가능해졌다.