Pertanyaan dan skenario
Mesin status tereplikasi normal biasanya berasumsi bahwa node mengalami crash, kehilangan paket, atau memulai ulang tanpa secara aktif memalsukan konten yang berbeda. Control plane ini mengelola sertifikat, izin, dan rute, sehingga node yang disusupi mungkin mengirimkan log yang tidak konsisten ke peer yang berbeda atau meniru identitas lain. Mulailah dari model ancaman dan jelaskan apa yang diselesaikan oleh Raft, autentikasi, dan protokol Byzantine masing-masing.
Apa yang sedang diuji oleh pewawancara
- Bisakah kandidat membedakan kegagalan crash, partisi jaringan, node berbahaya, dan kunci identitas yang dicuri?
- Apakah mereka memahami asumsi keamanan Raft, interseksi kuorum, serta biaya replika dan komunikasi tambahan dari protokol Byzantine?
- Bisakah mereka memasukkan tanda tangan, keanggotaan, audit, rotasi kunci, dan pemulihan ke dalam batas sistem?
- Akankah mereka menghindari memperlakukan enkripsi atau pemungutan suara mayoritas sebagai bukti keamanan Byzantine?
Pertanyaan klarifikasi untuk diajukan terlebih dahulu
Tanyakan berapa banyak node yang dapat dikontrol oleh penyerang, apakah identitas dapat dipalsukan, apakah peer memiliki kunci tepercaya, dan apakah konsistensi atau ketersediaan yang lebih penting. Perjelas nilai dari status control-plane, persetujuan manusia, frekuensi perubahan keanggotaan, dan latensi antar-wilayah. Kluster terkontrol dengan kunci yang dilindungi perangkat keras mungkin hanya memerlukan crash fault tolerance; rantai pasokan atau operator yang tidak tepercaya akan mengubah jawabannya.
Kerangka jawaban 30 detik
Tuliskan model kegagalan dan invarian yang dilindungi terlebih dahulu. Raft mengasumsikan kegagalan non-berbahaya dan cocok untuk toleransi crash dalam kluster terkontrol. Autentikasi membuktikan bahwa pesan berasal dari sebuah kunci, bukan bahwa pemegangnya jujur. Jika beberapa node dapat mengirimkan nilai yang bertentangan, pilihlah protokol Byzantine yang aman di bawah batas kegagalan yang dinyatakan, dengan menerima biaya replika yang lebih banyak, siaran terautentikasi, batas waktu (timeout), dan operasi kunci. Jika isolasi, perlindungan kunci, dan persetujuan manusia cukup mengurangi risiko, pertahankan Raft dan dokumentasikan apa yang tidak dicakupnya.
Pembahasan mendalam langkah demi langkah
- Nyatakan model kegagalan. Pisahkan kegagalan crash, kelalaian (omission), partisi, dan aktif-berbahaya. Sebutkan apakah kolusi, pemalsuan identitas, penundaan pesan, atau pengeditan disk dimungkinkan; tanpa model ini, perbandingan protokol tidak ada artinya.
- Tentukan invarian keamanan. Contohnya mencakup tidak ada replika jujur yang melakukan commit terhadap dua konfigurasi yang bertentangan, tidak ada rollback dari pencabutan (revocation), dan publikasi kunci yang dapat diaudit. Tetapkan tujuan ketersediaan, finalitas, dan pemulihan secara terpisah.
- Periksa asumsi konsensus biasa. Raft menggunakan pemimpin (leader), pencocokan log, dan commit mayoritas untuk menahan crash. Ini tidak menghentikan node dengan identitas valid untuk mengirimkan konten yang berbeda ke peer yang berbeda. TLS melindungi transportasi, bukan titik akhir yang berbahaya.
- Evaluasi biaya Byzantine. Dalam model pesan lisan klasik yang tidak terautentikasi, menoleransi f node Byzantine membutuhkan batas replika yang lebih tinggi. Protokol terautentikasi, tanda tangan ambang batas (threshold signatures), dan perangkat keras tepercaya mengubah trade-off rekayasa tetapi tidak menghilangkan batas kegagalan dan asumsi keanggotaan.
- Kendalikan batasannya. Bahkan dengan protokol Byzantine, batasi keanggotaan, putar dan cabut kunci, isolasi control plane dan data plane, simpan bukti, serta siapkan pemulihan yang aman. Protokol membatasi peserta, bukan administrator yang mengedit basis data secara langsung.
- Verifikasi dari ancaman. Masukkan pesan yang bercabang (forked), tanda tangan palsu, konfigurasi yang diputar ulang (replayed), respons kuorum yang tertunda, dan pemulihan node. Periksa invarian, bukti audit, dan jalur pemulihan; simulasi kegagalan harus menunjukkan bahwa protokol yang dipilih memenuhi batas nyata.
Contoh jawaban berkualitas tinggi
Saya tidak akan memilih Byzantine fault tolerance hanya karena kluster mencakup beberapa wilayah. Pertama, tentukan penyerangnya. Jika node hanya mengalami crash atau gangguan jaringan, pemimpin, pencocokan log, dan commit mayoritas Raft sudah cukup. Jika node dengan kunci valid dapat mengirimkan konfigurasi yang bertentangan ke replika yang berbeda, transportasi terautentikasi dan pemungutan suara mayoritas tidak membuktikan kejujuran.
Untuk control plane bernilai tinggi, tentukan f, aturan keanggotaan, commit tanpa konflik, dan pencabutan yang tidak dapat dibatalkan sebagai invarian. Kemudian pilih protokol Byzantine terautentikasi yang tetap aman untuk f tersebut. Bandingkan jumlah replika, pemeriksaan tanda tangan, latensi, dan operasi kunci dengan risikonya. Jika isolasi, kunci perangkat keras, persetujuan dua orang, dan pemulihan hanya-baca membuat risiko node berbahaya dapat diterima, pertahankan Raft dan catat ancaman yang tidak tercakup. Referensi mencakup karya Byzantine Generals dari Lamport, makalah Raft, dan spesifikasi formalnya.
Kesalahan umum
- Menyebut partisi atau crash sebagai kegagalan Byzantine tanpa menyatakan apakah node berbohong secara aktif.
- Mengasumsikan TLS, tanda tangan, atau mayoritas saja dapat mencegah node berbahaya dengan kredensial yang valid.
- Melaporkan satu angka replika sambil mengabaikan model autentikasi, batas kolusi, keanggotaan, dan perlindungan kunci.
- Mendiskusikan pesan protokol tetapi mengabaikan administrator, basis data, cadangan (backup), dan bypass pemulihan.
- Mengganti invarian, simulasi serangan, dan ambang risiko dengan frasa “lebih aman”.
Pertanyaan lanjutan dan tanggapan
Bisakah kluster tiga node mentoleransi satu node Byzantine?
Tidak tanpa menyebutkan protokol dan model autentikasinya. Model pesan lisan klasik yang tidak terautentikasi memiliki batas replika yang lebih tinggi; protokol terautentikasi, perangkat keras tepercaya, dan sinkronisasi parsial mengubah kondisi tersebut. Nyatakan modelnya, lalu f, kuorum, dan argumen keamanannya.
Mengapa pemungutan suara mayoritas tidak secara otomatis menyelesaikan perilaku berbahaya?
Node berbahaya dapat mengirimkan nilai yang berbeda ke pengamat yang berbeda atau meniru peran logis. Mayoritas hanya bermakna jika autentikasi pesan, perubahan tampilan (view changes), penyebaran bukti, dan interseksi kuorum memenuhi asumsi protokol.
Kapan Anda harus tetap menggunakan Raft?
Ketika node dan kunci berada dalam batas yang terkontrol, kegagalan crash dan jaringan mendominasi, dan pemulihan manual dapat diterima, Raft lebih sederhana dan lebih mudah diverifikasi. Tambahkan persetujuan keanggotaan, rotasi kunci, audit, dan simulasi kegagalan, serta nyatakan bahwa node berbahaya berada di luar jaminannya.