We know, a priori, from derrek & co that their estimate for the time to brute force the sighax signature using 10 CPUs and all the optimizations they could think of was 6 months.
We also know, via calculations on how fast we can do modular exponentiations on PC, this equates to about 2^50 signatures to check, using PERFECT code on PC.
This equates to 300 million years, at your claimed rate of ~10000 signatures/day.
The specifics of why your math is wrong is you're assuming generating the signatures to check takes zero time -- it takes a LOT of exponentiations to generate any signatures that even MIGHT be valid. ~16 bits for the 00 02 prefix, and then way more for the ASN.1 structure, since you're not overflowing the first length tag -- many of those must be valid, too, and we don't know which ones.
So, no, bruteforcing sighax is not possible without the bootroms.
@Selver is wrong.
damn SciresM in my thread. But anyways, thank you for clearing this up, i have updated the OP.![]()
Hi @SciresM ,
I'm not offended by being wrong. It's happened before, and will happen again.
Can you help me understand some things, and answer a couple related questions?
NOTE: my 10k / day number relates to number of boots of the 3DS that can be attempted, if relying on standard boot operations to detect success/failure; it's not related to the generation of potential SigHAX sectors to be tried. If this was a source of misunderstanding, please accept my apologies for not having made it more clear.
Based on your description of the need to perform the modular exponentiation, I am presuming you are talking about the need to forge an RSA signature so that the signature itself is acceptable. Obviously, if only able to generate 10k/day, this would be infeasible. But I'd like to drill down to see if we're talking about the same thing....
Can you help me understand which signature must be brute-forced, in order to test a specific corruption of the ASN.1 encoding of the length field?
I ask because, from what I understood, the signature at risk is the FIRM Header's own signature (offset 0x100, size 0x100). Thus, the attempts to check for SigHax would start with modification of *nothing* except that FIRM Header signature.
Of course, there are additional attacks that (due to failure with the ASN.1 decoding) might allow a full signing certificate to be generated, or greatly simplify creation of a hash collision (e.g., BERserk vulnerability, documented in depth by Intel in late 2014), either of which may be considered as resulting in the need for the modular exponentiation that you mention. Can you help me understand how this is not side-stepped by SigHAX, which causes the bootrom to pass the same pointer value to both memory pointers of a memcmp() operation?
Finally, I admit that none of the heuristics are guaranteed to be correct. At the same time, do you believe use of those heuristics would not improve the searching of the potential ASN.1 length value space? I'm interested in your response....
My thanks to you, for any help you provide correcting the understanding I presented.
Last edited by Selver,













