This is an old revision of the document!
Velciu Veronica-Mihaela - AAC
Nowadays, security becomes a great concern, as the devices start to process more and more sensitive data, leading to an increased number of attacks. The nodes in an wireless sensors network usually collect environment-related information and then send the data to a gateway, in order to be processed. There might be cases when the collected information leaks sensitive user data, so encrypting the communication would be a good practice is this cases. This project proposes and implements a method of securing the radio communication using symmetric cryptography on Sparrow v4 nodes.
The security module (AES) is characterized by:
Controlling the security block is possible over 5 Registers within AVR I/O space:
The use of the security module requires a configuration of the security engine before starting a security operation. The following steps are required:
In order to make use of the Security module presented in the previous section, I implemented a driver exposed as an Arduino library named AES. The library has the following interface:
void encryptECB(uint8_t *key, uint8_t *plaintext, uint8_t len, uint8_t *ciphertext);
This function encrypts (using AES in ECB mode) len bytes of the plaintext buffer using the given key and writes the result to the cyphertext buffer.
void decryptECB(uint8_t *key, uint8_t *ciphertext, uint8_t len, uint8_t *plaintext);
This function decrypts (using AES in ECB mode) len bytes of the ciphertext buffer using the given key and writes the result to the plaintext buffer.
void encryptCBC(uint8_t *key, uint8_t *iv, uint8_t *plaintext, uint8_t len, uint8_t *ciphertext);
This function encrypts (using AES in CBC mode) len bytes of the plaintext buffer using the given key and writes the result to the cyphertext buffer.
As it can be observed, there is no function for AES in CBC mode decryption. This is due to the lack of support in the ATmega128RFA1 Security Module.