Bảo mật mã trên một AVR / Arduino và cung cấp các bản cập nhật


9
  1. Cách tốt nhất để bảo vệ mã được flash trên bất kỳ thiết bị dựa trên AVR nào từ kỹ thuật đảo ngược là gì?
  2. Một cách dễ dàng để cung cấp các bản cập nhật cho người dùng cuối tự flash mà không tiết lộ mã là gì? (Có phải với bộ tải khởi động giải mã hình ảnh được mã hóa không?)

Đừng kích thích tôi vì đã quảng bá DRM, tôi ủng hộ các nền tảng mở - tôi chỉ tò mò cách thức hoạt động của nó.


Đừng. Có NO WAY để hoàn toàn ngăn chặn khả năng của một người độc hại kỹ thuật đảo ngược phần cứng của bạn / phần mềm. Tất cả những gì các biện pháp Anti-RE làm là khiến nó mất nhiều thời gian hơn để đảo ngược.
Sói Connor

Câu trả lời:


9

Đầu tiên:

Có các cầu chì trên chip có thể được đặt để ngăn các công cụ bên ngoài đọc mã ra khỏi chip. Tìm kiếm các cầu chì bảo vệ trong biểu dữ liệu và / hoặc tài liệu lập trình viên của bạn.

Nó không hoàn hảo, nhưng nó bảo vệ bạn khỏi các cuộc tấn công đơn giản.

Thứ hai:

Bạn không thể tải firmware một cách an toàn. Các khu vực tự bảo vệ không thể lập trình được:

http://www.atmel.com/dyn/resource/prod_document/doc1644.pdf

Điều tốt nhất bạn có thể làm là sử dụng ngôn ngữ mã thông báo được mã hóa (chẳng hạn như cơ bản hoặc tiếp theo) và bảo vệ trình thông dịch trên chip với bộ tải khởi động có thể lập trình mã thông báo được mã hóa vào khu vực mở. Khi chạy, chip sẽ giải mã và thực hiện các hướng dẫn khi đang bay.


3
Nếu cầu chì bit không hoàn hảo, loại hành vi nào có thể bỏ qua nó?

1
@ Đồng nghĩa - Về mặt hóa học khắc đi vỏ bọc của con chip và sử dụng kính hiển vi điện tử, laser và vi khuẩn để xem, giao tiếp và chỉnh sửa silicon. Chi phí ít nhất 500 đô la, nhưng có thể rẻ hơn bất cứ thứ gì mà con rắn làm việc đang đưa vào thiết bị.
Kevin Vermeer

@KevinVermeer Ý bạn là $ 500? Dường như với tôi nó sẽ đắt hơn thế nhiều.
NickHalden

Adam, có một lỗi, vì vậy tôi đã xóa nhận xét của mình
hulkingtickets

3

Nếu điều đó quan trọng và bạn đặc biệt lo lắng về việc các đối thủ đánh cắp mã của bạn, hãy thực hiện bảo vệ IP trên các phân đoạn mã của bạn. Bạn nên xem xét điều này nếu bạn định thử và kiếm tiền từ một dự án nào.

Một số yếu tố của mã có thể được cấp bằng sáng chế (đối với các phương pháp xử lý cụ thể và thuật toán mới) hoặc được đăng ký dưới dạng kiểu dáng công nghiệp (giao diện, bố cục và ứng dụng mã của bạn vào thiết bị). Bạn có thể muốn tham khảo ý kiến ​​một luật sư IP về điều này.


1

Nếu bạn đã viết bộ tải khởi động của riêng bạn chấp nhận dữ liệu được mã hóa qua cổng nối tiếp, giải mã nó và lưu trữ nó vào vùng lưu trữ mã, bạn có thể có cập nhật chương trình cơ sở mã an toàn. Mỗi thiết bị thậm chí có thể có khóa giải mã riêng trong bộ tải khởi động tùy chỉnh của bạn.


1
Tuy nhiên, tôi nghĩ điều mà @Adam Davis đang nói là nếu bạn sử dụng bộ tải khởi động (thậm chí là bạn đã viết) thì bạn không thể lập trình khóa các khu vực được bảo vệ bit. Vì vậy, nếu bạn đã viết bộ tải khởi động được mã hóa của riêng mình, bạn không thể ngăn chip được đọc (vấn đề 1). Dường như đó là những gì tôi nhận được từ liên kết và biểu dữ liệu.
Lou

nếu bộ tải khởi động và mã được mã hóa, nó sẽ giải quyết vấn đề thứ hai, vấn đề đầu tiên gần như được giải quyết nếu anh ta sử dụng mã hóa đủ an toàn. (tốc độ của uC có thể là một cổ chai).
Rick_2047

Thật. @Adam Davis đề xuất một ngôn ngữ mã thông báo được mã hóa ở trên.
Lou
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.