Apakah benar-benar mustahil untuk mengetahui apa yang sedang dilakukan CPU? [Tutup]


24

Pemrogram komputer sering melafalkan mantra bahwa instruksi x86 benar-benar buram: Intel memberi tahu kami bahwa mereka sedang melakukan sesuatu, tetapi tidak ada harapan bahwa siapa pun dapat memverifikasi apa yang terjadi, jadi jika NSA menyuruh mereka untuk kembali ke RNG mereka, maka kita tidak bisa benar-benar lakukan apa saja.

Yah, saya percaya bahwa pemrogram komputer tidak bisa berbuat apa-apa tentang masalah ini. Tetapi bagaimana seorang insinyur listrik akan menyerangnya? Apakah ada teknik yang bisa digunakan insinyur listrik untuk memverifikasi bahwa rangkaian benar-benar melakukan operasi yang dijelaskan dalam spesifikasi, dan tidak ada operasi lain?


5
Anda harus melakukan sesuatu seperti xray the die dan menganalisis segalanya untuk melihat apa yang sebenarnya dilakukannya. Pada dasarnya merekayasa ulang chip dan memperhitungkan fungsi setiap sirkuit. Sama sekali tidak praktis.
DKNguyen

7
Tidak ada sirkuit listrik yang melakukan spesifikasi yang tepat karena kebisingan dan sedikit kemungkinan bahwa suatu hari akan ada kesalahan yang "cukup besar".
Andy alias

5
Info menyenangkan: Ini samar-samar terkait dengan setan Laplace .
Harry Svensson

6
Akan lebih mudah untuk mencuri dokumen internal dari basis data konten Intel daripada merekayasa balik bahkan satu CPU Intel modern yang kompleks.
hutan

14
@Harper Sikap Anda tidak konstruktif, dan pernyataan Anda bahwa pintu belakang tidak dapat disembunyikan dalam perangkat keras adalah tidak benar.
pjc50

Jawaban:


14

Makalah terbaik yang saya baca tentang masalah ini adalah "Stealthy Dopant-Level Hardware Trojans" (Becker et al) dari 2014.

Karena sirkuit yang dimodifikasi tampaknya sah pada semua lapisan kabel (termasuk semua logam dan polisilikon), keluarga Trojan kami tahan terhadap sebagian besar teknik deteksi, termasuk inspeksi optik butiran halus dan pengecekan terhadap “kepingan emas.” Kami menunjukkan efektivitas pendekatan kami dengan memasukkan Trojans ke dalam dua desain - pengolahan pasca digital yang berasal dari desain RNG aman cryptographically yang digunakan Intel dalam prosesor Ivy Bridge dan implementasi SBox yang tahan terhadap saluran samping - dan dengan mengeksplorasi kemampuan deteksi dan pengaruhnya terhadap keamanan.

Makalah ini menjelaskan bagaimana perubahan itu dibuat, bagaimana sangat sulit untuk mendeteksi dari memeriksa silikon, teknik untuk menyembunyikannya dari uji produksi, dan bagaimana hal itu dapat dilakukan untuk mengurangi keamanan perangkat keras crypto RNG atau untuk membocorkan informasi penting melalui saluran samping power-rail dari implementasi AES.

Saluran samping adalah bidang minat yang muncul. Intel telah diganggu oleh masalah yang berkaitan dengan eksekusi spekulatif yang membocorkan informasi dari memori yang bahkan tidak digunakan oleh program. Mungkinkah itu cacat desain yang disengaja? Hampir mustahil untuk diceritakan.


Bukankah saluran samping memerlukan semacam pemancar untuk mengirim informasi ke NSA? Kalau tidak, saya pasti akan melihat seseorang mengukur arus listrik di laptop saya saat saya sedang mengerjakannya.
Dmitry Grigoryev

24

Apakah ada teknik yang bisa digunakan insinyur listrik untuk memverifikasi bahwa rangkaian benar-benar melakukan operasi yang dijelaskan dalam spesifikasi, dan tidak ada operasi lain?

Secara teori, ya, saya pikir ini mungkin. Namun, untuk CPU yang kompleks akan membutuhkan banyak waktu dan uang. Juga, jika Anda tidak sepenuhnya mengetahui dan memahami desain, Anda tidak akan dapat menilai apakah ada kegiatan yang "sah" atau tidak.

CPU adalah "hanya" sirkuit digital kompleks yang terdiri dari banyak sel logika.

Dimungkinkan untuk merekayasa balik chip dan merekonstruksi desain dengan mengamati koneksi logam. Mungkin ada banyak dari lapisan koneksi ini seperti hingga 8 lapisan atau lebih.

Anda akan membutuhkan para ahli di bidang ini untuk mengenali sel-sel logika dan kemudian mungkin beberapa perangkat lunak dapat mengetahui bagaimana mereka semua terhubung sehingga Anda dapat merekonstruksi netlist.

Setelah Anda memiliki netlist, Anda "tahu" desainnya. Itu tidak berarti Anda sekarang juga tahu cara kerjanya!

Bisa jadi fungsi tertentu mengaktifkan 2 bagian dari desain sementara Anda berpikir satu harus cukup sehingga Anda kemudian curiga beberapa aktivitas mencurigakan sedang terjadi. Namun, desain melakukan beberapa trik pintar yang tidak Anda ketahui untuk mempercepat operasi.

Tanpa mengetahui dan memahami desain, kesimpulan apa pun yang Anda buat mungkin masih salah. Hanya para insinyur yang mendesain CPU yang memiliki semua informasi desain dan memiliki peluang terbaik untuk dapat mengetahui atau menebak apa yang sebenarnya terjadi atau harus berjalan dalam CPU.


77
Hanya para insinyur yang merancang CPU yang tahu segalanya yang terjadi - Saya kebetulan seorang insinyur yang bekerja di industri ini dan biarkan saya menilai pernyataan ini sebagai pernyataan yang sangat optimistis :)
Eugene Sh.

18
Tidak, perancang CPU tidak akan tahu semua yang terjadi - desain pada tingkat itu tergantung pada alat sintesis, dan mereka bisa menyuntikkan perilaku di luar itu dalam desain HDL. Untuk mengambil contoh non-jahat, banyak alat FPGA akan membiarkan Anda mengkompilasi dalam penganalisa logika.
Chris Stratton

9
Membalik rekayasa sebuah chip dengan "miliaran transistor" akan menghadirkan tantangan. spectrum.ieee.org/semiconductors/processors/…
Voltage Spike

4
@Wilson Karena sirkuit kompleks (termasuk CPU) akan berisi banyak desain eksklusif (dan rahasia, bermerek / dipatenkan) yang tidak tersedia untuk masyarakat umum karena perusahaan yang memiliki desain tersebut ingin mendapatkan manfaat (mendapatkan uang) dari mereka. 6502 adalah desain lama , tidak memiliki informasi desain yang berharga lagi jadi ya, itu sepenuhnya terbuka dan tersedia untuk semua orang.
Bimpelrekkie

3
@Bimpelrekkie: Jika mereka dipatenkan, menurut definisi mereka bukan rahasia. Itulah inti dari sebuah paten. Anda bertukar rahasia untuk monopoli sementara.
MSalters

9

Yah, saya percaya bahwa pemrogram komputer tidak bisa berbuat apa-apa tentang masalah ini. Tetapi bagaimana seorang insinyur listrik akan menyerangnya?

Tidak ada cara yang baik untuk menemukan pintu belakang, salah satu cara untuk menemukan pintu belakang perangkat keras adalah dengan menguji kombinasi atau instruksi tidak berdokumen. Berikut ini adalah pembicaraan yang baik tentang seseorang yang benar-benar melakukan ini dan melakukan audit pada perangkat keras x86 . Ini bisa dilakukan tanpa memecahkan chip. Satu masalah dengan intel (saya tidak yakin tentang chip lain) adalah ia sebenarnya memiliki prosesor dengan linux berjalan di atasnya sehingga ada juga perangkat lunak yang berjalan pada beberapa prosesor, dan Anda tidak memiliki akses ke yang seharusnya.

Apakah ada teknik yang bisa digunakan insinyur listrik untuk memverifikasi bahwa rangkaian benar-benar melakukan operasi yang dijelaskan dalam spesifikasi, dan tidak ada operasi lain?

Ada beberapa cara untuk menguji menggunakan perangkat keras itu sendiri untuk menguji fungsionalitas. Karena x86 memiliki bagian yang tidak terdokumentasi dari set instruksinya, akan tidak biasa untuk memperkenalkan backdoors dalam instruksi normal karena ia akan memperkenalkan kemungkinan bug (seperti jika Anda memiliki pintu belakang dalam instruksi add atau mult), jadi tempat pertama untuk mencari akan ada dalam instruksi tidak berdokumen.

Jika Anda memang perlu menguji fungsionalitas instruksi reguler, Anda dapat menonton waktu yang diperlukan untuk menjalankan instruksi, perhatikan jumlah daya yang diperlukan untuk menjalankan instruksi untuk melihat apakah ada perbedaan dari apa yang Anda harapkan.


3
Saya akan tidak setuju, bukan tidak mungkin seseorang akan melakukan ini, tetapi tidak mungkin. katakanlah Anda melakukan backdoored suatu instruksi reguler seperti instruksi add, dan jika Anda menjalankan instruksi tambahan katakanlah itu membuka backdoor. Kemudian seorang pelanggan mengembangkan sebuah program yang memiliki kombinasi itu, mereka memeriksanya, menemukan pintu belakang dan semua orang menjadi marah dan Anda dituntut. Jauh lebih aman untuk menempatkan backdoor dalam instruksi yang tidak berdokumen (atau komputer linux yang terintegrasi dengan CPU)
Voltage Spike

4
IME menjalankan Minix yang bukan Linux dan jauh lebih kecil dan lebih sederhana. Linux terinspirasi oleh keberadaan Minix dan awalnya menggunakan filesystem-nya dan diumumkan di newsgroup-nya, tetapi mereka sangat berbeda pada waktu itu dan sangat sangat sekarang.
Chris Stratton

5
@ user14717 - kemungkinan buruk akan menjadi urutan pemicu dalam executable asli yang dipenjara, sesuatu seperti klien asli. Tapi tidak ada alasan harus kode dan bukan data .
Chris Stratton

5
@ laptop2d Bug di mana CPU tidak melakukan apa yang dikatakan dokumentasi teoritis dari set instruksi terjadi sepanjang waktu ; tidak ada yang dituntut, biasanya: Baca bagian errata di intel 7th gen Core i7 pembaruan dokumen keluarga, misalnya. Menggunakan instruksi tidak berdokumen akan segera membunyikan alarm peneliti malware mana pun. Menggunakan kombinasi yang tidak biasa dari ADD berirama dengan MOV inter-register yang tepat cenderung memicu alarm.
Marcus Müller

6
@ laptop2d Saya terkejut dengan pernyataan "embedded linux inside the CPU". Jadi saya melakukan sedikit riset, saya kira Anda berbicara tentang mesin Intel ME. Yah, itu tidak berjalan pada CPU itu sendiri, tetapi pada chipset jembatan utara. Tampaknya ada banyak informasi yang salah tentang hal itu, lihat itsfoss.com/fact-intel-minix-case
redup

6

Satu-satunya cara adalah melucuti lapisan chip demi lapisan dan merekam setiap transistor dengan mikroskop elektron, dan kemudian memasukkannya ke dalam semacam program simulasi dan kemudian melihatnya berjalan.

Ini pada dasarnya adalah masalah Kotak Hitam di mana Anda mencoba dan merekonstruksi internal dari pengukuran input dan output. Setelah kompleksitas internal, atau jumlah I / O, melampaui sepele ada ledakan kombinatorial di mana jumlah keadaan internal yang mungkin menjadi astronomi. Tempat nomor seperti Googol dilemparkan.


2
... dan lebih mudah untuk mencuri desain menggunakan social engineering :)
Eugene Sh.

8
Tidak. Kesalahan mencolok di sini adalah bahwa simulasi tidak akan cukup. Bahkan jika Anda diberi sebuah akurat model simulasi, Anda masih tidak akan dapat menemukan perilaku hati-hati tersembunyi, karena Anda tidak tahu bagaimana untuk memicu itu.
Chris Stratton

4
@ ChrisStratton Saya tidak akan menyebut kesalahan itu mencolok . Ini adalah asumsi yang masuk akal bahwa desain didasarkan pada melakukan penyederhanaan yang secara fisik biasa, misalnya bahwa Anda tidak menempatkan dua jejak metalisasi yang begitu berdekatan sehingga mereka cukup berpasangan untuk mengubah keadaan gerbang MOSFET. Itu hanya kesalahan jika a) penyederhanaan Anda tidak cocok dengan model fisik dari apa yang digunakan perancang atau b) perancang sengaja menyembunyikan sesuatu dengan sengaja melanggar persyaratan untuk penyederhanaan ini dengan cara yang tidak jelas.
Marcus Müller

7
@ ChrisStratton ah, maaf, ok, saya pikir sekarang saya mengerti maksud Anda. Anda mengatakan bahwa bahkan model clocked digital / behavioral dari sebuah CPU cukup kompleks untuk menyembunyikan kasus-kasus di mana pemahaman / asumsi programmer tidak berlaku. Itu benar. Orang bisa mendokumentasikan efek yang mengarah ke SPECTER dalam detail yang sangat menyiksa, dan kebanyakan orang tidak akan pernah berpikir untuk menyimpan data efek samping yang relevan dengan aliran data atau program. Memang!
Marcus Müller

3
Terima kasih :) Argumen Anda membawa kembali seluruh topik verifikasi formal tentang kebenaran ISA ("apakah ISA ini benar-benar menjamin bahwa CPU yang sesuai tidak memberikan RING 0 hak istimewa untuk kode tidak terprivat?") Dan verifikasi formal HDL / RTL terhadap spesifikasi ISA semacam itu (saya terutama menyukai proyek verifikasi CPU Core RISC-V ini.)
Marcus Müller

5

Membuktikan bahwa CPU tidak melakukan sesuatu yang licik sangat sulit. Contoh klasik adalah mesin pemungutan suara. Jika ada sedikit di dalamnya yang mengambil salinan suara Anda dan kemudian menyelundupkannya ke beberapa diktator, itu bisa berarti hidup atau mati untuk Anda di beberapa tempat. Dan membuktikan tidak ada sedikit pun seperti itu di antara miliaran agak sulit.

Anda mungkin berpikir untuk mengisolasi chip secara fisik, sehingga praktis untuk melihat bahwa tidak ada koneksi kawat yang tidak tepat. Dan menempatkan chip lain, atau lebih dari satu chip secara seri (dari sumber yang berbeda) dalam koneksi jaringannya yang menjamin itu hanya terhubung ke tempat yang tepat. Kemudian gunakan daya untuk bersepeda setelah memberikan suara Anda. Dan berharap tidak ada bit yang tidak mudah menguap di sana. Atau koneksi nirkabel yang licik. Tapi apakah Anda percaya hidup Anda untuk itu?


5

Mengirimkan data apa pun ke NSA akan memerlukan akses jaringan, sehingga akan cukup mudah untuk menemukan backdoor seperti itu dengan menjalankan OS dengan layanan jaringan dinonaktifkan dan memeriksa antarmuka jaringan untuk lalu lintas. Untuk OS open-source, bahkan dimungkinkan untuk berjalan dengan dukungan jaringan penuh dan koneksi spot rogue oleh IP tujuan mereka yang tidak akan cocok dengan alamat mana pun yang dapat diakses oleh OS secara sah.

Backdoor berdasarkan RNG tanpa transmisi data akan memiliki kegunaan yang sangat terbatas. Kecuali jika CPU RNG adalah satu - satunya sumber entropi, kemungkinan backdoor tersebut akan memberikan keuntungan bagi penyerang sementara tidak jelas pada saat yang sama praktis nol . Kecuali jika Anda bersikeras bahwa teko Russel ada di luar sana meskipun tidak memiliki alasan yang kuat untuk itu, Anda harus dapat menerapkan argumen yang sama ke perangkat keras RNG di belakang rumah.


5
Jadi Anda berasumsi bahwa musuh memiliki waktu, uang, dan keterampilan untuk membuat dan menyembunyikan kuda trojan perangkat keras, tetapi hal pertama yang mereka lakukan adalah telnet www.nsa.gov? Ini sepertinya sudut pandang yang sangat naif.
Elliot Alderson

1
Jika NSA telah menyembunyikan kerentanan, maka ya mereka akan berharap orang-orang menggunakan rdrandatau rdseedseperti yang disarankan Intel: sebagai satu-satunya sumber entropi untuk seed PRNG. Linux (kernel) memilih untuk tidak melakukannya untuk /dev/random, tapi glibc / libstdc ++ 's saat ini std::random_device tidak digunakan hanya rdrandjika tersedia pada saat runtime bukan membuka /dev/random. Masuki panggilan perpustakaan standar dengan godbolt
Peter Cordes

@ElliotAlderson Apa pandangan Anda? Bagaimana seseorang bisa mencuri data berharga tanpa pernah mengirimnya ke suatu tempat?
Dmitry Grigoryev

@PeterCordes std::random_devicebukan RNG yang kuat secara kriptografis. Standar C ++ memungkinkan Anda untuk mengimplementasikannya dengan PRNG, secara efektif mengembalikan urutan yang sama setiap kali , sehingga tidak ada yang harus menggunakannya untuk enkripsi.
Dmitry Grigoryev

Oh benar, saya lupa tidak ada jaminan itu bagus, xD. Ini adalah yang baik pada banyak implementasi, tetapi MinGW adalah menonjol pengecualian untuk maksud desain yang memberikan Anda sebagai nomor acak kualitas yang baik sebagai platform yang mampu, mengalahkan tujuan utama perpustakaan. (Yang seperti yang Anda katakan bukan crypto, tetapi penyemaian PRNG untuk tujuan lain). ( Mengapa saya mendapatkan urutan yang sama untuk setiap proses dengan std :: random_device dengan mingw gcc4.8.1? ). Itu akan diterima pada platform tanpa entropi (perangkat tertanam minimal), tetapi tidak pada Windows x86!
Peter Cordes
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.