Mengamankan kode pada AVR / Arduino dan mengirimkan pembaruan

9
  1. Apa cara terbaik untuk melindungi kode yang dipasang ke perangkat berbasis AVR dari rekayasa balik?
  2. Apa cara mudah untuk memberikan pembaruan kepada pengguna akhir untuk mem-flash sendiri tanpa mengungkapkan kode? (Apakah dengan bootloader yang mendekripsi gambar terenkripsi?)

Jangan memecat saya karena mempromosikan DRM, saya mendukung platform terbuka - Saya hanya ingin tahu bagaimana ini akan bekerja.

stbtra
sumber
Jangan. Ada NO WAY untuk sepenuhnya mencegah kemungkinan orang jahat reverse engineering hardware / perangkat lunak. Semua tindakan Anti-RE lakukan adalah membuatnya lebih lama untuk mundur.
Connor Wolf

Jawaban:

9

Pertama:

Ada sekering pada chip yang dapat diatur untuk mencegah alat eksternal membaca kode dari chip. Cari sekering perlindungan dalam lembar data dan / atau dokumentasi pemrogram Anda.

Itu tidak sempurna, tetapi melindungi Anda dari serangan sederhana.

Kedua:

Anda tidak dapat mengunduh firmware dengan aman. AVR tidak dapat memprogram mandiri area yang dilindungi:

http://www.atmel.com/dyn/resources/prod_documents/doc1644.pdf

Yang terbaik yang dapat Anda lakukan adalah menggunakan bahasa token terenkripsi (seperti dasar, atau sebagainya) dan memiliki penerjemah yang dilindungi pada chip dengan bootloader yang dapat memprogram token terenkripsi ke area terbuka. Saat berjalan, chip akan mendekripsi dan menjalankan instruksi dengan cepat.

Adam Davis
sumber
3
Jika sekeringnya sedikit tidak sempurna, serangan apa yang bisa melewatinya?
1
@ Anonim - Secara kimia, etsa penutup chip dan menggunakan mikroskop elektron, laser, dan mikroprob untuk melihat, berinteraksi dengan, dan mengedit silikon. Biaya setidaknya $ 500, tetapi bisa lebih murah daripada stbra apa pun yang dimasukkan ke dalam perangkat.
Kevin Vermeer
@KevinVermeer Maksud Anda $ 500? Menurut saya itu akan jauh lebih mahal dari itu.
NickHalden
Adam, ada kesalahan, jadi saya menghapus komentar saya
hulkingtickets
3

Jika itu penting dan Anda sangat khawatir tentang pesaing mencuri kode Anda, ambil perlindungan IP pada segmen kode Anda. Anda harus melihat ini jika Anda akan mencoba dan menghasilkan uang dari suatu proyek.

Elemen kode tertentu dapat dipatenkan (untuk metode pemrosesan spesifik dan algoritme baru) atau terdaftar sebagai desain industri (tampilan, tata letak, dan penerapan kode Anda ke perangkat). Anda mungkin ingin berkonsultasi dengan pengacara IP tentang ini.

Tidak jelas
sumber
1

Jika Anda menulis bootloader Anda sendiri yang menerima data terenkripsi melalui port serial, mendekripsi dan menyimpannya ke area penyimpanan kode, Anda bisa mendapatkan pembaruan firmware kode yang aman. Setiap perangkat bahkan dapat memiliki kunci dekripsi sendiri yang unik di bootloader khusus Anda.


sumber
1
Saya pikir apa yang dikatakan @Adam Davis adalah bahwa jika Anda menggunakan bootloader (bahkan yang Anda tulis) maka Anda tidak dapat memprogram area yang dilindungi bit kunci. Jadi, jika Anda menulis bootloader terenkripsi Anda sendiri, Anda tidak dapat mencegah chip agar tidak dibaca (edisi 1). Sepertinya itu yang saya dapatkan dari tautan dan lembar data.
Lou
jika bootloader dan kode terenkripsi akan memecahkan masalah kedua, masalah pertama hampir terselesaikan jika dia menggunakan enkripsi yang cukup aman. (kecepatan UC mungkin leher botol).
Rick_2047
Benar. @Adam Davis menyarankan bahasa token terenkripsi di atas.
Lou