Pelaksanaan VPN WireGuard Baharu Ditambah pada Pangkalan Kod FreeBSD

Pohon sumber FreeBSD telah dikemas kini dengan pelaksanaan baharu VPN WireGuard, berdasarkan kod modul kernel yang dihasilkan bersama oleh pasukan pembangunan teras FreeBSD dan WireGuard dengan sumbangan daripada Jason A. Donenfeld, pengarang VPN WireGuard dan John H. Baldwin ), pembangun terkenal GDB dan FreeBSD, yang melaksanakan sokongan untuk SMP dan NUMA dalam kernel FreeBSD pada awal 2000-an. Selepas pemacu diterima masuk ke dalam FreeBSD (sys/dev/wg), pembangunan dan penyelenggaraannya seterusnya akan dijalankan dalam repositori FreeBSD.

Sebelum kod diterima, semakan penuh perubahan telah dijalankan dengan sokongan Yayasan FreeBSD, di mana interaksi pemacu dengan seluruh subsistem kernel juga dianalisis dan kemungkinan menggunakan primitif kriptografi yang disediakan oleh kernel telah dinilai.

Untuk menggunakan algoritma kriptografi yang diperlukan oleh pemacu, API subsistem kripto kernel FreeBSD telah dilanjutkan, yang mana abah-abah telah ditambahkan yang membenarkan penggunaan algoritma yang tidak disokong dalam FreeBSD melalui kripto-API standard, menggunakan pelaksanaan algoritma yang diperlukan dari perpustakaan lisodium. Daripada algoritma yang dibina ke dalam pemacu, hanya kod untuk mengira cincang Blake2 yang tinggal, memandangkan pelaksanaan algoritma ini yang disediakan dalam FreeBSD terikat pada saiz cincang tetap.

Di samping itu, semasa proses semakan, pengoptimuman kod telah dijalankan, yang memungkinkan untuk meningkatkan kecekapan pengagihan beban pada CPU berbilang teras (pengimbangan seragam penugasan penyulitan paket dan tugas penyahsulitan ke teras CPU telah dipastikan). Akibatnya, overhed semasa memproses paket adalah hampir dengan pelaksanaan pemacu Linux. Kod ini juga menyediakan keupayaan untuk menggunakan pemacu ossl untuk mempercepatkan operasi penyulitan.

Tidak seperti percubaan sebelumnya untuk menyepadukan WireGuard ke dalam FreeBSD, pelaksanaan baharu menggunakan utiliti wg standard, dan bukannya versi ifconfig yang diubah suai, yang memungkinkan untuk menyatukan konfigurasi pada Linux dan FreeBSD. Utiliti wg, serta pemandu, disertakan dalam kod sumber FreeBSD, yang dimungkinkan dengan menukar lesen untuk kod wg (kod itu kini tersedia di bawah lesen MIT dan GPL). Percubaan terakhir untuk memasukkan WireGuard dalam FreeBSD telah dibuat pada tahun 2020, tetapi berakhir dengan skandal, akibatnya kod yang telah ditambah telah dialih keluar kerana kualiti rendah, kerja cuai dengan penimbal, penggunaan stub dan bukannya semakan, pelaksanaan yang tidak lengkap protokol dan pelanggaran lesen GPL.

Ingat bahawa VPN WireGuard dilaksanakan berdasarkan kaedah penyulitan moden, memberikan prestasi yang sangat tinggi, mudah digunakan, tanpa komplikasi dan telah membuktikan dirinya dalam beberapa penggunaan besar yang memproses sejumlah besar trafik. Projek ini telah dibangunkan sejak 2015, lulus audit dan pengesahan rasmi kaedah penyulitan yang digunakan. WireGuard menggunakan konsep penghalaan kunci penyulitan, yang melibatkan pengikatan kunci persendirian pada setiap antara muka rangkaian dan menggunakan kunci awam untuk mengikat.

Pertukaran kunci awam untuk mewujudkan sambungan adalah serupa dengan SSH. Untuk merundingkan kunci dan menyambung tanpa menjalankan daemon ruang pengguna yang berasingan, mekanisme Noise_IK Rangka Kerja Protokol Noise digunakan, sama seperti mengekalkan authorized_keys dalam SSH. Penghantaran data dijalankan melalui enkapsulasi dalam paket UDP. Ia menyokong menukar alamat IP pelayan VPN (perayauan) tanpa memutuskan sambungan dengan konfigurasi semula pelanggan automatik.

Penyulitan menggunakan sifir strim ChaCha20 dan algoritma pengesahan mesej (MAC) Poly1305 yang dibangunkan oleh Daniel J. Bernstein, Tanja Lange dan Peter Schwabe. ChaCha20 dan Poly1305 diletakkan sebagai analog AES-256-CTR dan HMAC yang lebih pantas dan selamat, pelaksanaan perisian yang membolehkan mencapai masa pelaksanaan tetap tanpa melibatkan sokongan perkakasan khas. Untuk menjana kunci rahsia yang dikongsi, lengkung eliptik Diffie-Hellman protokol dalam pelaksanaan Curve25519, juga dicadangkan oleh Daniel Bernstein, digunakan. Untuk pencincangan, algoritma BLAKE2s (RFC7693) digunakan.

Sumber: opennet.ru

Tambah komen