
ULCL is appropriate for lightweight and ultra-
lightweight applications where specific 
cryptographic primitives are required. It provides 
basic cryptographic functionality and supports 
progressive ciphers. The APIs achieve low overhead 
and comparable overall performance while remain 
easy-to-use even by developers that aren’t familiar 
with cryptography. The size of the executable code 
is the smallest possible as the compilation is 
adjusted to the application scenario. The library is 
open source. 
We apply OpenSSL, CyaSSL and ULCL on 
BeagleBone (BeagleBoard.org Foundation, 2011) 
devices with the default compilation options. All 
libraries are implemented in C and fair 
measurements were made. BeagleBone is a low-cost 
credit-card-sized embedded device that runs Ubuntu 
and connects with the Internet. It embodies an 
AM3359 ARM Cortex-A8 single core CPU running 
at 500-720 MHz. 
2 RELATED WORK 
Edon (Gligoroski, 2003) is an ultra-lightweight 
library for embedded systems. It is implemented in 
C and occupies about 5KB of memory. Edon uses 
quasigroups to build cryptographic primitives and 
develop a block cipher, a stream cipher, a hash 
function and a pseudorandom number generator. 
The CACE Networking and Cryptography 
library (NaCl) (Bernstein, 2009) is an easy-to-use 
high-speed high-security public-domain library for 
network communication and cryptographic 
applications. The library provides a high level API – 
called crypto-box – for implementing public-key 
authenticated encryption. The user realizes the 
whole process as a single step and doesn’t consider 
the internal parameters and communication steps 
between the participants. NaCl performs speed tests 
at compilation time and selects the best crypto-
primitives for each device. A user can also use low-
level APIs to apply specific primitives. Versions of 
the library are supported in C, C++ and Python. In 
C, the code occupies 17.36 – 27.96KB of memory 
(Hutter and Schwabe, 2013) 
In section 3, we describe the Ultra-Lightweight 
Crypto-Library (ULCL) for embedded systems, the 
main concepts and the measurements on real 
devices. In section 4, we compare our proposal with 
other libraries. In section 5, we conclude. 
 
 
3 ULCL 
We implement the ULCL for the cryptographic 
technologies of the node layer. The library provides 
‘built in’ cryptographic functionalities for embedded 
systems that make use of a specific set of 
cryptographic primitives and protocols. It utilizes 
open source ciphers’ implementations, two 
lightweight APIs and a configurable compilation 
process. 
Only block/stream ciphers and hash functions are 
included. The library provides basic cryptographic 
functionality for constrained and ultra-constrained 
devices. It targets on application environments 
where asymmetric cryptography can’t be applied. As 
asymmetric cryptography is much more resource 
demanding than symmetric one, these applications 
depend on dependable authentic key distribution 
mechanisms (Chen and Chao, 2011). Such 
mechanisms are lightweight key management 
solutions that utilize only symmetric cryptography. 
We consider two types of embedded devices. 
The BeagleBone (BeagleBoard.org Foundation, 
2011) is a constrained device with 500 MHz 
processing power, 256 MB memory and Ubuntu 
Linux operating system. We perform the basic 
measurements of ULCL, Edonm NaCl, CyaSSL and  
OpenSSL on such devices. The Memsic IRIS 
(Memsic Inc., 2010) is an ultra-constrained 
embedded device with 8MHz processing power, 
8KB memory and Contiki operating system. 
CyaSSL and OpenSSL don’t fit on such devices. We 
apply our library on IRIS as a proof of concept that 
ULCL is appropriate for ultra-constrained devices 
and applications. The measurements that are 
reported in subsection 3.1 were performed on a PC 
with Intel core 2 duo e8400 (3GHz), 2GB of RAM 
and Linux operating system. 
3.1  Open Source Cipher 
Implementations 
ULCL utilizes open source implementations of 
known ciphers. It is a collection of lightweight or 
compact implementations of standard block/stream 
ciphers and message authentication code (MAC) 
primitives. In (Manifavas et al., 2013), all these 
primitives are evaluated and the best of them are 
proposed for different types of embedded devices. 
For block ciphers, it supports AES (Erdelsky, 
2002), DES/3DES (CIFS Library, 2010), PRESENT 
(Klose, 2007), LED (Guo et al., 2011), 
KATAN/KTANTAN (Canniere et al., 2009), Clefia 
(SONY, 2008), Camellia (NTT, 2013), XTEA 
PECCS2014-InternationalConferenceonPervasiveandEmbeddedComputingandCommunicationSystems
248