![](bg2.png)
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