Difference between revisions of "Ernie Secure"

From Vita Development Wiki
Jump to navigation Jump to search
Line 1: Line 1:
== Syscon 0xD0 handshake ==
+
== Syscon 0xD0 four part handshake ==
 +
 
 +
=== Part 1 ===
 
1. Generate an empty buffer <pre>30 00 00 0F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</pre> and send it to Syscon.
 
1. Generate an empty buffer <pre>30 00 00 0F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</pre> and send it to Syscon.
 
2. Syscon returns header + 8 byte challenge.
 
2. Syscon returns header + 8 byte challenge.
3. F00D composes a response that is <pre>30 02 00 0F</pre> header a <pre>01 00 00 00</pre> counter, 8 bytes of RNG value, 8 bytes copied from challenge, and 16 bytes of shared data. On 1.69, the shared data is <pre>C8 6B 51 FB 01 9A 20 7F 32 11 8E 55 46 2D 50 08</pre>
+
 
4. This data is encrypted using AES-128-CBC with all zero IV and a shared key. On 1.69, it is <pre>50 E4 C3 A7 72 64 16 7C 40 9C 72 A9 B5 7A 86 09</pre>
+
=== Part 2 ===
 +
1. F00D composes a response that is <pre>30 02 00 0F</pre> header a <pre>01 00 00 00</pre> counter, 8 bytes of RNG value, 8 bytes copied from challenge, and 16 bytes of shared data. On 1.69, the shared data is <pre>C86B51FB019A207F32118E55462D5008</pre>
 +
2. This data is encrypted using AES-128-CBC with all zero IV and a shared key. On 1.69, it is <pre>50E4C3A77264167C409C72A9B57A8609</pre>
 +
 
 +
=== Part 3 ===
 +
1. Gets a 0x28 byte response from Syscon with a 0x20 buffer.
 +
2. Decrypt with AES-128-CBC with all zero IV and a shared key. On 1.69 it is <pre>9E34087C48985B4B351A63572D9B481B</pre>
 +
3. Check that first 8 byte matches unknown and next 8 byte matches the F00D nonce generated in part 1.
 +
4. Encrypt the same buffer back using a shared key. On 1.69 it is <pre>EBE3460D84A41754AC441368CF0200D8</pre> and the IV will be the last 16 bytes from the encrypted input buffer.
 +
5. Append the header <pre>30 04 00 0F 00 00 00 00</pre>

Revision as of 07:43, 20 March 2018

Syscon 0xD0 four part handshake

Part 1

1. Generate an empty buffer

30 00 00 0F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

and send it to Syscon.

2. Syscon returns header + 8 byte challenge.

Part 2

1. F00D composes a response that is

30 02 00 0F

header a

01 00 00 00

counter, 8 bytes of RNG value, 8 bytes copied from challenge, and 16 bytes of shared data. On 1.69, the shared data is

C86B51FB019A207F32118E55462D5008

2. This data is encrypted using AES-128-CBC with all zero IV and a shared key. On 1.69, it is

50E4C3A77264167C409C72A9B57A8609

Part 3

1. Gets a 0x28 byte response from Syscon with a 0x20 buffer.

2. Decrypt with AES-128-CBC with all zero IV and a shared key. On 1.69 it is

9E34087C48985B4B351A63572D9B481B

3. Check that first 8 byte matches unknown and next 8 byte matches the F00D nonce generated in part 1.

4. Encrypt the same buffer back using a shared key. On 1.69 it is

EBE3460D84A41754AC441368CF0200D8

and the IV will be the last 16 bytes from the encrypted input buffer. 5. Append the header

30 04 00 0F 00 00 00 00