Pemecahan masalah: enkripsi dan flag izin
Cakupan dan batasan
Bagian berjudul “Cakupan dan batasan”Gunakan entri ini untuk menelusuri kegagalan dekripsi yang dilemparkan mesin melalui NextPDF\Exception\EncryptionException dan NextPDF\Security\Exception\DecryptionFailedException, serta untuk memahami batasan flag izin Portable Document Format (PDF).
Mulailah dari batasannya, karena ini mencegah kesalahpahaman yang paling umum: flag izin PDF dalam kamus enkripsi mencatat maksud penulis. Flag ini bukan mekanisme kontrol akses yang ditegakkan oleh pustaka ini. Pembaca yang mengabaikan flag tersebut tetap dapat mencetak, menyalin, atau mengubah konten. Perlakukan flag tersebut sebagai permintaan kepada pembaca yang kooperatif, bukan sebagai mekanisme penegakan.
Entri: operasi enkripsi gagal
Bagian berjudul “Entri: operasi enkripsi gagal”- Gejala.
EncryptionExceptiondengan pesan berbentukEncryption operation "<op>" failed using algorithm "<algorithm>". - Kemungkinan penyebab. Operasi sandi tidak dapat dijalankan, biasanya karena ekstensi OpenSSL tidak tersedia atau salah konfigurasi, materi kunci tidak valid, atau ukuran initialization vector (IV) tidak valid pada batas sandi.
- Bukti / diagnosis.
getContext()mengembalikanalgorithmdanoperation. Nilaioperationadalah salah satu dariencrypt,decrypt, ataukey_derivation, sehingga Anda dapat mengidentifikasi tahap mana yang gagal. - Penyelesaian.
- Pastikan ekstensi PHP OpenSSL telah terpasang dan dimuat.
- Gunakan bidang
operationuntuk menemukan tahap yang gagal. - Untuk
key_derivation, verifikasi masukan kata sandi atau kunci. - Jalankan ulang pemanggilan tersebut.
- Terkait. Referensi exception.
Entri: dekripsi gagal karena alasan struktural
Bagian berjudul “Entri: dekripsi gagal karena alasan struktural”- Gejala.
DecryptionFailedExceptiondengan pesan berbentukDecryption failed for "<algorithm>": <reason>. - Kemungkinan penyebab. Ciphertext tidak dapat diproses bukan karena pengusikan, melainkan karena alasan seperti ciphertext yang terpotong, IV yang hilang, atau kunci yang keliru diberikan pada batas application programming interface (API). Pemeriksaan integritas tidak berjalan karena tidak ada cukup materi yang dapat dievaluasi.
- Bukti / diagnosis.
getContext()mengembalikanalgorithmdanreason. Dokumentasi sumber membedakanDecryptionFailedExceptiondariTamperedDataException: exception ini berarti kesalahan konfigurasi atau transport, bukan pengusikan. Jangan memperlakukannya sebagai insiden keamanan dengan sendirinya. - Penyelesaian.
- Baca
reasonuntuk mengidentifikasi cacat struktural, misalnyaciphertext shorter than IV+tag. - Verifikasi bahwa ciphertext ditransfer tanpa terpotong.
- Pastikan kunci yang diberikan pada batas adalah kunci yang digunakan untuk mengenkripsi dokumen.
- Jalankan ulang pemanggilan tersebut.
- Baca
- Terkait. Kegagalan tanda tangan dan stempel waktu.
Entri: exception “tampered data” dilemparkan
Bagian berjudul “Entri: exception “tampered data” dilemparkan”- Gejala. Anda menerima
NextPDF\Security\Exception\TamperedDataExceptionalih-alihDecryptionFailedException. - Kemungkinan penyebab. Pemeriksaan integritas berjalan dan gagal. Ini berbeda dari kegagalan dekripsi struktural: materi yang tersedia cukup untuk mengevaluasi integritas, dan integritas tidak terpenuhi.
- Bukti / diagnosis. Sumber membedakan kedua kelas tersebut:
DecryptionFailedExceptionbersifat struktural dan bukan insiden keamanan;TamperedDataExceptionmenunjukkan bahwa konten terautentikasi gagal diverifikasi. - Penyelesaian.
- Perlakukan masukan sebagai tidak tepercaya; jangan gunakan konten yang telah didekripsi.
- Ambil ulang dokumen dari sumber yang tepercaya.
- Jika kegagalan tetap terjadi dengan sumber yang diketahui baik, tangkap
getContext()untuk laporan insiden.
- Terkait. Kegagalan tanda tangan dan stempel waktu.
Entri: flag izin tidak menghentikan tindakan di hilir
Bagian berjudul “Entri: flag izin tidak menghentikan tindakan di hilir”- Gejala. Sebuah dokumen dibuat dengan flag izin yang disetel — misalnya, penyalinan atau pencetakan dilarang — tetapi pembaca tetap menyalin atau mencetak kontennya.
- Kemungkinan penyebab. Ini adalah batasan yang memang diharapkan, bukan cacat. Bilangan bulat izin yang diberikan ke pembangun kamus enkripsi core tidak diterapkan sebagai penegakan oleh pustaka ini. Flag tersebut adalah metadata yang bersifat anjuran; pembaca yang tidak mematuhinya tidak diblokir oleh NextPDF.
- Bukti / diagnosis.
src/Security/Encryption/EncryptionDictionaryBuilder.phpmendeklarasikanbuildDict(int $permissions, string $fileId), dan mendokumentasikan parameter tersebut sebagaiignored; retained for forward compatibility. Metode tersebut diawali denganunset($permissions, $fileId). Flag izin yang ditampilkan olehsrc/Inspect/PdfPermissions.phpadalah bidang inspeksi baca-saja, bukan lapisan penegakan. - Penyelesaian.
- Jangan mengandalkan flag izin untuk menghentikan pencetakan, penyalinan, atau pengubahan. Flag tersebut tidak dapat ditegakkan oleh pustaka penghasil.
- Jika Anda harus membatasi akses, kendalikan distribusi berkasnya sendiri, atau terapkan sistem kontrol akses di luar PDF.
- Gunakan
PdfPermissionshanya untuk melaporkan flag yang dideklarasikan oleh dokumen yang ada, bukan untuk menyatakan bahwa tindakan tersebut dicegah.
- Terkait. Kegagalan tanda tangan dan stempel waktu.
Entri: enkripsi ditolak di bawah PDF/A
Bagian berjudul “Entri: enkripsi ditolak di bawah PDF/A”- Gejala.
NextPDF\Security\Exception\IncompatiblePdfAModeExceptionketika suatu build mengaktifkan PDF/A dan meminta enkripsi. - Kemungkinan penyebab. Profil PDF/A melarang kunci
Encryptdalam trailer. Mesin menolak kombinasi tersebut dalam urutan pemanggilan mana pun. - Bukti / diagnosis. Lihat entri PDF/A dan PDF/UA untuk klausul yang dikutip, bidang
getContext(), dan pengujian jalur kegagalan. - Penyelesaian.
- Putuskan apakah dokumen memerlukan konformansi arsip atau enkripsi.
- Hapus pemanggilan untuk properti yang tidak Anda perlukan.
- Jalankan ulang pipeline.
- Terkait. Validasi PDF/A dan PDF/UA.
Kasus tepi & jebakan
Bagian berjudul “Kasus tepi & jebakan”DecryptionFailedExceptiondanTamperedDataExceptionberarti hal yang berbeda: kegagalan struktural versus integritas yang gagal. Lakukan percabangan berdasarkan kelas, bukan berdasarkan pesan.- Pembangun kamus enkripsi core mengabaikan bilangan bulat izin; setiap build yang bergantung pada penegakan izin dari paket core dibangun di atas kesalahpahaman.
PdfPermissionshanya diisi untuk dokumen terenkripsi pada kedalaman inspeksi penuh dan mencerminkan flag yang dideklarasikan. Bidang yang terisi tidak berarti tindakan tersebut dicegah.
Lihat juga
Bagian berjudul “Lihat juga”- Referensi exception
- Kegagalan tanda tangan dan stempel waktu
- Validasi PDF/A dan PDF/UA
- Indeks basis pengetahuan
Glosarium: flag izin · dekripsi terautentikasi