Apakah mungkin untuk mengontrol modul SRAM melalui pin GPIO?

13

Saya ingin melampirkan modul SRAM ke RasPi.

Gagasan saya adalah untuk menyimpan data sensitif (terenkripsi) pada kartu SD tetapi menyimpan kunci pada modul SRAM. Itu akan memiliki baterai cadangan sendiri (atau superkapasitor ) dan sakelar anti-tamper yang akan menghapus konten jika penutup dibuka.

Apakah ada cara untuk antarmuka ke SRAM dengan hanya 8 jalur GPIO yang tersedia?

Modul SRAM itu sendiri akan membutuhkan kapasitas setidaknya 128 bit (ukuran kunci AES terkecil ) tetapi bahkan memori selebar 1-bit tampaknya memerlukan 7 jalur alamat dan satu jalur data ditambah 2 atau 3 jalur kontrol.

Bisakah itu dilakukan? Saya berpikir mungkin untuk menipu dengan menggunakan kembali jalur I / O yang dirancang untuk hal lain.

menemukan
sumber

Jawaban:

4

Untuk menginstal SRAM, saya akan menyarankan menggunakan modul I2C / SPI ( misalnya , daripada menggunakan jalur GPIO. Meskipun berpotensi lebih lambat, itu berarti Anda memiliki jalur GPIO lain untuk hal-hal lain dan SRAM Anda bisa cukup besar.

Meskipun demikian, ada kerugian besar untuk menggunakan SRAM. Misalkan Anda menyimpan beberapa informasi yang sangat berharga pada RPi Anda dan saya sangat jahat. Misalkan saya bisa meretas RPi Anda dan menjalankan kode arbitrer, maka saya bisa mengambil kunci Anda dari SRAM, yang diperlukan untuk mendekripsi data. Ini adalah risiko keamanan. Atau, Anda dapat menggunakan coprocessor AVR / PIC, yang Anda komunikasikan melalui I2C / SPI / UART. Alih-alih melakukan enkripsi / dekripsi pada RPi, Anda akan mengirim data Anda ke coprocessor dan memastikan bahwa tidak ada instruksi untuk mengirim kunci ke RPi Anda. Akan tetapi, ada instruksi untuk membuat kunci baru, dan tentu saja, Anda bisa menyimpan beberapa kunci di coprocessor. Ini bisa membuat proyek kecil yang keren.

Alex Chamberlain
sumber
Terima kasih, tetapi data sensitif tetap harus melewati CPU (jadi sudah dikompromikan jika seseorang mendapatkan akses root ke Pi.)
finnw
Saya setuju hingga batasan tertentu. Jika Anda memiliki kata sandi pada kunci, maka tidak ada cara untuk mendekripsi data yang sudah Anda simpan.
Alex Chamberlain
2
Tidak ada gunanya. Data tidak akan lebih aman di sana daripada di memori normal. Siapa pun yang melakukan root OS bisa mendapatkannya di kedua tempat. Siapa pun yang tidak bisa mendapatkannya di kedua tempat itu.
David Schwartz
@ David Schwartz: Intinya adalah (1) me-rooting OS mengharuskan Anda untuk membuka kasing (2) membuka kasing membuka sakelar yang menghapus SRAM. Siapa pun yang melakukan root OS sekarang memiliki akses ke (a) data dalam memori utama dan flash dan (b) sekelompok nol pada SRAM eksternal, jadi sekarang mereka tidak memiliki kunci untuk mendekripsi data flash. Jelas kita masih harus melindungi OS agar tidak di-root melalui jaringan (seperti yang sudah kita lakukan sebelumnya)
finnw
1
Maka Anda bisa menggunakan MCP79410 . Ini memiliki antarmuka serial dua pin (jam dan data), 64 byte SRAM, dan pin untuk input dari baterai eksternal. Pastikan sakelar sakelar Anda mengubah tegangan baterai dan tegangan suplai!
David Schwartz
4

Anda bisa menggunakan mikrokontroler kecil untuk mengemulasi RAM melalui SPI atau I2C.

Semua kecuali mik yang paling kecil akan memiliki 128 bit RAM untuk menyimpan kuncinya

misalnya

MSP430G2001 memiliki 128 byte RAM
PIC12F508 memiliki 50 byte RAM (16 byte untuk kunci, 34 byte gratis)
PIC10F202 memiliki 24 byte RAM (16 byte untuk kunci, 8 byte untuk kunci, 8 byte gratis)

Jika Anda lebih suka RAM serial, mereka juga ada

23K640 adalah 64kbits / 2.7-3.6V

John La Rooy
sumber
2

Anda mengasumsikan bahwa hanya ada 8 baris gpio yang tersedia di Pi. Bahkan mungkin untuk memiliki hingga 17.

Saya tidak tahu detail cara mengaksesnya, tetapi Anda dapat menemukan informasi lebih lanjut di sini

http://elinux.org/RPi_Low-level_peripherals

David Sykes
sumber
1
Saya baru saja downvoted (saya merasa saya harus menjelaskan), karena Anda cukup banyak hanya memberi tautan, tidak menjelaskan. (Saya tidak tahu apakah Anda akan menghargai ini, tapi saya suka orang-orang mengatakan mengapa saya
kalah
Saya pikir mengetahui Anda bisa mendapatkan lebih dari 8 io baris cukup berguna, tetapi saya menghargai komentarnya
David Sykes
0

Anda dapat menggunakan modul I 2 C SRAM, seperti PCF8570P £ 1,50ish 256x8Bit SRAM. Ini beroperasi antara 2.5V dan 6.0V, memiliki mode hemat daya yang menarik hanya 50nA dan dapat ditumpuk untuk membuat lebih banyak RAM jika diperlukan.

Hubungkan ke I2C secara langsung atau ke Master untuk beberapa perangkat I2C. Hanya menggunakan 2 GPIO, Daya dan Negatif, dengan opsi MCU matikan retensi RAM menggunakan baterai kecil.

masukkan deskripsi gambar di sini

Masalah keamanan Alex Chamberlains harus ditanggapi dengan serius jika Anda ingin melindungi Private Key. Mungkin berpikir tentang membuat semacam isolasi dalam kode Anda yang memerlukan eskalasi untuk mengakses SRAM.

Piotr Kula
sumber