Redaksi bukan sekadar persegi panjang hitam
Spec: ISO 32000-2, §7.11ISO 32000-2 §7.11Spec: ISO 32000-2, §14.13.5ISO 32000-2 §14.13.5
Sekilas pandang
Bagian berjudul “Sekilas pandang”Sebuah persegi panjang hitam yang digambar di atas sebuah nama tidak menyembunyikan apa pun. Halaman itu tampak teredaksi, tetapi teks di bawahnya masih ada, masih dapat dipilih, masih dapat disalin. Redaksi yang sungguhan tidak menutupi konten. Ia menghapusnya.
Halaman ini menjelaskan jurang antara overlay kosmetik dan penghapusan konten yang sungguhan, mengapa metadata dan berkas tersemat bertahan dari pekerjaan naif, dan bagaimana RedactionEngine enterprise NextPDF menolak berpura-pura sebuah region telah hilang ketika ia tidak benar-benar dapat menghapusnya.
Mengapa ini penting
Bagian berjudul “Mengapa ini penting”Pelanggaran data PDF yang paling sering dikutip bukanlah serangan yang cerdik. Itu adalah persegi panjang hitam. Seseorang menggambar sebuah kotak terisi di atas sebuah paragraf sensitif, mengekspor berkasnya, lalu mengirimnya. Penerimanya menekan kotak itu, menyeret ke seluruh permukaannya, dan kata-kata asli tersalin langsung keluar dari dokumen ke clipboard.
Alasannya bersifat struktural. Sebuah halaman PDF adalah sekumpulan operator penggambaran yang dilapis secara berurutan. Mengecat sebuah persegi panjang buram menambahkan satu operator lagi di atas; ia tidak menghapus operator penampil-teks di bawahnya. Bagi mata, teks itu tersembunyi. Bagi mesin, teks itu persis di tempatnya selalu berada. Overlay itu adalah sebuah kostum, dan sebuah kostum bisa dilepas.
Ini mahal karena kegagalannya senyap dan final. Dokumen itu tampak benar, lolos tinjauan visual, lalu dipublikasikan. Kebocoran itu ditemukan kemudian oleh seseorang yang memilih teksnya, dan pada saat itu setiap salinan sudah keluar.
Versi singkatnya
Bagian berjudul “Versi singkatnya”- Sebuah kotak hitam adalah operasi penggambaran yang dilapis di atas teks, bukan penghapusan terhadapnya. Byte-nya bertahan.
- Teks yang dapat dipilih bertahan karena content stream halaman masih membawa glif yang menggambar kata-katanya.
- Metadata dokumen bertahan karena ia hidup di tempat yang terpisah — document information dictionary dan XMP packet — yang tidak dapat dijangkau oleh persegi panjang apa pun di sebuah halaman.
- Berkas tersemat bertahan karena sebuah PDF dapat membawa berkas utuh di dalam dirinya sebagai embedded file streams. Spec: ISO 32000-2, §7.11ISO 32000-2 §7.11 Sebuah tanda pada sebuah halaman tidak pernah menyentuh sebuah lampiran.
- Redaksi yang sungguhan bersifat destruktif. Ia menghapus konten dari byte stream, bukan dari gambarnya. Yang hilang adalah hilang, dan permukaan residu pun ikut dibersihkan.
Bagaimana NextPDF menanganinya
Bagian berjudul “Bagaimana NextPDF menanganinya”Kosmetik versus destruktif, secara presisi
Bagian berjudul “Kosmetik versus destruktif, secara presisi”Sebuah overlay kosmetik mengubah tampilan sebuah halaman. Redaksi destruktif mengubah isi dokumen. Yang pertama dapat dibalik oleh siapa pun yang memiliki kursor teks. Yang kedua tidak menyisakan apa pun untuk dipulihkan.
RedactionEngine enterprise NextPDF dibangun untuk kasus destruktif pada
tingkat konten-teks. Metode redact()-nya menerima konten, sebuah
RedactionPolicy yang mendeskripsikan apa yang harus dicari dan bagaimana
menggantinya, lalu mengembalikan sebuah RedactionResult. Di dalamnya, ia
mendeteksi span sensitif, menggabungkan setiap yang tumpang-tindih menjadi
rentang penutup yang terpisah, lalu menulis ulang string konten dengan
substr_replace sehingga setiap byte yang tertutup dihapus tepat satu kali.
Teks sensitif tidak dicat-tutup. Ia hilang dari buffer yang dibawa kembali oleh
hasilnya.
Hasilnya jujur tentang apa yang terjadi: ia mencatat hash SHA-256 dari konten
asli, redactedContent yang telah ditulis ulang, sebuah laporan audit dari
setiap temuan, dan sebuah flag wasModified. Anda dapat membuktikan byte-nya
berubah, dan Anda dapat membuktikan yang mana.
Residu yang harus Anda kejar
Bagian berjudul “Residu yang harus Anda kejar”Menghapus teks yang terlihat itu perlu tetapi tidak cukup. Kata-kata yang sama, dan kata-kata yang tidak pernah Anda lihat di halaman, bersembunyi di tempat-tempat yang tidak pernah dijangkau oleh suntingan tingkat-halaman.
Sebuah dokumen membawa metadata dua kali lipat: sebuah information dictionary warisan dan sebuah XMP packet, yang masing-masing dapat menyimpan nama penulis, sebuah judul, atau sebuah sidik jari alat. Ia dapat membawa berkas utuh sebagai embedded file streams. Spec: ISO 32000-2, §7.11ISO 32000-2 §7.11 Ia dapat mengikat payload itu ke struktur halaman sebagai associated files, sebuah kanal artefak-terkait yang tidak dirender halaman namun tetap dipegang dokumen. Spec: ISO 32000-2, §14.13.5ISO 32000-2 §14.13.5 Tidak satu pun dari ini berada di halaman yang Anda redaksi, sehingga tidak satu pun tersentuh oleh sebuah persegi panjang. Panduan klasik tentang hal ini — laporan NSA “Hidden Data and Metadata in Adobe PDF Files” — ada justru karena begitu banyak kebocoran nyata berasal dari residu, bukan dari halaman yang terlihat.
Sebuah redaksi yang menghapus kata-kata di halaman tetapi membiarkan nama penulis di XMP packet dan spreadsheet asli sebagai sebuah lampiran belum meredaksi dokumennya. Ia telah meredaksi satu tampilan darinya.
- DetectFind every sensitive span — visible text, and the entity types a policy targets — not just the region you happen to see.
- Delete, do not coverRewrite the content stream so the glyphs are removed from the bytes. An opaque box on top leaves the text underneath intact.
- Clear the residueStrip the information dictionary and XMP metadata, and remove embedded and associated files that carry the same payload off-page.
- VerifyConfirm no selectable text, metadata field, or attachment reproduces the redacted content before the file leaves the building.
Gagal-tertutup alih-alih memalsukannya
Bagian berjudul “Gagal-tertutup alih-alih memalsukannya”Ada dua cara untuk meredaksi: berdasarkan konten (cari nama ini, hapus) dan berdasarkan zona (cat-tutup persegi panjang halaman ini, apa pun yang ada di bawahnya). Mesin enterprise melakukan yang pertama secara jujur. Ia sengaja tidak berpura-pura melakukan yang kedua.
Metode redact() menerima argumen ketiga, sebuah daftar region koordinat
ZoneRedaction. Mesin konten-teks tidak memiliki sink overlay konten-halaman —
tidak ada cara untuk benar-benar menghapus apa yang berada di dalam sebuah kotak
koordinat. Jadi ketika daftar itu tidak kosong, ia tidak menggambar persegi
panjang dan menyebut zona itu “teredaksi”. Ia melempar sebuah RuntimeException
bertipe dan memberitahu Anda untuk merutekan zona itu melalui pipeline redaksi
konten-halaman sebagai gantinya.
Penolakan itu adalah inti seluruh halaman ini yang diwujudkan ke dalam kode. Mesin lebih memilih berhenti dan menyebutkan apa yang tidak dapat dilakukannya daripada mengembalikan sebuah temuan “teredaksi” untuk sebuah region yang ia biarkan sama sekali tidak tersentuh. Sebuah overlay kosmetik senyap yang dilaporkan sebagai sebuah penghapusan adalah persis jaminan-palsu yang menghasilkan sebuah pelanggaran. Gagal-tertutup mengubah pelanggaran itu menjadi sebuah pesan kesalahan yang Anda lihat sebelum Anda mengirim.
Kesalahpahaman umum
Bagian berjudul “Kesalahpahaman umum”“Saya menggambar sebuah kotak hitam di atasnya, jadi ia teredaksi.”
Ini adalah jebakannya, dan ia adalah yang paling umum di seluruh format ini. Sebuah persegi panjang terisi adalah sebuah instruksi penggambaran yang ditumpuk di atas teks. Operator penampil-teks masih ada di content stream, glif masih menggambar, dan sebuah pilih atau salin membacanya keluar tanpa berubah. Anda menyembunyikan sebuah gambar; Anda tidak mengubah sebuah dokumen.
Sebuah jebakan kedua yang lebih halus: “Saya menghapus teks di halaman, jadi dokumennya bersih.” Belum. Konten yang sama, dan konten yang tidak pernah Anda tampilkan, dapat bertahan di metadata dan di berkas tersemat. Redaksi selesai hanya ketika setiap permukaan — konten halaman, metadata, dan lampiran — bersih dari apa yang hendak Anda hapus.
Batas dan batasan
Bagian berjudul “Batas dan batasan”Cakupan yang jujur tentang apa yang dilakukan NextPDF di sini, menurut edisi:
- Core tidak memiliki redaksi dokumen sama sekali. Ia menyertakan sebuah privacy sanitiser untuk PII audit-log — menjaga nilai sensitif keluar dari rekaman diagnostik Anda sendiri — dan itu adalah hal yang sama sekali berbeda dari meredaksi sebuah PDF yang dikirim. Jika Anda menggunakan Core dan Anda perlu meredaksi sebuah dokumen, kapabilitas yang Anda inginkan tidak hadir. Jangan menggambar sebuah kotak dan berasumsi mesin telah menghapus apa pun.
RedactionEngineenterprise meredaksi konten teks, secara destruktif. Ia menulis ulang buffer konten untuk menghapus byte sensitif dan melaporkan sebuah hash, sebuah laporan audit, dan sebuah flagwasModifiedsehingga penghapusan itu dapat dibuktikan.- Redaksi zona-koordinat gagal-tertutup. Berikan sebuah daftar
ZoneRedactionyang tidak kosong dan mesin melempar alih-alih memalsukan sebuah overlay. Itu adalah properti keamanan yang disengaja, bukan fitur yang hilang: sebuah region yang tidak dapat benar-benar dibersihkannya adalah region yang ia tolak untuk disebut bersih. - Membersihkan setiap permukaan residu juga merupakan tanggung jawab operator. Menghapus teks yang terlihat adalah satu langkah. Sebuah pekerjaan yang lengkap juga melepaskan information dictionary, XMP packet, dan setiap berkas tersemat atau berkas terasosiasi (Spec: ISO 32000-2, §7.11ISO 32000-2 §7.11, Spec: ISO 32000-2, §14.13.5ISO 32000-2 §14.13.5) yang membawa payload yang sama di luar halaman.
| Edition | Availability |
|---|---|
| Core | Tidak di edisi ini. Core tidak memiliki redaksi dokumen. Ia hanya menyediakan sebuah audit-log PII sanitiser, yang menjaga nilai sensitif keluar dari rekaman diagnostik Anda sendiri — ia tidak meredaksi sebuah PDF yang dikirim. |
| Pro | Not in this edition |
| Enterprise | Tersedia. RedactionEngine enterprise melakukan redaksi konten-teks yang destruktif dan gagal-tertutup — ia melempar sebuah exception bertipe — pada redaksi zona-koordinat yang tidak dapat benar-benar dipenuhinya, alih-alih mengecat sebuah overlay kosmetik dan melaporkan sebuah region sebagai dihapus. |
Dokumen terkait
Bagian berjudul “Dokumen terkait”- How PDF encryption really works — mengapa mengenkripsi sebuah berkas tidak sama dengan menghapus konten darinya, dan di mana masing-masing melindungi Anda.
- Metadata and the XMP packet — permukaan residu yang tidak pernah disentuh oleh redaksi tingkat-halaman, secara mendetail.
- An API that refuses to guess — sikap gagal-tertutup yang sama yang diterapkan mesin redaksi pada sebuah zona yang tidak dapat dipenuhinya.
Glosarium
Bagian berjudul “Glosarium”- Cosmetic overlay — sebuah operasi penggambaran, seperti sebuah persegi panjang terisi, yang dilapis di atas konten untuk menyembunyikannya secara visual. Ia tidak menghapus konten di bawahnya, yang tetap dapat dipilih dan disalin.
- Destructive redaction — penghapusan konten dari byte stream dokumen, bukan dari gambarnya. Setelah selesai, tidak ada apa pun di bawahnya untuk dipulihkan.
- Content stream — daftar terurut operator penggambaran yang merender sebuah halaman, termasuk operator penampil-teks yang menggambar glif. Sebuah kotak di atas tidak menghapus operator teks di bawahnya.
- Residue surface — sebuah tempat sebuah dokumen menyimpan konten yang tidak ditampilkan halaman: information dictionary, XMP metadata packet, dan berkas tersemat atau berkas terasosiasi. Sebuah redaksi yang lengkap membersihkan semuanya.
- Embedded file stream — sebuah berkas utuh yang dibawa di dalam sebuah PDF (ISO 32000-2 §7.11). Sebuah tanda pada sebuah halaman tidak pernah menyentuh sebuah lampiran.
- Fail closed — berhenti dengan sebuah kesalahan bertipe ketika sebuah operasi tidak dapat dilakukan secara jujur, alih-alih menghasilkan sebuah hasil yang tampak masuk akal namun salah. Mesin enterprise melakukan ini untuk redaksi zona-koordinat yang tidak dapat dipenuhinya.