Mitos tentang "seluler" CHACHA20



Saat menyiapkan Metodologi untuk menghitung Indeks Keandalan HTTPS, kami mencari-cari banyak literatur tematik dan lebih dari sekali menemukan rekomendasi untuk mendukung cipher suite berdasarkan algoritma enkripsi CHACHA20 di server web untuk mengurangi beban pada klien seluler yang tidak dapat menggunakan perangkat keras AES. Dalam konteks ini, prosesor Mediatek dan "prosesor seluler anggaran lama" biasanya disebutkan.



Apakah CHACHA20 dengan pendamping tepercaya POLY1305 benar-benar membuat klien seluler tetap tenang, dan apakah layak untuk mendukungnya di server web? Mari kita bahas!



CHACHA20 dibuat oleh kriptografer ternama Daniel Bernstein, yang kami cintai khususnya untuk Curve25519, dan atas upaya advokasinya sehingga hanya orang tua yang mengingat arti _EXPORT_ dalam cipher suite. Algoritme ini diteliti dengan baik, beroperasi dalam mode AEAD, tidak memiliki kelemahan atau kerentanan yang diketahui, dan merupakan salah satu dari dua algoritme enkripsi yang disetujui oleh IETF untuk digunakan di TLS 1.3 (yang lainnya adalah AES abadi).



Kekuatan kriptografi teoretisnya saat digunakan dalam TLS diperkirakan berbeda, dalam interval antara AES-128 dan AES-256 dalam mode GCM, yang dianggap cukup menurut standar saat ini dan di masa mendatang. Pada saat yang sama, itu juga dicatatbahwa CHACHA20 "lebih cepat" dari AES, yaitu "Menggunakan lebih sedikit sumber daya prosesor untuk memberikan tingkat kekuatan kriptografi yang sama." Kata-kata ini tidak hanya berbau seperti telemarketing (dengan segala hormat kepada pembuatnya), tetapi juga kehilangan detail penting: pada prosesor tanpa dukungan perangkat keras AES.



Dan di sini kita akhirnya kembali ke "prosesor seluler hemat" yang terlalu panas di bawah AES, mulai mencekik dan menuntut nitrogen cair (sarkasme). Produsen prosesor menyadari masalah ini dan telah menyelesaikannya dengan menambahkan serangkaian instruksi yang sesuai. Pada prosesor yang kompatibel dengan x86, ini adalah AES-NI, pada prosesor lain - namanya (dan set mereka sendiri). Dan di sini kita sampai pada bagian yang paling menarik: dukungan AES oleh prosesor.



Intel memperkenalkan dukungan untuk AES-NI pada tahun 2010 di prosesor Westmere, dan tidak semuanya: Atom, Celeron, Pentium dan Core i3 yang sudah lama tidak diandalkannya. Anda dapat memastikan dukungan AES-NI tanpa menggali spesifikasi yang hanya dimulai dengan arsitektur Goldmont (Apollo Lake dan Denverton), dan ini sudah 2016.



Untuk AMD, ini adalah arsitektur Bulldozer (2011) dan Jaguar (2013), dengan ARM semuanya lebih rumit: dukungan untuk instruksi AES disediakan dalam arsitektur ARMv8-A (2011, perangkat pertama 2013), tetapi implementasi sebenarnya dari mereka dalam silikon tergantung pada prosesor pabrikan dan saya pribadi tidak akan bersiul begitu percaya diri tentang "prosesor seluler anggaran lama", melainkan ada baiknya berbicara tentang "prosesor seluler non-unggulan" secara umum, termasuk. diproduksi hingga hari ini.



Sederhananya, tidak sulit untuk menemukan prosesor tanpa dukungan perangkat keras AES. Jadi CHACHA20 benar-benar alternatif yang bagus untuk AES? Mari kita lihat hasil penelitian ini , misalnya . Pada prosesor tanpa dukungan AES, CHACHA20 terlihat sangat terdepan dalam hal kinerja, seringkali berkali-kali. Sayangnya, kami tidak diperlihatkan pengukuran suhu, tetapi jika kita berbicara tentang prosesor server, jelas bahwa perbedaan dalam sumber daya prosesor yang dikonsumsi signifikan.



Situasinya terbalik jika menyangkut prosesor yang mendukung AES. Hampir tidak ada gunanya menyalahkan CHACHA20 untuk ini, kepada siapa tidak ada yang menawarkan seperangkat instruksi pribadi dalam prosesor, dan apa yang terjadi ketika kedua pemain bermain dengan aturan yang sama seperti yang kita lihat pada prosesor lama (ingatkan: penggabungan AES).



Jadi, mari kita cari dukungan CHACHA20 di server web? Betapa tidak, jika hanya karena alasan semua telur tidak dimasukkan ke dalam satu keranjang, dan jika tiba-tiba besok ditemukan lubang di AES itu sendiri atau implementasinya di library crypto tertentu, kita bisa mematikannya "sampai klarifikasi" dengan sedikit gerakan tangan kita, tetap di CHACHA20, dan tidak dengan panik mencari sesuatu untuk menggantikan AES, tetapi bagaimana cara menyalakannya.



Pertanyaan tentang tempat CHACHA20 dalam hidup kita jauh lebih tidak langsung. daftar cipher suite yang ditawarkan oleh server web untuk negosiasi, yaitu prioritasnya.



Mari kita ingat bagaimana cipher suite umumnya dinegosiasikan saat membuat koneksi HTTPS: klien mengirimkan ke server daftar cipher suite yang didukungnya, dengan urutan "dari buldoser" dan urutan ini hanya dapat diubah melalui kebijakan grup Windows dan hanya untuk Browser Internet Explorer menggunakan SChannel (benar, jika saya salah). Server membandingkan daftar yang diterima dari klien dengan daftar cipher suite yang didukungnya dan memberi tahu klien mana yang telah dipilihnya untuk mengamankan koneksi. Jika prioritas cipher suite diatur di server, yang pertama yang cocok di kedua daftar akan disetujui, dengan mempertimbangkan prioritas yang ditetapkan di server. Jika tidak disetel, maka admin server perlu melepaskan tangannya, kita terjun ke bidang teori probabilitas yang tidak diketahui .



Prioritas cipher suite di server biasanya ditetapkan berdasarkan prinsip keamanan maksimum yang tersedia: cipher suite yang lebih kuat dicantumkan terlebih dahulu, lebih sedikit - yang terakhir. Seorang klien modern tersandung pada cipher suite yang kuat dan menyetujuinya, klien yang "ketinggalan zaman" melompat lebih jauh ke bawah daftar ke cipher suite yang kurang kuat dan menyetujuinya. Semua orang senang, semuanya bekerja, dari masing-masing sesuai kemampuannya, hingga masing-masing menggunakan HTTPS.



Dan di sini cipher suite berdasarkan CHACHA20 cocok dengan gambaran harmonis dunia ini, yang kami tambahkan untuk alasan mengurangi beban pada klien yang "lemah" dari sudut pandang perangkat keras, tanpa mengetahui apa pun tentang apakah mereka secara bersamaan "usang" atau bukan (yaitu, andalan tahun ini dari perusahaan Cina lapis ketiga, atau anak kelas menengah berusia lima tahun dari merek papan atas). Pelanggan menyarankan bahwa ia mendukung TLS 1.3 dan rangkaian lengkap cipher suite terkait, baik AES maupun CHACHA20. Solusi Anda, admin, cipher suite apa yang kami setujui untuk klien? Di sini saya hampir sama ... Saya



merangkum hal di atas tentang algoritma enkripsi CHACHA20.



  1. Algoritme ini cukup bagus untuk dirinya sendiri dan cocok untuk digunakan di TLS.
  2. Cipher suites yang didasarkan padanya hanya didukung oleh browser yang cukup modern , jadi tidak diperlukan AES sama sekali.
  3. Keuntungan kinerja dari penggunaannya dapat diperoleh tidak hanya pada "prosesor seluler anggaran lama", tetapi juga pada desktop dan server. Pada prosesor dengan dukungan perangkat keras AES, situasinya terbalik.
  4. Saat membuat koneksi HTTPS, tidak ada cara untuk mengetahui apakah prosesor klien mendukung AES di perangkat keras. Karenanya, tidak ada cara untuk mengetahui cipher suite mana yang akan "lebih cepat" dalam setiap kasus.



All Articles