Apa persyaratan teknis untuk frasa sandi WPA-PSK?

8

Saya berpikir untuk membuat frasa sandi WPA-PSK, dan saya lihat di manual OpenBSD untuk wpa-psk(8):

The passphrase must be a sequence of between 8 and 63
ASCII-encoded characters.

Apa sebenarnya kriteria untuk "ASCII-encoded" di sini? Hanya saja mereka harus karakter 8-bit dengan bit tinggi tidak disetel? Apakah karakter yang tidak dapat dicetak diperbolehkan?

Kalau dipikir-pikir itu ... Apakah pendekatan saya secara acak menghasilkan frasa sandi masuk akal? Apakah lebih baik hanya menghasilkan 64 byte acak dan menggunakannya sebagai kunci?

asveikau
sumber

Jawaban:

12

> Apa sebenarnya kriteria untuk "ASCII-encoded" di sini? Hanya saja mereka harus karakter 8-bit dengan bit tinggi tidak disetel? Apakah karakter yang tidak dapat dicetak diperbolehkan?

Wi-Fi Protected Access Wikipedia mengatakan frasa sandi WPA-PSK adalah 8 hingga 63 karakter ASCII yang dapat dicetak , dan menyertakan referensi ini sebagai catatan kaki:

Setiap karakter dalam frasa sandi harus memiliki penyandian dalam kisaran 32 hingga 126 (desimal), inklusif. (IEEE Std. 802.11i-2004, Lampiran H.4.1)
Karakter spasi termasuk dalam kisaran ini.

> Kalau dipikir-pikir ... Apakah pendekatan saya secara acak menghasilkan frasa sandi masuk akal? Apakah lebih baik hanya menghasilkan 64 byte acak dan menggunakannya sebagai kunci?

> Saya pikir saya masih akan menghasilkan 256 bit menggunakan RNG yang aman ...

Apakah router nirkabel Anda dan setiap perangkat yang ingin Anda sambungkan ke jaringan nirkabel Anda memungkinkan Anda memasukkan kunci WPA-PSK secara manual sebagai 64 karakter hex? Jika tidak, maka Anda mungkin harus menggunakan frasa sandi ASCII untuk dapat memasukkannya di semua perangkat Anda.

Bavi_H
sumber
Dari RFC2898 yang dikutip oleh @studiohack - Di seluruh dokumen ini, kata sandi dianggap sebagai string oktet dengan panjang sewenang-wenang yang interpretasinya sebagai string teks tidak ditentukan. Untuk kepentingan interoperabilitas, disarankan agar aplikasi mengikuti beberapa aturan penyandian teks yang umum. ASCII dan UTF-8 [27] adalah dua kemungkinan. (ASCII adalah bagian dari UTF-8.)
asveikau
Juga, tampaknya OpenBSD, Linux, Windows, dan Mac OS X semuanya mendukung menggunakan kunci hex. Satu-satunya masalah yang saya temui adalah Maemo UI tidak menyukainya - tetapi file XML yang mendukung konfigurasi mendukungnya.
asveikau
OK, saya melihat bagian 802.11i-2004 yang mengatakan itu. Kamu benar.
asveikau
1

Dari http://www.xs4all.nl/~rjoris/wpapsk.html - "Perhitungan kunci WPA - Dari frasa sandi hingga detail kunci heksadesimal dari Perhitungan":

Untuk enkripsi WPA-PSK, kunci biner diturunkan dari frasa sandi sesuai dengan rumus berikut:

Fungsi PBKDF2 adalah metode standar untuk mendapatkan kunci dari frasa sandi. Ini ditentukan dalam RFC2898 dengan penjelasan yang jelas tentang bagaimana cara menghitungnya. Fungsi ini membutuhkan fungsi pseudorandom yang mendasarinya. Dalam kasus WPA, fungsi yang mendasarinya adalah HMAC-SHA1. SHA1 adalah fungsi yang menghitung hash 160-bit dari jumlah data input yang berubah-ubah. Hal ini dijelaskan dengan jelas dalam RFC3174. HMAC adalah metode standar untuk mengubah fungsi hash kriptografis menjadi fungsi otentikasi pesan kunci. Ini ditentukan dalam RFC2104.

Untuk meringkas, proses derivasi kunci melibatkan iterasi fungsi HMAC-SHA1 4096 kali, dan kemudian melakukannya lagi untuk menghasilkan bit kunci lebih banyak. Jumlah perhitungan yang terlibat setara dengan menghitung hash SHA1 lebih dari 1 MByte data. Mungkin itu menjelaskan mengapa Javascript pada halaman ini sangat lambat.

Adapun pertanyaan Anda Does my approach of randomly generating a passphrase make any sense? Would it be better to just generate 64 random bytes and use that as a key?:: Salah satu akan sangat kuat, selama Anda menggunakan semua jenis simbol, angka, dan karakter alfabet acak dalam frasa sandi byte acak Anda. Cara saya melihatnya: keduanya (dihasilkan atau acak) tidak mungkin ditebak / diretas ...

studiohack
sumber
1
Hm Jadi tampaknya berdasarkan pada pembacaan saya tentang RFC bahwa fungsi PBKDF2 tidak bergantung pada itu menjadi karakter ASCII yang dapat dicetak, dan harus baik-baik saja dengan data biner. Saya pikir saya masih akan menghasilkan 256 bit menggunakan RNG yang aman ... (Saya tidak begitu yakin tidak mungkin untuk menebak. Ada kemungkinan kecil bahwa ini akhirnya akan menghasilkan sesuatu yang kebetulan bertabrakan dengan yang lemah passphrase.: P)
asveikau