0% found this document useful (0 votes)
175 views

Advanced Encryption Standard

The Advanced Encryption Standard (AES) is a symmetric-key encryption standard adopted by the U.S. government comprising three block ciphers - AES-128, AES-192, and AES-256. AES has a fixed block size of 128 bits and key sizes of 128, 192, or 256 bits. It operates via a series of transformation rounds that convert plaintext to ciphertext using substitutions, shifts, mixing, and XOR operations with round keys derived from the cipher key. AES is now widely used and considered secure for both unclassified and classified data protection up to the SECRET level.

Uploaded by

Aagosh Kapoor
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
175 views

Advanced Encryption Standard

The Advanced Encryption Standard (AES) is a symmetric-key encryption standard adopted by the U.S. government comprising three block ciphers - AES-128, AES-192, and AES-256. AES has a fixed block size of 128 bits and key sizes of 128, 192, or 256 bits. It operates via a series of transformation rounds that convert plaintext to ciphertext using substitutions, shifts, mixing, and XOR operations with round keys derived from the cipher key. AES is now widely used and considered secure for both unclassified and classified data protection up to the SECRET level.

Uploaded by

Aagosh Kapoor
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 10

Advanced Encryption Standard

From Wikipedia, the free encyclopedia


Jump to: navigation, search

AES

The SubBytes step, one of four stages in a round of AES

General

Designers Vincent Rijmen, Joan Daemen

First published 1998

Derived from Square

Successors Anubis, Grand Cru

Certification AES winner, CRYPTREC, NESSIE, NSA

Cipher detail

Key sizes 128, 192 or 256 bits[1]

Block sizes 128 bits[2]

Structure Substitution-permutation network

Rounds 10, 12 or 14 (depending on key size)


Best public cryptanalysis

A related-key attack can break 256-bit AES with a complexity of 299.5, which is
faster than brute force but is still infeasible. 192-bit AES can also be defeated in
a similar manner, but at a complexity of 2176 which is also infeasible. 128-bit
AES is not affected by this attack.

In cryptography, the Advanced Encryption Standard (AES) is a symmetric-key encryption standard adopted
by the U.S. government. The standard comprises three block ciphers, AES-128, AES-192 and AES-256,
adopted from a larger collection originally published as Rijndael. Each of these ciphers has a 128-bit block
size, with key sizes of 128, 192 and 256 bits, respectively. The AES ciphers have been analyzed extensively and
are now used worldwide, as was the case with its predecessor,[3] the Data Encryption Standard (DES).

AES was announced by National Institute of Standards and Technology (NIST) as U.S. FIPS PUB 197 (FIPS
197) on November 26, 2001 after a 5-year standardization process in which fifteen competing designs were
presented and evaluated before Rijndael was selected as the most suitable (see Advanced Encryption Standard
process for more details). It became effective as a Federal government standard on May 26, 2002 after approval
by the Secretary of Commerce. It is available in many different encryption packages. AES is the first publicly
accessible and open cipher approved by the NSA for top secret information (see Security of AES, below).

 The Rijndael cipher was developed by two Belgian cryptographers, Joan Daemen and Vincent Rijmen,
and submitted by them to the AES selection process.[4] Rijndael (Dutch pronunciation: [ˈrɛindaːl][5]) is a
wordplay based upon the names of the two inventors.

Description of the cipher


AES is based on a design principle known as a Substitution permutation network. It is fast in both software and
hardware.[6] Unlike its predecessor, DES, AES does not use a Feistel network.

AES has a fixed block size of 128 bits and a key size of 128, 192, or 256 bits, whereas Rijndael can be specified
with block and key sizes in any multiple of 32 bits, with a minimum of 128 bits. The blocksize has a maximum
of 256 bits, but the keysize has no theoretical maximum.

AES operates on a 4×4 matrix of bytes, termed the state (versions of Rijndael with a larger block size have
additional columns in the state). Most AES calculations are done in a special finite field.

The AES cipher is specified as a number of repetitions of transformation rounds that convert the input plaintext
into the final output of ciphertext. Each round consists of several processing steps, including one that depends
on the encryption key. A set of reverse rounds are applied to transform ciphertext back into the original
plaintext using the same encryption key.

High-level description of the algorithm

1. KeyExpansion—round keys are derived from the cipher key using Rijndael's key schedule
2. Initial Round
1. AddRoundKey—each byte of the state is combined with the round key using bitwise xor
3. Rounds
1. SubBytes—a non-linear substitution step where each byte is replaced with another according to
a lookup table.
2. ShiftRows—a transposition step where each row of the state is shifted cyclically a certain
number of steps.
3. MixColumns—a mixing operation which operates on the columns of the state, combining the four
bytes in each column.
4. AddRoundKey
4. Final Round (no MixColumns)
1. SubBytes
2. ShiftRows
3. AddRoundKey

The SubBytes step

In the SubBytes step, each byte in the state is replaced with its entry in a fixed 8-bit lookup table, S; bij = S(aij).

In the SubBytes step, each byte in the matrix is updated using an 8-bit substitution box, the Rijndael S-box.
This operation provides the non-linearity in the cipher. The S-box used is derived from the multiplicative
inverse over GF(28), known to have good non-linearity properties. To avoid attacks based on simple algebraic
properties, the S-box is constructed by combining the inverse function with an invertible affine transformation.
The S-box is also chosen to avoid any fixed points (and so is a derangement), and also any opposite fixed
points.

[edit] The ShiftRows step

In the ShiftRows step, bytes in each row of the state are shifted cyclically to the left. The number of places
each byte is shifted differs for each row.

The ShiftRows step operates on the rows of the state; it cyclically shifts the bytes in each row by a certain
offset. For AES, the first row is left unchanged. Each byte of the second row is shifted one to the left. Similarly,
the third and fourth rows are shifted by offsets of two and three respectively. For the block of size 128 bits and
192 bits the shifting pattern is the same. In this way, each column of the output state of the ShiftRows step is
composed of bytes from each column of the input state. (Rijndael variants with a larger block size have slightly
different offsets). In the case of the 256-bit block, the first row is unchanged and the shifting for second, third
and fourth row is 1 byte, 3 bytes and 4 bytes respectively - this change only applies for the Rijndael cipher when
used with a 256-bit block, as AES does not use 256-bit blocks. Here Aij is from cipher text and Bij is from key.

The MixColumns step

In the MixColumns step, each column of the state is multiplied with a fixed polynomial c(x).

In the MixColumns step, the four bytes of each column of the state are combined using an invertible linear
transformation. The MixColumns function takes four bytes as input and outputs four bytes, where each input
byte affects all four output bytes. Together with ShiftRows, MixColumns provides diffusion in the cipher.

During this operation, each column is multiplied by the known matrix that for the 128 bit key is

The multiplication operation is defined as: multiplication by 1 means leaving unchanged, multiplication by 2
means shifting byte to the left and multiplication by 3 means shifting to the left and then performing xor with
the initial unshifted value. After shifting, a conditional xor with 0x11B should be performed if the shifted value
is larger than 0xFF.

In more general sense, each column is treated as a polynomial over GF(28) and is then multiplied modulo x4+1
with a fixed polynomial c(x) = 0x03 · x3 + x2 + x + 0x02. The coefficients are displayed in their hexadecimal
equivalent of the binary representation of bit polynomials from GF(2)[x]. The MixColumns step can also be
viewed as a multiplication by a particular MDS matrix in a finite field. This process is described further in the
article Rijndael mix columns. Using the polynomial one matrix was created. Using that matrix add with o/p
came from previous state.

The AddRoundKey step


In the AddRoundKey step, each byte of the state is combined with a byte of the round subkey using the XOR
operation (⊕).

In the AddRoundKey step, the subkey is combined with the state. For each round, a subkey is derived from the
main key using Rijndael's key schedule; each subkey is the same size as the state. The subkey is added by
combining each byte of the state with the corresponding byte of the subkey using bitwise XOR.

Optimization of the cipher

On systems with 32-bit or larger words, it is possible to speed up execution of this cipher by combining
SubBytes and ShiftRows with MixColumns, and transforming them into a sequence of table lookups. This
requires four 256-entry 32-bit tables, which utilizes a total of four kilobytes (4096 bytes) of memory—one
kilobyte for each table. A round can now be done with 16 table lookups and 12 32-bit exclusive-or operations,
followed by four 32-bit exclusive-or operations in the AddRoundKey step.[7]

If the resulting four kilobyte table size is too large for a given target platform, the table lookup operation can be
performed with a single 256-entry 32-bit (i.e. 1 kilobyte) table by the use of circular rotates.

Using a byte-oriented approach, it is possible to combine the SubBytes, ShiftRows, and MixColumns steps into
a single round operation.[2]

Security
Until May 2009, the only successful published attacks against the full AES were side-channel attacks on some
specific implementations. The National Security Agency (NSA) reviewed all the AES finalists, including
Rijndael, and stated that all of them were secure enough for U.S. Government non-classified data. In June 2003,
the U.S. Government announced that AES may be used to protect classified information:

The design and strength of all key lengths of the AES algorithm (i.e., 128, 192 and 256) are sufficient to protect
classified information up to the SECRET level. TOP SECRET information will require use of either the 192 or
256 key lengths. The implementation of AES in products intended to protect national security systems and/or
information must be reviewed and certified by NSA prior to their acquisition and use."[8]

AES has 10 rounds for 128-bit keys, 12 rounds for 192-bit keys, and 14 rounds for 256-bit keys. By 2006, the
best known attacks were on 7 rounds for 128-bit keys, 8 rounds for 192-bit keys, and 9 rounds for 256-bit
keys.[9]

Known attacks

For cryptographers, a cryptographic "break" is anything faster than a brute force attack - trying every possible
key. Thus, an attack against a 256-bit-key AES requiring 2200 operations (compared to 2256 possible keys) would
be considered a break, even though 2200 operations would still take far longer than the age of the universe to
complete. The largest successful publicly-known brute force attack has been against a 64-bit RC5 key by
distributed.net.[10]

AES has a fairly simple algebraic description.[11] In 2002, a theoretical attack, termed the "XSL attack", was
announced by Nicolas Courtois and Josef Pieprzyk, purporting to show a weakness in the AES algorithm due to
its simple description.[12] Since then, other papers have shown that the attack as originally presented is
unworkable; see XSL attack on block ciphers.

During the AES process, developers of competing algorithms wrote of Rijndael, "...we are concerned about [its]
use...in security-critical applications."[13] However, at the end of the AES process, Bruce Schneier, a developer
of the competing algorithm Twofish, wrote that while he thought successful academic attacks on Rijndael
would be developed someday, "I do not believe that anyone will ever discover an attack that will allow someone
to read Rijndael traffic."[14]

On July 1, 2009, Bruce Schneier blogged[15] about a related-key attack on the 192-bit and 256-bit versions of
AES, discovered by Alex Biryukov and Dmitry Khovratovich,[16] which exploits AES's somewhat simple key
schedule and has a complexity of 2119. In December 2009 it was improved to 299.5. This is a follow-up to an
attack discovered earlier in 2009 by Alex Biryukov, Dmitry Khovratovich, and Ivica Nikolić, with a complexity
of 296 for one out of every 235 keys.[17] Another attack was blogged by Bruce Schneier[18] on July 30, 2009 and
released as a preprint[19] on August 3, 2009. This new attack, by Alex Biryukov, Orr Dunkelman, Nathan Keller,
Dmitry Khovratovich, and Adi Shamir, is against AES-256 that uses only two related keys and 239 time to
recover the complete 256-bit key of a 9-round version, or 245 time for a 10-round version with a stronger type of
related subkey attack, or 270 time for an 11-round version. 256-bit AES uses 14 rounds, so these attacks aren't
effective against full AES.

In November 2009, the first known-key distinguishing attack against a reduced 8-round version of AES-128
was released as a preprint.[20] This known-key distinguishing attack is an improvement of the rebound or the
start-from-the-middle attacks for AES-like permutations, which view two consecutive rounds of permutation as
the application of a so-called Super-Sbox. It works on the 8-round version of AES-128, with a time complexity
of 248, and a memory complexity of 232.

In July 2010 Vincent Rijmen published an ironic paper on "chosen-key-relations-in-the-middle" attacks on


AES-128.[21]

Side-channel attacks

Side-channel attacks do not attack the underlying cipher and so have nothing to do with its security as described
here, but attack implementations of the cipher on systems which inadvertently leak data. There are several such
known attacks on certain implementations of AES.

In April 2005, D.J. Bernstein announced a cache-timing attack that he used to break a custom server that used
OpenSSL's AES encryption.[22] The custom server was designed to give out as much timing information as
possible (the server reports back the number of machine cycles taken by the encryption operation), and the
attack required over 200 million chosen plaintexts.[23]

In October 2005, Dag Arne Osvik, Adi Shamir and Eran Tromer presented a paper demonstrating several cache-
timing attacks against AES.[24] One attack was able to obtain an entire AES key after only 800 operations
triggering encryptions, in a total of 65 milliseconds. This attack requires the attacker to be able to run programs
on the same system or platform that is performing AES.

In December 2009 an attack on some hardware implementations was published that used differential fault
analysis and allows recovery of key with complexity of 232.[25]

In November 2010 Endre Bangerter, David Gullasch and Stephan Krenn published a paper which described a
practical approach to a "near real time" recovery of secret keys from AES-128 without the need for either cipher
text or plaintext. The approach also works on AES-128 implementations that use compression tables, such as
OpenSSL. [26] Like some earlier attacks this one requires the ability to run arbitrary code on the system
performing the AES encryption. [3]

NIST/CSEC validation
The Cryptographic Module Validation Program (CMVP) is operated jointly by the United States Government's
National Institute of Standards and Technology (NIST) Computer Security Division and the Communications
Security Establishment (CSE) of the Government of Canada. The use of validated cryptographic modules is
required by the United States Government for all unclassified uses of cryptography. The Government of Canada
also recommends the use of FIPS 140 validated cryptographic modules in unclassified applications of its
departments.

Although NIST publication 197 ("FIPS 197") is the unique document that covers the AES algorithm, vendors
typically approach the CMVP under FIPS 140 and ask to have several algorithms (such as Triple DES or
SHA1) validated at the same time. Therefore, it is rare to find cryptographic modules that are uniquely FIPS
197 validated and NIST itself does not generally take the time to list FIPS 197 validated modules separately on
its public web site. Instead, FIPS 197 validation is typically just listed as an "FIPS approved: AES" notation
(with a specific FIPS 197 certificate number) in the current list of FIPS 140 validated cryptographic modules.

The Cryptographic Algorithm Validation Program (CAVP)[4] allows for independent validation of the correct
implementation of the AES algorithm at a reasonable cost[citation needed]. Successful validation results in being
listed on the NIST validations page. This testing is a pre-requisite for the FIPS 140-2 module validation
described below.

FIPS 140-2 validation is challenging to achieve both technically and fiscally[citation needed]. There is a standardized
battery of tests as well as an element of source code review that must be passed over a period of a few weeks.
The cost to perform these tests through an approved laboratory can be significant (e.g., well over $30,000
US)[citation needed] and does not include the time it takes to write, test, document and prepare a module for
validation. After validation, modules must be re-submitted and re-evaluated if they are changed in any way.
This can vary from simple paperwork updates if the security functionality did not change to a more substantial
set of re-testing if the security functionality was impacted by the change.

Test vectors
Test vectors are a set of known ciphers for a given input and key. NIST distributes the reference of AES test
vectors as AES Known Answer Test (KAT) Vectors (in ZIP format).
Performance
Good performance (high speed and low RAM requirements) were an explicit goal of the AES selection process.
Thus AES performs well on a wide variety of hardware, from 8-bit smartcards to high-performance computers.

On a Pentium Pro, AES encryption requires 18 clock cycles / byte[27], equivalent to a throughput of about 11
MiB/s for a 200MHz processor. On a Pentium M 1.7GHz throughput is about 60 MiB/s.

Implementations
Main article: AES implementations

[edit] See also


 Advanced Encryption Standard process
 AES implementations
 AES instruction set for Intel and AMD microprocessors
 Data Encryption Standard (DES)
 Disk encryption
 Multiscale Electrophysiology Format (MEF)
 Triple DES
 Whirlpool - hash function created by Vincent Rijmen and Paulo S. L. M. Barreto
Advanced Encryption Standard process
From Wikipedia, the free encyclopedia
Jump to: navigation, search

The Advanced Encryption Standard (AES), the block cipher ratified as a standard by National Institute of
Standards and Technology of the United States (NIST), was chosen using a process markedly more open and
transparent than its predecessor, the aging Data Encryption Standard (DES). This process won plaudits from the
open cryptographic community, and helped to increase confidence in the security of the winning algorithm from
those who were suspicious of backdoors in the predecessor, DES.

A new standard was needed primarily because DES has a relatively small 56-bit key which was becoming
vulnerable to brute force attacks. In addition the DES was designed primarily for hardware and is relatively
slow when implemented in software[1]. While Triple-DES avoids the problem of a small key size, it is very slow
even in software; is unsuitable for limited-resource platforms, and may be affected by potential security issues
connected with the (today comparatively small) block size of 64 bits.

Start of the process


On January 2, 1997, NIST announced that they wished to choose a successor to DES to be known as AES. Like
DES, this was to be "an unclassified, publicly disclosed encryption algorithm capable of protecting sensitive
government information well into the next century."[2] However, rather than simply publishing a successor,
NIST asked for input from interested parties on how the successor should be chosen. Interest from the open
cryptographic community was immediately intense, and NIST received a great many submissions during the
three month comment period.

The result of this feedback was a call for new algorithms on September 12, 1997.[3] The algorithms were all to
be block ciphers, supporting a block size of 128 bits and key sizes of 128, 192, and 256 bits. Such ciphers were
rare at the time of the announcement; the best known was probably Square.

Rounds one and two


In the nine months that followed, fifteen different designs were created and submitted from several different
countries. They were, in alphabetical order:

CAST-256, CRYPTON, DEAL, DFC, E2, FROG, HPC, LOKI97, MAGENTA, MARS, RC6, Rijndael,
SAFER+, Serpent, and Twofish.

In the ensuing debate, many advantages and disadvantages of the different candidates were investigated by
cryptographers; they were assessed not only on security, but also on performance in a variety of settings (PCs of
various architectures, smart cards, hardware implementations) and on their feasibility in limited environments
(smart cards with very limited memory, low gate count implementations, FPGAs).

Some designs fell due to cryptanalysis that ranged from merely glancing blows to highly destructive
assaults[peacock term], while others lost favour due to poor performance in various environments or through having
little to offer over other candidates. NIST held two conferences to discuss the submissions (AES1, August 1998
and AES2, March 1999), and in August 1999 they announced [4] that they were narrowing the field from fifteen
to five: MARS, RC6, Rijndael, Serpent, and Twofish. All five algorithms, commonly referred to as "AES
finalists", were designed by cryptographers considered well-known and respected in the community. The AES2
conference votes were as follows:

 Rijndael: 86 positive, 10 negative


 Serpent: 59 positive, 7 negative
 Twofish: 31 positive, 21 negative
 RC6: 23 positive, 37 negative
 MARS: 13 positive, 84 negative

A further round of intense analysis and cryptanalysis followed, culminating in the AES3 conference in April
2000, at which a representative of each of the final five teams made a presentation arguing why their design
should be chosen as the AES.

Selection of the winner


On October 2, 2000, NIST announced[5] that Rijndael had been selected as the proposed AES and started the
process of making it the official standard by publishing an announcement in the Federal Register [6] on February
28, 2001 for the draft FIPS to solicit comments. On November 26, 2001, NIST announced that AES was
approved as FIPS PUB 197.

NIST won praises from the cryptographic community for the openness and care with which they ran the
standards process. Bruce Schneier, one of the authors of the losing Twofish algorithm, wrote after the
competition was over that "I have nothing but good things to say about NIST and the AES process"

You might also like