background image

-3-

v7.0

Introduction

1. Introduction

This guide explains the Encryption library features and functions. There are no great variations in this library for our new product 

lines Waspmote v15 and Plug & Sense! v15, released on October 2016. 

Anyway, if you are using previous versions of our products, please use the corresponding guides, available on our 

Development 

website

.

You can get more information about the generation change on the document 

New generation of Libelium product lines

.

The new Encryption Libraries are designed to add to the Waspmote sensor platform the capabilities necessary to protect the 

information gathered by the sensors. To do so 

three cryptography layers

 are defined:

 

Link Layer

:  In the first one all the nodes of the network share a common 

preshared key

 which is used to encrypt the 

information using 

AES 128

. This process is carried out by specific hardware integrated in the same 802.15.4/ZigBee radio, 

allowing the maximum efficiency of the sensor nodes energy consumption. This first security layer ensures no third party 

devices will be able to even connect to the network (access control).

 

Application Layer

: In the second security layer each node uses a point to point encryption scheme with Meshlium -the 

Gateway of the network-. This way, even the intermediate nodes of the network (the ones which forward the information 

to the destination) will not be able to see the sensor data transmitted. Messages are sent using AES, (implemented by the 

software library) ensuring complete confidentiality and privacy while maintaining the minimum resources of the node in 

term of computing cycles and energy consumption.

 

Secure Web Server Connection:

 The third security technique is carried out in Meshlium -the Gateway- where 

HTTPS

 and

 

SSH

 connections are used to send the information to the Cloud server located on the Internet.

A fourth optional encryption layer allows each node to encrypt the information using the Public key of the Cloud server. Thus, 

the information will be kept confidentially all the way from the sensor device to the web or data base server on the Internet.

Note:

 The Encryption Libraries are part of the Waspmote API and have been designed to work solely on top of the Waspmote and 

Waspmote Plug & Sense sensor platforms. More info at:

http://www.libelium.com/waspmote
http://www.libelium.com/plug_&_sense

- Transmission of sensor data:

Information is encrypted in the application layer via software with 

AES 

using the key shared exclusively between the origin and 

the destination. Then the packet is encrypted again in the link layer via hardware with 

AES 128

 so that only trusted packets be 

forwarded, ensuring access control and improving the usage of resources of the network.

Figure : Communication diagram

Summary of Contents for Waspmote v15 and Plug & Sense

Page 1: ...Waspmote Encryption Libraries Programming guide ...

Page 2: ...0 3 1 1 Waspmote RSA Files 10 3 1 2 Constructor 10 3 1 3 Pre Defined Constants 10 3 2 Encrypting Message 10 4 Confidentiality privacy 11 4 1 Waspmote Libraries 13 4 1 1 Waspmote AES Files 13 4 1 2 Constructor 13 4 1 3 Pre Defined Constants 13 4 2 Calculating the encrypted message length 13 4 3 AES Encryption 13 4 4 Printing Message 14 5 Secure Communication Scheme 15 6 Key Management on Meshlium 1...

Page 3: ... the intermediate nodes of the network the ones which forward the information to the destination will not be able to see the sensor data transmitted Messages are sent using AES implemented by the software library ensuring complete confidentiality and privacy while maintaining the minimum resources of the node in term of computing cycles and energy consumption Secure Web Server Connection The third...

Page 4: ... 4 v7 0 Introduction Figure Waspmote frame on OSI stack for communication via 802 15 4 Figure Waspmote frame structure for communication via 802 15 4 ...

Page 5: ...twork can see the general routing packets AES 128 in the link layer and after that we establish an encryption tunnel by direct P2P encryption between origin and destination using AES Data Integrity the new library uses hash algorithms such as MD5 and SHA to create the checksum of the message and to ensure that the final information received correspond with the original sent Non repudiation by sign...

Page 6: ... algorithms differ most significantly in the number of bits for the message digest length Each SHA algorithm processes a message in two stages preprocessing and hash computation Preprocessing involves padding a message parsing the padded message into 512 bit or 1024 bit blocks and setting initialization values to be used in the hash computation The hash computation generates a message schedule fro...

Page 7: ...12 2 1 32 The next code shows how to calculate the message digest with HASH md5 The inputs expected are the pointer to the buffer where the output is stored the input message pointer and the length of the input message char message Libelium HASH md5 hash_message_md5 uint8_t message strlen message 8 2 2 2 Calculating SHA hash The features that must be met in order to calculate the SHA algorithm are...

Page 8: ...ssage strlen message 8 char message Libelium HASH sha SHA384 hash_message uint8_t message strlen message 8 2 3 Printing Message Using the hash function HASH printMessageDigest the message digest is written via USB port Write message digest by USB port HASH printMessageDigest SHA 1 hash_message 20 HASH printMessageDigest MD5 hash_message 16 Example of use may be found in http www libelium com devel...

Page 9: ...ys Its length usually expressed in bits is the key length 3 Compute φ n p 1 q 1 4 Choose a public exponent e such that 1 e φ n which is coprime to φ n The number e is released as the public key exponent 5 Compute a private exponent d that satisfies the congruence ed 1 mod φ n The number d is kept as the private key exponent 6 The public key consists of the modulus n and the public exponent e The p...

Page 10: ...2 Constructor To start using Waspmote RSA library an object from class WaspRSA must be created This object called RSA is created inside the Waspmote RSA library and it is public to all libraries It is used through the guide to show how the Waspmote RSA library works When creating this constructor no variables are initialized by default 3 1 3 Pre Defined Constants There are some constants defined i...

Page 11: ...orithm to be very fast It has the advantage of occupying very little memory and consequently makes it very suitable for low memory capacity devices AES is able to encrypt and decrypt a block of data using an AES key The key and the block of data have a fixed length The length of the block of data is always 128 bit 16 bytes while the key size can be 128 bit key size 16 bytes 192 bit key size 24 byt...

Page 12: ...tion A block cipher works on fixed size blocks but messages come in a variety of lengths So some modes of operation require that the final block be padded before encryption Several padding schemes exist but this library provide two padding schemes ZEROS this method adds 0s until the last block size is completed Notice that this mode is the only one supported by Meshlium PKCS5 this method adds the ...

Page 13: ...t messages 4 2 Calculating the encrypted message length Before using an encryption function the length of the encrypted message is needed in order to create the proper memory buffers As the data block size is 16 bytes the final length is multiple of 16 The next code shows how to calculate the length of the ciphertext in bytes The function AES sizeOfBlocks returns the total length of the 16 byte da...

Page 14: ...ting Message Some functions have been created to write encrypted message to the USB port Writes the encrypted message to the USB port on Matrix format AES printMatrix encrypted_message length Example of use may be found in http www libelium com development waspmote examples aes 01 aes128 ecb pkcs http www libelium com development waspmote examples aes 02 aes192 ecb pkcs http www libelium com devel...

Page 15: ...56 bits The following diagram shows how the communication scheme works Figure Communication scheme Theuserhasthreedifferentpossibilities AES 128 AES 192andAES 256 Regardingthecipherblockmode onlyECBissupported to communicate to Meshlium Besides zeros padding is the only choice permitted The process of how to encrypt a previously created frame is as follows 1 Create a new Frame ASCII or BINARY 2 Ge...

Page 16: ...nly XBee Waspmote settings Encryption in this layer is provided through the AES 128b algorithm Specifically through the type AES CTR Only XBee modules support encryption in the link layer Encryption is done inside the XBees in a transparent way for the user The XBees take care of everything the sender XBee gets the not encrypted data to send cyphers it and transmits the secret message On the other...

Page 17: ...ete list PAN ID Personal Arena Network ID Channel frequency channel used Network Address 4 hex digits 16 bit address only for 802 15 4 Node ID maximum 20 characters Power level 0 4 by default 4 Encrypted mode true false by default false Encryption Key 16 characters MAC 64b hardware address It is a read only value divided in two parts MAC high 32 bit hex field MAC low 32 bit hex field The parameter...

Page 18: ...n section Figure Key Management For each Waspmote a new specific AES key must be specified Thus Waspmotes keys are added to a encryption Key file In this interface the user must specify both node ID and Waspmote AES secret key 128 192 or 256 bits for each Waspmote On the other hand in Waspmote codes the node ID is specified when frame setID function is called After defining the above fields it is ...

Page 19: ...ry to recognize the frames sent each Waspmote to Meshlium Figure Waspmote to Meshlium with AES 256 When an encrypted frame arrives to Meshlium the sensorParser will consult the encryptionKey file for the AES secret key and use the AES algorithm to decrypt the message ...

Page 20: ...hope that it will be useful but WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE See the GNU General Public License for more details You should have received a copy of the GNU General Public License along with this program If not see http www gnu org licenses Version 0 4 Design David Gascón Implementation Alvaro Gonzalez Yuri Carmona inc...

Page 21: ... message encrypted_length AES sizeOfBlocks message 1 2 Calculate encrypted message with ECB cipher mode and PKCS5 padding AES encrypt AES_128 password message encrypted_message ECB PKCS5 1 3 Printing encrypted message USB print F AES Encrypted message AES printMessage encrypted_message encrypted_length 1 4 Printing encrypted message s length USB print F AES Encrypted length USB println int encrypt...

Page 22: ... 22 v7 0 API changelog 8 API changelog Keep track of the software changes on this link www libelium com development waspmote documentation changelog Encryption ...

Page 23: ...tifications See below the specific list of regulations passed More info at www libelium com products plug sense Besides Meshlium our multiprotocol router for the IoT is also certified with the certifications below Get more info at www libelium com products meshlium List of certifications for Plug Sense and Meshlium CE Europe FCC US IC Canada ANATEL Brazil RCM Australia PTCRB cellular certification...

Reviews: