0x00-0x0F is decryption key (but stored encrypted with AES128, is not PLAINTEXT key)
0x10-0x1F is CMAC key (but again, derived ver not plain)
0x20-0x2F is header hash (CMAC)
0x30-0x3F is data hash (CMAC)
Ключи kirk7 участвуют в процессе криптовки\декриптовки всех испольняемых файлов PRX(ELF)
Как я понял, они здесь пронумерованы по скрамблеркОдам и в процессе подписи Game EBOOT.BIN тегами 0xD916xxF0 используется ключ kirk7_key5D kirk_engine.c
Собсно вопрос: как можно надыбать ключ kirk7_key60, для подписи приложений DATA.PSP?
ErikPshat
16.06.2013 12:52
Хех, в поиске программного кирка PSP в эмуляторе прошивки PS3 обнаружил ключи к EBOOT.BIN игр ISO.
Они лежат в файле dev_flash\pspemu\release\emulator_drm.sprx в секции sceEmulatorDrm.
Там, в прошивке 3.55 найдены следующие теги вместе с ключами:
0xD9160BF0 - 5.55 Game EBOOT.BIN
0xD9160AF0 - 5.05 Game EBOOT.BIN
0xD91606F0 - 3.00 Game EBOOT.BIN
0xD91605F0 - 2.80 Game EBOOT.BIN
0x8004FD03 - 2.60 Game EBOOT.BIN
0xC0CB167C - 2.00 Game EBOOT.BIN
0x08000000 - 1.50 Game EBOOT.BIN
ErikPshat
16.06.2013 15:16
Вложений: 1
Цитата:
Сообщение от ErikPshat
(Сообщение 1072878)
Собсно вопрос: как можно надыбать ключ kirk7_key60, для подписи приложений DATA.PSP?
Ну вот спасибо всем, кто пытался помочь, но так и не смог :indeec:
По-ходу я нашёл то, что искал...
Продолжив листать тот же файл - emulator_drm.sprx, я вдруг обнаружил, что внутри спрятан ещё один файл с заголовком SCE, как и положено быть зашифрованному файлу SPRX. Он находится сразу после ключей 0xD916xxF0 в секции iso_spu_handler в позиции 0x8000 и практически почти до самого конца.
Изъяв и декриптовав этот файл, с самого начала сразу пришло ощущение, что это вовсе не программный код. А так оно и есть - это регистры процессора, самый настоящий ассемблерный код.
Самое интересное находится в самом конце файла. Там идут раздельные 4 секции кода - 2x256 байт (0x100) и 2x336 байт (0x150):
1-ая секция (AES128 Forward S-box)
Ну тут понятно, взглянув на первые же цифры в коде, сразу узнаваем алгоритм шифрования AES128. Этот код всегда можно встретить в любых исходниках, где используется шифрование, обычно в файле AES.c или AES128.c. Этот механизм признан во всём мире, как стандарт шифрования, разработанный Rijndael: "The Advanced Encryption Standard (Rijndael, aka AES)"
Эта секция кода называется Forward S-box.
Посмотреть и сравнить этот фрагмент кода можете, например, здесь: http://en.wikipedia.org/wiki/Rijndae...#Forward_S-box
А теперь просто сравните последнюю 4-ую секцию в спойлере над головой с кодом kirk7 в исходниках kirk_engine.c Для лучшей наглядности продублирую его здесь (то же самое, что во 2-ом посту):
Что это даёт?
Дело в том, что из известных ранее ключей, которые каким-то образом сдампили когда-то, нам полезны только ключи со скрамблер-кодами 0x4B и 0x5D, которые относятся к игровым кодам "Game EBOOT.BIN". На этом всё, все остальные KIRK-ключи нам не дают никакой пользы, потому что все остальные файлы прошивок, демо-игр, программ и всего прочего, подписаны ключами со скрамблер-кодами совершенно другими, которые отсутствуют в данном известном списке.
Обратите внимание на номера известных ключей KIRK (выделено красным):
kirk7_key02
kirk7_key03
kirk7_key04
kirk7_key05
kirk7_key07
kirk7_key0C
kirk7_key0D
kirk7_key0E
kirk7_key0F
kirk7_key10
kirk7_key11
kirk7_key12
kirk7_key38
kirk7_key39
kirk7_key3A
kirk7_key44
kirk7_key4B
kirk7_key53
kirk7_key57
kirk7_key5D
kirk7_key63
kirk7_key64
Эти красные номера - ни что иное, как номера скрамблер-кодов приватных ключей KIRK-а, которым назначены публичные ключи, лежащие в прошивке.
А каждый публичный ключ соответствует своему "Тегу", который прописан в заголовке любого зашифрованного файла.
Таким образом, файлы шифруются и декриптуются KIRK-ом в соответствии со скрамблер-кодом.
Например файлы EBOOT.BIN игр ISO/UMD шифруются и дешифруются ключем kirk7_key5D со скрамблер-кодом 0x5D. С каждой новой версией прошивки, Sony постоянно к этому скрамблеру добавляет новые "Теги" в прошивку, которыми криптуются и декриптуются испольняемые файлы игр EBOOT.BIN. Вот почему новые игры с новыми тегами нельзя запустить на старых прошивках и Sony заставляет обновиться на новую, чтобы поиграть в новую игру. Вот для примера часть списка тегов со скрамблером 0x5D:
Именно потому, что мы знаем этот ключ - kirk7_key5D, поэтому мы уже можем подписывать собственным заголовком любые игровые EBOOT.BIN. Наглядный пример тому программа SEBOOT. И вполне вероятно, что среди этого клада найденных новых Кирков в эмуляторе PSP для PS3, могут найтись подходящие под наши потребности kirk-ключики. Тем самым мы сможем сами подписывать файлы других видов, например DEMO GAME, имеющих скрамблер-код 0x60.