Làm thế nào để lưu đúng kiến ​​trúc trong một ic fpga mãi mãi


8

Xem xét tôi đã tạo ra một kiến ​​trúc để làm một số điều cụ thể, ví dụ đã viết bằng vhdl.

Tôi có thể 'đốt' nó trong chip fpga mãi mãi không? Hoặc tôi nên làm thế nào, bảo vệ thuộc tính trực quan khi biết thực tế nó có thể được đọc từ bộ nhớ flash nối tiếp?

Câu trả lời:


12

Xilinx Spartan 3AN FPGA có đèn flash bên trong làm cho chúng không biến đổi. Câu hỏi của bạn thực sự là nhiều câu hỏi.

1) Là đồ họa dễ bay hơi hay không dễ bay hơi? Hầu hết đều không ổn định, đòi hỏi dòng bit cấu hình phải được đọc vào FPGA từ một thiết bị lưu trữ không biến đổi bên ngoài ở mỗi lần bật nguồn. Có một số không dễ bay hơi. Giống như Xilinx S3AN tôi đề cập.

2) Làm thế nào để bạn bảo vệ dòng bit cấu hình? Có nhiều câu trả lời cho câu hỏi này.

Bạn có thể mã hóa dòng bit; có nghĩa là dòng bit được lưu trữ trên thiết bị lưu trữ không biến đổi được thảo luận ở trên là một bản mã duy nhất chỉ có thể được giải mã bởi một fpga duy nhất với khóa thích hợp. Điều này sẽ bảo vệ chức năng của dòng bit khỏi bị phát hiện bởi kỹ thuật đảo ngược. Điều đó có nghĩa là ngay cả khi dòng bit được mã hóa có thể được trích xuất từ ​​thiết bị lưu trữ không biến đổi, dù là phương tiện tại chỗ hoặc có tính phá hủy cao hơn, cảm giác sẽ không thể được tạo ra từ tệp được trích xuất vì nó được mã hóa.

Bạn cũng có thể đặt dòng bit bị cấm đọc lại. Giao diện JTAG mà người ta sử dụng để lập trình một FPGA tại thời điểm gỡ lỗi thường có thể được sử dụng để đọc dòng bit cấu hình ra khỏi fpga. Đặt tùy chọn NO_READBACK cấm điều này.


1
Làm thế nào để bản thân FPGA có thể đọc được dòng bit được mã hóa nếu không thể giải mã nó? Câu trả lời tất nhiên có thể giải mã dòng bit. Nó chỉ khó khăn hơn một chút vì nó bị xáo trộn.
ntoskrnl

Huh? Dòng bit của bản rõ (gọi là Bpt) được mã hóa bởi một hàm mã hóa Ek () lấy bản rõ và một khóa bí mật (gọi nó là Khóa) để tạo một dòng bit bản mã (gọi là Bct), vì vậy Bct = Ek (Bpt, Key) . Điều này được lưu trữ và tại thời điểm khởi động được truyền trực tiếp tới FPGA, nơi biết khóa bí mật, do đó nó có thể giải mã nó, Bpt = Ek (Bct, Key). Không có Khóa, bên thứ ba có thể thực hiện thao tác giải mã. Với thời gian xử lý và các công cụ mã hóa khác, bên thứ ba có khả năng tìm ra bản rõ, nhưng không thông qua quá trình giải mã dự định.
Vui vẻ

Kẻ tấn công chỉ đơn giản là có thể tìm ra chìa khóa và tiến hành giải mã bản rõ. Tôi đoán rằng khóa có thể được thực hiện khá khó khăn để khôi phục từ phần cứng (ví dụ: thẻ thông minh), nhưng nếu nó được lưu trữ trong một số loại bộ nhớ thông thường, thì nó sẽ không khó hơn phục hồi bản mã.
ntoskrnl

1
Đúng, mã hóa chỉ an toàn như khóa là an toàn. Tôi không thể nói chuyện với các GPU không phải Xilinx, nhưng trên các Xilinx, các phím này không thể phục hồi được thông qua các biện pháp không xâm lấn / không phá hủy.
Vui vẻ

Liên kết này bao gồm rất nhiều cuộc thảo luận này: xilinx.com/support/documentation/application_notes/
mẹo

7

Có thể tìm thấy các GPU với bộ nhớ chương trình không bay hơi tích hợp. Ví dụ: microsemi (trước đây là Actel) chuyên về loại thiết bị này.

Các nhà cung cấp khác cung cấp tùy chọn để lập trình mặt nạ cho một đồ họa. Ví dụ, Xilinx gọi các thiết bị được lập trình mặt nạ của họ là " EasyPath ". Điều này không yêu cầu thanh toán NRE, theo như tôi biết, vì vậy nó không phù hợp với các tình huống mà bạn có thể cần cập nhật thiết kế của mình. (Hat tip cho alex.forencich cho sự điều chỉnh)


2
Các EasyPath FPGA không được lập trình mặt nạ, chúng chỉ được kiểm tra tùy chỉnh cho dòng bit của bạn, giảm chi phí kiểm tra và tăng năng suất (chúng có thể chịu được các lỗi trong các thành phần mà thiết kế của bạn không sử dụng). FPGA vẫn yêu cầu đèn flash cấu hình với thiết kế của bạn được tải để hoạt động. Nếu nó thực sự được lập trình mặt nạ, NRE sẽ rất lớn.
alex.forencich

6

Tôi ít nhất có thể nói thay thế, tôi cho rằng Xilinx sẽ có một cái gì đó tương tự. Họ có tùy chọn mã hóa tệp bạn đưa vào flash ngoài hoặc EEPROM. Sau đó, bạn tải khóa giải mã vào phần thay thế, sử dụng bộ lưu trữ khóa không dễ bay hơi hoặc được hỗ trợ bằng pin.

Vì bạn không thể đọc khóa nên nó bảo vệ ip của bạn. Họ đã mất chiến thắng thiết kế trước Asics vì họ không thể bảo vệ IP của mọi người nên đây là một tính năng khá phổ biến.

http://www.altera.com/devices/fpga/stratix-fpgas/about/security/stx-design-security.html


0

Cách duy nhất bạn có thể thực hiện điều này là mua một mô-đun Flash riêng (nếu bạn chưa có trên PGA) và tải mã của bạn vào ram, tuy nhiên điều này không được khuyến khích cho tất cả các rắc rối, chỉ cần mua một cái gì đó như CPLD nếu bạn lên kế hoạch lập trình lại ở điểm sau hoặc ASIC nếu bạn không có ý định lập trình lại lần nữa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.