Jump to content

AES implementations: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Ripounet (talk | contribs)
m Miscellaneous: added another implementation
Line 108: Line 108:
* [[LastPass]]<ref>[https://lastpass.com/how-it-works/ AES 256-bit encryption with routinely-increased PBKDF2 iterations]</ref>
* [[LastPass]]<ref>[https://lastpass.com/how-it-works/ AES 256-bit encryption with routinely-increased PBKDF2 iterations]</ref>
* [[Linux kernel]]'s [[Crypto API (Linux)|Crypto API]], now exposed to userspace
* [[Linux kernel]]'s [[Crypto API (Linux)|Crypto API]], now exposed to userspace
* [https://netlibsecurity.com/ NetLib Encryptionizer] supports AES 128/256 in CBC, ECB and CTR modes for file and folder encryption on the Windows platform.
* [[Pidgin (software)]], has a plugin that allows for AES Encryption
* [[Pidgin (software)]], has a plugin that allows for AES Encryption
* [[PyEyeCrypt]]<ref>[https://github.com/mi55ing/PyEyeCrypt PyEyeCrypt at github] [[Microsoft Windows|Windows]], [[OS X|OSX]] and [[Linux]] binaries and [[Python (programming language)|Python]] source code included in release v1.1</ref> Free open-source text encryption tool/GUI with user-selectable AES encryption methods and PBKDF2 iterations.
* [[PyEyeCrypt]]<ref>[https://github.com/mi55ing/PyEyeCrypt PyEyeCrypt at github] [[Microsoft Windows|Windows]], [[OS X|OSX]] and [[Linux]] binaries and [[Python (programming language)|Python]] source code included in release v1.1</ref> Free open-source text encryption tool/GUI with user-selectable AES encryption methods and PBKDF2 iterations.

Revision as of 21:25, 29 April 2019

There are various implementations of the Advanced Encryption Standard, also known as Rijndael.

Libraries

AES speed at 128, 192 and 256-bit key sizes. [clarification needed][citation needed]

Rijndael is free for any use public or private, commercial or non-commercial.[1] The authors of Rijndael used to provide a homepage[2] for the algorithm. Care should be taken when implementing AES in software. Like most encryption algorithms, Rijndael was designed on big-endian systems. For this reason, little-endian systems, which include the common PC, return correct test vector results only through swapping bytes of the input and output words.

The algorithm operates on plaintext blocks of 16 bytes. Encryption of shorter blocks is possible only by padding the source bytes, usually with null bytes. This can be accomplished via several methods, the simplest of which assumes that the final byte of the cipher identifies the number of null bytes of padding added.

Careful choice must be made in selecting the mode of operation of the cipher. The simplest mode encrypts and decrypts each 128-bit block separately. In this mode, called electronic code book (ECB), blocks that are identical will be encrypted identically; this is entirely insecure. It makes some of the plaintext structure visible in the ciphertext. Selecting other modes, such as using a sequential counter over the block prior to encryption (i.e., CTR mode) and removing it after decryption avoids this problem.

  • Current list of FIPS 197 validated cryptographic modules (hosted by NIST)
  • Current list of FIPS 140 validated cryptographic modules with validated AES implementations (hosted by NIST) – Most of these involve a commercial implementation of AES algorithms. Look for "FIPS-approved algorithms" entry in the "Level / Description" column followed by "AES" and then a specific certificate number.

C/ASM library

C++ library

  • Botan has implemented Rijndael since its very first release in 2001
  • Crypto++ A comprehensive C++ public-domain implementation of encryption and hash algorithms. FIPS validated

C# /.NET

Go

Java

Python

  • PyCrypto – The Python Cryptography Toolkit PyCrypto, extended in PyCryptoDome
  • keyczar – Cryptography Toolkit keyczar
  • M2Crypto – M2Crypto is the most complete OpenSSL wrapper for Python.
  • Cryptography – Python library which exposes cryptographic recipes and primitives.
  • PyNaCl – Python binding for libSodium (NaCl)

JavaScript

  • SJCL library – contains JavaScript implementations of AES in CCM, CBC, OCB and GCM modes
  • AES-JS – portable JavaScript implementation of AES ECB and CTR modes
  • Forge – JavaScript implementations of AES in CBC, CTR, OFB, CFB, and GCM modes
  • asmCrypto – JavaScript implementation of popular cryptographic utilities with focus on performance. Supports CBC, CFB, CCM modes.
  • pidCrypt – open source JavaScript library. Only supports the CBC and CTR modes.

LabVIEW

Applications

Archive and compression tools

File encryption

Encrypting file systems

Disk / partition encryption

Security for communications in local area networks

Miscellaneous

Hardware

  • Intel and AMD processors include the AES instruction set.
  • On IBM zSeries mainframes, AES is implemented as the KM series of assembler opcodes when various Message Security Assist facilities are installed.
  • SPARC S3 core processors include the AES instruction set, which is used with SPARC T4 and SPARC T5 systems.

References

  1. ^ Letter Submitted by creators Daemen and Rijndael
  2. ^ Original homepage and archived copy
  3. ^ "Microsoft AES Cryptographic Provider".
  4. ^ "System Administration Guide: Security Services, Chapter 13 Solaris Cryptographic Framework (Overview)". Oracle. September 2010. Retrieved 2012-11-27.
  5. ^ "Get Backup Pro is a solid backup utility for Macs". Engadget. Retrieved 2016-04-26.
  6. ^ AES 256-bit encryption with routinely-increased PBKDF2 iterations
  7. ^ PyEyeCrypt at github Windows, OSX and Linux binaries and Python source code included in release v1.1