This extension is proposed to be included in future versions of ADC, its status is currently drafting.
Synopsis
This extension adds encryption for UDP traffic to ADCS.
Currently UDP encryptiuon is not supported by clients so the only way to get a secure ADCS hub is to enforce searches to be passive.
This is a proposal to help with this unneeded strain to the hub. While Asymetric encryption may be optimal in sense of security.
A symmetric cipher will protect perfectly against outside adversaries given the hub-client connections is also running ADCS. SecureUDP will therefore be a simple and inexpensive way to protect against listening outside attackers.
Secured UDP Specification
Usage of Secure UDP
To signal support for SUDP clients should add "SUDP" in their SU field. (currently while this is adraft "SUD1" is added instead)
If a client signals support for Secure UDP in an ADCS hub. It may extends SCH command with a KY-flag with 16-byte AES-key encoded in Base32.
RES messages over UDP to the client may then be encrypted by using:
AES/CBC/PKCS5Padding as Cipher/Blockmode/Padding , using 16 zero bytes for the IV. while prepending 16 random bytes (the real IV) in the first Block.
So in short : iv = 0 , cbc(16 random bytes || data || pkcs5 padding)
example search: "BSCH AAPG KYN6H7JAOBPO5KSWHEUQUIKW37UM ANtest TO300"
Security Considerations
Keys should never be sent over normal unencrypted ADC connections as this breaks security of all incoming UDP RES messages.
The first 16 encrypted random bytes are sent as a replacement for the IV. i.e. they do the job of an IV preventing known plain text attacks.
AES-128 was choosen for being currently most secure AES cipher (recent attacks show that keylength is exploitable for analysis making AES-256 less secure than the 128 bit variant)
pkcs5 padding is used as its a patent free padding algorithm that is sufficient to allow us to detect if a wrong decryption key was used. (If multiple searches are run in parallel it might happen sometimes that a client has to try multiple keys to decrypt a RES).
|