Browse Prior Art Database

# Floating-Point Arithmetic for a Fast Software Data Encryption Algorithm

IP.com Disclosure Number: IPCOM000104838D
Original Publication Date: 1993-Jun-01
Included in the Prior Art Database: 2005-Mar-19
Document File: 2 page(s) / 70K

IBM

## Related People

Rogaway, PW: AUTHOR

## Abstract

A method is disclosed to speed up software implementation of the Data Encryption Algorithm (DEA). The method can accelerate DEA implementa tions on machines with dual-fixed point and floating-point pipelines, where the floating-point pipeline implements fast addition of denormalized numbers. The disclosed method uses addition of such numbers to accomplish what would ordinarily be done using logical operations.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 52% of the total text.

Floating-Point Arithmetic for a Fast Software Data Encryption Algorithm

A method is disclosed to speed up software implementation of
the Data Encryption Algorithm (DEA).  The method can accelerate DEA
implementa tions on machines with dual-fixed point and floating-point
pipelines, where the floating-point pipeline implements fast addition
of denormalized numbers.  The disclosed method uses addition of such
numbers to accomplish what would ordinarily be done using logical
operations.

The Data Encryption Algorithm (at the center of the Data
Encryption Standard; see [1]) is the single most important
cryptographic primitive in use.  It specifies how to use a 56-bit key
to map a 64-bit plaintext into a 64-bit ciphertext.  By significantly
speeding up this primitive, one can significantly speed up certain
applications which depend on it.

In order to speed up a DEA implementation, the useful thing to
have the floating-point unit do is to OR together several words, all
but at most one of which is zero at any given bit position.  This
operation is done many times in a software implementation of the DEA
(see, for example, [2]).  By analogy in base 10, if we want to OR
together three fixed point words,

123000000 or 000456000 or 000000789 = 123456789,
we can do this instead by adding three floating-point numbers:

0.123000000 + 0.000456000 + 0.000000789 = 0.123456789.

The result is the same, apart from a slight difference in
representation.

The addition above can be performed using IEEE-standard
denormalized numbers [3].  Such numbers are of the form 0.mantissa,
instead of being of the form l.mantissa x 2(exp).  The standard
specifies the encoding of denormalized numbers, and it demands
co...