Topik temu duga representatif

Temu duga pengekodan: Bagaimanakah anda melaksanakan pengesah ML-DSA tanpa menyalahgunakan konteks?

PengekodanSukar
Pasukan Editorial Offer.ccDiterbitkan Dikemas kini

Soalan

Laksanakan pembalut (wrapper) pengesahan tandatangan ML-DSA yang mana pemanggil membekalkan algoritma, kunci awam, mesej, tandatangan dan konteks. Bagaimanakah anda mengesahkan input, menghalang main semula rentas protokol (cross-protocol replay), serta mereka bentuk ralat dan ujian?

Gesaan dan skop

Laksanakan pembalut (wrapper) pengesahan tandatangan ML-DSA yang mana pemanggil membekalkan algoritma, kunci awam, mesej, tandatangan dan konteks. Bagaimanakah anda mengesahkan input, menghalang main semula rentas protokol (cross-protocol replay), serta mereka bentuk ralat dan ujian?

Perkara yang dinilai oleh penemu duga

  • Menggunakan semula pelaksanaan FIPS 204 yang telah disahkan dan bukannya menulis semula primitif kriptografi berasaskan kekisi (lattice cryptography).
  • Mengekalkan pengecam algoritma, kunci awam, mesej, tandatangan dan konteks sebagai input yang jelas dan tidak samar-samar.
  • Membezakan antara tandatangan tidak sah, input tidak terbentuk dengan betul (malformed), algoritma tidak disokong dan ralat dalaman tanpa membocorkan butiran sensitif.
  • Menggunakan pengikatan konteks (context binding), antara muka yang sempit dan ujian vektor untuk menghalang main semula rentas protokol serta sisihan pelaksanaan (implementation drift).

Soalan penjelasan

  1. Set parameter ML-DSA yang manakah digunakan, dan adakah pustaka tersebut telah lulus pengesahan vektor FIPS 204?
  2. Protokol manakah yang mentakrifkan konteks, adakah ia boleh kosong, dan apakah pengekodan serta had panjang yang dikenakan?
  3. Adakah kegagalan pengesahan merupakan hasil perniagaan biasa atau peristiwa amaran dan audit?
  4. Adakah mesej distrim, adakah antara muka pra-cincangan (pre-hash) diperlukan, dan bagaimanakah kunci diputarkan?

Kerangka jawapan 30 saat

Saya akan mengekalkan pembalut pada API pustaka ML-DSA yang telah disahkan. Pilih set parameter daripada pengecam algoritma yang eksplisit, sahkan input bait dan konteks, serta hantar konteks protokol bersama mesej untuk pengesahan. Kembalikan hanya sah (valid), tidak sah (invalid), tidak disokong (unsupported), atau salah bentuk (malformed); jangan sekali-kali mengembalikan surihan pengecualian (exception trace). Uji vektor rasmi, pengusikan (tampering), set parameter yang salah, main semula rentas konteks, panjang sempadan, kekompaunan (concurrency) dan pemutaran kunci. Kunci persendirian dan mesej penuh tidak boleh dimasukkan ke dalam log sama sekali.

Perbincangan mendalam langkah demi langkah

1. Menetapkan sempadan pembalut

FIPS 204 mentakrifkan pemeteraian dan pengesahan ML-DSA; RFC 9882 menyatakan bahawa CMS menggunakan algoritma pengesahan yang sama untuk tandatangan terlindung (hedged) dan deterministik. Kod aplikasi tidak sepatutnya melaksanakan NTT, pensampelan, atau pensampelan penolakan (rejection sampling). Pinkan kebergantungan, set parameter dan antara muka pustaka yang telah diuji.

2. Sahkan input dan konteks

Semak bahawa pengecam algoritma dibenarkan, bait kunci awam dan tandatangan sepadan dengan set parameter yang dipilih, dan mesej berada dalam lingkungan dasar. Enkodkan konteks mengikut protokol. Konteks bukan sekadar label log; ia menyediakan pengasingan domain tandatangan dan mestilah nilai yang sama yang dipersetujui oleh penandatangan. Konteks yang hilang atau salah mengembalikan malformed atau invalid; jangan sekali-kali meneka konteks kosong.

3. Reka bentuk semantik ralat yang selamat

Kembalikan hasil berstruktur seperti valid, invalid, unsupported, atau malformed dan bukannya memaparkan pengecualian pustaka, bahan kunci, atau butiran penghurai (parser). Metrik dan audit hanya merekodkan algoritma, versi, kelas hasil dan id permintaan. Ralat dalaman disalurkan melalui saluran ralat dan amaran yang terkawal; kegagalan ranap pustaka tidak boleh disamarkan sebagai tandatangan tidak sah.

4. Kunci tingkah laku dengan vektor dan ujian protokol

Jalankan vektor serasi NIST ACVP atau FIPS 204 terlebih dahulu, kemudian uji pembalikan bit (bit flips), pemangkasan (truncation), konteks berbeza, pengecam algoritma yang salah dan kunci lama. Dalam kes rentas protokol, pastikan mesej yang sama tidak diterima di bawah konteks yang berbeza. Gunakan input tidak boleh ubah (immutable) untuk panggilan serentak, terima tetingkap kunci lama yang jelas semasa pemutaran, dan tolak selepas tamat tempoh.

Contoh jawapan berkualiti tinggi

Saya akan menjadikan ini pembalut nipis di sekitar pustaka yang disahkan, bukan pelaksanaan semula ML-DSA. Pemanggil mesti menyediakan pengecam algoritma yang eksplisit, set parameter, kunci awam, mesej, tandatangan dan konteks protokol. Pembalut mengesahkan format dan saiz, menghantar konteks yang sama kepada API pengesahan, dan tidak pernah mencuba semula set parameter lain atau konteks kosong selepas kegagalan. Ia hanya mengembalikan valid, invalid, unsupported, atau malformed; ralat dalaman memberi amaran secara berasingan, dan log mengecualikan kunci serta mesej. Vektor FIPS/ACVP, pengusikan, pemangkasan, main semula rentas konteks, pemutaran kunci dan ujian keserentakan mengunci tingkah laku sementara versi pustaka dan parameter kekal dipinkan.

Kesilapan biasa

  • Melaksanakan semula NTT, pensampelan, atau pensampelan penolakan ML-DSA.
  • Mengabaikan pengecam algoritma dan mencuba satu kunci awam merentas pelbagai set parameter.
  • Mencuba semula konteks kosong atau alternatif selepas pengesahan gagal.
  • Menggabungkan kegagalan pustaka, tandatangan tidak sah dan input salah bentuk ke dalam satu hasil yang tidak wajar.
  • Menulis mesej penuh, kunci, atau surihan pengecualian ke dalam log.
  • Hanya menguji laluan lancar (happy path) tanpa kes vektor, pengusikan, main semula dan pemutaran.

Soalan dan jawapan susulan

Adakah tandatangan hedged dan deterministik memerlukan kod pengesahan yang berbeza?

Tidak. RFC 9882 menyatakan bahawa kedua-duanya menggunakan algoritma pengesahan yang sama, jadi pembalut tidak sepatutnya bercabang kepada dua laluan pengesahan berdasarkan mod pemeteraian.

Mengapakah konteks menghalang main semula rentas protokol?

Ia mengikat tandatangan pada domain protokol. Mesej dan kunci yang sama mempunyai makna pengesahan yang berbeza di bawah konteks yang berbeza; pengesah tidak boleh meneka atau menggunakan nilai sandaran apabila konteks tiada.

Bagaimanakah anda mengendalikan peningkatan pustaka?

Pinkan set parameter dan versi pustaka, jalankan vektor rasmi dan sampel keserasian sejarah, kemudian laksanakan perubahan secara kenari (canary). Rekodkan versi dan kelas hasil, mengekalkan pengesah lama sehingga migrasi selesai jika tingkah laku berbeza.

Sumber awam

Soalan berkaitan

Alat temu duga berkaitan

Gunakan Tangkapan Skrin untuk gesaan pengekodan

Tangkap soalan, kemudian selesaikan kekangan, penyelesaian, kod, kes pinggir dan kerumitan mengikut urutan.

Lihat alat