Topik temu duga representatif

Bilakah anda memerlukan toleransi kegagalan Byzantine berbanding konsensus biasa?

UmumSukar
Pasukan Editorial Offer.ccDiterbitkan Dikemas kini

Soalan

Pasukan anda merancang untuk menggunakan Raft bagi satah kawalan (control plane) berbilang wilayah. Pihak keselamatan bimbang bahawa satu nod yang terjejas boleh menghantar mesej yang bercanggah kepada replika yang berbeza. Bagaimanakah anda memutuskan sama ada toleransi kegagalan Byzantine diperlukan, dan menerangkan kos serta sempadannya?

Soalan dan senario

Mesin keadaan tereplikasi yang normal biasanya mengandaikan nod terhenti (crash), kehilangan paket atau dimulakan semula tanpa memalsukan kandungan yang berbeza secara aktif. Satah kawalan ini menguruskan sijil, kebenaran dan laluan, jadi nod yang terjejas mungkin menghantar log yang tidak konsisten kepada rakan setara (peers) yang berbeza atau menyamar sebagai identiti lain. Mulakan daripada model ancaman dan terangkan perkara yang diselesaikan oleh Raft, pengesahan dan protokol Byzantine secara berasingan.

Perkara yang diuji oleh penemu duga

  • Bolehkah calon membezakan kegagalan crash, sekatan rangkaian (network partitions), nod berniat jahat dan kunci identiti yang dicuri?
  • Adakah mereka memahami andaian keselamatan Raft, persilangan korum, serta kos komunikasi dan replika tambahan bagi protokol Byzantine?
  • Bolehkah mereka memasukkan tandatangan, keahlian, pengauditan, penggiliran kunci dan pemulihan ke dalam sempadan sistem?
  • Adakah mereka akan mengelak daripada menganggap penyulitan atau undian majoriti sebagai bukti keselamatan Byzantine?

Soalan penjelasan untuk ditanya terlebih dahulu

Tanya berapa banyak nod yang boleh dikawal oleh penyerang, sama ada identiti boleh dipalsukan, sama ada rakan setara mempunyai kunci yang dipercayai, dan sama ada konsistensi atau ketersediaan lebih penting. Jelaskan nilai keadaan satah kawalan, kelulusan manusia, kekerapan perubahan keahlian dan kependaman antara wilayah. Kluster terkawal dengan kunci yang dilindungi perkakasan mungkin hanya memerlukan toleransi kegagalan crash; rantaian bekalan atau pengendali yang tidak dipercayai akan mengubah jawapan tersebut.

Rangka kerja jawapan 30 saat

Tulis model kegagalan dan tak varian (invariants) yang dilindungi terlebih dahulu. Raft mengandaikan kegagalan bukan berniat jahat dan sesuai untuk toleransi crash dalam kluster terkawal. Pengesahan membuktikan bahawa mesej datang daripada sesuatu kunci, bukannya pemegang kunci itu jujur. Jika beberapa nod boleh menghantar nilai yang bercanggah, pilih protokol Byzantine yang selamat di bawah batas kegagalan yang dinyatakan, dengan menerima kos replika yang lebih banyak, siaran disahkan, tamat masa (timeouts) dan operasi kunci. Jika pengasingan, perlindungan kunci dan kelulusan manusia mengurangkan risiko secukupnya, kekalkan Raft dan dokumentasikan perkara yang tidak dilindunginya.

Perbincangan mendalam langkah demi langkah

  1. Nyatakan model kegagalan. Asingkan kegagalan crash, peninggalan (omission), sekatan dan berniat jahat secara aktif. Nyatakan sama ada pakatan sulit, pemalsuan identiti, kelewatan mesej atau pengeditan cakera boleh berlaku; tanpa model ini, perbandingan protokol adalah tidak bermakna.
  2. Takrifkan tak varian keselamatan. Contohnya termasuk tiada replika jujur yang melakukan komit terhadap dua konfigurasi yang bercanggah, tiada pembalikan balik (rollback) bagi pembatalan, dan penerbitan kunci yang boleh diaudit. Tetapkan objektif ketersediaan, kemuktamadan dan pemulihan secara berasingan.
  3. Semak andaian konsensus biasa. Raft menggunakan ketua (leader), pemadanan log dan komit majoriti untuk menentang crash. Ia tidak menghalang nod dengan identiti yang sah daripada menghantar kandungan yang berbeza kepada rakan setara yang berbeza. TLS melindungi pengangkutan, bukannya titik akhir yang berniat jahat.
  4. Nilaikan kos Byzantine. Dalam model mesej lisan klasik yang tidak disahkan, toleransi f nod Byzantine memerlukan batas replika yang lebih tinggi. Protokol yang disahkan, tandatangan ambang (threshold signatures) dan perkakasan dipercayai mengubah pertukaran kejuruteraan tetapi tidak menghapuskan batas kegagalan dan andaian keahlian.
  5. Kawal sempadan. Walaupun dengan protokol Byzantine, sekat keahlian, gilirkan dan batalkan kunci, asingkan satah kawalan dan data, kekalkan bukti, dan sediakan pemulihan yang selamat. Sesuatu protokol mengekang peserta, bukannya pentadbir yang mengedit pangkalan data secara langsung.
  6. Sahkan daripada ancaman. Suntik mesej bercabang (forked), tandatangan palsu, konfigurasi yang dimainkan semula, tindak balas korum yang tertangguh dan pemulihan nod. Semak tak varian, bukti audit dan laluan pemulihan; latihan simulasi kegagalan harus menunjukkan bahawa protokol yang dipilih memenuhi had sebenar.

Contoh jawapan berkualiti tinggi

Saya tidak akan memilih toleransi kegagalan Byzantine semata-mata kerana kluster merentasi pelbagai wilayah. Mula-mula tentukan penyerang. Jika nod hanya mengalami crash atau kegagalan rangkaian, ketua Raft, pemadanan log dan komit majoriti sudah memadai. Jika nod dengan kunci yang sah boleh menghantar konfigurasi yang bercanggah kepada replika yang berbeza, pengangkutan yang disahkan dan undian majoriti tidak membuktikan kejujuran.

Bagi satah kawalan bernilai tinggi, takrifkan f, peraturan keahlian, komit tanpa percanggahan dan pembatalan tidak boleh balik sebagai tak varian. Kemudian pilih protokol Byzantine disahkan yang kekal selamat untuk f tersebut. Bandingkan bilangan replika, semakan tandatangan, kependaman dan operasi kunci dengan risiko. Jika pengasingan, kunci perkakasan, kelulusan dua orang dan pemulihan baca sahaja menjadikan risiko nod berniat jahat boleh diterima, kekalkan Raft dan rekodkan ancaman yang tidak diliputi. Rujukan termasuk karya Byzantine Generals oleh Lamport, kertas kerja Raft dan spesifikasi formalnya.

Kesilapan biasa

  • Menyebut sekatan atau crash sebagai kegagalan Byzantine tanpa menyatakan sama ada nod menipu secara aktif.
  • Mengandaikan TLS, tandatangan atau majoriti sahaja dapat menghalang nod berniat jahat yang mempunyai kelayakan sah.
  • Melaporkan satu nombor replika sambil mengabaikan model pengesahan, batas pakatan sulit, keahlian dan perlindungan kunci.
  • Membincangkan mesej protokol tetapi mengabaikan pentadbir, pangkalan data, sandaran dan pintasan pemulihan.
  • Menggantikan tak varian, latihan serangan dan ambang risiko dengan frasa "lebih selamat".

Soalan susulan dan jawapan

Bolehkah kluster tiga nod bertoleransi dengan satu nod Byzantine?

Tidak tanpa menamakan protokol dan model pengesahan. Model mesej lisan klasik yang tidak disahkan mempunyai batas replika yang lebih tinggi; protokol yang disahkan, perkakasan dipercayai dan penyegerakan separa mengubah syarat tersebut. Nyatakan model, kemudian f, korum dan hujah keselamatan.

Mengapakah undian majoriti tidak menyelesaikan tingkah laku berniat jahat secara automatik?

Nod berniat jahat boleh menghantar nilai yang berbeza kepada pemerhati yang berbeza atau menyamar sebagai peranan logik. Majoriti hanya bermakna apabila pengesahan mesej, perubahan paparan (view changes), penyebaran bukti dan persilangan korum memenuhi andaian protokol.

Bilakah anda patut kekal dengan Raft?

Apabila nod dan kunci berada dalam sempadan yang terkawal, kegagalan crash dan rangkaian mendominasi, dan pemulihan manual boleh diterima, Raft adalah lebih mudah dan lebih senang untuk disahkan. Tambahkan kelulusan keahlian, penggiliran kunci, pengauditan dan latihan simulasi kegagalan, serta nyatakan bahawa nod berniat jahat berada di luar jaminannya.

Sumber awam

Soalan berkaitan