PDA

View Full Version : Encryption bootloader: tạo key riêng biệt cho mỗi thiết bị?


voicewithin
03-02-2012, 04:36 PM
Hi,

Mình cần tạo encryption key riêng biệt cho mỗi thiết bị, hiện tại chỉ nghĩ với mỗi thiết bị khác nhau thì sửa code và compile lại để có code với key mới, nhưng như vậy không thể làm hàng loạt được. Có cách nào tạo code hoặc sửa file để cho ra các file hex gần giống nhau chỉ khác encryption key cho mỗi thiết bị riêng biệt không?

Thanks

ideacoding
03-02-2012, 05:58 PM
Chào bạn,

Theo mình nghĩ thì để sửa file .hex không phải là không thể nhưng cực kỳ nguy hiểm. Bạn có thể làm theo cách này :
- Nạp key tương ứng của thiết bị vào một vùng nhớ không bay hơi như EEPROM (hiện tại hầu hết các MCU đều hỗ trợ).
- File nạp bao gồm:
+ File chương trình (.hex)
+ File key tương ứng với thiết bị (có thể bao gồm cả thuật toán).
Theo cách làm như trên, bootloader của bạn phải làm 2 việc :
- Nạp chương trình vào flash
- So sánh key (sau thuật toán giải mã key) để có thể kích hoạt chương trình chạy

Không biết cách làm trên có thể giải quyết giùm bạn bài toán trên chưa ?

KnowMore
13-03-2012, 10:01 PM
Key nên lưu ở EEPROM, và khóa cấm đọc EEPROM từ ngoài (qua đường ICSP)
Đặt Key mặc định cho mỗi thiết bị
Chỉ cho phép đọc và thay đổi Key qua chương trình
Yêu cầu đổi Key vào lần khởi động đầu tiên (nếu cần thiết)

Việc lưu Key trên EEPROM và Flash không khác nhau nhiều lắm (nếu chip hỗ trợ). Nhưng nếu lưu trên Flash thì có thể sẽ bị mất Key nếu nạp mới chương trình (Flash và EEPROM có thể được nạp riêng biệt).