Perpustakaan Enkripsi untuk Arduino

9

Saya menggunakan Arduino untuk membaca keypad dan membuka serangan listrik pada entri PIN keypad. Untuk sketsa ini saya ingin menggunakan semacam enkripsi ringan untuk menyimpan PIN dalam EEProm. Adakah yang tahu perpustakaan seperti itu? Saya telah mendengar mungkin menggunakan TwoFish.

mad_z
sumber

Jawaban:

12

Anda tidak ingin mengenkripsi password (PIN) - Anda ingin hash mereka. Ketika seseorang memasukkan kata sandi, Anda hash kata sandi itu, dan membandingkan hash dengan hash yang disimpan. Keuntungan dari metode ini (digunakan selama lebih dari 30 tahun) adalah bahwa bahkan jika seseorang mendapatkan sumber dan hash, mereka masih tidak dapat mengetahui PIN apa yang cocok dengan hash, selama Anda memilih fungsi hash yang cukup kuat .

Anda tidak ingin menerapkan enkripsi sendiri - Anda ingin menggunakan perpustakaan orang lain, terutama yang dengan implementasi terbuka yang telah diuji oleh komunitas besar. Enkripsi itu sulit, pengujian itu sulit, dan pengujian enkripsi sangat susah, jadi suruh orang lain melakukannya untuk Anda.

Anda harus checkout Perpustakaan AVR Crypto , yang dilisensikan dengan GPLv3. Ada juga implementasi Skein untuk AVR .

Craig Trader
sumber
1
Upvoted - Sumber yang bagus, dan ini harus ditetapkan sebagai jawaban untuk pertanyaan.
Lou
9

Tautan yang diposting Hristos, meskipun mungkin bermanfaat, tentu saja tidak dianggap sebagai "enkripsi". Ini benar-benar hanya "kebingungan".

Kriptografi yang tepat terkenal mudah salah, bahkan bagi orang yang tahu matematika.

Menanggapi pos asli - apa saja metode serangan yang akan membuat seseorang mendapatkan akses ke PIN dalam EEProm? Tentunya jika mereka punya itu jauh ke elektronik Anda mereka hanya bisa "snip kabel merah" dan membuka pintu?

Jika Anda entah bagaimana melakukan memiliki sistem di mana penyerang mungkin mendapatkan isi EEPROM tanpa sudah memiliki cukup akses untuk membuka pintu Anda, Anda mungkin ingin mendesain ulang itu. Anda dapat melihat fungsi hash satu arah yang mirip dengan hasix kata sandi Unix - dengan cara itu EEProm tidak perlu berisi kunci dekripsi - masalahnya adalah ruang pencarian untuk PIN sangat kecil - jika saya dapat mengunduh versi hash dari PIN, saya dapat dengan cepat mencoba semua 10.000 PIN yang mungkin, saya curiga laptop modern apa pun akan menjalankan semuanya dalam beberapa detik.

bigiain
sumber
Saya setuju (dan setuju di atas), hash satu arah akan berguna dan jika Anda memprogram sistem maka Anda dapat membuat pin selama yang Anda inginkan, misalnya 8 digit memberikan 100.000 kombinasi, yang akan memakan waktu lebih lama.
Amos
1

Masalah yang saya lihat adalah bahwa jika mereka dapat melihat pin Anda, mereka juga dapat melihat program Anda yang mengenkripsi / memeriksa / mendekripsi pin Anda. Plus jika mereka memiliki chip Anda, dapatkah mereka tidak hanya mengubah program untuk selalu memberikan hasil positif (secara efektif melewati cek) untuk setiap pin yang dimasukkan.

Amos
sumber
1

Bagaimana Anda berencana untuk men-decode PIN terenkripsi, untuk memeriksa apakah pengguna memasukkan PIN yang valid? Anda harus menyimpan kunci dekripsi ... di mana penyerang dapat membaca eeprom Anda, ia juga dapat membaca flash Anda untuk menemukan kunci enkripsi. Pada dasarnya merender seluruh enkripsi Anda sama sekali tidak berguna. Juga seperti kata orang lain, jika dia sudah memiliki kemampuan untuk membaca chip Anda, dia bisa saja menulis program baru. Jauh lebih sederhana dengan hanya menendang pintu terbuka, saya ragu ada orang yang akan kesulitan mencoba meretas chip Anda.

davr
sumber
1

Sini adalah metode penulisan sederhana dalam bahasa C yang dapat dengan mudah dipindahkan ke Arduino. Ini sepertinya cara termudah untuk mengenkripsi data dengan sumber daya terbatas Arduino.

-EDIT- Untuk menjaga kunci keluar dari program Anda, Anda bisa membuat setengah dari PIN kunci. Ini berarti bahwa program Anda mengambil setengah kunci dari PIN untuk mendekripsi 1/2 PIN terenkripsi yang disimpan dalam EEProm. Jika kunci yang didekripsi dari EEP dari cocok dengan bagian dari pin Anda yang bukan kunci, pintu akan terbuka. Ini hanya akan bekerja dalam situasi di mana penyusup tidak mungkin mendobrak pintu atau memprogram ulang Arduino.

Hristos
sumber
Tetapi jika mereka tidak memiliki akses ke chip Anda, Anda tidak perlu mengenkripsi pin.
Amos
1

Aku benci tidak menjawab pertanyaan sambil menanyakan yang lain, tapi ...

Apakah ada beberapa alasan mengapa perangkat Anda tidak bukti rusak? Saya telah melihat saklar tombol di lubang sekrup diimplementasikan 'di bangku' untuk mendeteksi jenis gangguan yang Anda khawatirkan. Lalu .. inilah anak dengan obor mikro butana yang mengelola untuk mendapatkan chip Anda tanpa melepaskan apa pun (atau merusak chip) .. entah bagaimana, ia tahu desain sistem bukti kerusakan Anda yang (juga, semoga) termasuk mendeteksi perubahan dalam cahaya sekitar dan / atau suara. Ketika penutup lepas, keduanya menjadi sangat berbeda .. siang atau malam hari.

Jika itu masalahnya, itu harus menjadi sistem dua bagian di mana potongan-potongan terbuka berkomunikasi dengan sesuatu di mana enkripsi lebih mudah diimplementasikan. Plus, checksum (bantuan) bertanggung jawab untuk anak dengan obor.

Saya pikir Anda meminta obeng untuk menjadi palu.

Pos Tim
sumber
1

Komentar-komentar ini sangat tepat. Tidak ada yang salah dengan mencoba bereksperimen untuk belajar tentang enkripsi, tetapi ini sebenarnya bukan proyek yang bagus untuk mempelajari hal-hal seperti itu. Anda benar-benar menginginkan buku teks dan komputer yang bagus, dan seperti yang dikatakan @bigiain, perhitungannya sangat mudah salah.

Untuk pemahaman yang lebih baik tentang cara kerja kriptografi dan apa yang Anda hadapi, Buku Pegangan Kriptografi Terapan sangat bagus dan gratis:

Jika Anda hanya ingin mengamankan proyek Anda, ini adalah cara yang tidak efisien untuk melakukannya. Jika Anda tertarik dengan kriptografi, mulailah dengan buku ini dan komputer.

Lou
sumber
Saya mengerti kriptografi, membaca Bruce Schneier, dan telah memprogram selama lebih dari dua puluh tahun. Saya mengerti ancaman sebenarnya adalah mendobrak pintu dan berjalan melewati pengontrol Arduino apa pun. Saya hanya tidak bisa dengan hati-hati menginstalnya dengan PIN teks yang jelas di EEProm jika itu bisa dihindari. Terbang
Ada sejumlah metode kebingungan sederhana yang akan sama efektifnya dalam peran ini jika Anda ingin menghindari menyimpan PIN teks yang jelas. Para responden di atas hanya berusaha membantu Anda memahami apa yang dilakukan dan tidak dilakukan kriptografi. Berikut adalah perpustakaan AES: hoozi.com/Articles/AESEncryption.htm Saya juga ingin mengatakan bahwa hanya karena Anda telah memprogram selama 20 tahun, itu tidak berarti Anda "memahami" kriptografi. Ini adalah bidang yang sama sekali berbeda. Seorang mekanik mobil 20 tahun adalah orang yang ahli, tetapi saya tidak akan mengharapkan dia untuk merancang bus CAN dari awal. Tolong periksa sikap Anda.
Lou
Ya Tuhan ... 20 tahun coding dan Anda pikir itu mungkin untuk mengenkripsi data runtime ????? Berhenti.
MickLH