2013-12-19 12 views
13

Ein Beispiel, in x86 are Instruction Set to hardware acceleration AES. Aber gibt es in x86 irgendwelche Anweisungen, um SHA (SHA1/2/256/512) -Codierung zu beschleunigen, und welche Bibliothek ist die schnellste Kodierung von SHA auf x86?Gibt es in x86 irgendwelche Anweisungen zur Beschleunigung der SHA (SHA1/2/256/512) Codierung?

+7

Lesen Sie, dass http://software.intel.com/en-us/articles/improving-the-performance-of-the-secure-hash-algorithm-1 – alexbuisson

+2

Wer gewählt hat, um dies zu schließen, muss es sicherlich getan haben Fehler? – TonyK

+0

@TonyK Wahrscheinlich aufgrund der Frage nach * The * schnellste Bibliothek, die wahrscheinlich rechthaberische Antworten anziehen wird. Dieser Teil der Frage ist nicht zu beantworten. – IInspectable

Antwort

7

Gibt es in x86 irgendwelche Anweisungen zur Beschleunigung der SHA (SHA1/2/256/512) Codierung?

Es ist November 2016 und die Antwort ist endlich Ja. Aber es ist nur SHA-1 und SHA-256 (und durch Erweiterung, SHA-224).

Intel CPUs with SHA extensions traf den Markt vor kurzem. Es sieht aus wie Prozessoren, die es unterstützen, sind Goldmont microarchitecture:

  • Pentium J4205 (Desktop)
  • Pentium N4200 (mobile)
  • Celeron J3455 (Desktop)
  • Celeron J3355 (Desktop)
  • Celeron N3450 (mobile)
  • Celeron N3350 (mobile)

I durchgeschaut Angebote bei Amazon nach Maschinen mit der Architektur oder den Prozessor-Nummern, aber ich habe (noch) keine verfügbaren gefunden. Ich glaube HP Acer hatte einen Laptop mit Pentium N4200 voraussichtlich in November 2016 Dezember 2016, die Testanforderungen erfüllen würde.

Für einige der technischen Details, warum es nur SHA-1, SHA-224 und SHA-256 ist, siehe crypto: arm64/sha256 - add support for SHA256 using NEON instructions auf der Kernel-Crypto-Mailing-Liste. Die kurze Antwort ist, über SHA-256, Dinge sind nicht leicht parallelisierbar.


Sie können Quellcode für beide Intel SHA-Spezifika und ARMv8 SHA-Spezifika bei Noloader GitHub | SHA-Intrinsics finden. Sie sind C-Quelldateien und bieten die Komprimierungsfunktion für SHA-1, SHA-224 und SHA-256.Die intrinsischen basierten Implementierungen erhöhen den Durchsatz ca. 3 × bis 4 x für SHA-1 und etwa 6 × bis 12 × für SHA-224 und SHA-256.

+0

Ich suchte nach einer Diskussion von SHA-512 in diesem Link, aber eine Textsuche nach "512" fand nichts. Über welchen Teil der Post hast du geredet? Und was können Sie mit Software und normalen skalaren oder SIMD-Integer-Anweisungen (d. H. Dem größten Teil oder dem gesamten Patch) tun, die relevant sind für das, was Intel in Hardware implementieren könnte? Oder ist die Tatsache, dass Vektorregister noch nicht 512b breit sind, relevant? (Ich weiß nicht wirklich, wie SHA funktioniert.) –

+0

@Peter - Überprüfen Sie Andy Polyakovs Kommentare. Er erklärt es viel besser, als ich es paraphrasieren würde. – jww

+0

Unterstützung wird in OpenSSL implementiert: [siehe Krypto/sha/asm/sha1-x86_64.pl] (https://github.com/openssl/openssl/blame/5071824/crypto/sha/asm/sha1-x86_64.pl# L388) –

0

Versuchen Sie etwas Open Source wie OpenSSL Ich habe persönlich ihre MD5-Hashfunktionen verwendet und diese funktionierte ziemlich gut. Sie können auch einen Blick auf hashlib2++ werfen.

Soweit ich weiß, hat Intel keine dedizierte Anweisung für SHA-1 oder zwei gemacht. Sie können in kommenden Architekturen als CodesInChaos in einem Kommentar angegeben werden. Die Hauptkomponente in den meisten Hashing-Algorithmen ist die XOR-Operation, die bereits im Befehlssatz enthalten ist.

+0

diese Bibliotheken schneller als Implementierung, die von Intel eingeführt? Link, den alexbuisson gab: http://software.intel.com/en-us/articles/improving-the-performance-of-the-secure-hash-algorithm-1 – Alex

+0

Bitte werfen Sie einen Blick auf meine Bearbeitungen, krish. Versuchen Sie und formatieren Sie Ihre Antworten und versuchen Sie, etwas formellere Sprache zu verwenden. –

+0

Ich habe nicht persönlich die Intel's benutzt. Lass mich sehen, was ich finden kann. – krish

13

Sobald die Intel Skylake microarchitecture im Jahr 2015 ankommt, wird die angenommene Antwort falsch sein, wenn es heißt: "Intel hat keinen dedizierten Befehlssatz für SHA-1 oder zwei gemacht". Intel has upcomming instructions zum Beschleunigen der Berechnung von SHA1/256-Hashes.

enter image description here

Sie können mehr über sie lesen, wie wenn Ihre CPU-Unterstützung, sie erkennen und wie diese here zu verwenden. Bis Skylake ankommt, ist ein C/C++ - Programmierer wahrscheinlich am besten mit OpenSSL.

+3

Beachten Sie jedoch, dass diese Anweisungen der Skylake-Mikroarchitektur hinzugefügt werden, die voraussichtlich nicht vor 2015 oder 2016 veröffentlicht wird. – duskwuff

+3

Jetzt, da SHA-1 ausläuft (http://googleonlinesecurity.blogspot.com/2014/) 09/allmählich Sunsetting-sha-1.html) Intels neue Anweisungen irgendwie sinnlos sind ... –

+3

SHA-1 wird für nicht-Verschlüsselungs Anwendungen nützlich bleiben ... – voidlogic