VIA PadLock

VIA PadLock is a CPU instruction set found on processors produced by VIA Technologies and Zhaoxin. Introduced in 2003 with the "Centaur" CPUs, this instruction set provides hardware-accelerated random number generation, AES crypto, SHA1, SHA256, and Montgomery modular multiplication.[1][2]

Instructions

The PadLock instruction set can be divided into four subsets:[1]

  • RNG - Random number generation
    • XSTORE: Store Available Random Bytes (aka XSTORERNG)
    • REP XSTORE: Store ECX Random Bytes
  • ACE - Advanced cryptography engine, for AES crypto; two versions
    • REP XCRYPTECB: Electronic Code Book
    • REP XCRYPTCBC: Cipher Block Chaining
    • REP XCRYPTCTR: Counter Mode (ACE2)
    • REP XCRYPTCFB: Cipher Feedback Mode
    • REP XCRYPTOFB: Output Feedback Mode
  • PHE - SHA hash engine
    • REP XSHA1: Hash Function SHA-1
    • REP XSHA256: Hash Function SHA-256
  • PMM - Montgomery multiplier
    • REP MONTMUL

The padlock capability is indicated via a CPUID instruction with EAX = 0xC0000000. If the resultant EAX >= 0xC0000001, the CPU is aware of Centaur features. An additional request with EAX = 0xC0000001 then returns PadLock support in EDX. The padlock capability can be toggled on or off with MSR 0X1107.[1]

VIA PadLock found on some Zhaoxin CPUs have SM3 hashing and SM4 block cipher added.[3]

CPUs with PadLock

  • All VIA Nano CPUs support SHA, AES, and RNG.
  • All VIA Eden CPUs since 2003 (C3 Neremiah) support AES and RNG. All these released since 2006 support AES, RNG, SHA, and PMM.
  • All VIA C7 CPUs support AES, RNG, SHA, and PMM.

Supporting software

  • Linux kernel since 2.6.11 has PadLock AES. PadLock SHA was introduced in 2.6.19. These are handled as "hardware crypto devices".[4]
  • OpenBSD and FreeBSD support PadLock.[5]
  • OpenSSL supports PadLock AES and SHA since 2004 (0.9.7f/0.9.8a).[6]
  • GNU assembler supports PadLock since 2004.[7]
gollark: (Note: they will not work because æææææ Pytorch compatibility issues)
gollark: PRs welcome!
gollark: I simply think about what my program needs to do, and then write it.
gollark: Minoteaur is developed through entirely rewriting it every few months.
gollark: Well, the teachers are mostly not good programmers, programming is rather hard to explain to people, and ability levels are very mixed.

References

See also

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.