Skip to main content

By clicking Submit, you agree to the developerWorks terms of use.

The first time you sign into developerWorks, a profile is created for you. Select information in your developerWorks profile is displayed to the public, but you may edit the information at any time. Your first name, last name (unless you choose to hide them), and display name will accompany the content that you post.

All information submitted is secure.

  • Close [x]

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerworks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

By clicking Submit, you agree to the developerWorks terms of use.

All information submitted is secure.

  • Close [x]

Big iron lessons, Part 6: The right coprocessor can help with encryption

Intro to crypto, continued: Post-War to present

Sam Siewert (Sam.Siewert@Colorado.edu), Adjunct Professor, University of Colorado
Dr. Sam Siewert is an embedded system design and firmware engineer who has worked in the aerospace, telecommunications, and storage industries. He also teaches at the University of Colorado at Boulder part-time in the Embedded Systems Certification Program, which he co-founded. His research interests include autonomic computing, firmware/hardware co-design, microprocessor/SoC architecture, and embedded real-time systems.

Summary:  Encryption is a key aspect of security for any application or system. Furthermore, encryption is algorithmically complex, requiring significant resources for implementation, and most often, significant hardware acceleration. In this sixth and final installment to the Big iron lessons series, you'll get a review of the modern history of crypto and the encoding hardware and software techniques developed for mainframes that can show you the way forward.

View more content in this series

Date:  16 Aug 2005
Level:  Introductory

Activity:  10396 views
Comments:  

This article is a continuation of the Big iron lessons series. Mainframes like the z990 have a rich tradition of high security and performance to support e-commerce and data-critical enterprise systems as well as government organizations. One of the best lessons that can be learned from the cryptographic coprocessors used with the zSeries® concerns the development of an extensible and flexible yet very secure API. Often the nature of local regulations, the security required, the lifetime of sensitive data, and cost and performance requirements vary significantly from environment to environment, so applications must be able to tailor a security policy using cryptographic coprocessing. Given the wide range of embedded cryptographic applications, this flexibility is even more important for embedded systems, which are often much more resource-constrained and must operate in real-time.

In this continuing article on cryptography (see the first article), I discuss modern methods that have evolved since the rotor encryption methods pioneered before and during World War II. This article also concludes the Big iron lessons series.

After the War, IBM developed the Lucifer algorithm to address privacy, authentication, and data integrity issues in computing systems. IBM worked with NIST and eventually defined DES (Data Encryption Standard), which became an official standard in the 1970s and remained in use until recently. The original 56-bit DES has mostly been abandoned due to several different groups' success in cracking it. New standards are emerging from NIST, including AES (Advanced Encryption Standard) and TDES (Triple DES). IBM remains a principal contributor to these standards, and the PCIXCC cryptographic coprocessor presently implements a wide selection of current standards, including:

  • DES (56-bit key)
  • TDES (168-bit key)
  • AES (128, 192, and 256-bit keys)
  • SHA-1
  • MD5
  • RSA (1024-bit CRT key)

A taxonomy of encryption schemes

Encryption methods have evolved over time from simple substitution and transposition ciphers and early machines like Enigma to more modern algorithmic schemes. In a broad sense, the history of cryptography can be broken down into these categories:

  • Classical: Substitution and transposition
  • Rotor machines: Those like Enigma
  • Digital computer algorithms: Public and private keys

The following sections review aspects of algorithmic schemes and their strengths and weaknesses. While any of these algorithmic schemes are amenable to embedded encryption, care should be taken to consider the strength of the protection, ease of use, and the computational complexity of each. A full comparison of all modern algorithms is beyond the scope of this article, but the overview should provide you with enough background to do further research in order to make wise choices for your application.

DES was cracked in just under three hours in 1998

In 1977, when DES was introduced, there were already concerns by its architects that the key length was inadequate. Nevertheless, it remained unbreakable for 20 years, until the Electronic Frontier Foundation built an accelerator card used in a standard PC to crack DES in less than three hours. Based upon this demonstrated weakness in 56-bit DES, DES has fallen into relative disuse and has been replaced by TDES, RSA, or AES.

The DES standard and commercial encryption

The DES encryption standard has been used in banking and e-commerce for almost thirty years and is still used for some applications, although DES is no longer considered strong encryption. By the late 1990s, security researchers had been able to break the 56-bit DES algorithms in as little as three hours. This fact led to the development of AES (Advanced Encryption Standard) by NIST, the TDES algorithms (an improved DES with a much larger key), and to some extent, RSA; the latter also has the advantage of offering public key encryption (which a later section discusses). So, presently, the DES algorithm is not recommended and is no longer considered secure, but might be acceptable for systems needing a very basic level of security.

For any data privacy requirements, the aging of information should be considered and the lifetime of the information being protected should be shorter than the best known cryptanalysis attack. So, in theory, 56-bit DES would still be secure for protecting passwords that are changed more frequently than every three hours. The newer standards -- TDES, RSA, and AES -- have estimated cryptanalysis times that are practically infinite, taking many years (and a huge associated cost) to crack with supercomputer technology. Given this cryptographic strength, these algorithms are a better choice for protecting data that has a significant lifetime. Find more information on the DES algorithm and its history in Resources. Since 56-bit DES has been cracked, TDES (Triple DES) has been used as a quick replacement, but NIST recommends AES as the ultimate replacement.


The emergence and importance of public key encryption

In 1976, Whitfield Diffie and Martin Hellman devised a scheme by which two parties may establish a shared secret key, even when communicating over an insecure network. This became known as the Diffie-Hellman key exchange, a comprehensive discussion of which is beyond the scope of this article (see Resources for more exhaustive references). One of the things that Diffie-Hellman allows for is the safe transport of a public key with a message, allowing this public key to be paired with a private key and then used to decrypt private data. This Diffie-Hellman key exchange protocol is used, for example, by RSA and PGP. By comparison, most encryption algorithms, including the Enigma example you saw in the first part of this series, are secret key (or single key) algorithms, where a seed or starting code is used for encrypting plain text and that common key must also be used for decryption. For example, in the Enigma example code in the first part of this series, the starting position of the rotors is the common key. In the case of encryption using random number generation, the seed used would be a common key. Clearly, if this common key is divulged, then all security is lost.

Diffie-Hellman public key algorithms have been designed so that the key used for encryption is different from the key used for decryption; the decryption key can't be calculated from the encryption key. The encryption key can therefore be public, since it is not useful for decryption. In fact, the public encryption key is given out freely so remote users can encrypt messages, but the private decryption key is kept secret. Both PGP and RSA provide public key encryption.

Pretty Good Privacy: Strong encryption for the masses

When Phil Zimmermann introduced PGP (Pretty Good Privacy), his intent was to make private communication available to all with public free software. Furthermore, PGP provides the Diffie-Hellman public and private key pair, making the software easy to use between a trusted source and recipient for practical applications like secure e-mail. This allows a sender to encrypt a message with an intended recipient's public key (distributed to others in plain text) and send an encrypted message that can only be decrypted with a corresponding private key that is secret and held only by the intended recipient. A nice feature of PGP and any Diffie-Hellman public key encryption method is that the need to secretly distribute a single key, as is the case for DES, is now eliminated. PGP also provides a simple document-signing feature to provide authentication of message source.

The license for the freeware version of the PGP software does not permit commercial use, but PGP provides personal use privacy comparable to commercial solutions and, for applications like e-mail, is far more secure than sending sensitive messages in plain text. For example, I might want to send bank account information privately to a son or daughter in college; PGP allows me to do so safely over plain-text e-mail. I have included my PGP public key in the downloads section of this article.


Encryption for a secure enterprise and for secure embedded systems

Security for Internet and computing systems is a much broader topic than cryptography. Cryptography is required for any serious security policy. So encryption is a necessary feature of a good security design, but it is not sufficient on its own. Additional tools need to be incorporated, including firewalls, virus detection, trip-wires, and numerous operating system patches. Overall, however, encryption does contribute to some of the most important aspects of any security design, including:

  • Authentication: Knowing the true source of a message
  • Data privacy and integrity: Knowing data has not been tampered with and that it has not been seen by those other than the intended audience
  • Access control: Ensuring that resources and files are only accessed by authorized entities
  • Non-repudiation: Ensuring that transactions made or messages sent can't be denied by the originator
  • Prevention of spoofing: Ensuring that messages can't be saved and re-transmitted again at a later time by an unauthorized source
  • Prevention of denial of service: Ensuring that resources can't be tied up by repeated unauthorized access attempts

Encryption provides for the ability to sign data with a digital signature that is difficult to forge and hard to spoof (or, to save and play back later). Obviously, encryption provides data privacy, but it also provides data integrity when data blocks are decrypted. So, encryption is at the heart of any secure enterprise, but is not sufficient alone to fully protect a system.


Noteworthy features of the IBM PCIXCC

The Enigma listing in the previous part of this series showed you how complex even the very simple Enigma is to implement. When you consider the increased mathematical complexity of RSA or TDES, it's clear that any cryptographic coprocessor will have to run very efficiently to provide any sort of encryption or decryption on-line. The IBM PCIXCC not only supports all current encryption standards, including the highest NIST FIPS standards such as AES and RSA; it does so with a hardware architecture that allows it to run quickly (see Resources for detailed information on the PCIXCC).

In the PCIXCC, a combination of ASIC and FPGA hardware is used to speed up cryptographic algorithms and random number generation, and to support high-performance communications between the host system and the card, and between the PowerPC and the cryptographic engines inside the card.  This is much more efficient than a firmware implementation of these functions. Furthermore, the coprocessor has been designed with a fast path that gives the host server a direct hardware path to the public-key cryptographic engine so that data does not have to be stored, processed, and then forwarded by software. The software stays out of this data fast path entirely. PCIXCC also features secure layers and upgrade. Upgrade is tricky for a cryptographic coprocessor, since it presents an opportunity for corruption and attack. The PCIXCC includes an unmodifiable ROM segment (protected by FIPS-compliant packaging) and then three higher-level upgradeable segments with digital certificates. The digital certificate ensures that all modifications are made by authenticated sources and methods.

The PCIXCC meets or exceeds all NIST requirements for a secure encryption device. One of the features of the PCIXCC that would be hard to implement in an embedded chipset is its tamper proofing. Overall, the PCIXCC meets the highest standards. The PCIXCC provides both private key and public key encryption algorithms, along with an API to allow for easy integration with existing software. The PCI-X bus interface makes hardware integration simple as well. One of the biggest lessons learned by IBM in the development of cryptographic coprocessors is that you need to provide a flexible API and selection of algorithms. The users of these coprocessors must have options for interoperability and for migrating to more secure protocols once older algorithms become vulnerable to cryptanalysis.


Will the encryption versus cryptanalysis battles ever end?

As long as there is encryption, there will be cryptanalysis. Eternal vigilance is required of all system architects involved with encryption and the design of secure systems. Many of those involved in cryptanalysis are simply testing a new encryption method to ensure that it is not vulnerable to some simple attack. The Rijndael (pronounced Rhine doll) algorithm proposed as the final AES standard is estimated to require a current cryptanalysis system 149 trillion years to decrypt.

Remember, though, that this estimate is based on current computing technology, with speeds on the order of gigahertz and memory on the order of gigabytes. When DES was first introduced in 1977, the IBM XT™, with its 4.77 MHz processor, was still six years away. By January 1999, when DES was first cracked by the Electronic Frontier Foundation, the Pentium III PC ran at 450 Mhz, more than 100 times faster than any PC readily available at the time DES was standardized. Furthermore, EFF's initial assault on DES involved 100,000 networked PCs, a scenario that the creators of 56- bit DES probably would never have anticipated. The second successful attack on 56-bit DES by the EFF involved hardware acceleration of the cryptanalysis and lead to cracking DES in just under three hours. The wide availability of devices like the 18,000 custom ASICs used in the attack would likewise not have been predictable in 1977.

The point of these observations is that even algorithms that seem very secure today should not be considered unbreakable. In fact, public challenges to break encryption schemes should be promoted so that the strength of current algorithms is known. Flexibility in cryptographic coprocessors is therefore of paramount importance. System engineers should carefully consider supporting a selection of algorithms and may need to support legacy encryption methods such as DES for interoperability. Currently, supporting AES, Triple DES, and public key encryption such as RSA would be a good starting point, but these algorithms may be refined over time for ease of use or to remove vulnerabilities, so secure methods for upgrading cryptographic coprocessing should be kept in mind.

Note: This article has been updated with a number of clarifications and fixes. Many thanks to Jeremy Bishop (and the many other readers) who mailed in with comments when this article was first posted.


Downloads


Resources

About the author

Sam Siewert

Dr. Sam Siewert is an embedded system design and firmware engineer who has worked in the aerospace, telecommunications, and storage industries. He also teaches at the University of Colorado at Boulder part-time in the Embedded Systems Certification Program, which he co-founded. His research interests include autonomic computing, firmware/hardware co-design, microprocessor/SoC architecture, and embedded real-time systems.

Report abuse help

Report abuse

Thank you. This entry has been flagged for moderator attention.


Report abuse help

Report abuse

Report abuse submission failed. Please try again later.


developerWorks: Sign in


Need an IBM ID?
Forgot your IBM ID?


Forgot your password?
Change your password

By clicking Submit, you agree to the developerWorks terms of use.

 


The first time you sign into developerWorks, a profile is created for you. Select information in your developerWorks profile is displayed to the public, but you may edit the information at any time. Your first name, last name (unless you choose to hide them), and display name will accompany the content that you post.

Choose your display name

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

(Must be between 3 – 31 characters.)

By clicking Submit, you agree to the developerWorks terms of use.

 


Rate this article

Comments

Help: Update or add to My dW interests

What's this?

This little timesaver lets you update your My developerWorks profile with just one click! The general subject of this content (AIX and UNIX, Information Management, Lotus, Rational, Tivoli, WebSphere, Java, Linux, Open source, SOA and Web services, Web development, or XML) will be added to the interests section of your profile, if it's not there already. You only need to be logged in to My developerWorks.

And what's the point of adding your interests to your profile? That's how you find other users with the same interests as yours, and see what they're reading and contributing to the community. Your interests also help us recommend relevant developerWorks content to you.

View your My developerWorks profile

Return from help

Help: Remove from My dW interests

What's this?

Removing this interest does not alter your profile, but rather removes this piece of content from a list of all content for which you've indicated interest. In a future enhancement to My developerWorks, you'll be able to see a record of that content.

View your My developerWorks profile

Return from help

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=Multicore acceleration
ArticleID=91067
ArticleTitle=Big iron lessons, Part 6: The right coprocessor can help with encryption
publish-date=08162005
author1-email=Sam.Siewert@Colorado.edu
author1-email-cc=

Tags

Help
Use the search field to find all types of content in My developerWorks with that tag.

Use the slider bar to see more or fewer tags.

For articles in technology zones (such as Java technology, Linux, Open source, XML), Popular tags shows the top tags for all technology zones. For articles in product zones (such as Info Mgmt, Rational, WebSphere), Popular tags shows the top tags for just that product zone.

For articles in technology zones (such as Java technology, Linux, Open source, XML), My tags shows your tags for all technology zones. For articles in product zones (such as Info Mgmt, Rational, WebSphere), My tags shows your tags for just that product zone.

Use the search field to find all types of content in My developerWorks with that tag. Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Special offers