Cryptology Academy · Pelajaran

RSA-PSS untuk Tanda Tangan Digital

Pelajari pengodean PSS, salt, dan alasan PSS menggantikan PKCS#1 v1.5 untuk penandatanganan.

Pelajaran 4 dari 413 langkah

RSA-PSS untuk Tanda Tangan Digital 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.

Selamat Datang

RSA-PSS (Skema Tanda Tangan Probabilistik) adalah pengganti aman untuk tanda tangan PKCS#1 v1.5. RSA-PSS menggunakan pengodean acak untuk menghasilkan tanda tangan yang keamanannya dapat dibuktikan.

Kelemahan Tanda Tangan PKCS#1 v1.5

Tanda tangan PKCS#1 v1.5 menggunakan pengodean DigestInfo yang deterministik. Serangan pemalsuan yang telah diketahui mengeksploitasi implementasi verifikasi yang longgar. Bleichenbacher (2006) menunjukkan pemalsuan tanda tangan terhadap verifikator tertentu.

Tujuan Desain PSS

Bellare-Rogaway 1996: PSS menambahkan nilai acak untuk membuat tanda tangan bersifat probabilistik. Setiap proses penandatanganan menghasilkan tanda tangan yang berbeda. Keamanannya dapat dibuktikan dalam model orakel acak — reduksi ketat terhadap kesulitan RSA.

Langkah Pengodean PSS

1. mHash = Hash(M) 2. salt = random(sLen bytes) 3. M' = 0x00×8 || mHash || salt 4. H = Hash(M') 5. DB = PS || 0x01 || salt 6. dbMask = MGF1(H, emLen - hLen - 1) 7. maskedDB = DB XOR dbMask 8. EM = maskedDB || H || 0xbc

Pilihan Panjang Nilai Acak

Pilihan PKCS#1 v2.2: - MAX_LENGTH: nilai acak sepanjang hash (disarankan, keamanan maksimum) - DIGEST_LENGTH: nilai acak sepanjang hash (standar) - 0: PSS deterministik (kehilangan sifat probabilistik, tidak disarankan) Python: padding.PSS.MAX_LENGTH

Verifikasi PSS

Pulihkan EM = sig^e mod n. Urai maskedDB dan H. Hitung M' dari mHash (dari pesan) dan nilai acak yang dipulihkan. Verifikasi H == Hash(M'). Nilai acaknya tidak perlu cocok — yang perlu diverifikasi hanyalah H.

Perbandingan Keamanan PSS dan v1.5

PSS: keamanan yang dapat dibuktikan, reduksi ketat, tanda tangan probabilistik, komputasi sedikit lebih besar. v1.5: keamanan heuristik, deterministik, lebih cepat, rentan terhadap serangan orakel format. Semua kode baru sebaiknya menggunakan PSS.

PSS dalam TLS 1.3

TLS 1.3 mewajibkan RSA-PSS untuk semua tanda tangan RSA. PKCS#1 v1.5 dilarang dalam ekstensi TLS 1.3 yang baru. Algoritma tanda tangan: rsa_pss_rsae_sha256, rsa_pss_rsae_sha384, rsa_pss_rsae_sha512.

PSS dalam Python

from cryptography.hazmat.primitives.asymmetric import padding from cryptography.hazmat.primitives import hashes # Sign sig = private_key.sign( message, padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH), hashes.SHA256() )

OID RSASSA-PSS

RSA-PSS memiliki jenis kunci OID sendiri: id-RSASSA-PSS (1.2.840.113549.1.1.10). Kunci yang dibuat khusus untuk PSS menggunakan OID ini dan memerlukan penandatanganan PSS (tidak akan berfungsi dengan v1.5). Ini merupakan praktik terbaik untuk penerapan baru.

Rekomendasi Hash Terpotong dan Nilai Acak

Keamanan PSS = min(|modulus|/2, |hash|) - 1 bit ketika salt_length = hash_length. Untuk RSA-2048 dengan SHA-256: keamanan 128 bit. Sesuaikan tingkat keamanan: RSA-3072 + SHA-384 untuk keamanan 192 bit.

Pemeriksaan Singkat

Apa yang membuat tanda tangan RSA-PSS bersifat "probabilistik" dibandingkan dengan PKCS#1 v1.5?

Ringkasan

RSA-PSS adalah cara aman untuk menandatangani dengan RSA. Selanjutnya kita akan menguasai kriptografi kurva eliptik — memahami geometri dan aljabar kurva.
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 “RSA-PSS untuk Tanda Tangan Digital” gratis?

Ya — teks lengkap “RSA-PSS untuk Tanda Tangan Digital” 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 “RSA-PSS untuk Tanda Tangan Digital”?

Pelajari pengodean PSS, salt, dan alasan PSS menggantikan PKCS#1 v1.5 untuk penandatanganan. 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 “RSA-PSS untuk Tanda Tangan Digital” 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. RSA dari Buku Teks & Alasan Ketidakamanannya
  2. Padding PKCS#1 v1.5 & Bleichenbacher
  3. OAEP: Padding Enkripsi Asimetris Optimal
  4. RSA-PSS untuk Tanda Tangan Digital
← Kembali ke Cryptology Academy