Mengapa pertukaran kunci capung perlu berburu dan mematuk?
Skema pertukaran kunci capung (seperti yang digunakan oleh WPA3) mendapat kritik karena cara memilih generator dari kelompok kurva eliptik ('berburu dan mematuk') adalah algoritma waktu yang tidak konstan sehingga rentan terhadap serangan saluran samping.
Pertanyaan saya adalah: Mengapa berburu dan mematuk digunakan?
Asumsikan ada generator yang dikenal $G$ untuk sekelompok ukuran utama, lalu $G^P$ juga akan menjadi generator grup yang sama (jika $P$bukan kelipatan dari ukuran grup). Dengan$P$ menjadi nomor yang diturunkan kata sandi (seperti halnya skema capung sebagaimana adanya), dengan cara ini seseorang akan mendapatkan generator yang sama acak dan tidak terduga seperti berburu dan mematuk, bukan?
Di manakah kesalahan dalam penalaran itu?
Jawaban
Di manakah kesalahan dalam penalaran itu?
Masalahnya adalah hal itu akan memungkinkan penyerang untuk menguji beberapa kata sandi dengan pertukaran yang sama, sehingga kehilangan properti PAKE yang kami coba capai.
Dengan capung, sisi jujur memilih nilai rahasia $p, m$, dan mengeluarkan nilai $s = p+m$ dan $P = -m \cdot SKE$, dimana $SKE$ adalah 'elemen kunci rahasia', yaitu salah satu yang Anda sarankan untuk diturunkan $SKE = [password]G$ (Saya menulisnya dalam notasi aditif karena berburu-dan-mematuk berperan di Dragonfly hanya jika Anda menggunakan kurva elips).
Kemudian, pihak yang jujur menerima nilai $s'$ dan $P'$ dari sisi lain (musuh), lalu menghitung kunci rahasia:
$$H( p( P' + s' \cdot SKE ))$$
dan kemudian mengirimkan pesan terenkripsi berdasarkan kunci tersebut (yaitu, jika musuh entah bagaimana mendapatkan tebakan ke kunci yang sama, dia dapat mendekripsi pesan tersebut, dan dengan demikian memvalidasi kunci tersebut).
Dengan proposal Anda, penyerang akan mengetahui log diskrit setiap SKE, yaitu nilainya $x$ st $xG = SKE$. Jadi, apa yang bisa dilakukan penyerang (setelah menerima rekan sejawat yang jujur$s, P$ nilai) dipilih sewenang-wenang $s', P'$ nilai (yang dia ketahui log diskritnya $P' = p'G$) dan mengirimkannya, lalu menerima kata sandi terenkripsi berdasarkan nilai yang dihitung oleh pihak yang jujur.
Kemudian, untuk setiap kata sandi dalam kamusnya, hitung yang sesuai $SKE$ dan $xG = SKE$ lalu menghitung:
$$H( (p'+s'x)(sG + x^{-1}P))$$
Jika tebakan untuk SKE benar, ini adalah kunci rahasia yang sama dengan yang dihitung oleh pihak yang jujur, dan itu dapat divalidasi.
Ini bisa dilihat sama karena, jika SKE adalah nilai yang digunakan pihak jujur, maka $pG = sG + x^{-1}P$ dan $p' + s'x$ adalah log diskrit dari $P' + s' \cdot SKE$
Penyerang dapat melakukan semua perhitungan ini untuk setiap kata sandi dalam kamusnya, oleh karena itu ia dapat menguji setiap kata sandi sebagai hasil dari satu pertukaran.
Sekarang, DragonFly tidak harus menggunakan berburu-dan-mematuk; ada transformasi hash-ke-kurva lain yang diketahui yang mengubah kata sandi menjadi titik EC dengan cara yang tidak dapat Anda hitung dengan log diskrit. Namun, DragonFly perlu menggunakan beberapa metode seperti itu ...