İçeriğe geç
getnextpdf.com

Redaksiyon siyah bir dikdörtgen değildir

Spec: ISO 32000-2, §7.11Spec: ISO 32000-2, §14.13.5

Bir adın üzerine çizilen bir siyah dikdörtgen hiçbir şey gizlemez. Sayfa redakte edilmiş görünür, ama altındaki metin hâlâ oradadır, hâlâ seçilebilirdir, hâlâ kopyalanabilirdir. Gerçek redaksiyon içeriği örtmez. Onu siler.

Bu sayfa, kozmetik bir kaplama ile gerçek içerik kaldırma arasındaki boşluğu, meta verinin ve gömülü dosyaların naif bir işten neden sağ çıktığını ve NextPDF kurumsal RedactionEngine’in, bir bölgeyi gerçekten kaldıramadığında onun gittiğini iddia etmeyi nasıl reddettiğini açıklar.

En çok alıntılanan PDF veri ihlalleri kurnaz saldırılar değildi. Siyah dikdörtgenlerdi. Birisi hassas bir paragrafın üzerine dolu bir kutu çizdi, dosyayı dışa aktardı ve yola çıkardı. Alıcı kutuya bastı, üzerinde sürükledi ve özgün sözcükler doğrudan belgeden panoya kopyalandı.

Nedeni yapısaldır. Bir PDF sayfası, sırayla katmanlanmış bir dizi çizim işlecidir. Opak bir dikdörtgen boyamak, üstüne bir işleç daha ekler; altındaki metin-gösterme işlecini kaldırmaz. Göze göre metin gizlenmiştir. Makineye göre tam olarak her zaman olduğu yerdedir. Kaplama bir kostümdür ve bir kostüm çıkar.

Bu, pahalıdır; çünkü başarısızlık sessiz ve nihaidir. Belge doğru görünür, görsel bir incelemeyi geçer ve yayımlanır. Sızıntı, metni seçen biri tarafından sonradan keşfedilir ve o zamana dek her kopya çoktan dışarı çıkmıştır.

  • Bir siyah kutu, metnin üzerine katmanlanmış bir çizim işlemidir, onun bir silmesi değil. Byte’lar sağ kalır.
  • Seçilebilir metin sağ kalır; çünkü sayfa içerik akışı, sözcükleri çizen glifleri hâlâ taşır.
  • Belge meta verisi sağ kalır; çünkü ayrı bir yerde yaşar — sayfadaki hiçbir dikdörtgenin ulaşamayacağı document information sözlüğü ve XMP paketi.
  • Gömülü dosyalar sağ kalır; çünkü bir PDF, içinde bütün dosyaları gömülü dosya akışları olarak taşıyabilir. Spec: ISO 32000-2, §7.11 Bir sayfadaki bir işaret, bir eke asla dokunmaz.
  • Gerçek redaksiyon yıkıcıdır. İçeriği resimden değil, byte akışından kaldırır. Giden gitmiştir ve artık yüzeyleri de temizlenir.

Kozmetik bir kaplama, bir sayfanın neye benzediğini değiştirir. Yıkıcı redaksiyon, belgenin neyi içerdiğini değiştirir. Birincisi, bir metin imleci olan herkes için geri döndürülebilirdir. İkincisi, kurtarılacak hiçbir şey bırakmaz.

NextPDF kurumsal RedactionEngine, yıkıcı durum için metin-içeriği düzeyinde kurulmuştur. redact() metodu içeriği, neyin bulunup nasıl değiştirileceğini tanımlayan bir RedactionPolicy’yi alır ve bir RedactionResult döndürür. İçeride, hassas aralıkları tespit eder, çakışan herhangi bir aralığı ayrık kapsayan aralıklara birleştirir ve sonra içerik dizgesini substr_replace ile yeniden yazar; böylece kapsanan her byte tam olarak bir kez kaldırılır. Hassas metin üzerine boyanmaz. Sonucun geri taşıdığı arabellekten gitmiştir.

Sonuç, ne olduğu hakkında dürüsttür: özgün içeriğin SHA-256 özetini, yeniden yazılmış redactedContent’i, her bulgunun bir denetim raporunu ve bir wasModified bayrağını kaydeder. Byte’ların değiştiğini kanıtlayabilir ve hangilerinin değiştiğini kanıtlayabilirsiniz.

Görünür metni kaldırmak gereklidir ama yeterli değildir. Aynı sözcükler ve sayfada hiç görmediğiniz sözcükler, sayfa düzeyinde bir düzenlemenin asla ulaşamadığı yerlerde saklanır.

Bir belge meta veriyi iki kat taşır: eski bir information sözlüğü ve bir XMP paketi; ikisinden biri bir yazar adını, bir başlığı ya da bir araç parmak izini tutabilir. İçinde bütün dosyaları gömülü dosya akışları olarak taşıyabilir. Spec: ISO 32000-2, §7.11 O yükleri sayfa yapısına ilişkili dosyalar olarak bağlayabilir; sayfanın oluşturmadığı ama belgenin hâlâ tuttuğu, ilgili-eser kanalı. Spec: ISO 32000-2, §14.13.5 Bunların hiçbiri redakte ettiğiniz sayfada değildir; bu yüzden hiçbirine bir dikdörtgen dokunmaz. Bu konudaki klasik yönlendirme — NSA “Hidden Data and Metadata in Adobe PDF Files” raporu — tam da pek çok gerçek sızıntının görünür sayfadan değil, artıktan gelmesi nedeniyle vardır.

Sayfadaki sözcükleri silen ama yazarın adını XMP paketinde ve özgün elektronik tabloyu bir ek olarak bırakan bir redaksiyon, belgeyi redakte etmemiştir. Onun bir görünümünü redakte etmiştir.

  1. DetectFind every sensitive span — visible text, and the entity types a policy targets — not just the region you happen to see.
  2. 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.
  3. Clear the residueStrip the information dictionary and XMP metadata, and remove embedded and associated files that carry the same payload off-page.
  4. VerifyConfirm no selectable text, metadata field, or attachment reproduces the redacted content before the file leaves the building.
What a complete destructive redaction removes, in order: detect the sensitive content, delete the bytes from the content stream rather than draw over them, then clear the residue surfaces — metadata and embedded payloads — that a page-level mark never reaches, and finally verify nothing copyable survived.

Redakte etmenin iki yolu vardır: içeriğe göre (bu adı bul, sil) ve bölgeye göre (sayfanın bu dikdörtgenini, altında ne varsa boya). Kurumsal motor, birincisini dürüstçe yapar. İkincisini yapıyor gibi davranmayı bilinçli olarak yapmaz.

redact() metodu, üçüncü bir bağımsız değişkeni — bir ZoneRedaction koordinat bölgeleri listesini — kabul eder. Metin-içeriği motorunun bir sayfa-içeriği kaplama yutağı yoktur — bir koordinat kutusunun içinde oturan şeyi gerçekten kaldırmanın bir yolu yoktur. Bu yüzden o liste boş olmadığında, bir dikdörtgen çizip bölgeye “redakte edildi” demez. Tipli bir RuntimeException fırlatır ve size bölgeyi bunun yerine bir sayfa-içeriği redaksiyon hattından geçirmenizi söyler.

O reddediş, bu sayfanın bütün amacının koda dökülmüş hâlidir. Motor, gerçekten yerine getiremeyeceği bir bölge için “redakte edildi” bulgusu döndürmektense durup yapamadığı şeyi adlandırmayı yeğler. Bir kaldırma olarak raporlanan sessiz bir kozmetik kaplama, bir ihlal üreten tam o yanlış güvencedir. Kapalı başarısız olmak, o ihlali, göndermeden önce gördüğünüz bir hata mesajına çevirir.

“Üzerine bir siyah kutu çizdim, yani redakte edildi.”

Bu tuzaktır ve tüm biçimdeki en yaygın olanıdır. Dolu bir dikdörtgen, metnin üstüne yığılmış bir çizim yönergesidir. Metin-gösterme işleçleri hâlâ içerik akışındadır, glifler hâlâ çizer ve bir seçme ya da bir kopyalama onları değişmeden okur. Bir resim gizlediniz; bir belge değiştirmediniz.

İkinci, daha incelikli bir tuzak: “Sayfadaki metni sildim, yani belge temiz.” Henüz değil. Aynı içerik ve hiç görüntülemediğiniz içerik, meta veride ve gömülü dosyalarda varlığını sürdürebilir. Redaksiyon ancak her yüzey — sayfa içeriği, meta veri ve ekler — kaldırmaya niyetlendiğiniz şeyden temiz olduğunda bitmiştir.

NextPDF’nin burada yaptığının, sürüme göre dürüst kapsamı:

  • Çekirdekte hiç belge redaksiyonu yoktur. Denetim-günlüğü PII’si için bir gizlilik temizleyicisi sunar — hassas değerleri kendi tanılama kayıtlarınızın dışında tutar — ve bu, teslim edilen bir PDF’yi redakte etmekten tamamen farklı bir şeydir. Çekirdekteyseniz ve bir belgeyi redakte etmeniz gerekiyorsa, istediğiniz yetenek mevcut değildir. Bir kutu çizip motorun bir şey kaldırdığını varsaymayın.
  • Kurumsal RedactionEngine, metin içeriğini yıkıcı biçimde redakte eder. İçerik arabelleğini hassas byte’ları kaldırmak için yeniden yazar ve kaldırmanın kanıtlanabilir olması için bir özet, bir denetim raporu ve bir wasModified bayrağı raporlar.
  • Koordinat-bölgesi redaksiyonu kapalı başarısız olur. Boş olmayan bir ZoneRedaction listesi verin ve motor, bir kaplamayı taklit etmektense fırlatır. Bu, eksik bir özellik değil, bilinçli bir güvenlik özelliğidir: gerçekten temizleyemeyeceği bir bölge, temiz diye adlandırmayı reddettiği bir bölgedir.
  • Her artık yüzeyini temizlemek de operatörün sorumluluğudur. Görünür metni kaldırmak bir adımdır. Eksiksiz bir iş, aynı yükü sayfanın dışında taşıyan information sözlüğünü, XMP paketini ve herhangi bir gömülü ya da ilişkili dosyayı da soyar (Spec: ISO 32000-2, §7.11, Spec: ISO 32000-2, §14.13.5).
Document redaction — edition availability
EditionAvailability
Core

Not in this edition. Core has no document redaction. It provides only an audit-log PII sanitiser, which keeps sensitive values out of your own diagnostic records — it does not redact a delivered PDF.

ProNot in this edition
Enterprise

Available. The enterprise RedactionEngine performs destructive text-content redaction and fails closed — it throws a typed exception — on coordinate-zone redaction it cannot truly fulfil, rather than painting a cosmetic overlay and reporting a region as removed.

  • Kozmetik kaplama (cosmetic overlay) — içeriği görsel olarak gizlemek için onun üzerine katmanlanan bir çizim işlemi, örneğin dolu bir dikdörtgen. Altındaki içeriği kaldırmaz; o içerik seçilebilir ve kopyalanabilir kalır.
  • Yıkıcı redaksiyon (destructive redaction) — içeriğin, resimden değil, belgenin byte akışından kaldırılması. Bir kez yapıldığında, altta kurtarılacak hiçbir şey kalmaz.
  • İçerik akışı (content stream) — bir sayfayı oluşturan, glifleri çizen metin-gösterme işleçleri de dâhil, sıralı çizim işleçleri listesi. Üstteki bir kutu, altındaki metin işleçlerini silmez.
  • Artık yüzeyi (residue surface) — bir belgenin, sayfanın görüntülemediği içeriği tuttuğu bir yer: information sözlüğü, XMP meta veri paketi ve gömülü ya da ilişkili dosyalar. Eksiksiz bir redaksiyon hepsini temizler.
  • Gömülü dosya akışı (embedded file stream) — bir PDF’nin içinde taşınan bütün bir dosya (ISO 32000-2 §7.11). Bir sayfadaki bir işaret, bir eke asla dokunmaz.
  • Kapalı başarısız olmak (fail closed) — bir işlem dürüstçe yapılamadığında, yanlış olan makul görünümlü bir sonuç üretmek yerine tipli bir hatayla durmak. Kurumsal motor, yerine getiremeyeceği koordinat-bölgesi redaksiyonu için bunu yapar.