Model keamanan untuk tanda tangan dan enkripsi
Sekilas pandang
Bagian berjudul “Sekilas pandang”Halaman ini mendefinisikan model keamanan bagi dua permukaan kriptografis yang diekspos oleh mesin inti: enkripsi dokumen dengan Advanced Encryption Standard 256-bit (AES-256) dan penandatanganan dokumen dengan Cryptographic Message Syntax (CMS)/PDF Advanced Electronic Signatures (PAdES). Halaman ini menjelaskan apa yang dilindungi oleh masing-masing mekanisme, apa yang tidak dilindunginya, dan di mana batas kepercayaannya berada.
Batas. Dukungan terhadap suatu mekanisme kriptografis tidak menjamin keamanan dalam penerapan Anda. Kekuatan dokumen terenkripsi bergantung pada kata sandi dan penyimpanan kunci yang Anda pilih. Makna tanda tangan bergantung pada sertifikat, jangkar kepercayaan, otoritas stempel waktu, dan kebijakan pemverifikasi. Kontrol tersebut berada di luar pustaka ini. Halaman ini menjelaskan mekanismenya; halaman ini tidak menyertifikasi hasilnya.
Instalasi
Bagian berjudul “Instalasi”composer require nextpdf/core:^3ext-openssl diperlukan untuk jalur penandatanganan dan CMS.
Tinjauan konseptual
Bagian berjudul “Tinjauan konseptual”Di mesin inti, Enkripsi menggunakan penangan keamanan AES-256 ISO 32000-2 §7.6 (AESV3, Revision 6) (iso32000_2_sec7#x1.x65.p29). Enkripsi memberikan kerahasiaan: pihak tanpa kata sandi tidak dapat membaca konten string dan stream. Enkripsi tidak memberikan integritas maupun keautentikan. Ciphertext tetap dapat dipotong atau diganti. Kondisi tersebut harus dideteksi oleh tanda tangan atau kode autentikasi pesan dokumen (MAC); penangan enkripsi tidak mendeteksinya.
Izin (cetak, salin, ubah) merupakan permukaan terpisah dan mudah disalahpahami. Flag izin ISO 32000-2 bersifat kooperatif terhadap pembaca (iso32000_2_sec7#x1.x71.p27). Pembaca yang patuh menghormatinya, tetapi flag tersebut merupakan metadata anjuran, bukan kontrol akses kriptografis. Alat yang tidak kooperatif dapat mengabaikannya. Mesin menuliskannya secara setia; mesin tidak dapat menegakkannya.
Untuk Penandatanganan, mesin menyematkan struktur CMS SignedData sebagaimana dijelaskan dalam ISO 32000-2 §12.8. Rentang byte yang ditandatangani adalah objek langsung, dan digest dengan sengaja mengecualikan nilai Contents tanda tangan (iso32000_2_sec12#x1.x121.p45), sehingga tanda tangan mencakup dokumen, tetapi tidak mencakup dirinya sendiri.
Permukaan API
Bagian berjudul “Permukaan API”Halaman ini tidak mengulang referensi tanda tangan. Titik masuk enkripsi dan orkestrator penandatanganan dijelaskan dalam /modules/core/security/ dan /modules/core/security/signing/. Model ini membahas makna dan batas, bukan bentuk metode.
Contoh kode — Mulai cepat
Bagian berjudul “Contoh kode — Mulai cepat”Enkripsi melindungi kerahasiaan dari pihak yang tidak memiliki kata sandi, tidak lebih dari itu:
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$doc = new Document();// AES-256 (AESV3 R6). The owner/user passwords gate read access only.// Permission flags below are advisory: a conforming reader honors them.$doc->encrypt( userPassword: 'open-secret', ownerPassword: 'owner-secret',);$doc->save('confidential.pdf');Contoh kode — Produksi
Bagian berjudul “Contoh kode — Produksi”Alur penandatanganan produksi menerapkan tanda tangan baseline CMS/PAdES dengan kunci yang disimpan oleh perangkat lunak. Edisi Core menghasilkan tingkat PAdES B-B. Ketika Anda mengonfigurasi otoritas stempel waktu, edisi Core menghasilkan PAdES B-T, yaitu B-B dengan tambahan satu atribut tak bertanda tangan RFC 3161 signature-time-stamp:
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;use NextPDF\Security\Signature\CertificateInfo;use NextPDF\Security\Signature\SignatureLevel;
$cert = CertificateInfo::fromPkcs12('signer.p12', 'pin');
$doc = new Document();// B-B is the default. B-T adds a trusted timestamp over the signature value.$doc->setSignature($cert, SignatureLevel::PAdES_B_B);$doc->save('signed.pdf');PAdES B-T sama persis dengan B-B ditambah satu atribut tak bertanda tangan RFC 3161 signature-time-stamp yang dibawa dalam CMS SignerInfo (rfc5652#p603). Stempel waktu mengikat nilai tanda tangan ke waktu tepercaya dari otoritas stempel waktu (rfc3161#p208). Stempel waktu tidak menambahkan kamus data-validasi, struktur informasi-pencabutan, maupun loop arsip-stempel-waktu. Hal-hal tersebut merupakan tingkat jangka panjang berbeda yang dibatasi secara terpisah, bukan bagian dari permukaan B-B/B-T, dan berada di luar cakupan halaman ini.
U-1. NextPDF tidak mengklaim sertifikasi independen ETSI EN 319 142-1 untuk PAdES B-T. EN 319 142-1 tidak ada dalam korpus verifikasi yang digunakan di sini. Persyaratan signature-time-stamp B-T diverifikasi terhadap ETSI EN 319 122-1 §5.3 — basis CMS Advanced Electronic Signatures (CAdES) yang diimpor oleh keluarga EN 319 142 PAdES melalui referensi (
etsi_en_319_122_1#6.x40.p96) — bersama dengan RFC 3161, RFC 5652, dan ISO 32000-2 §12.8. Dukungan untuk profil B-T bukan sertifikasi kesesuaian atau sertifikasi keabsahan hukum. Penentuan tersebut dibuat oleh validator independen.
Kasus tepi & jebakan
Bagian berjudul “Kasus tepi & jebakan”- Enkripsi ≠ integritas. Pembaca yang dapat membuka dokumen tetap dapat menerima salinan yang telah dirusak. Hanya tanda tangan (atau MAC dokumen) yang mendeteksinya. “Tamper-proof” bukan properti yang disediakan oleh penangan enkripsi, dan istilah tersebut tidak digunakan sebagai klaim produk.
- Keberadaan sebuah tanda tangan bukanlah keabsahannya. Fakta bahwa dokumen membawa kamus tanda tangan tidak mengatakan apa pun tentang apakah sertifikat tersebut tepercaya, belum kedaluwarsa, atau belum dicabut. Menetapkan keabsahan adalah operasi di sisi pemverifikasi yang diatur oleh kebijakan pihak yang mengandalkan, bukan oleh penanda tangan.
- Kepercayaan stempel waktu bersifat eksternal. Sebuah stempel waktu B-T hanya bermakna sejauh kepercayaan yang diberikan pemverifikasi kepada otoritas stempel waktu (TSA) yang menerbitkannya. Pustaka memperoleh dan menyematkan token tersebut. Pustaka tidak menjamin TSA tersebut.
- Postur FIPS bersifat lingkungan. Berjalan pada modul kriptografis yang tervalidasi FIPS adalah properti dari lingkungan operasi dan modul tersebut (
fips_140_3#x12), bukan sesuatu yang dapat dinyatakan oleh pustaka PHP atas nama pemanggilnya.
Kinerja
Bagian berjudul “Kinerja”Jalur tanda tangan menghitung satu digest rentang byte dan satu struktur CMS. Ekstensi B-T menambahkan satu perjalanan bolak-balik sinkron ke otoritas stempel waktu. Enkripsi adalah operasi simetris per-string/per-stream. Keduanya biasanya tidak mendominasi proses render. Perjalanan bolak-balik jaringan untuk B-T merupakan biaya variabel dan bergantung pada pilihan TSA pemanggil.
Catatan keamanan
Bagian berjudul “Catatan keamanan”Pernyataan batas berikut dirumuskan ulang sebagai aturan yang dapat ditegakkan bagi peninjau:
- Hanya kerahasiaan. Enkripsi AES-256 melindungi konten dari pihak yang tidak memiliki kata sandi. Enkripsi tidak memberikan integritas, keautentikan, atau kontrol akses (
iso32000_2_sec7#x1.x65.p29). - Izin bersifat anjuran. Flag izin bersifat kooperatif terhadap pembaca dan tidak ditegakkan secara kriptografis (
iso32000_2_sec7#x1.x71.p27). Teks produk tidak boleh mengeklaim bahwa flag tersebut mencegah suatu tindakan. - Hanya B-B dan B-T pada halaman ini. Permukaan penandatanganan core/Pro yang didokumentasikan di sini mencakup B-B dan ekstensi stempel waktu B-T-nya, dengan setiap penyebutan B-T ditempatkan bersama peringatan U-1 di atas. Tingkat arsip jangka panjang merupakan permukaan terpisah pada edisi berbayar dan sengaja tidak dijelaskan di sini. Tidak ada kapabilitas data-validasi, informasi-pencabutan, atau arsip-stempel-waktu yang dinyatakan pada halaman ini.
- Tidak ada klaim keabsahan hukum. Tanda tangan yang dihasilkan adalah artefak kriptografis. Apakah tanda tangan itu sah secara hukum bergantung pada yurisdiksi, kebijakan sertifikat, dan pihak yang mengandalkan, bukan pada pustaka ini.
Kesesuaian
Bagian berjudul “Kesesuaian”Dukungan bukanlah kesesuaian. Mesin menghasilkan keluaran yang menggunakan konstruksi ISO 32000-2, RFC 3161, RFC 5652, dan ETSI EN 319 122-1 yang dikutip. Mesin tidak menyatakan kesesuaian PAdES, CAdES, atau eIDAS. Validasi FIPS 140-3 adalah properti module/environment (fips_140_3#x12), bukan klaim pustaka. Penentuan kesesuaian atau keabsahan hukum apa pun dibuat oleh validator atau asesor independen.