Difference between revisions of "Firmware Keys"

From The iPhone Wiki
Jump to: navigation, search
(Undo revision 11864 by Ahmadlharb (Talk) don't post partial for coming post it in a new section)
(Firmware Versions: 16.x placeholder)
 
(709 intermediate revisions by 32 users not shown)
Line 1: Line 1:
  +
__NOTOC__
== Introduction ==
 
  +
'''Firmware Keys''' are keys which decrypt bootloaders, ramdisks, and [[:/|root filesystem]] of iOS [[firmware]], if those components are encrypted. Apple uses encryption to make it harder to analyze and modify them. Over time Apple changed the way they encrypt firmware files, hence the way to decrypt them and get decryption keys changed as well.
These keys are for use with the tool "VFDecrypt" to decrypt the root filesystem DMG found in every IPSW. The DMG that you are after is the bigger one, in the case of the most recent builds, it can sometimes be more than 400MB!
 
   
== VFDecrypt Usage ==
+
== History ==
  +
With the release of the iPhone came the [[S5L File Formats#IMG2|IMG2]] file format. They were used on all known [[iOS|iPhone OS]] [[#1.x|1.x]] firmwares. For the 1.1.x series, they were encrypted with the [[AES Keys#Key 0x837|0x837 key]]. The discovery of the 0x837 key led to the ability to decrypt ''any'' 1.x firmware.
mac: ./vfdecrypt -i <dmg> -o decrypted_fs.dmg -k <key>
 
windows: vfdecrypt.exe -i <dmg> -o decrypted_fs.dmg -k <key>
 
   
  +
Following IMG2 came the [[IMG3 File Format|IMG3]] file format. They were introduced with iPhone OS [[#1.x.2F2.x|2.0 beta 4]], and have been in use ever since. In order to maintain their integrity, they use multiple layers of encryption. Apple took encryption seriously with IMG3 by utilizing [[wikipedia:Advanced Encryption Standard|AES]] (based on the [[wikipedia:Rijndael key schedule|Rinjndael key schedule]]). In terms of the pre-iPhone OS 3 [[VFDecrypt]] key, it is stored as plain-text in the "__restore" segment of the ASR image within the [[ramdisk]]s.
== Gaps ==
 
As you will notice, there may be a gap or two, or a key for a current build that is not there. Please feel free to add them, but please be sure that it is only the key for a User or Developer build, as if you gave the key for another type of build that might or may not be out there '''people could get in trouble, and we do not want that'''. Thanks for contributing!
 
   
  +
The ramdisk keys can ''only'' be retrieved with the processor specific [[GID Key]]. The GID key is currently unretrievable and can only be utilized through the built-in [[AES Keys|AES engine]]. To complicate things ''even more'', the engine is only accessible through a special [[bootrom]] or [[iBoot]] exploit ([[jailbreak]]s typically expose it with [[/dev/aes_0]]). This makes usage of the key nearly impossible.
== AutoDecrypt==
 
AutoDecrypt is another program currently being developed, it is a GUI (with Terminal/CMD optional) that will automatically decrypt the .dmg comparing it against a database of known vfdecrypt keys. It is being developed originally for Windows, but a Linux version will follow soon (and possibly Mac if someone will port it).
 
   
  +
However, once you have access to the AES engine, the entire system falls apart. You are able to upload an encrypted ramdisk and grab the decryption keys for it. Once you manage to decrypt the ramdisk, you can run it through [[GenPass]] to decrypt the firmware key.
== Downloads ==
 
{| class="wikitable" style="text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;" border="1"
 
|-
 
! Program Name
 
! Creator
 
! Credit
 
! [[wikipedia:GitHub|GitHub]]
 
! Interface
 
! [[wikipedia:Microsoft Windows|Windows]] ([[wikipedia:32-bit|x86]])
 
! [[wikipedia:Microsoft Windows|Windows]] ([[wikipedia:64-bit|x64]])
 
! [[wikipedia:Mac OS X|Mac OS X]] ([[wikipedia:Universal binary|Universal]])
 
! [[wikipedia:Mac OS X|Mac OS X]] ([[wikipedia:List of Intel microprocessors|Intel]])
 
! [[wikipedia:Mac OS X|Mac OS X]] ([[wikipedia:PowerPC|PowerPC]])
 
! [[wikipedia:Linux|Linux]] Installer (.[[wikipedia:deb (file format)|deb]])
 
! [[wikipedia:Linux|Linux]] Installer (.[[wikipedia:RPM Package Manager|rpm]])
 
! [[wikipedia:Linux|Linux]] (.[[wikipedia:tar (file format)|tar]].[[wikipedia:gzip|gz]])
 
! [[wikipedia:Haiku (operating system)|Haiku]]
 
! [[wikipedia:Solaris (operating system)|Solaris]] ([[wikipedia:32-bit|x86]])
 
! [[wikipedia:Solaris (operating system)|Solaris]] ([[wikipedia:64-bit|x64]])
 
! [[wikipedia:Solaris (operating system)|Solaris]] ([[wikipedia:SPARC|SPARC]])
 
! [[wikipedia:Solaris (operating system)|Solaris]] ([[wikipedia:PowerPC|PowerPC]])
 
|-
 
| [[DMG Decrypter]]
 
| [[User:MCTD81|MCTD81]]
 
| None
 
| None
 
| [[wikipedia:Graphical user interface|GUI]]
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{yes|[http://dmgdecrypter.blogspot.com/ DMG Decrypter Blog]}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
|-
 
| [[iDecrypt]]
 
| bennyyboi
 
| [[Maybach Dev Team]] member [https://twitter.com/bennyyboi bennyyboi]
 
| None
 
| [[wikipedia:Graphical user interface|GUI]]
 
| {{yes|[http://www.fileden.com/files/2010/8/15/2942501/iDecrypt-1-0-phoenix12045.rar FileDen HTTP]<br />[http://www.mediafire.com/?71gpqjkn2sxi6nd MediaFire HTTP]}}
 
| {{partial|Use 32-bit version.}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
|-
 
| [[iDecryptIt]]
 
| [[User:Balloonhead66|Balloonhead66]]
 
| VFDecrypt
 
| None
 
| [[wikipedia:Graphical user interface|GUI]]
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
|-
 
| [[iDecrypter]]
 
| [[User:Fallensn0w|Fallensn0w]]
 
| VFDecrypt
 
| [http://github.com/fallensn0w/iDecrypter fallensn0w's iDecrypter]
 
| [[wikipedia:Graphical user interface|GUI]]
 
| {{yes|[http://github.com/Fallensn0w/iDecrypter/raw/master/bin/vfdecrypt.exe GitHub HTTP]}}
 
| {{partial|Use 32-bit version.}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
|-
 
| VFDecrypt
 
| Unknown
 
| [http://lorenzo.yellowspace.net/corrupt-sparseimage.html http://lorenzo.yellowspace.net/corrupt-sparseimage.html]
 
| [http://github.com/dra1nerdrake/VFDecrypt dra1nerdrake's VFDecrypt]
 
| [[wikipedia:Command-line interface|CLI]]
 
| {{yes|[http://iphoneelite.googlecode.com/files/vfdecrypt.zip Google Code HTTP]}}
 
| {{partial|Use 32-bit version.}}
 
| {{yes|[http://rgov.org/files/vfdecrypt-mac.zip RGov.org HTTP]}}
 
| {{yes|[http://lorenzo.yellowspace.net/vfdecrypt-binary-mactel.tgz YellowSpace HTTP]}}
 
| {{yes|[http://lorenzo.yellowspace.net/vfdecrypt-binary-ppc.tgz YellowSpace HTTP]}}
 
| {{no}}
 
| {{no}}
 
| {{yes|[http://iphone-elite.googlecode.com/files/vfdecrypt-linux.tar.gz Google Code HTTP]}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
| {{no}}
 
|}
 
   
  +
To find the keys, you can either use the methods on [[AES Keys]] or the easier option for OS X, [[keylimepie]].
== Firmwares ==
 
{| border="1" cellspacing="0"
 
|-
 
|
 
! 1.x
 
! 2.x
 
! 3.x
 
! 4.x
 
|-
 
! Beta
 
|
 
| rowspan="2"| [[VFDecrypt Keys: 2.x|Keys]]
 
|[[VFDecrypt Keys: 3.x BETA|Keys]]
 
|[[VFDecrypt Keys: 4.x BETA|Keys]]
 
|-
 
|-
 
! Final
 
|[[VFDecrypt Keys: 1.x|Keys]]
 
|[[VFDecrypt Keys: 3.x|Keys]]
 
|[[VFDecrypt Keys: 4.x|Keys]]
 
|}
 
   
  +
== Decrypting ==
== All keys for Final Firmware versions ==
 
  +
{{main|Decrypting Firmwares}}
For more details, please see the [[Firmware]] page.
 
  +
== Notes ==
  +
Certain files share the same key and IV per [[Application Processor|application processor]] (per build) provided the devices have the same pixel resolution:
  +
* [[Update Ramdisk]]
  +
* [[Restore Ramdisk]]
  +
* [[AppleLogo]]
  +
* [[BatteryCharging0]]
  +
* [[BatteryCharging1]]
  +
* [[BatteryFull]]
  +
* [[BatteryLow0]]
  +
* [[BatteryLow1]]
  +
* [[GlyphCharging]]
  +
* [[GlyphPlugin]]
  +
* [[Kernelcache]]
  +
* [[NeedService]]
  +
* [[RecoveryMode]]
  +
* [[SEP Firmware]]
  +
* [[WTF]]
   
  +
You can use [[img3decrypt]] or [[xpwntool]] to decrypt these files as described in [[Decrypting Firmwares]]. Once done, mount or extract using the tool of your choice.
{| border="1" cellspacing="0" style="text-align:center;"
 
|-
 
|
 
! [[M68ap|iPhone]]
 
! [[N82ap|iPhone 3G]]
 
! [[N88ap|iPhone 3GS]]
 
! [[N90ap|iPhone 4]]
 
! [[N45ap|iPod touch]]
 
! [[N72ap|iPod touch 2G]]
 
! [[N18ap|iPod touch 3G]]
 
! [[N81ap|iPod touch 4G]]
 
! [[K48ap|iPad]]
 
! [[K66ap|Apple TV 2G]]
 
|-
 
! style="text-align:left;" | 1.0
 
| [[Alpine 1A420 (iPhone)|1A420]]
 
| rowspan="10" | no
 
| rowspan="17" | no
 
| rowspan="23" | no
 
| rowspan="4" | no
 
| rowspan="14" | no
 
| rowspan="20" | no
 
| rowspan="23" | no
 
| rowspan="23" | no
 
| rowspan="23" | no
 
|-
 
! style="text-align:left;" | 1.0.0
 
| [[Heavenly 1A543a (iPhone)|1A543a]]
 
|-
 
! style="text-align:left;" | 1.0.1
 
| [[Heavenly 1C25 (iPhone)|1C25]]
 
|-
 
! style="text-align:left;" | 1.0.2
 
| [[Heavenly 1C28 (iPhone)|1C28]]
 
|-
 
! style="text-align:left;" | 1.1
 
| no
 
| [[Snowbird 3A100a (iPod touch)|3A100a]]+[[Snowbird 3A101a (iPod touch)|3A101a]]
 
|-
 
! style="text-align:left;" | 1.1.1
 
| [[Snowbird 3A109a (iPhone)|3A110a]]
 
| [[Snowbird 3A110a (iPod touch)|3A110a]]
 
|-
 
! style="text-align:left;" | 1.1.2
 
| [[Oktoberfest 3B48b (iPhone)|3B48b]]
 
| [[Oktoberfest 3B48b (iPod touch)|3B48b]]
 
|-
 
! style="text-align:left;" | 1.1.3
 
| [[Little Bear 4A93 (iPhone)|4A93]]
 
| [[Little Bear 4A93 (iPod touch)|4A93]]
 
|-
 
! style="text-align:left;" | 1.1.4
 
| [[Little Bear 4A102 (iPhone)|4A102]]
 
| [[Little Bear 4A102 (iPod touch)|4A102]]
 
|-
 
! style="text-align:left;" | 1.1.5
 
| no
 
| [[Little Bear 4B1 (iPod touch)|4B1]]
 
|-
 
! style="text-align:left;" | 2.0
 
| [[Big Bear 5A347 (iPhone)|5A347]]
 
| [[Big Bear 5A345 (iPhone 3G)|5A345]]+[[Big Bear 5A347 (iPhone 3G)|5A347]]
 
| [[Big Bear 5A347 (iPod touch)|5A347]]
 
|-
 
! style="text-align:left;" | 2.0.1
 
| [[Big Bear 5B108 (iPhone)|5B108]]
 
| [[Big Bear 5B108 (iPhone 3G)|5B108]]
 
| [[Big Bear 5B108 (iPod touch)|5B108]]
 
|-
 
! style="text-align:left;" | 2.0.2
 
| [[Big Bear 5C1 (iPhone)|5C1]]
 
| [[Big Bear 5C1 (iPhone 3G)|5C1]]
 
| [[Big Bear 5C1 (iPod touch)|5C1]]
 
|-
 
! style="text-align:left;" | 2.1
 
| [[Sugar Bowl 5F136 (iPhone)|5F136]]
 
| [[Sugar Bowl 5F136 (iPhone 3G)|5F136]]
 
| [[Sugar Bowl 5F137 (iPod touch)|5F137]]
 
|-
 
! style="text-align:left;" | 2.1.1
 
| no
 
| no
 
| [[Sugar Bowl 5F138 (iPod touch)|5F138]]
 
| no
 
|-
 
! style="text-align:left;" | 2.2
 
| [[Timberline 5G77 (iPhone)|5G77]]
 
| [[Timberline 5G77 (iPhone 3G)|5G77]]
 
| [[Timberline 5G77 (iPod touch)|5G77]]
 
| [[Timberline 5G77a (iPod touch 2G)|5G77]]
 
|-
 
! style="text-align:left;" | 2.2.1
 
| [[SUTimberline 5H11 (iPhone)|5H11]]
 
| [[SUTimberline 5H11 (iPhone 3G)|5H11]]
 
| [[SUTimberline 5H11 (iPod touch)|5H11]]
 
| [[SUTimberline 5H11a (iPod touch 2G)|5H11a]]
 
|-
 
! style="text-align:left;" | 3.0
 
| [[Kirkwood 7A341 (iPhone)|7A341]]
 
| [[Kirkwood 7A341 (iPhone 3G)|7A341]]
 
| [[Kirkwood 7A341 (iPhone 3GS)|7A341]]
 
| [[Kirkwood 7A341 (iPod touch)|7A341]]
 
| [[Kirkwood 7A341 (iPod touch 2G)|7A341]]
 
|-
 
! style="text-align:left;" | 3.0.1
 
| [[Kirkwood 7A400 (iPhone)|7A400]]
 
| [[Kirkwood 7A400 (iPhone 3G)|7A400]]
 
| [[Kirkwood 7A400 (iPhone 3GS)|7A400]]
 
| no
 
| no
 
|-
 
! style="text-align:left;" | 3.1
 
| [[Northstar 7C144 (iPhone)|7C144]]
 
| [[Northstar 7C144 (iPhone 3G)|7C144]]
 
| [[Northstar 7C144 (iPhone 3GS)|7C144]]
 
| no
 
| no
 
|-
 
! style="text-align:left;" | 3.1.1
 
| colspan="3" | only for iPod touches
 
| [[Northstar 7C145 (iPod touch)|7C145]]
 
| [[Northstar 7C145 (iPod touch 2G)|7C145]]
 
| [[Northstar 7C145 (iPod touch 3G)|7C145]]+[[Northstar 7C146 (iPod touch 3G)|7C146]]
 
|-
 
! style="text-align:left;" | 3.1.2
 
| [[Northstar 7D11 (iPhone)|7D11]]
 
| [[Northstar 7D11 (iPhone 3G)|7D11]]
 
| [[Northstar 7D11 (iPhone 3GS)|7D11]]
 
| [[Northstar 7D11 (iPod touch)|7D11]]
 
| [[Northstar 7D11 (iPod touch 2G)|7D11]]
 
| [[Northstar 7D11 (iPod touch 3G)|7D11]]
 
|-
 
! style="text-align:left;" | 3.1.3
 
| [[SUNorthstarTwo 7E18 (iPhone)|7E18]]
 
| [[SUNorthstarTwo 7E18 (iPhone 3G)|7E18]]
 
| [[SUNorthstarTwo 7E18 (iPhone 3GS)|7E18]]
 
| [[SUNorthstarTwo 7E18 (iPod touch)|7E18]]
 
| [[SUNorthstarTwo 7E18 (iPod touch 2G)|7E18]]
 
| [[SUNorthstarTwo 7E18 (iPod touch 3G)|7E18]]
 
|-
 
! style="text-align:left;" | 3.2
 
| rowspan="3" colspan="8" | Firmware 3.2.x is only for [[K48ap|iPad]]
 
| [[Wildcat 7B367 (iPad)|7B367]]
 
| rowspan="3" | Firmware 3.2.x is only for [[K48ap|iPad]]
 
|-
 
! style="text-align:left;" | 3.2.1
 
| [[Wildcat 7B405 (iPad)|7B405]]
 
|-
 
! style="text-align:left;" | 3.2.2
 
| [[Wildcat 7B500 (iPad)|7B500]]
 
|-
 
! style="text-align:left;" | 4.0
 
| rowspan="4" | no more supported
 
| [[Apex 8A293 (iPhone 3G)|8A293]]
 
| [[Apex 8A293 (iPhone 3GS)|8A293]]
 
| [[Apex 8A293 (iPhone 4)|8A293]]
 
| rowspan="4" | no more supported
 
| [[Apex 8A293 (iPod touch 2G)|8A293]]
 
| [[Apex 8A293 (iPod touch 3G)|8A293]]
 
| no
 
| rowspan="4" | not yet supported
 
| rowspan="3" | no
 
|-
 
! style="text-align:left;" | 4.0.1
 
| [[Apex 8A306 (iPhone 3G)|8A306]]
 
| [[Apex 8A306 (iPhone 3GS)|8A306]]
 
| [[Apex 8A306 (iPhone 4)|8A306]]
 
| colspan="3" | only fix for iPhones
 
|-
 
! style="text-align:left;" | 4.0.2
 
| [[Apex 8A400 (iPhone 3G)|8A400]]
 
| [[Apex 8A400 (iPhone 3GS)|8A400]]
 
| [[Apex 8A400 (iPhone 4)|8A400]]
 
| [[Apex 8A400 (iPod touch 2G)|8A400]]
 
| [[Apex 8A400 (iPod touch 3G)|8A400]]
 
| no
 
|-
 
! style="text-align:left;" | 4.1
 
| [[Baker 8B117 (iPhone 3G)|8B117]]
 
| [[Baker 8B117 (iPhone 3GS)|8B117]]
 
| [[Baker 8B117 (iPhone 4)|8B117]]
 
| [[Baker 8B117 (iPod touch 2G)|8B117]]
 
| [[Baker 8B117 (iPod touch 3G)|8B117]]
 
| [[Baker 8B117 (iPod touch 4G)|8B117]]+[[Baker 8B118 (iPod touch 4G)|8B118]]
 
| [[Mojave 8M89 (Apple TV 2G)|8M89]]
 
|-
 
|}
 
   
  +
The firmware version number for the [[List of Apple TVs|Apple TV]] builds are the ones that the Apple TV reports (also known as the "marketing version").
== All keys for Beta Firmware versions ==
 
For more details, please see the [[Beta Firmware]] page.
 
   
  +
All dates are relative to [[wikipedia:Coordinated Universal Time|UTC]].
{| border="1" cellspacing="0" style="text-align:center;"
 
|-
 
|
 
! [[M68ap|iPhone]]
 
! [[N82ap|iPhone 3G]]
 
! [[N88ap|iPhone 3GS]]
 
! [[N90ap|iPhone 4]]
 
! [[N45ap|iPod touch]]
 
! [[N72ap|iPod touch 2G]]
 
! [[N18ap|iPod touch 3G]]
 
! [[N81ap|iPod touch 4G]]
 
! [[K48ap|iPad]]
 
! [[K66ap|Apple TV 2G]]
 
|-
 
! style="text-align:left;" | 1.2b1
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 2.0b2
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 2.0b3
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 2.0b4
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 2.0b5
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 2.0b6P
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 2.0b6F
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 2.0b7
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 3.0b1
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 3.0b2
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 3.0b3
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 3.0b4
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 3.0b5
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 3.1b1
 
| [[NorthVail 7C97d (iPhone)|7C97d]]
 
| [[NorthVail 7C97d (iPhone 3G)|7C97d]]
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 3.1b2
 
| [[NorthVail 7C106c (iPhone)|7C106c]]
 
| [[NorthVail 7C106c (iPhone 3G)|7C106c]]
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 4.0b1
 
| x
 
| x
 
| x
 
| x
 
| x
 
| [[ApexVail 8A230m (iPod touch 2G)|8A230m]]
 
| [[ApexVail 8A230m (iPod touch 3G)|8A230m]]
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 4.0b2
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 4.0b3
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 4.0b4
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 4.0GM
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 4.1b1
 
| x
 
| [[BakerVail 8B5080c (iPhone 3G)|8B5080c]]
 
| x
 
| x
 
| x
 
| [[BakerVail 8B5080 (iPod touch 2G)|8B5080]]
 
| x
 
| x
 
| x
 
| x
 
|-
 
! style="text-align:left;" | 4.2b3
 
| x
 
| x
 
| x
 
| [[JasperVail 8C5115c (iPhone 4)|8C5115c]]
 
| x
 
| x
 
| x
 
| [[JasperVail 8C5115c (iPod touch 4G)|8C115c]]
 
| x
 
| x
 
|-
 
|}
 
   
  +
GID AES is used by iBoot to decrypt firmware images. When iBoot loads the kernelcache, GID AES is disabled. This means in order to get firmware keys, you must gain code execution in a setting where GID AES is still enabled. In most cases, this means exploiting iBoot itself, before the kernelcache is loaded.
[[Category:VFDecrypt]]
 
  +
  +
==Firmware Versions==
  +
{{see also|Prototypes}}
  +
This is a full and comprehensive list of all firmwares Apple Inc. has made available to the public in some way, be it the [[Apple Developer|dev center]] or [[iTunes]]. This list also contains a few firmwares for which there never was an IPSW (as far as can be told) such as 4.2.5 for the [[N92AP|CDMA iPhone 4]] (iPhone3,3). These few builds came preinstalled on the device, but are not available for download.
  +
  +
* [[Firmware Keys/1.x|1.x]]
  +
* [[Firmware Keys/2.x|2.x]]
  +
* [[Firmware Keys/3.x|3.x]]
  +
* [[Firmware Keys/4.x|4.x]]
  +
* [[Firmware Keys/5.x|5.x]]
  +
* [[Firmware Keys/6.x|6.x]]
  +
* [[Firmware Keys/7.x|7.x]]
  +
* [[Firmware Keys/8.x|8.x]]
  +
* [[Firmware Keys/9.x|9.x]]
  +
* [[Firmware Keys/10.x|10.x]]
  +
* [[Firmware Keys/11.x|11.x]]
  +
* [[Firmware Keys/12.x|12.x]]
  +
* [[Firmware Keys/13.x|13.x]]
  +
* [[Firmware Keys/14.x|14.x]]
  +
* [[Firmware Keys/15.x|15.x]]
  +
* [[Firmware Keys/16.x|16.x]]
  +
  +
== See also ==
  +
* [[Application Processor]]
  +
  +
[[Category:Decryption]]

Latest revision as of 10:42, 6 June 2022

Firmware Keys are keys which decrypt bootloaders, ramdisks, and root filesystem of iOS firmware, if those components are encrypted. Apple uses encryption to make it harder to analyze and modify them. Over time Apple changed the way they encrypt firmware files, hence the way to decrypt them and get decryption keys changed as well.

History

With the release of the iPhone came the IMG2 file format. They were used on all known iPhone OS 1.x firmwares. For the 1.1.x series, they were encrypted with the 0x837 key. The discovery of the 0x837 key led to the ability to decrypt any 1.x firmware.

Following IMG2 came the IMG3 file format. They were introduced with iPhone OS 2.0 beta 4, and have been in use ever since. In order to maintain their integrity, they use multiple layers of encryption. Apple took encryption seriously with IMG3 by utilizing AES (based on the Rinjndael key schedule). In terms of the pre-iPhone OS 3 VFDecrypt key, it is stored as plain-text in the "__restore" segment of the ASR image within the ramdisks.

The ramdisk keys can only be retrieved with the processor specific GID Key. The GID key is currently unretrievable and can only be utilized through the built-in AES engine. To complicate things even more, the engine is only accessible through a special bootrom or iBoot exploit (jailbreaks typically expose it with /dev/aes_0). This makes usage of the key nearly impossible.

However, once you have access to the AES engine, the entire system falls apart. You are able to upload an encrypted ramdisk and grab the decryption keys for it. Once you manage to decrypt the ramdisk, you can run it through GenPass to decrypt the firmware key.

To find the keys, you can either use the methods on AES Keys or the easier option for OS X, keylimepie.

Decrypting

Main article: Decrypting Firmwares

Notes

Certain files share the same key and IV per application processor (per build) provided the devices have the same pixel resolution:

You can use img3decrypt or xpwntool to decrypt these files as described in Decrypting Firmwares. Once done, mount or extract using the tool of your choice.

The firmware version number for the Apple TV builds are the ones that the Apple TV reports (also known as the "marketing version").

All dates are relative to UTC.

GID AES is used by iBoot to decrypt firmware images. When iBoot loads the kernelcache, GID AES is disabled. This means in order to get firmware keys, you must gain code execution in a setting where GID AES is still enabled. In most cases, this means exploiting iBoot itself, before the kernelcache is loaded.

Firmware Versions

See also: Prototypes

This is a full and comprehensive list of all firmwares Apple Inc. has made available to the public in some way, be it the dev center or iTunes. This list also contains a few firmwares for which there never was an IPSW (as far as can be told) such as 4.2.5 for the CDMA iPhone 4 (iPhone3,3). These few builds came preinstalled on the device, but are not available for download.

See also