LM-SHA3, FPGA ve SoC tasarımlarında hash algoritmalarını donanıma aktarmak için bir kriptografi bloğudur.
Motor, FIPS 202'ye göre Secure Hash Algorithm 3 ailesini gerçekler: sabit uzunluklu SHA3-224, SHA3-256, SHA3-384 ve SHA3-512 fonksiyonları ile genişletilebilir çıkışlı SHAKE128 ve SHAKE256 fonksiyonları. NIST SP 800-185'teki cSHAKE ve KMAC işlemlerini de destekler.
LM-SHA3, Keccak sünger yapısını eksiksiz gerçekler: alan ayırma soneki, mesaj dolgusu ve permütasyonun hepsi donanımda yapılır; host yalnızca mesaj baytlarını gönderir. Bağlam değiştirme fonksiyonuyla Keccak motorunun iç durumu kaydedilip geri yüklenebilir; böylece kısmen işlenmiş bir mesaj askıya alınıp araya başka veriler alınabilir.
Blok, üreticiden bağımsız SystemVerilog olarak teslim edilir ve AMD, Altera ve Efinix cihazlarında aynı kaynaktan derlenir. AMBA AXI arayüzleri ile hash fonksiyonunu, XOF'ların özet uzunluğunu ve cSHAKE/KMAC konfigürasyonunu seçen, kullanıcı tarafından programlanabilir parametrelere sahip bir register haritası içerir. Hedef platforma hızlı entegrasyon için ANSI C sürücüleri sağlanır.
Ölçülmüş FPGA sonuçları
Ürün top'ı, bağlam dışı (out of context) ve hedef saatte kısıtlanmış olarak. AMD ve Efinix LUT, Altera ALM raporlar; ikisi hiçbir zaman birleştirilmez.
| Cihaz | Konfigürasyon | Mantık | FF | Bellek | DSP | Fmax |
|---|---|---|---|---|---|---|
| Altera Agilex 3A3CW135BM16AE6S · quartus-pro 26.1.1 | varsayılan | 6.005 ALM | 5.961 | 0 Kb M20K | 0 | 215,0 MHzhedef 215 |
| AMD Kintex UltraScale+xcku3p-ffva676-1-e · vivado 2026.1 | varsayılan | 7.972 LUT | 4.360 | 0 BRAM | 0 | 307,3 MHzhedef 300 |
| Efinix Titanium Ti375Ti375N1156 · efinity 2026.1 | varsayılan | 13.833 LUT | 4.343 | 0 RAM | 0 | 276,7 MHzhedef 255 |
Özellikler
Kriptografik hash
- SHA3-224, SHA3-256, SHA3-384, SHA3-512
Genişletilebilir çıkışlı fonksiyonlar (XOF)
- SHAKE128, cSHAKE128
- SHAKE256, cSHAKE256
Mesaj kimlik doğrulama
- KMAC128, KMAC256
Motor
- Sabit olarak her 24 saat çevriminde bir Keccak-f[1600] permütasyonu
- Mesaj saat başına tam bir 64 bit lane hızında alınır; motor veri beklemek için durmaz
- Alan soneki ve pad10*1 dolgusu donanımda uygulanır
- Bağlam değiştirme: 1600 bitlik durumun tamamı register haritası üzerinden kaydedilir ve geri yüklenir
- Yetenek register'ı: sürücü konfigürasyonu kendisine söylenmeden keşfeder
Entegrasyon
- AMBA AXI4-Lite kontrol ve üç AXI4-Stream veri arayüzü
- İki teslim top'ı: eksiksiz AXI ürünü ya da kendi yapınız için yalın sünger
- Tek saat alanı, tek reset: false path yok, multicycle yol yok
- ANSI C sürücüsü, UVM RAL, IP-XACT, SystemRDL register tanımı
- Tek kaynaktan her AMD, Altera ya da Efinix cihazına taşınabilir
Uygulamalar
- Dijital imza ve sertifika işleme
- Post-kuantum kriptografi: ML-KEM ve ML-DSA baştan sona SHAKE ve cSHAKE kullanır
- Anahtar türetme ve mesaj kimlik doğrulama
- Güvenli açılış (secure boot) ve firmware doğrulama
- Şifreli veri depolama
- Güvenli haberleşme
Blok diyagramı
SHA-3 fonksiyonları
On fonksiyon yalnızca rate, alan soneki ve çıkış uzunluğu açısından farklıdır; hepsine tek bir motor hizmet eder.
| Fonksiyon | Rate (bayt) | Rate (lane) | Sonek | Özet |
|---|---|---|---|---|
| SHA3-224 | 144 | 18 | 0x06 | 28 bayt |
| SHA3-256 | 136 | 17 | 0x06 | 32 bayt |
| SHA3-384 | 104 | 13 | 0x06 | 48 bayt |
| SHA3-512 | 72 | 9 | 0x06 | 64 bayt |
| SHAKE128 | 168 | 21 | 0x1F | programlanabilir |
| SHAKE256 | 136 | 17 | 0x1F | programlanabilir |
| cSHAKE128 | 168 | 21 | 0x04 | programlanabilir |
| cSHAKE256 | 136 | 17 | 0x04 | programlanabilir |
| KMAC128 | 168 | 21 | 0x04 | programlanabilir |
| KMAC256 | 136 | 17 | 0x04 | programlanabilir |
Rate değerleri FIPS 202 bölüm 6'yı izler: r = 1600 − 2s. Sonekler SHA-3 ve SHAKE için
ek B.2'yi izler; türetilmiş fonksiyonlar 00 alır, çünkü onların alanını cSHAKE öneki
ayırır.
Arayüzler
Blok, giriş mesajının ve çıkış hash değerinin yüksek hızda aktarımı için iki 64 bit AXI4-Stream arayüzü ile cSHAKE ve KMAC parametre dizilerini taşıyan 8 bit bir AXI4-Stream arayüzü içerir. AXI4-Lite arayüzü; SHA-3 fonksiyonunu, XOF'ların özet uzunluğunu ve cSHAKE/KMAC parametrelerini seçmek için register haritasına erişim sağlar.
| Arayüz | Tür | Genişlik | İşlevi |
|---|---|---|---|
s_axil | AXI4-Lite slave | 32 bit veri, 8 bit adres | konfigürasyon, komut, durum, özet ve bağlam pencereleri |
s_axis_msg | AXI4-Stream sink | 64 bit, tkeep, tlast | giriş mesajı |
s_axis_par | AXI4-Stream sink | 8 bit | cSHAKE ve KMAC parametre dizileri |
m_axis_hash | AXI4-Stream source | 64 bit, tkeep, tlast | çıkış hash değeri |
irq | seviye | 1 bit | tamamlanma ve hata olayları |
tkeep son mesaj vuruşundaki baytları belirtir; böylece bir mesaj herhangi bir bayt
sayısında olabilir. Parametre dizileri cSHAKE için önce N sonra S, KMAC için önce S
sonra K olarak gelir.
Bant genişliği
Bant genişliği doğrudan mimariden gelir ve tabloya bakmadan her saat frekansı için hesaplanabilir:
one permutation 24 clock cycles
one rate-block per permutation
throughput = rate_bytes x f_clk / 24
300 MHz'te SHA3-256 için bu, 136 × 300 × 10⁶ / 24 ≈ 1,7 GB/s eder.
Permütasyon sabit gecikmelidir. Mesaj içeriğinden bağımsız olarak her permütasyon 24 çevrimdir ve bu ölçülerek değil, formal olarak kanıtlanmıştır: tur sayısı özelliğini ayrı bir kanıt taşır. Dolayısıyla çalışma süresi yalnızca mesaj uzunluğunun bir fonksiyonudur. Maskeleme, rastgeleleştirme ya da hata tespiti önlemleri uygulanmamıştır; bir uygulama güç analizine ya da hata enjeksiyonuna karşı direnç gerektiriyorsa bu, çevreleyen sistemin işidir.
Konfigürasyon
| Parametre | Etkisi |
|---|---|
fonksiyon seçimi (cfg.fn) | çalışma zamanında, on fonksiyondan biri |
XOF özet uzunluğu (xoflen) | çalışma zamanında, herhangi bir bayt sayısı |
| cSHAKE / KMAC dizi uzunlukları | çalışma zamanında (nlen, slen, keylen) |
| top seçimi | elaboration: eksiksiz AXI ürünü ya da yalın sünger |
Bu blokta bir hash'i bir MAC'ten ayıran her şey bir register yazmasıdır. Yanlış ayarlanabilecek, elaboration zamanında fonksiyon alt kümesi seçimi yoktur.
Kaynaklar ve performans
Her hedef cihaz için kaynak kullanımı ve maksimum saat frekansı bağlam dışında (out of context) ölçülür ve bu sayfadaki ölçülmüş sonuçlarda hedef bazında yayımlanır. AMD ve Efinix satırları LUT, Altera satırları ALM raporlar; ikisi hiçbir zaman birleştirilmez.
Teslimat içeriği
| Öğe | İçerik |
|---|---|
| RTL | parametrik, üreticiden bağımsız SystemVerilog |
| Model | bit doğruluğunda C++ modeli |
| Register'lar | SystemRDL kaynağı ve üretilmiş altı dışa aktarım |
| Doğrulama | UVM RAL, formal property wrapper'ları, CAVP vektör sürücüleri |
| Yazılım | üretilmiş başlık dosyası ve JSON ile ANSI C referans sürücüsü |
| Paketleme | IP-XACT, IEEE 1685-2022 |
| Gerçekleme | her FPGA üreticisi için çalıştırılabilir akış script'i, dosya listesi, SDC |
| Dokümantasyon | entegrasyon kılavuzu |