libsodium: Pustaka Kripto yang Tahan terhadap Penyalahgunaan
Jelajahi API libsodium yang memiliki pendapat tegas sehingga pemilihan parameter yang tidak aman menjadi sulit.
libsodium: Pustaka Kripto yang Tahan terhadap Penyalahgunaan adalah pelajaran Cryptology Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
Filosofi dan Asal-usul libsodium
libsodium dibuat oleh Frank Denis sebagai implementasi portabel lintas platform dari pustaka NaCl (Jaringan dan Kriptografi) yang dikembangkan oleh Daniel Bernstein, Tanja Lange, dan Peter Schwabe. Filosofi intinya adalah membuat penggunaan kriptografi yang benar semudah mungkin dan penggunaan yang keliru sesulit mungkin. Bawaan yang aman, antarmuka pemrograman aplikasi yang sederhana, dan pilihan algoritma yang tegas mencegah kesalahan umum yang sering muncul pada pustaka tingkat rendah.
Enkripsi Terautentikasi dengan Kunci Rahasia
crypto_secretbox menyediakan enkripsi terautentikasi dengan kunci rahasia menggunakan XSalsa20-Poly1305. API ini menerima pesan, nonce 24 byte (dibuat secara acak), dan kunci 32 byte. Keluaran berupa teks tersandi yang sekaligus dienkripsi dan diautentikasi. crypto_secretbox_open mendekripsi dan memverifikasi penanda autentikasi secara atomik, lalu mengembalikan kesalahan jika terdeteksi perubahan tanpa izin. Ini mencegah dekripsi teks tersandi yang rusak atau diubah secara berbahaya.
Enkripsi Terautentikasi dengan Kunci Publik
crypto_box menyediakan enkripsi terautentikasi dengan kunci publik antara dua pihak menggunakan X25519-XSalsa20-Poly1305. Dengan kunci privat pengirim dan kunci publik penerima, fungsi ini mengenkripsi serta mengautentikasi pesan sehingga hanya penerima yang dituju yang dapat mendekripsinya, sementara penerima dapat memverifikasi identitas pengirim. crypto_box_seal adalah varian anonim: pengirim disembunyikan dan hanya enkripsi, bukan autentikasi pengirim, yang disediakan.
Tanda Tangan Digital dengan Ed25519
crypto_sign mengimplementasikan tanda tangan digital menggunakan Ed25519. Pembuatan kunci menghasilkan kunci privat 64 byte (sebenarnya benih yang digabungkan dengan kunci publik) dan kunci publik 32 byte. Penandatanganan menghasilkan tanda tangan 64 byte. Verifikasi berlangsung cepat dan dalam waktu konstan. Tanda tangan Ed25519 bersifat deterministik (pesan dan kunci yang sama selalu menghasilkan tanda tangan yang sama), sehingga menghilangkan kerentanan akibat kegagalan keacakan yang memengaruhi ECDSA dalam beberapa implementasi.
Pembuatan Hash dengan BLAKE2b
crypto_generichash menyediakan pembuatan hash untuk keperluan umum menggunakan BLAKE2b. Berbeda dari SHA-256, BLAKE2b tidak memerlukan konstruksi HMAC terpisah untuk pembuatan hash berbasis kunci; fungsi ini dapat menerima kunci opsional secara langsung. Panjang keluaran dapat dikonfigurasi dari 16 hingga 64 byte. Pada prosesor modern 64-bit, BLAKE2b lebih cepat daripada SHA-256 dan SHA-512, sekaligus memberikan karakteristik keamanan yang setara atau lebih baik.
Derivasi Kunci dengan BLAKE2b
crypto_kdf menyediakan derivasi kunci dari kunci master menggunakan BLAKE2b. Dengan kunci master 32 byte, string konteks (8 byte yang mengidentifikasi tujuan), dan ID subkunci (angka 64-bit), fungsi ini menghasilkan subkunci yang independen secara kriptografis dengan panjang yang dapat dikonfigurasi. Dengan demikian, Anda dapat menghasilkan beberapa kunci independen dari satu kunci master untuk tujuan yang berbeda tanpa korelasi apa pun di antara kunci-kunci yang dihasilkan.
Pembuatan Hash Kata Sandi dengan Argon2id
crypto_pwhash menyediakan pembuatan hash kata sandi menggunakan Argon2id, pemenang Kompetisi Pembuatan Hash Kata Sandi. Argon2id menggabungkan komputasi yang membutuhkan banyak memori (tahan terhadap serangan GPU) dengan komputasi yang membutuhkan banyak waktu (tahan terhadap serangan ASIC). Parameternya mencakup batas operasi (biaya waktu) dan batas memori, yang dapat disesuaikan dengan persyaratan keamanan. crypto_pwhash_str menghasilkan string standar yang cocok untuk disimpan dan mencakup algoritma serta parameternya.
Kotak Tertutup untuk Enkripsi Anonim
crypto_box_seal mengenkripsi pesan kepada penerima tanpa mengungkapkan pengirim. Fungsi ini menghasilkan pasangan kunci sementara, melakukan pertukaran kunci dengan kunci publik penerima, lalu membuang kunci privat sementara tersebut. Penerima dapat mendekripsi pesan menggunakan kunci privatnya, tetapi tidak dapat mengidentifikasi pengirim. Ini cocok untuk sistem pengiriman anonim dan saluran terenkripsi satu arah.
Dukungan Bahasa Pemrograman libsodium
libsodium memiliki dukungan penghubung untuk hampir semua bahasa pemrograman utama. PyNaCl menyediakan penghubung Python yang idiomatis, dengan pengecualian khas Python dan objek byte. libsodium-wrappers menyediakan penghubung JavaScript/Node.js (WASM untuk peramban). libsodium.js adalah versi murni dalam JavaScript. Kualitas penghubung bervariasi: pilih penghubung resmi atau yang dipelihara secara luas, yang membungkus pustaka C alih-alih mengimplementasikan ulang algoritmanya.
Perbandingan dengan API Tingkat Rendah OpenSSL
API tingkat rendah OpenSSL memerlukan keputusan eksplisit mengenai algoritma, ukuran kunci, mode, padding, dan pengelolaan IV. Kombinasi yang salah diterima tanpa pemberitahuan. libsodium menyediakan satu implementasi yang benar untuk setiap kasus penggunaan tanpa memerlukan konfigurasi. Misalnya, mengenkripsi dengan OpenSSL mengharuskan Anda memilih sandi, mode, derivasi kunci, pembuatan IV, dan padding; dengan crypto_secretbox milik libsodium, Anda cukup memberikan kunci, nonce, dan pesan, lalu sisanya ditangani dengan benar.
Memilih libsodium untuk Proyek Baru
libsodium adalah titik awal yang direkomendasikan untuk setiap proyek yang memerlukan operasi kriptografi dalam bahasa yang didukung. Cakupan API-nya yang kecil mengurangi kemungkinan salah penggunaan, algoritmanya modern dan telah dianalisis secara menyeluruh, serta implementasi C lintas platformnya telah diuji secara menyeluruh. Beralih ke pustaka tingkat rendah seperti OpenSSL hanya diperlukan jika Anda membutuhkan algoritma tertentu yang tidak tersedia di libsodium atau memerlukan validasi FIPS 140-2.
Operasi libsodium
Fungsi libsodium mana yang harus Anda gunakan untuk membuat hash kata sandi agar disimpan dalam basis data?
Ringkasan libsodium
Ringkasan libsodium: default yang aman dan API yang sulit disalahgunakan, dibangun di atas primitif NaCl oleh Bernstein dan rekan-rekannya, crypto_secretbox untuk enkripsi dengan kunci rahasia (XSalsa20-Poly1305), crypto_box untuk enkripsi dengan kunci publik (X25519), crypto_sign untuk tanda tangan Ed25519, crypto_generichash untuk pembuatan hash BLAKE2b, crypto_pwhash untuk pembuatan hash kata sandi Argon2id, kotak tertutup untuk enkripsi anonim, serta penghubung bahasa untuk sebagian besar platform utama.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “libsodium: Pustaka Kripto yang Tahan terhadap Penyalahgunaan” gratis?
Ya — teks lengkap “libsodium: Pustaka Kripto yang Tahan terhadap Penyalahgunaan” 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 “libsodium: Pustaka Kripto yang Tahan terhadap Penyalahgunaan”?
Jelajahi API libsodium yang memiliki pendapat tegas sehingga pemilihan parameter yang tidak aman menjadi sulit. 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 1 dari 4.
Berapa lama pelajaran “libsodium: Pustaka Kripto yang Tahan terhadap Penyalahgunaan” 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
- libsodium: Pustaka Kripto yang Tahan terhadap Penyalahgunaan
- API OpenSSL: Struktur Inti dan Jebakan
- Google Tink: Kripto Tingkat Tinggi yang Aman
- Mengaudit dan Memilih Dependensi Kriptografi