Cryptology Academy · Pelajaran

Penanggulangan: Masking, Blinding & Kode Waktu Konstan

Implementasikan masking, blinding titik, dan perbandingan waktu konstan.

Pelajaran 4 dari 412 langkah

Penanggulangan: Masking, Blinding & Kode Waktu Konstan adalah pelajaran Cryptology Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cryptology Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cryptology Academy mencakup 4 pelajaran total.

Tiga Keluarga Penanggulangan

Penanggulangan kanal samping terbagi menjadi tiga keluarga: penyamaran (mengacak nilai antara), pembutaan (mengacak masukan/keluaran), dan kode waktu konstan (menghilangkan pengaturan waktu yang bergantung pada data).

Penyamaran Boolean

Lakukan XOR pada setiap nilai antara dengan penyamar acak baru r. Proses nilai tersamar x⊕r dan buka penyamarannya di akhir. Jejak daya kini bergantung pada x⊕r, bukan pada x.

Penyamaran Aritmetika untuk Perkalian

Untuk operasi perkalian, gunakan penyamar perkalian: ganti x dengan x·r mod p. Skema penyamaran harus kompatibel dengan setiap operasi aljabar dalam sandi.

Pembutaan RSA

Sebelum mendekripsi teks tersandi c, pilih r acak dan hitung c' = c·r^e mod n. Dekripsi c' untuk memperoleh m·r mod n, lalu hilangkan faktor r dengan pembagian. Eksponensiasi yang sebenarnya tidak pernah melihat c asli.

Pembutaan Titik ECC

Acak koordinat proyektif: alih-alih titik afine (x,y), gunakan (λx : λy : λ) untuk λ acak. Perkalian skalar beroperasi pada koordinat yang diacak, sehingga jejak daya berubah setiap kali.

Aturan Pemrograman Waktu Konstan

1. Jangan gunakan percabangan yang bergantung pada rahasia. 2. Jangan gunakan indeks memori yang bergantung pada rahasia. 3. Jangan lakukan penghentian lebih awal. 4. Gunakan operasi waktu konstan bawaan platform jika tersedia (misalnya, crypto_verify_32).

Perbandingan Waktu Konstan dalam Python

Jangan pernah menggunakan == atau hmac.compare_digest pada bita mentah dalam jalur yang sensitif terhadap pengaturan waktu. Gunakan:

import hmac

def constant_time_compare(a: bytes, b: bytes) -> bool:
    """Uses HMAC double-HMAC trick for constant-time equality."""
    # hmac.compare_digest is constant-time in CPython
    return hmac.compare_digest(a, b)

# Example
secret = b"expected_mac_value"
received = b"attacker_provided__"
print(constant_time_compare(secret, received))  # False, but no timing leak

Kendala Kompilator dan Arsitektur

Kompilator dapat mengoptimalkan kode waktu konstan hingga terhapus. Gunakan penyimpanan volatil, penghalang memori, atau intrinsik bahasa rakitan. Kompilator C memiliki -fno-delete-null-pointer-checks, tetapi tidak ada jaminan waktu konstan yang universal.

Pengacakan Urutan dan Operasi Tiruan

Acak urutan pencarian kotak-S, atau sisipkan operasi tiruan yang mengonsumsi daya tanpa memengaruhi hasil. Hal ini meningkatkan tingkat kesulitan bagi DPA, tetapi tidak menghilangkan kebocoran.

Penanggulangan Perangkat Keras

Akselerator kriptografi khusus (ARM TrustZone, AES perangkat keras STM32) menerapkan penyamaran dalam silikon. Implementasi ASIC menambahkan perisai logam dan jaring aktif untuk mendeteksi penyelidikan fisik.

Pemeriksaan Pengetahuan

Penanggulangan apa yang mencegah serangan pengaturan waktu RSA dengan mengacak teks tersandi sebelum eksponensiasi?

Rangkuman Pelajaran

Penyamaran mengacak nilai antara; pembutaan mengacak masukan RSA/ECC; kode waktu konstan menghilangkan percabangan berdasarkan pengaturan waktu. Pertahanan berlapis menggabungkan ketiganya. Akselerator perangkat keras menerapkannya dalam silikon untuk memberikan jaminan terkuat.

Gratis untuk memulai

Belajar Cryptology Academy dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
67
Pelajaran
261

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Penanggulangan: Masking, Blinding & Kode Waktu Konstan” gratis?

Ya — teks lengkap “Penanggulangan: Masking, Blinding & Kode Waktu Konstan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cryptology Academy, upgrade ke CoddyKit PRO. Kursus Cryptology Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Penanggulangan: Masking, Blinding & Kode Waktu Konstan”?

Implementasikan masking, blinding titik, dan perbandingan waktu konstan. Kamu berlatih Cryptology Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Cryptology Academy?

Tidak diperlukan pengalaman sebelumnya. Cryptology Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Penanggulangan: Masking, Blinding & Kode Waktu Konstan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Cryptology Academy ini?

Ya. Setiap pelajaran Cryptology Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Serangan Waktu: Mengekstrak Kunci dari Waktu Eksekusi
  2. Analisis Daya: SPA & DPA
  3. Saluran Samping Elektromagnetik & Akustik
  4. Penanggulangan: Masking, Blinding & Kode Waktu Konstan
← Kembali ke Cryptology Academy