スポンサーリンク

【iPhone】 iTunesのiOSアップデート・バージョン制限と対策 【まとめ】

iPhone_JB

通常、新バージョンのiOSがAppleからリリースされると、当日中にはiTunesで旧バージョンへの復元 (同一バージョン同士でも、ダウングレードでも) ができなくなる。

▼例えば、iOS 4.0.2がリリースされた当日以降、4.0.1以前のどのバージョンのiDeviceも、復元すると4.0.2にするしかなくなる。もとのバージョンにも戻れない。


ユーザのiOSバージョンをコントロールしたいという趣旨があるんだろうが、特定のiOSバージョンを維持したいユーザや企業に取って、迷惑この上ないシステムと思う。
もちろん、特定のバージョンをjailbreakしたいという人には、このシステムは大きなハードルの一つ。

 

このシステムの鍵になるのがECID*と、Appleの認証サーバだ。

*ECIDはiDevice1台ごとに固有の、16桁のhex数列。iDeviceをリカバリーモードにして接続した状態で、WindowsのUSBviewや、MacのSystem Profilerを使用すれば、ECID自体は簡単に読み出すことができる。
参考エントリ:
【iPad_JB】 OS 3.2のECIDをCydiaにファイルする

 

▼iTunesからファームウェアをアップデートする際には、復元の作業中に『アップデートされたiPhoneソフトウェアを確認中』というダイアログがでる。

この裏ではiTunesが、接続された機器のECIDと、アップデートしようとするファームウェアの情報を、Appleの認証サーバに送信し、チャレンジ・レスポンス認証を行っている。

 

  • ファームウェアの情報が、Appleが許可しているバージョンの正規ファームウェアかどうか確認。
  • 確認できれば、送信されたECIDとファームウェア情報をキーにして署名(ECID SHSH) をしたファイル群 ECID blobsをiTunesに返す。
  • 署名されたECID blobsを受け取って初めて、iTunesはファームウェアとECID blobsをiDeviceにアップロードする。
  • iDeviceのブートROMは、自分のECIDの署名があるかどうかを確認し、復元作業に入る。

新しいファームウェアが出ると、古いファームウェアに復元できなくなるのは、Appleが古いファームウェアへの署名を停止するからだ。

iTunesとApple認証サーバ間は、驚いたことに暗号化がされていない。ただし、署名されたECID SHSHは128ビットの暗号化がされているため、改造や加工をすることはできない。

ECIDによるファームウェア認証は、3GSと、第3世代Touchで初めて利用されるようになり、ブートROMにこのためのシステムが組み込まれている。なお、iOS4.0以降では、3G以前の旧デバイスでもソフトウェアベースのECID認証がされるようになった。

 

このAppleの認証システムに対抗し、特定iOSバージョンのECID SHSHを保存、将来のiOSダウングレード・パスを確保する方法が3つある。

 

(1) JailbreakしてCydia経由で行う方法

【注意】Jailbreakは、いかなる問題・障害が起きたとも、全て『自己責任』で対処する必要があります。
iDeviceをjailbreakした場合の問題やリスクについて詳しくは、こちらのエントリをご参照ください

▼初めてjailbreakして、Cydia (App Storeにあたる、Jailbreak App用のストア) を起動すると”Make my Life easier” と “I hate jailbreaking. Go away”の2択質問がでる。

 

“Make My Life Easier”をタップすると、そのiDevice固有のECIDがCydiaの認証バイパスサーバ(仮称: いい名前がないw 前のエントリではキャッシュサーバと読んでた。)に送信される。
あとは、Cydiaの認証バイパスサーバが、多数のユーザから受け取ったECIDを、バッチ処理で順番にAppleの認証サーバに送りつけ、ECID SHSHをたんまり溜め込んでいる。

一度”Make My Life Easier”としておけば、新バージョンのファームウェアが出れば、新しいファームウェア用にCydiaサーバECID SHSHをせっせと取得してくれる。その間、iDeviceがどのiOSバージョンであっても、jailbreakされてようがされてまいが、おかまいなしだ。

誤って”I hate Jailbreaking”をタップしてしまった場合、Cydiaのトップ画面下部の、Credits/Thank Youのセクションの『developing』の文字をタップすればよいらしい。

 

jailbreakが前提というハードルはあるが、この方法は自動的にどんどんECID SHSHをCydiaサーバに登録してくれる、という点で非常に使いやすく、お手軽だ。

 

▼ECIDが正しく登録されれば、Cydiaのトップ画面にSHSHs on file…というメッセージと、登録されたバージョンが表示される。最新のものが表示されるまでには、若干日数がかかるが、サーバ側で確実に作業はしてくれているはず。
これは、iPhone4を出荷時に4.0でjailbreakしたもの。その後勝手に4.0.1もサーバ側で作業され、表示されるようになった。

Cydiaに登録されたバージョンのECID SHSHを利用して、iOSのダウングレード・復元をする方法も非常に簡単。hostsファイルの最後にcydiaサーバのアドレスを追加するだけだ。

Windowsの場合:
C:\Windows\System32\drivers\etc\hosts (Windows)

Mac OS Xの場合:
/etc/hosts

の最後に、74.208.10.249 gs.apple.com を追加。
(うまく行かない場合は、74.208.105.171 でお試しのほど。情報thx: @freelyport 氏)

これにより、iTunesはAppleの認証サーバ (gs.apple.com) に問い合わせる代わりに、Cydia認証バイパスサーバに問い合わせ(リダイレクト)、あらかじめ登録されている、古いiOSバージョン用のECID SHSH blobsが送られてくる。受け取ったiTunesは、Appleの認証サーバが許可したものと思い込み、復元が成功する。という仕組み。

▼例えば、4.0.2がリリースされた場合。iOS4.0 ECID SHSH だけが登録されたiDeviceでは、iOS 4.0にダウングレード復元することが可能になる。
この例の場合、4.0.1 から4.0.1からの復元は4.0への一方通行になる。ダウングレードしたら、4.0か4.0.2にのみ、復元できる。


▼なお、ファームウェアをiTunesでダウングレード復元する際には、ipsw上のベースバンドより、現在iPhoneに書かれているものが新しい場合、復元完了直前にエラー1015が出て、iPhoneはリカバリーモードになる。

この状態になったら、iRecovery (と、同梱のlibusb)を使用する必要がある。詳しい解説がこちらのサイトにあった
Macはコンソール、Windowsはコマンドプロンプトから操作する。
iRecovery -sで起動し、set auto-boot true、saveenv でiPhoneのブート情報を書き換え、/exit でiPhoneを取り外す。リブートすれば、アクティベーション・モードになるので、iTunesが起動していれば、自動的にアクティベーションされ、復元が完了するはず。

後述のTiny Umbrellaの最新版で”Kick Device Out of Recovery”ボタンを使用しても、同じ事ができる。こっちの方がiRecoveryよりお手軽。

 

参考エントリ:【iPhone3GS_JB】部分訳ーCaching Apple’s Signature Server

 

(2) iTunes経由で行う方法 (Jailbreak不要)
hostsファイルをCydia認証バイパスサーバに変更して、iDeviceを復元するだけ。前述の方法と一緒。

この状態で復元すれば、Appleの認証サーバとiTunesの間にCydiaの認証バイパスサーバが介在し、ECIDを受け取り、あとはCydiaの”Make It Easier”の場合と同じように、延々とECID SHSHを取得し続ける。

復元の方法も、同様。hostsファイルが書き換えて有れば、iTunes経由でダウングレード・復元ができるようになる。

この方法の問題は、きちんとCydiaの認証バイパスサーバに、ECID SHSHが保存されているか、iDeviceをjailbreakするまでは確認できないところ。Cydiaの作者のSaurikが何か方法を提供してくれればいいんだが。

 

(3) Tiny Umbrellaを使う方法 (Jailbreak不要)
notcomが開発した、Tiny Umbrellaというツールがある。このツールは言わばCydiaの認証バイパスをローカルマシンで行うようなものである。

▼Windows版、Tiny Umbrella 4.01.08にiPhone4をつないだ状態の画面

 

Windows版とMac版があるが、どちらでもAppleの認証を受けたECID blobsをハードディスクに保存しておくことができる。ツールから、TSS Serverという機能を起動すれば、スタンドアロン環境でiTunes経由で特定のバージョンに復元ができるようになる。

Advanced Optionsをチェックすると表示される、Requests From:のところで、Cydia認証バイパスサーバを使うか、Appleの認証サーバを使うか、選ぶことができる。デフォルトはCydiaな点に注意。

Tiny Umbrellaを使用すれば、Cydiaがダウンしていたりしても、ローカル環境だけで復元ができるし、確実に手元にECID blobsを保管できるのがメリット。

また、(1)、(2) の方法同様、Cydiaの認証バイパスサーバに対し、ECIDを登録する作業も行うことができる。

 

現状、上記3種類の方法のいずれかにより、特定バージョンのECID SHSHを確保すれば、ダウングレード・復元手段が確保できる。

しかし、Appleが今後iTunesでの復元認証方法に手を入れてくるかわからない。そうなれば、せっかくECID SHSHをCydiaにファイルしていたり、手元にblobsを持っていても何の役にも立たなくなる可能性がある。

タイトルとURLをコピーしました