PS4 security article follow up
cturt.github.io
cturt.github.io
Argh! No! Keep at the encryption!
The only exception to this is would be for implementation mistakes such as the PS3's infamous use of the constant 4 instead of what should have been a random number.
Whilst it is unlikely that Sony has made another mistake like this in the core of the PS4's encryption...
Argh! No! Look for other stupid mistakes!
I don't know about the other ones, but I thought they were all pretty much game-local.
Yes; with that bug, you could select a signature to collide with that had an early NUL and brute-force a signature that matched up to that NUL.
> I don't know about the other ones, but I thought they were all pretty much game-local.
No, at least two other exploitable issues occurred in the system software: Bannerbomb (http://wiibrew.org/wiki/Bannerbomb) exploited the parsing of banners for data stored on an SD card (running arbitrary code when accessing the SD data management menu), and LetterBomb (http://wiibrew.org/wiki/LetterBomb) exploited the parsing of Wii Message Board "letters".
So decompile that lib, extract the AES vector, and you can decrypt/encrypt all the save files you want. Surely I'm missing something, though :(
Also you probably missing fact that browser process don't have access to the keyring; even to one that used for game saves. And there is likely several different key storages for different things just like it's was on PS3.
There's also the signatures which prevent modifying the SELFs even if we got the decryption keys. The ECDSA random-fail was what happened to the PS3. This has nothing to do with the encryption though. (There was also no "constant 4" that was just a simplification in the slide deck of the presenters. It was meant as a joke.)
But I do understand all the gross simplification CTurt made because the audience for this article is people who watch the console hacking scene, and in the console hacking scene, almost nobody knows anything about crypto. I frequently have to answer why brute forcing 128-bit AES keys is not possible. Then, inevitably, the asker will declare why we don't just try to guess then. Once I was informed that computers will become faster, so, in the future, we can brute force keys "at the speed of light." I asked them how many meters per second we can crack keys now.
* Okay, technically not any. I haven't gone into NPDRM, which is an additional layer of encryption for purchased games. Different keys are also used for different components (for example, kernel vs. user libraries).
Edit for the lazy:
int getRandomNumber()
{
return 4; // chosen by fair dice roll.
// guaranteed to be random.
}
Alt text: RFC 1149.5 specifies 4 as the standard IEEE-vetted random number.Still, people should keep at it...
uh... that's, like, the whole point of jails. If you get root in a jail, you get root. In the jail. You only see the jail's root fs, the jail's processes and, usually, a very limited set of devices in /dev.
I wonder if this will undermine the opensource strategy of Sony's LLVM/SDK team. I hope not.
It's just like with previous "Linux on PS3" that was mainly done by Sony to decrease taxes as they could pay less if their system can be considered as general purpose PC and not just gaming console. On the time that feature was removed this trick just didn't make sense anymore.
From the slides:
Initial development hampered by secrecy
- Blanket secrecy policy included compiler project
- No advice/feedback from the group consciousness
- Sitting on features and bugs and fixes applicable upstream
Clear value to working openly with upstream
- File a bug; somebody else might fix it
- Send a patch; people will review/advise
- Bigger features can get better design review
- Putting private changes upstream reduces merge pain
And:
Merging once per upstream release was a nightmare
- We stuck our fingers in everywhere
- The 3.0 merge work took three months
Time for wild speculation! Apple are making a game console!
(He probably just hasn't updated the bio.)