Cisco open-sources experimental cipher

The Borg want to protect traffic privacy in cloud systems

Random numbers

Cisco is offering up an experimental cipher which, among other things, could help preserve the anonymity of data in cloud environments.

In putting what it calls “FNR” (Flexible Naor and Reingold) into the hands of the public, The Borg says its work is currently experimental rather than production software.

Cisco software engineer Sashank Dara explains that FNR is a block cipher that works without the need for padding, as happens in ciphers such as AES.

Since AES works on a fixed block length – be it 128, 192 or 256 bits, for example – small blocks of data get bloated when they're encrypted.

This isn't much of a problem for (say) person-to-person messages, given their relatively low volume. However, a cloud provider seeking to gather IP address information for analysis and other purposes will see an awful lot of 32-bit inputs turning into 128-bit outputs, quadrupling the storage requirements if they try to protect the privacy of their customers.

FNR, Dara explains, is designed to encrypt small objects while preserving their input length, making it applicable to “IPv4 addresses, MAC addresses” and other arbitrary strings. It could also encrypt legacy databases containing fields that need their length preserved, reducing the amount of re-engineering required.

The FNR specification, described here (PDF), explains that privacy of fixed-length fields (such as collected in NetFlow formats) is an emerging challenge for cloud providers, who collect lots of telemetry for analysis and don't want to change their field formats to encrypt the information.

FNR proposes “invertible matrices to provide a neat and generic way to achieve pair-wise independence for any arbitrary length”, the paper states.

Cisco's code, licensed under the LPGLv2, is at github. Cisco also provides a demonstration application using IPv4 address encryption as the example. ®

Sponsored: OpenStack for enterprise: The tipping point cometh