cara menyimpan arsitektur dalam fpga ic dengan benar selamanya
8
Mengingat saya membuat arsitektur untuk melakukan beberapa hal tertentu, tulis dalam vhdl, misalnya.
Bisakah saya 'membakarnya' dalam chip FPGA, selamanya? Atau bagaimana saya harus melakukannya, melindungi properti intelektual mengetahui fakta bahwa itu dapat dibaca dari memori flash serial?
Xilinx Spartan 3AN FPGA's memiliki flash internal yang membuatnya tidak mudah menguap. Pertanyaan Anda sebenarnya adalah beberapa pertanyaan.
1) Apakah FPGA volatile atau non-volatile? Sebagian besar bersifat volatile, membutuhkan bitstream konfigurasi untuk dibaca ke dalam FPGA dari perangkat penyimpanan nonvolatile eksternal pada setiap power on. Ada beberapa yang tidak mudah menguap. Seperti Xilinx S3AN yang saya sebutkan.
2) Bagaimana Anda melindungi bitstream konfigurasi? Ada beberapa jawaban untuk pertanyaan ini.
Anda dapat mengenkripsi bitstream; yang berarti mengatakan bahwa bitstream yang disimpan pada perangkat penyimpanan nonvolatile yang dibahas di atas adalah ciphertext unik yang hanya dapat didekripsi oleh fpga tunggal dengan kunci yang sesuai. Ini akan melindungi fungsionalitas bitstream agar tidak ditemukan oleh rekayasa terbalik. Artinya, bahkan jika bitstream terenkripsi dapat diekstraksi dari perangkat penyimpanan nonvolatile, baik in-situ atau cara yang lebih merusak, akal tidak akan dapat dibuat dari file yang diekstrak karena dienkripsi.
Anda juga dapat mengatur bitstream agar dilarang dibaca kembali. Antarmuka JTAG yang digunakan seseorang untuk memprogram FPGA pada waktu debug umumnya dapat digunakan untuk membaca bitstream konfigurasi kembali dari FPGA. Menetapkan opsi NO_READBACK melarang ini.
Bagaimana FPGA itu sendiri dapat membaca bitstream terenkripsi jika tidak mungkin untuk mendekripsi itu? Jawabannya tentu saja adalah mungkin untuk mendekripsi bitstream. Itu hanya sedikit lebih sulit karena itu dikaburkan.
ntoskrnl
Hah? Bitstream plaintext (sebut saja Bpt) dienkripsi oleh fungsi enkripsi Ek () yang mengambil plaintext dan kunci rahasia (sebut saja Key) untuk membuat bitstream ciphertext (panggil Bct), jadi Bct = Ek (Bpt, Key) . Ini disimpan dan pada saat boot mengalir ke FPGA, yang mengetahui kunci rahasia, sehingga dapat mendekripsi, Bpt = Ek (Bct, Key). Tanpa Kunci, pihak ketiga tidak dapat melakukan operasi dekripsi. Mengingat waktu pemrosesan dan alat cryptoanalytic lainnya, pihak ketiga berpotensi menemukan plaintext, tetapi tidak melalui proses dekripsi yang dimaksud.
Jotorious
Penyerang hanya bisa menemukan kunci juga dan melanjutkan untuk mendekripsi plaintext. Saya kira kuncinya dapat dibuat sangat sulit untuk pulih dari perangkat keras (misalnya kartu pintar), tetapi jika disimpan dalam beberapa jenis memori biasa, seharusnya tidak lebih sulit daripada memulihkan ciphertext.
ntoskrnl
1
Benar, enkripsi hanya seaman kuncinya aman. Saya tidak dapat berbicara dengan FPGA non-Xilinx, tetapi pada FPGA Xilinx kuncinya tidak dapat dipulihkan melalui tindakan non-invasif / non-destruktif.
Dimungkinkan untuk menemukan FPGA dengan memori program non-volatile terintegrasi. Misalnya, Microsemi (sebelumnya Actel) berspesialisasi dalam jenis perangkat ini.
Vendor lain menawarkan opsi untuk menutupi program FPGA. Misalnya, Xilinx menyebut perangkat yang diprogram topeng mereka " EasyPath " FPGAs. Sejauh ini saya memerlukan pembayaran NRE, jadi tidak sesuai untuk situasi di mana Anda mungkin perlu memperbarui desain Anda. (Hat tip to alex.forencich untuk koreksi)
EasyPath FPGA tidak diprogram secara mask, mereka hanya diuji secara khusus untuk bitstream Anda, mengurangi biaya pengujian dan meningkatkan hasil (mereka dapat mentolerir cacat pada komponen yang desain Anda tidak gunakan). FPGA masih memerlukan konfigurasi flash dengan desain Anda dimuat agar dapat berfungsi. Jika itu benar-benar diprogram, NRE akan sangat besar.
alex.forencich
6
Saya setidaknya bisa berbicara untuk altera, saya berasumsi Xilinx akan memiliki sesuatu yang serupa. Mereka memiliki opsi untuk mengenkripsi file yang Anda masukkan ke dalam flash eksternal atau EEPROM. Kemudian Anda memuat kunci dekripsi ke bagian altera, menggunakan penyimpanan kunci yang tidak mudah menguap atau baterai yang didukung.
Karena Anda tidak dapat membaca kunci itu melindungi ip Anda. Mereka kehilangan kemenangan desain untuk Asics karena mereka tidak dapat melindungi IP orang jadi ini adalah fitur yang cukup umum.
Satu-satunya cara Anda dapat mencapai ini adalah dengan membeli modul Flash terpisah (jika Anda belum memilikinya di PGA) dan memuat kode Anda ke ram, namun ini tidak dianjurkan untuk semua kerumitan, hanya membeli sesuatu seperti CPLD jika Anda rencanakan pemrograman ulang pada titik berikutnya atau ASIC jika Anda tidak memiliki niat memprogram ulang lagi.
Dimungkinkan untuk menemukan FPGA dengan memori program non-volatile terintegrasi. Misalnya, Microsemi (sebelumnya Actel) berspesialisasi dalam jenis perangkat ini.
Vendor lain menawarkan opsi untuk menutupi program FPGA. Misalnya, Xilinx menyebut perangkat yang diprogram topeng mereka " EasyPath " FPGAs. Sejauh ini saya memerlukan pembayaran NRE, jadi tidak sesuai untuk situasi di mana Anda mungkin perlu memperbarui desain Anda.(Hat tip to alex.forencich untuk koreksi)sumber
Saya setidaknya bisa berbicara untuk altera, saya berasumsi Xilinx akan memiliki sesuatu yang serupa. Mereka memiliki opsi untuk mengenkripsi file yang Anda masukkan ke dalam flash eksternal atau EEPROM. Kemudian Anda memuat kunci dekripsi ke bagian altera, menggunakan penyimpanan kunci yang tidak mudah menguap atau baterai yang didukung.
Karena Anda tidak dapat membaca kunci itu melindungi ip Anda. Mereka kehilangan kemenangan desain untuk Asics karena mereka tidak dapat melindungi IP orang jadi ini adalah fitur yang cukup umum.
http://www.altera.com/devices/fpga/stratix-fpgas/about/security/stx-design-security.html
sumber
Satu-satunya cara Anda dapat mencapai ini adalah dengan membeli modul Flash terpisah (jika Anda belum memilikinya di PGA) dan memuat kode Anda ke ram, namun ini tidak dianjurkan untuk semua kerumitan, hanya membeli sesuatu seperti CPLD jika Anda rencanakan pemrograman ulang pada titik berikutnya atau ASIC jika Anda tidak memiliki niat memprogram ulang lagi.
sumber