As of August 2020 the site you are on (wiki.newae.com) is deprecated, and content is now at rtfm.newae.com. |
Difference between revisions of "SimpleSerial"
From ChipWhisperer Wiki
(→Commands) |
|||
(9 intermediate revisions by 2 users not shown) | |||
Line 11: | Line 11: | ||
|- | |- | ||
|h | |h | ||
− | | | + | |h00\n |
|Select stack / hardware to use (if supported). | |Select stack / hardware to use (if supported). | ||
|In | |In | ||
|M | |M | ||
|M | |M | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|k | |k | ||
|k2b7e151628aed2a6abf7158809cf4f3c\n | |k2b7e151628aed2a6abf7158809cf4f3c\n | ||
− | | | + | |Set encryption key; possibly trigger key scheduling |
|In | |In | ||
|Y | |Y | ||
|Y | |Y | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|m | |m | ||
− | | | + | |m00\n |
|Select cipher mode (if supported) | |Select cipher mode (if supported) | ||
|In | |In | ||
|M | |M | ||
|M | |M | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|p | |p | ||
Line 65: | Line 37: | ||
|Y | |Y | ||
|Y | |Y | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|r | |r | ||
Line 79: | Line 44: | ||
|Y | |Y | ||
|Y | |Y | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|t | |t | ||
Line 93: | Line 51: | ||
|N | |N | ||
|Y | |Y | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|v | |v | ||
|v\n | |v\n | ||
− | | | + | |Check protocol version (no reply on v1.0; ACK on v1.1) |
|In | |In | ||
− | | | + | |Y |
− | | | + | |Y |
|- | |- | ||
|x | |x | ||
− | | | + | |x\n |
|Clears Buffers (resets to 'IDLE' state), does not clear any variables. | |Clears Buffers (resets to 'IDLE' state), does not clear any variables. | ||
|In | |In | ||
|Y | |Y | ||
|Y | |Y | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|z | |z | ||
− | | | + | |z00\n |
− | |ACK - Command processing done | + | |ACK - Command processing done (with optional status code) |
− | | | + | |Out |
− | | | + | |Y |
− | | | + | |Y |
|} | |} | ||
Y = YES, Command support for application. | Y = YES, Command support for application. | ||
Line 137: | Line 81: | ||
== Encryption Application == | == Encryption Application == | ||
The encryption application provides a simple method to encrypt a plaintext into a ciphertext. This application was the original "simple serial". The following operations are performed: | The encryption application provides a simple method to encrypt a plaintext into a ciphertext. This application was the original "simple serial". The following operations are performed: | ||
− | # Load encryption key with 'k' command (for example, k2b7e151628aed2a6abf7158809cf4f3c\n sets key to | + | # Load encryption key with 'k' command (for example, k2b7e151628aed2a6abf7158809cf4f3c\n sets key to 2b7e151628aed2a6abf7158809cf4f3c). |
# Set input text to encryption module with 'p' command. Device encrypts input text, and toggles the I/O trigger line during the encryption operation. | # Set input text to encryption module with 'p' command. Device encrypts input text, and toggles the I/O trigger line during the encryption operation. | ||
# The ciphertext is returned with the 'r' command. | # The ciphertext is returned with the 'r' command. | ||
Line 143: | Line 87: | ||
== Authentication Application == | == Authentication Application == | ||
The authentication application does not expose the result of the encryption. Instead, the result is used only in authentication mode, where the following operations are performed: | The authentication application does not expose the result of the encryption. Instead, the result is used only in authentication mode, where the following operations are performed: | ||
− | # Load encryption key with 'k' command (for example, k2b7e151628aed2a6abf7158809cf4f3c\n sets key to | + | # Load encryption key with 'k' command (for example, k2b7e151628aed2a6abf7158809cf4f3c\n sets key to 2b7e151628aed2a6abf7158809cf4f3c). |
# Set the authentication challenge with 't' command. | # Set the authentication challenge with 't' command. | ||
# Set input text to encryption module with 'p' command. Device encrypts input text, and toggles the I/O trigger line during the encryption operation. | # Set input text to encryption module with 'p' command. Device encrypts input text, and toggles the I/O trigger line during the encryption operation. | ||
Line 149: | Line 93: | ||
# If challenge and ciphertext match (auth OK), device responds with 'r1000000000000000\n'. If do not match, device response with 'r0000000000000000\n'. | # If challenge and ciphertext match (auth OK), device responds with 'r1000000000000000\n'. If do not match, device response with 'r0000000000000000\n'. | ||
The authentication application is the '''default shipped with ALL programmed modules'''. | The authentication application is the '''default shipped with ALL programmed modules'''. | ||
+ | |||
+ | [[Category: Victim Firmware]] |
Latest revision as of 06:54, 25 April 2017
SimpleSerial is the name given to the default communication protocol used by NewAE Technology Inc.'s demos.
Commands
Command | Example | Description | In/Out | ENC | AUTH |
---|---|---|---|---|---|
h | h00\n | Select stack / hardware to use (if supported). | In | M | M |
k | k2b7e151628aed2a6abf7158809cf4f3c\n | Set encryption key; possibly trigger key scheduling | In | Y | Y |
m | m00\n | Select cipher mode (if supported) | In | M | M |
p | p126110475e17505a6966be70c89a829c\n | Send input plain-text, cause encryption | In | Y | Y |
r | r10000000000000000000000000000000\n | Result of function - if encryption is encrypted result, if auth is '0..0' or '100..0'. | Out | Y | Y |
t | t640a4a78332a8dee2bce15132ec44027\n | Authentication challenge (i.e., expected AES result if using AES as auth-method) | In | N | Y |
v | v\n | Check protocol version (no reply on v1.0; ACK on v1.1) | In | Y | Y |
x | x\n | Clears Buffers (resets to 'IDLE' state), does not clear any variables. | In | Y | Y |
z | z00\n | ACK - Command processing done (with optional status code) | Out | Y | Y |
Y = YES, Command support for application.
N = NO, Command not supported for application.
M = MAYBE, Command may be supported depending on build target.
Encryption Application
The encryption application provides a simple method to encrypt a plaintext into a ciphertext. This application was the original "simple serial". The following operations are performed:
- Load encryption key with 'k' command (for example, k2b7e151628aed2a6abf7158809cf4f3c\n sets key to 2b7e151628aed2a6abf7158809cf4f3c).
- Set input text to encryption module with 'p' command. Device encrypts input text, and toggles the I/O trigger line during the encryption operation.
- The ciphertext is returned with the 'r' command.
Authentication Application
The authentication application does not expose the result of the encryption. Instead, the result is used only in authentication mode, where the following operations are performed:
- Load encryption key with 'k' command (for example, k2b7e151628aed2a6abf7158809cf4f3c\n sets key to 2b7e151628aed2a6abf7158809cf4f3c).
- Set the authentication challenge with 't' command.
- Set input text to encryption module with 'p' command. Device encrypts input text, and toggles the I/O trigger line during the encryption operation.
- Device compares the resulting ciphertext with the challenge set with 't'.
- If challenge and ciphertext match (auth OK), device responds with 'r1000000000000000\n'. If do not match, device response with 'r0000000000000000\n'.
The authentication application is the default shipped with ALL programmed modules.