FPGA Systems'de Güvenli Çınağın Eleştirel Rolü
Alan-Programlanabilir kapı Dizileri (FPGA) giderek artan bir şekilde güvenlik-kırıklık ve güvenlik-kanıtlama uygulamaları, endüstri kontrolü, havacılık, savunma, telekomünikasyon ve Nesnelerin İnterneti (IoT) Yeniden yapılandırılabilir doğa onları, önyükleme sürecinde kötü niyetli saldırılara karşı savunmasız kılar.
Bir FPGA'daki önyükleme işlemi genellikle küçük, kusursuz bir kod parçası ile başlar (bir kez programlanabilir bellek veya güvenli ROM) cihazı ilk olarak cihazı, bir bellekten imzalanmış bir bellek (örneğin, SPI flaş) ve daha sonra güvenli bir bootloader olmadan, bir saldırganın kendi başına bir anahtarlama işlemine izin verir.
Güvenli Bootloader Concept'ı Anlayın
FPGA sistemleri için güvenli bir bootloader, ana uygulamadan önce yürütülen özel bir donanım modülü veya bilgisayar rutinidir: Birkaç kritik aşamayı gerçekleştirir:
- [FONT:0)Öyle başlayan ilkleme: Kıtalar saat, I/O ve temel hafıza arabirimleri bu yüzden bootloader depolanan ana bilgisayara erişebilir.
- [FONT=0)Cryptografik doğrulama:[Dönetici:[Dönetici:0) İmzalanan bilgisayar görüntülerini okuyun, halka açık anahtar (veya simetrik anahtar) alın ve dijital imzayı doğrulayın veya bu adım, bu adım, bilgisayarın gerçek olmasını sağlar ve tam olarak kabul edilmez.
- [FONT=0) ^Chain of trust:[Dönetici:[Döncüm:0)[Döncükler)[değiştir | kaynağı değiştir] [FONT=0) FPGA'nın donanım kökü (örneğin, gömülü bir güvenli işlemci, PUF veya bir programlanabilir anahtar).
- [FONT=0]Fault-tolerant yükleme: Eğer doğrulama geçerse, bilgisayar görüntüsü FPGA yapılandırmasına yüklenir.Eğer doğrulama başarısız olursa, bootloader güvenli bir duruma girer, sistemi durdurur veya bir uyarı tetikler.
Birçok FPGA ailesi (örneğin, Xilinx Zynq, Intel Çevik), AES decryptors, HMAC verilendiricileri ve eFUSE tabanlı anahtar depolama gibi özel donanım güvenlik özellikleri vardır. VHDL bootloader, bu bloklarla kablolama mantığını kumaşta korurken, donanıma dayalı kripto ve yumuşak mantık arasındaki ayrım, HMAC veri bir karardır.
Güven ve Güvenin Kökü ve Zinciri
Güvenin kökü (RoT), ilk kriptografik kimlikleri sağlayan bir taklit elemanıdır. Bu, bu RoT'nin bilgisayar doğrulaması için kullanılan temel veya doğrulayıcı bir şekilde kullanılmasını sağlar.
VHDL Uygulama için Tasarım
VHDL'de güvenli bir bootloader geliştirmek performans, güvenlik ve güvenilirlik gerektirir. Aşağıdaki tasarım konuları kritiktir.
Kimlik Doğrulama Mekanizmaları
Güvenli bir bootloader'in temeli, bilgisayarın bütünlüğünü ve gerçekliğini doğrulama yeteneğidir. Ortak mekanizmalar şunları içerir:
- [FONT:0] Dijital imzalar (SHA-256) hesaplanmış, o zaman anahtarlama yöntemleri özel bir anahtarla imzalanmıştır (örneğin, ECDSA, RSA).
- [FONT=0)Message doğrulama kodları (symmetric):[Dönetici bir gizli anahtar kullanarak, anahtarın şifresini kullanarak, şifreleme/decryption'ı, her iki gizliliği ve bütünlüğüne olanak sağlayan bir şifreleme işlemidir.
- [FONT:0]Hash tabanlı doğrulama (basitleştirilmiş): Daha az kritik sistemlerde, bootloader basit bir CRC veya SHA'nın gizli bir anahtar olmadan, bu sadece kazara yolsuzluğu tespit edebilir, kötü niyetli bir şekilde tampering.
Üretim sistemleri için, [[0)ECDSA (Elliptic Curve Digital Signature Algorithm)[DSA doğrulama ünitesine bağlı olarak, 256-bit eğrisi üzerinde (secp256r1), son derece küçük imza büyüklüğü ve verimli donanım uygulamaları nedeniyle popüler bir seçimdir.
Kriptografik Anahtarların Güvenli Depolama
bootloader'in güvenliği, doğrulama anahtarlarını gizli ve hayal edilemez tutmak bağlıdır. FPGA sistemlerinde anahtarları depolamak için seçenekler şunlardır:
- [FONT:0]eFUSE / OTP hafıza: Bir kere FPGA içinde programlanabilir bir kök anahtarı veya bir kamu anahtarı fişek saklayabilirler.Bir kez füzyon yapamazlar, ancak, füzyon sayısı sınırlıdır (örneğin 256 bit), ve genellikle FPGA içinde bir sismik kök anahtarı için kullanılırlar.
- [FONT:0)Battery-backed RAM (BBRAM):[Dönemli RAM):[FONTT:0) Bazı FPGA'lar, bir yedek bataryanın mevcut olup olmadığının altında veri tutan küçük bir RAM miktarı sunar.
- [FONT=0)Dönetici güvenli bellek:[Dönetici:0) Bir kapalı-çip güvenli bir element (örneğin, ATECC608A) depolar ve kriptografik işlemleri dışsal olarak gerçekleştirir.Bu yükler VHDL bootloader ancak arayüz karmaşıklığı getirir (I2C, SPI).
- [FONT:0)PUF tabanlı anahtar nesil: Modern FPGAs (e.g., Xilinx Zynq UltraScale+) üretim varyasyonlarına dayanan eşsiz bir cihaz anahtarı sağlar.Bu anahtar açıkça depolanır; her seferinde PUF, yardımcı verileri kullanarak yeniden üretilir.
VHDL'de, bootloader güvenli kaynaktan anahtar almak ve kripto çekirdeğine geçmek zorundadır. eFUSE veya BBRAM için, FPGA satıcısı ilkel hücrelere (örneğin, Xilinx sıcaklık / gerilim izleme için) izin vermez.
Donanım Güvenliği Modülleri (HSM) Bütünleşme
FPGA'lar genellikle, kriptografik fonksiyonlarını yumuşak mantıktan uzaklaştıran donanım hızlandırıcılarını entegre eder. Common HSMs şunları içerir:
- [FONT=0]Hardware kripto hızlandırıcılar: [DSAT:1] AES, SHA-256 ve RSA / ECDSA. In Xilinx FPGAs, Vivado IP kataloğu, “AES-GCM”, “SHA-256” ve “ECDSA çekirdeği”, Intel/Altera cihazları için, “Cryptografik Hızlandırıcı Hızlandırma” blokları, yumuşak uygulamalardan daha hızlı bir şekilde çalışır ve yan-gönüllülere karşı daha iyi saldırılar sağlar.
- [FONG:0) Gerçek Rastgele Sayı Jeneratör (TRNG): [Dönderlik, anahtar programları veya önyükleme akışında rastgele zorluklar üretmek için gerekli olan. TRNG, sağlam ve sertifikalı olmalıdır (örneğin, NIST SP 800-90A).
- [FONT:0)Physical Unclonable Function (PUF):[FONTT:0) Söz konusu olduğunda, PUFs cihazı özel anahtarlar üretir ve ayrıca belirli bir FPGA örneğine bağlanmak için kullanılabilir.
- [FONT:0)Güvenli İzleme:[Dönetici:[Dönetici:0)) Bir güvenlik işlemcisi, gerilim, sıcaklık ve saat aksaklıkları tespit ederse, hassas anahtar kayıtları veya bootloader sıfırlamayı açıklayabilir.
VHDL bootloader, gerekirse bu HSM'leri yapılandırmalıdır (örneğin, AES motorunda anahtar ayarlama), hataları tamamlamak ve tekrarlamak veya durum sinyalleri işlemek.
Yanlış Hoşgörü ve Robustness
bootloader, olumsuz koşullar altında güvenilir bir şekilde çalışmalıdır. Anahtar hata tolerans teknikleri şunları içerir:
- [FONT:0)Triple modüler Reddancy (TMR):), Eleştirel devlet makineleri (örneğin, boot kontrolör) tek bir yol üzgünleri maskelemek için karmaşık ve oy verebilir (SEUs). Bu özellikle de havacılık ortamlarda önemlidir.
- [FONT=0]Watchdog Timers:[Dönetici:[Dönetici:0)[Döneticileri)[değiştir | kaynağı değiştir] Bir donanım saati köpeği normal operasyon sırasında bootloader tarafından düzenli olarak sıfırlanmalıdır.If the bootloader hangs due to a glitch, the watchdog triggers a system reset.
- [FONT=0)Power Glitch Koruma: [Döncüm:[Döncüm:0) Güç tedarikinin kritik operasyonlar başlamadan önce sabit olduğunu doğrulamalı. FPGA'nın inşa edilmiş gücü sıfırını kullanın (POR) ve VCC'nin toleransı içinde olmasını sağlamak için bir gerilim.
- [FONT=0)Error Recovery:[Dönetici:[Dönetici:0) Bir imza doğrulama geçici bir hata nedeniyle başarısız olursa (örneğin, bellek okuma hatası), bootloader kalıcı bir başarısızlık ilan etmeden önce sınırlı sayıda kez tekrarlayabilir.
- [FONT=0)Redttlet Image Storage:[Dönetici:[Dönetici:0) Mağazanın iki kopyasını flaş belleğinde (altın ve güncelleştirme) depolayın. birincil görüntü doğrulamazsa, bootloader altın görüntüye geri dönebilir.Bu yaklaşım başarısız bir güncelleme sırasında tuğlayı önler.
VHDL'deki bu özellikleri uygulamak dikkatli kaynak planlama gerektirir. Örneğin, TMR FSM ve oy veren mantığı, 3-4x tarafından LUT kullanımını artırmak. Ancak, yüksek kullanılabilirlik sistemleri için, bu yük kabul edilebilir.
VHDL, Bootloader için Stratejileri Koding
VHDL'de güvenli bir bootloader yazmak modülerlik, açıklık ve güvenli kodlama uygulamaları için bağlılık gerektirir. Aşağıdaki stratejiler önerilir.
modüler tasarım ve Hierarchy
Önyükleme yükleyicisini farklı modüllere göre:
- [FONT=0]boot kontroller: [Dönetici: [Döncüm:0]) Top- Seviye FSM, boot serisini koordine eden üst düzey FSM. Bu, reset, anahtar geri dönüş, kripto doğrulama ve bilgisayar yüklemesini orkestralar.
- [FONT=0)crypto wrapper:[DÜT:1] Encapsulates kriptografik çekirdeği (SHA-256, ECDSA veya AES-GCM) Operasyonlara başlamak ve okumak için bir kayıt arayüzü sağlar.
- [FONT:0]mem interface: [Dönetici: [Dönder: [Dönder:) Dış flaş bellekle iletişim kurar (SPI, QSPI veya paralel).
- [FONT:0]key store:[Dönetici:[Dönetici: · 1) Güvenli anahtar depolamaya erişimi Yönetin (eFUSE, BBRAM, PUF).
- [FONT=0] Terör handler:[Dönetici:[Dönetici:[Dönetici: 1 ) Hata kodları toplar, LED'leri veya statüsü pinleri kontrol eder ve altın görüntüye geri dönerler (eğer uygulanırsa).
Her modül, VHDL kayıtlarını veya dizilerini kontrol ve veri hatlarıyla uyumlu bir arayüze sahip olmalıdır. Örneğin, kripto wrapper sadece bir girişe sahip olabilir "ilkin" akışı, bir "ack" çıktı ve bir "pragma" veya "synthesis off/on" sadece testbench kodu için, asla sentezde.
Finite State Machine (FSM) için
boot denetleyici FSM, bootloader'in kalbidir. Tipik bir devlet dizisi:
- [FONT:0)IDLE:[Dönetici:[Dönetici:0)) Güç-on sıfırlama sinyalini de tezye sıfırlamak için bekleyin.
- [FONT:0)INIT:[Dönetici arayüzü, ayarlı saat bölmeleri ve kripto çekirdeklerini yapılandırın. Hazır sinyalleri bekleyin.
- [FONT:0]GET KEY:[Dönetici:[Dönetici: 1 ) Güvenli depolamadan halk anahtarı veya anahtarını okuyun.Eğer anahtar geri dönüş başarısız olursa, FAIL durumuna gidin.
- [FONT:0)READ HEADER:[Dönetici: Dış hafızadan gelen anahtarlamaları okuyun.The Title contains the Software tall, version, sign, and optional metadata. Validate Title CRC.
- [FONT:0)LOAD AND HASH:) Donanım imajını aynı anda bellekte depolarken (veya buffering) depolamak için bir ping-pong tamponunu kullanın.
- [FONT:0) İLMİŞ: [DNTT:1] SHA-256 sindirdikten sonra, ECDSA doğrulama işlemini üst düzeye çıkararak doğrulama sonucu bekleyin.
- [FONT:0)LOAD OK:[Dönem:[Dönem: 1) Eğer doğrulama geçerse, FPGA yapılandırma mantığına bir sonraki aşama için geçerli olan bir sinyal olarak onaylanır (veya dış flaş konumundan gelen)
- [FONT:0)FAIL:[Dönetici:[Dönetici: 0) Eğer doğrulama başarısız olursa veya herhangi bir hata tespit edilirse, güvenli bir duruma gir. (eğer mevcutsa) Altın görüntü ile tekrarla tekrar deneyin.Eğer bir altın görüntüyü sıfırlayın ve bir uyarı pin talep edebilir.
Bu FSM'yi tek bir işlemle iki (devlet, sonraki state) ve eş zamanlı çıktıları kullanarak, FSM'yi üç kez tekrarlayın ve her devlet kaydını bir oylamaya geri dönün.
VHDL'de Güvenli Anahtar Yönetimi
VHDL'deki kriptografik anahtarlar aşırı dikkatli gerektirir. Anahtar veriler, belirlenen güvenli modül dışında asla düz metinde görünmelidir.
- Anahtar depolama için ayrı, izole bir modül kullanın.Rektörün geri kalanı sadece hazır bir sinyal döndürür özel bir arayüz aracılığıyla anahtar teslim edilir. Anahtar, kullanımdan sonra temizlenen bir kayıt aracılığıyla kripto çekirdeğine aktarılır.
- Asla yorum veya log anahtar değerleri. Simülasyonda, şifreli test eches kullanın veya anahtar değişkenleri baskıktan kaçının.
- Anahtarlar eFUSE veya BBRAM'da depolanırsa, VHDL kodu doğrudan donanıma olan satıcılarla ilkelleri kullanmalıdır. gözlemlenebilir özel kodlayıcıları uygulama.
- PUF tabanlı anahtarlar için, yardımcı veri işleme mantığı (örneğin, hata düzeltme kodu) anahtar store modülü içinde içerir. PUF çıktısı ephemeral; bootloader her seferinde anahtarı yeniden üretmelidir.
- JTAG veya debug erişimini anahtar programlamadan sonra kilitlemek için bir programlanabilir kontrol kullanmayı düşünün, test portu aracılığıyla anahtarın okumasını engellemeyi bırakın.
Hata işleme ve kurtarma
Robust hatası, güvenli bir bootloader için gereklidir. Aşağıdaki mekanizmalar uygulanmalıdır:
- [FONT:0)Memory ECC:[Döntgen:[D) Eğer dış flaş ECC kullanırsa, bootloader tek-bit hataları kontrol etmeli ve çok-bit hataları rapor etmelidir.
- [FONT:0)Timeout sayacı: [Dönetici: [Dönetici] Her kripto operasyonu için, bir zaman çizelgesi ayarlayın.Eğer temel, SEU veya glitch nedeniyle belirli bir pencerede bir sonuca geri dönmezse, bir hataya işaret eder.
- [FONT:0) Redplacet doğrulama:[Dönetici:[Dönetici:0) Belirli yan kanal saldırıları yenmek için iki farklı özellik veya iki anahtarla (iki farklı özellik) anahtarlama.
- [FONT:0) Güvenli devlet:[Dönemli bir başarısızlık üzerine, bootloader FPGA'yı kilitlemelidir, muhtemelen tüm çıktıları bozmak ve herhangi bir kullanıcı mantığı yüklememek.Bu, kısmi bir bitekini yürütmeden bir saldırganı engeller.
Test erişim portu (if güvenlik izin) ile okunabilir veya daha sonra analiz için kullanılamaz bir kayıt için yazılabilir. ancak, kriptografik bilgileri yanlış mesajlar yoluyla dağıtmaya dikkat edin.
FPGA Güvenli Silahlar için En İyi Uygulama ve Güvenlik İpuçları
VHDL uygulamasının ötesinde, aşağıdaki uygulamalar güvenlik duruşunu artırır.
Donanım-Accelerated Cryptograph
SHA-256 veya ECDSA'nın LUTs'te yumuşak uygulamaları ve yüz yüze daha hassastır (gerekli, güç) Bu tür çekirdekleri kullanarak, kripto motorlarını kullanarak, Xilinx Vivado, ECC operasyonları için özel bir DSP dilim sağlar.
Anahtar Rotasyon ve Yaşam döngüsü Yönetimi
Güvenli bootloaders, halkın anahtarını taviz vermeden halka açık anahtarını güncellemeli. One method: Sertifika parsing ve zincir doğrulama için bir sertifika zinciri depolamak, ancak ayrıca anahtarını kullanarak, imzalama anahtarını da kontrol eder.The updateloader it allows the field upgrades of the distributed key update blob that can replace the public key.The update must be signed by the original private key.
Fiziksel Güvenlik Önlemleri
Düşman ortamlarda FPGA'lar (örneğin, otomotiv, havacılık) fiziksel saldırılara karşı korumaya ihtiyaç duyuyor:
- [FONT=0)Antitamper tespiti:[Dönetici:[Dönetici:0) FPGA'nın çip sıcaklığı ve gerilim sensörleri (örneğin, SYSMON) soğutma girişimleri veya glitch eklemelerini tespit etmek için.
- [FONT:0)Pekizlenmiş bitim:[Döncüm:0)[Döncük güvenli olsa bile, biraz daha şifreli olmalıdır (örneğin, AES-256) yapılandırma sırasında resepsiyonu önlemek için.
- [FONT:0)JTAG devre dışı bırak: [DÜDÜT:1] Üretimden sonra, JTAG erişimi geçici olarak eFUSE ile devre dışı bırakamaz.If JTAG etkinleştirilirse, bir saldırgan tamamen bootloader atlayabilir.
- [FONT:0)Shielding ve tamper ağ: Yüksek güvenlik uygulamaları için, PCB'nin fiziksel koruyucusu ve tamper-responsive Lattice MachXO3D FPGA'yı tamper tespit edildiğinde sıfırlanan anahtarları kullanın.
Standartlarla Uyum
Uygulama alanına bağlı olarak, bootloader güvenlik standartlarına uymaya ihtiyaç duyabilir:
- [FONT=0]NIST SP 800-193[[Döneticileri Yetkili): Güvenli boot, update ve kurtarma için yönergeleri tanımlayın.The bootloader must be able to verifying Software updates and recoverying from permission changes.
- [FONT=0)FIPS 140-2/140-3[Dönetici:0)[Dönetici Modül Geçerliliği): Eğer bootloader kriptografik işlemleri gerçekleştirirse, tüm dizin onaylanabilir.(e.g., 03.03.2012)
- [FONT:0)IEC 62443 [Dönetici iletişim ağları güvenliği): programlanabilir mantık kontrolörlerinde izin vermede güvenli bir şekilde önyükleme gerektirir (PLCs).
- [FONT:0]DO-254[[Dönemli sistemler için tasarım Garanti Seviyesi): Avanonikler için, bootloader titiz doğrulama ve resmi yöntemlerle geliştirilmelidir.
bootloader'in güvenlik iddialarını belgelemek ve test metodolojisi sertifikasyon için gereklidir. VHDL test benches hata enjeksiyon kampanyalarını (örneğin hafıza veya imzadaki parçaları) doğru şekilde reddederek, bootloader'in tampered görüntüleri reddetmesi gerekir.
Test ve Geçerlilik
Thoroughly çeşitli senaryoların altında bootloader test edin:
- [FONTD:0]Functional testleri:[Dönetici:[Dönetici:0)[Döntilmiş bir anahtarlamanın geçerli bir anahtarlama görüntüsüne sahip olduğunu ve yükleyicinin FAIL durumuna girdiğini onaylayın.
- [FONT:0)Timing kapanışı:[Döncüm:[Döncüm:0) Hedef frekansta zamanlamayı sağlamak. Kripto çekirdeği genellikle yüksek gecikmeliliğe sahiptir; ihlallerden kaçınmak için veri yolları boru hattı.
- [FONT=0)Power-on reset davranışı:[Dönetici:[Dönetici:0)[Gönetici:0) Güç-up yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş, sıfır saatler için gürültü.
- [FONT=0)SEU simülasyonu: Hata enjeksiyon araçları kullanın (örneğin, Xilinx XCI ile hata API) devlet makinesinde biraz çevirmek ve köpek sayacı izlemek için. TMR veya hata algılamalarının doğru bir şekilde geri döndüğünüz.
- [FONT:0]Side-channel sızıntı değerlendirmesi:[Dönetici: 0D:0) Grafikte güç analizi veya elektromanyetik radyasyon ölçümlerini prototip üzerinde gerçekleştirir, bu anahtar işlemlerin hassas veri kullanmamasını sağlar. Sürekli zamanlı kripto uygulamaları kullanmayı düşünün.
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
VHDL'de güvenli bir bootloader'i FPGA sistemleri için uygulama, kriptografik ayrıntılara, donanım entegrasyonuna ve hata toleransına dikkat eden çok yönlü bir mühendislik meydan okumasıdır.Relamento-standart kimlik doğrulama mekanizmaları kullanarak, ECDSA gibi endüstri standart doğrulama mekanizmaları kullanarak ve VHDL'deki sağlam son derece açık hava makineleri tasarlayın, geliştiriciler tampering, donanım entegrasyonuna ve hata toleransına karşı çıkan bir bootloader yaratabilir.
FPGA kabulü kritik altyapıda büyüdükçe, güvenli bootloader daha karmaşık VHDL modülleri gerektirecek temel bir bina haline gelir, ancak uygun tasarım ve doğrulama kartları sistem güvenliği ve güvenilirlikleri için ödeme yapar.Gelecek eğilimler satıcı başvuru notları (örneğin, CRYSTALS-Dilithium) için daha karmaşık bir VHT (Dönetici) ve kriptografik bir tasarıma ilişkin ilkelere göre değişir.