Cloud & IT Cert Prep · Pelajaran

Penyulitan Disahkan: AES-GCM dan ChaCha20-Poly1305

Fahami cara sifir AEAD menyediakan kerahsiaan dan integriti secara serentak, serta sebab penyalahgunaan nonce dalam AES-GCM membawa kepada pemulihan kunci yang dahsyat.

Pelajaran 2 daripada 413 langkah

Penyulitan Disahkan: AES-GCM dan ChaCha20-Poly1305 ialah pelajaran Cloud & IT Cert Prep percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Cloud & IT Cert Prep, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Cloud & IT Cert Prep merangkumi sejumlah 4 pelajaran.

Apakah Penyulitan Terautentikasi?

Authenticated Encryption (AE) menyelesaikan masalah asas: penyulitan tradisional hanya menyediakan kerahsiaan — ia merahsiakan data — tetapi tidak mengesahkan sama ada teks sifir telah diusik. Penyerang boleh menukar bit dalam teks sifir dan penerima akan menyahsulit data yang rosak tanpa mengetahui bahawa data itu telah diubah. Authenticated Encryption with Associated Data (AEAD) menambahkan jaminan integriti dan ketulenan secara serentak, lalu menghasilkan teks sifir yang disulitkan serta tag pengesahan yang mengesan sebarang pengubahsuaian.

AES-GCM: Mod Pembilang serta GMAC

AES-GCM (Galois/Counter Mode) menggabungkan dua komponen: AES-CTR (Counter Mode) untuk penyulitan dan GMAC (Galois Message Authentication Code) untuk integriti. AES-CTR menjana aliran kunci dengan menyulitkan nilai pembilang dan melakukan XOR dengannya bersama teks biasa — ini menjadikan penyulitan boleh diproses secara selari, tidak seperti mod CBC. GMAC mengira tag pengesahan terhadap teks sifir dan sebarang data berkaitan. Tag yang terhasil (128 bit) dihantar bersama teks sifir; perubahan satu bit sahaja akan membatalkan tag tersebut.

# AES-256-GCM encryption with openssl
openssl enc -aes-256-gcm -in plaintext.txt -out encrypted.bin \
  -K $(openssl rand -hex 32) \
  -iv $(openssl rand -hex 12)

Nonce: Kritikal dan Rapuh

AES-GCM memerlukan nonce (nombor yang digunakan sekali), biasanya sepanjang 96 bit (12 bait). Nonce mestilah unik untuk setiap operasi penyulitan dengan kunci yang sama — nonce tidak perlu dirahsiakan, tetapi tidak boleh diulangi. Penggunaan semula nonce dalam AES-GCM membawa akibat yang amat serius: jika dua mesej disulitkan menggunakan kunci dan nonce yang sama, penyerang boleh melakukan XOR terhadap teks sifer untuk membatalkan aliran kunci, lalu berpotensi mendapatkan semula kedua-dua teks biasa. Kerentanan ini kadangkala dipanggil 'penyalahgunaan nonce' dan telah menyebabkan serangan mendapatkan semula kunci di dunia sebenar.

Serangan Penyalahgunaan Nonce Diterangkan

Apabila nonce AES-GCM digunakan semula, penyerang boleh mengira C1 XOR C2 = P1 XOR P2 (hasil XOR bagi kedua-dua teks biasa), kerana aliran kunci yang sama digunakan untuk kedua-duanya. Selain itu, penggunaan semula nonce membolehkan kunci pengesahan H diperoleh semula, yang bermaksud penyerang boleh memalsukan teg pengesahan yang sah untuk mesej sewenang-wenangnya — sekali gus memusnahkan kerahsiaan dan integriti. Sistem seperti Sony PS3 pernah mengalami serangan tepat seperti ini. Pertahanannya ialah nonce rawak (dijana menggunakan CSPRNG) atau pembilang deterministik yang tidak pernah ditetapkan semula.

ChaCha20-Poly1305: Alternatif Sifer Aliran

ChaCha20-Poly1305 ialah satu lagi sifer AEAD yang diwajibkan dalam TLS 1.3. ChaCha20 ialah sifer aliran yang direka oleh Daniel Bernstein dan menjana aliran kunci menggunakan operasi tambah-putar-XOR (ARX) — tanpa jadual carian, masa pelaksanaan yang benar-benar malar, serta sangat pantas pada CPU tanpa pemecutan perkakasan AES. Poly1305 ialah MAC sekali guna (kod pengesahan mesej) yang mengira teg pengesahan terhadap teks sifer. Bersama-sama, kedua-duanya memberikan tahap keselamatan yang setara dengan AES-GCM, tetapi jauh lebih pantas pada peranti mudah alih dan IoT.

Mengapa ChaCha20-Poly1305 untuk Peranti Mudah Alih?

Pemproses desktop/pelayan x86 dan ARM64 moden mempunyai arahan perkakasan AES-NI yang menjadikan AES-GCM sangat pantas. Walau bagaimanapun, banyak pemproses mudah alih dan IoT tidak mempunyai AES-NI, menyebabkan AES-GCM melalui perisian agak perlahan. ChaCha20-Poly1305 direka untuk beroperasi pantas melalui perisian menggunakan operasi aritmetik mudah, lalu memberikan prestasi yang setanding pada peranti mudah alih tanpa pemecutan perkakasan. Google menambahkan ChaCha20-Poly1305 ke dalam TLS sebagai alternatif khusus untuk peranti Android, dan kini ia merupakan套 sifer kelas utama dalam TLS 1.3.

Data Berkaitan: Melindungi Pengepala

'AD' dalam AEAD ialah singkatan bagi Associated Data — metadata teks biasa yang disahkan tetapi tidak disulitkan. Ini membolehkan anda mengesahkan data yang perlu kekal boleh dibaca (seperti pengepala paket atau medan jenis rekod) sambil melindunginya daripada pengubahan. Dalam TLS 1.3, bait pengepala rekod disertakan sebagai data berkaitan dalam pengiraan AEAD. Jika penyerang mengubah pengepala (contohnya, menukar panjang rekod), pengesahan teg pengesahan akan gagal dan sambungan akan ditamatkan.

AEAD berbanding Encrypt-Then-MAC

Sebelum AEAD menjadi piawaian, ahli kriptografi mengesyorkan Encrypt-then-MAC (EtM): sulitkan teks biasa, kemudian kira MAC terhadap teks sifer. Kaedah ini selamat tetapi memerlukan dua operasi berasingan dengan dua kunci berasingan. Skim AEAD seperti AES-GCM menggabungkan kedua-dua operasi dengan satu kunci, mengurangkan kerumitan pelaksanaan dan menghapuskan seluruh kelas serangan oracle padding yang menjejaskan MAC-then-Encrypt (MtE) — susunan yang digunakan dalam versi TLS terdahulu (CBC + HMAC). TLS 1.3 yang menggunakan AEAD mengelakkan masalah ini sepenuhnya.

AES-128-GCM berbanding AES-256-GCM

Kedua-dua AES-128-GCM dan AES-256-GCM diluluskan oleh NIST dan dianggap selamat terhadap komputer klasik. AES-128 menawarkan keselamatan 128 bit dengan prestasi yang sedikit lebih pantas; AES-256 menawarkan keselamatan 256 bit, memberikan margin yang lebih besar terhadap analisis kriptografi dan ancaman kuantum pada masa hadapan. Bagi kebanyakan aplikasi hari ini, AES-128-GCM sudah memadai, tetapi sistem kerajaan terperingkat (NSA Suite B) memerlukan AES-256. TLS 1.3 menawarkan kedua-duanya, dan pelayan boleh mengutamakannya berdasarkan dasar keselamatan mereka.

Proses Pengesahan Teg Pengesahan

Apabila menyahsulit teks sifer AEAD, penerima mesti mengesahkan teg pengesahan sebelum menyahsulit. Prosesnya adalah seperti berikut: kira semula teg yang dijangka daripada teks sifer, kunci dan nonce yang diterima; bandingkannya dengan teg yang diterima menggunakan fungsi perbandingan masa malar; hanya jika kedua-duanya sepadan, teruskan dengan penyahsulitan. Perbandingan masa malar amat penting — jika perbandingan berhenti sebaik sahaja menemui bait pertama yang tidak sepadan, penyerang boleh melancarkan serangan saluran sisi pemasaan untuk memalsukan teg yang sah, bait demi bait. Mana-mana pustaka AEAD yang menggunakan perbandingan yang berhenti awal adalah terdedah.

Aplikasi AEAD di Dunia Sebenar

Algoritma AEAD digunakan secara meluas dalam keselamatan moden: TLS 1.3 menggunakan AES-GCM dan ChaCha20-Poly1305 untuk semua penyulitan rekod; WireGuard VPN menggunakan ChaCha20-Poly1305 secara eksklusif; Signal Protocol menggunakannya untuk penyulitan mesej; QUIC protocol (asas kepada HTTP/3) menggunakan AES-GCM. Apabila anda melihat套 sifer seperti TLS_AES_256_GCM_SHA384, SHA384 merujuk kepada fungsi cincangan HKDF untuk penerbitan kunci, bukannya mekanisme integriti — teg GCM mengendalikan integriti.

Semakan Ringkas

Uji pemahaman anda tentang konsep CompTIA Security+ (SY0-701) daripada pelajaran ini.

Imbas Kembali Pelajaran

Dalam pelajaran ini, anda telah mempelajari bahawa: algoritma AEAD memberikan kerahsiaan dan integriti secara serentak melalui teg pengesahan yang mengesan sebarang pengubahan teks sifer, penggunaan semula nonce AES-GCM membawa akibat yang amat serius — membolehkan pemulihan aliran kunci dan pemalsuan kunci pengesahan — maka nonce mestilah unik bagi setiap penyulitan, dan ChaCha20-Poly1305 ialah alternatif berprestasi cekap kepada AES-GCM untuk peranti yang tidak mempunyai pemecutan AES perkakasan. Seterusnya, kita akan meneroka fungsi penerbitan kunci untuk melindungi kata laluan.

Percuma untuk bermula

Pelajari Cloud & IT Cert Prep dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
150
Pelajaran
600

Soalan Lazim

Adakah pelajaran “Penyulitan Disahkan: AES-GCM dan ChaCha20-Poly1305” percuma?

Ya — teks penuh “Penyulitan Disahkan: AES-GCM dan ChaCha20-Poly1305” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Cloud & IT Cert Prep, tingkat taraf kepada CoddyKit PRO. Kursus Cloud & IT Cert Prep merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Penyulitan Disahkan: AES-GCM dan ChaCha20-Poly1305”?

Fahami cara sifir AEAD menyediakan kerahsiaan dan integriti secara serentak, serta sebab penyalahgunaan nonce dalam AES-GCM membawa kepada pemulihan kunci yang dahsyat. Anda berlatih Cloud & IT Cert Prep menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Cloud & IT Cert Prep?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Cloud & IT Cert Prep di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Penyulitan Disahkan: AES-GCM dan ChaCha20-Poly1305” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Cloud & IT Cert Prep ini?

Ya. Setiap pelajaran Cloud & IT Cert Prep menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Jabat Tangan TLS 1.3 dan Penyambungan Semula 0-RTT
  2. Penyulitan Disahkan: AES-GCM dan ChaCha20-Poly1305
  3. Fungsi Terbitan Kunci: PBKDF2, bcrypt dan Argon2
  4. Kriptografi Pascakuantum: CRYSTALS-Kyber dan Dilithium
← Kembali ke Cloud & IT Cert Prep