Disclaimer: fac software care tinde să ruleze pe procesoare de pe piața de masă. Deci nu sunt familiarizat cu genul de piețe de nișă în care FPGA ar avea sens.
Este foarte greu să proiectezi un algoritm criptografic. A proiecta ceva care funcționează funcțional este ușor, dar a proiecta ceva sigur este greu – și dacă nu ai nevoie de ceva sigur, nu are rost să faci vreo criptografie.În consecință, criptografia tinde să folosească doar un număr mic de primitive standard. Acest lucru este exacerbat și mai mult de faptul că unul dintre cele mai mari cazuri de utilizare a criptografiei este comunicarea, iar acest lucru necesită ca toate părțile să cadă de acord asupra algoritmilor, astfel din nou standardizarea în jurul unui număr mic de primitive.
Ca rezultat, nu există loc pentru primitivi de nișă. Deci, dacă ceva merită accelerat, de obicei merită fie proiectarea unui ASIC, fie chiar extinderea unui procesor de uz general. De exemplu, accelerația AES este disponibilă pe majoritatea procesoarelor high-end (x86, arm, â¦) și pe un număr tot mai mare de microcontrolere. Acesta este din ce în ce mai mult și pentru SHA2. Accelerarea criptografiei cu cheie publică este mai puțin răspândită, dar obișnuită pe unele piețe, cum ar fi smartphone-urile și unele segmente de piață de microcontrolere.
Mă gândesc doar la două aplicații de nișă în care circuitele dedicate merită. Una este munca de forță brută, pentru aplicații precum spargerea parolelor și minarea criptomonedelor, care de obicei utilizează primitive standard într-un mod foarte specific, unde poate fi avantajos să se realizeze un circuit dedicat pentru acel mod specific. Pentru aceste aplicații, toate CPU-ul standard, GPU-ul standard, ASIC și FPGA sunt în funcțiune, în funcție de natura și cantitatea de muncă. O altă aplicație este experimentarea cu noi algoritmi sau noi tehnici de implementare. Pentru acel caz de utilizare, FPGA merită cu siguranță – atunci proiectați un circuit specializat (sau nu) pe baza observațiilor făcute pe FPGA.