كيف يعمل تشفير PDF حقًّا — وحدوده
Spec: ISO 32000-2, §7.6ISO 32000-2 §7.6
لمحة سريعة
قسم بعنوان «لمحة سريعة»يُشوّش تشفير PDF الكلمات والصور داخل مستند بحيث لا يستطيع قراءتها إلا من يملك كلمة المرور الصحيحة. إنه تشفير حقيقي، وهو بارع في المهمّة الوحيدة التي يؤدّيها. وهو أيضًا واسع سوء الفهم، لأن الميزة نفسها تحمل آلية ثانية — رايات الأذونات — تبدو كقفل وليست كذلك.
تفصل هذه الصفحة بين الاثنتين. تشرح ما الذي يحميه AES-256 فعلًا، وما الغرض الحقيقي من كلمتَي المرور، وأين يقع الحدّ الصادق.
لماذا يهمّ هذا
قسم بعنوان «لماذا يهمّ هذا»يلجأ الناس إلى التشفير حين يكون مستند حسّاسًا: عقد، أو كشف راتب، أو خطاب طبّي. والتوقّع معقول — أبقِ هذا خاصًّا، وامنع الناس من طباعته أو نسخه. يحقّق PDF النصف الأول من تلك الأمنية بإقناع، والنصف الثاني على أساس الشرف فقط.
والخلط بين الاثنين هو حيث تقع الكلفة. يضع فريق على ملف وسم “ممنوع النسخ”، ويثق بأن المنصّة تفرضه، ويُصدِر. وبعد أشهر ينسخ أحدهم النصّ في ثلاثين ثانية بقارئ مختلف، فيتحوّل الافتراض الذي لم يصمد قطّ بهدوء إلى تسريب. لم يُكسَر التشفير قطّ. بل طُلِب منه فقط أن يفعل شيئًا لا يفعله.
النسخة المختصرة
قسم بعنوان «النسخة المختصرة»- التشفير يحمي السرّيّة. مع AES-256، يكون محتوى السلاسل النصية والدفق في ملف PDF نصًّا مُعمّى حقيقيًّا. ودونه المفتاح، غير قابل للقراءة.
- كلمة مرور المستخدم تفتح المستند. زوّدها وتستطيع رؤية المحتوى. ودونها لا شيء يُقرأ.
- كلمة مرور المالك تحكم الأذونات. إنها مفتاح “الحقوق الكاملة”. أما رايات الأذونات التي تحرسها — الطباعة، والنسخ، والتعديل — فمُسجَّلة داخل المستند المشفَّر.
- رايات الأذونات تعاونية مع القارئ. إنها طلب إلى قارئ حسن السلوك، لا فرض. والقارئ الذي يتجاهلها يستطيع الطباعة أو النسخ أو التعديل رغم ذلك.
- البنية تبقى مرئية. يُخفي التشفير المحتوى، لا هيكل المستند — عدد الصفحات وتخطيط الكائنات ليسا السرّ.
كيف يتعامل NextPDF مع ذلك
قسم بعنوان «كيف يتعامل NextPDF مع ذلك»تشفير PDF مُعرَّف في Spec: ISO 32000-2, §7.6ISO 32000-2 §7.6. والنموذج دقيق: يشتقّ معالج أمان مفتاح تشفير ملف من كلمة مرور، وتُشفَّر سلاسل المستند ودفقاته بذلك المفتاح، و قاموس تشفير — مُشار إليه من ذيل الملف — يسجّل أيّ شيفرة استُخدِمت، وكم طول المفتاح، وأيّ أذونات أعلنها المؤلّف.
والشيفرة الحديثة المُوصى بها هي AES بمفتاح من 256 بِتًا. حين تشفّر ملف PDF بهذه الطريقة، يتحوّل الحِمل القابل للقراءة — النصّ الذي قد تستخرجه، وبايتات الصورة، وبيانات الخطّ — إلى نصّ مُعمّى. ويبقى الشكل الخارجي للمستند مقروءًا بالتصميم: على القارئ أن يجد قاموس التشفير ويعرف طول المفتاح قبل أن يستطيع سؤالك كلمة مرور. لهذا يُفهَم التشفير أفضل ما يُفهَم بوصفه سرّيّة محتوى، لا إعتامًا للملف كلّه.
تقع كلمتا المرور في طبقتين مختلفتين، والتمييز هو الجزء الأجدر بإتقانه.
- A password is suppliedإمّا كلمة مرور المستخدم (الفتح) أو كلمة مرور المالك (الحقوق الكاملة).
- The security handler derives the keyيحوّل ISO 32000-2 §7.6.4 كلمة المرور إلى مفتاح تشفير الملف.
- Content is decryptedيحوّل AES-256 السلاسل والدفقات المشفَّرة إلى بايتات قابلة للقراءة من جديد.
- Permissions are consultedيمنح مفتاح المالك كل الحقوق؛ بينما يتقيّد مفتاح المستخدم برايات الأذونات المُعلَنة — إن اختار القارئ احترامها.
كلمة مرور المستخدم هي كلمة مرور الفتح. تجيب عن سؤال واحد: أيُسمَح لك برؤية المحتوى أصلًا؟ لا كلمة مرور مستخدم، لا مستند قابل للقراءة — وذلك الجزء مفروض تشفيريًّا، لأنه دون المفتاح المُشتَقّ لا شيء يُفكّ تشفيره.
كلمة مرور المالك هي كلمة مرور الأذونات. يمكن أن يفتح الملفَّ أيّ شخص (لا كلمة مرور مستخدم) ومع ذلك يُعلِن كلمة مرور مالك تحكم أفعال “الحقوق الكاملة” — الطباعة بدقّة عالية، ونسخ النصّ، وتعديل الملف. والأهمّ أن بِتّات الأذونات التي تحميها كلمة مرور المالك محميّة السلامة بمعالج الأمان القياسي: العبث بها يكتشفه قارئ مطابق ويرفضه، لأن المعالج يربط الأذونات المُعلَنة بمفاتيح التشفير. والبِتّات ليست حرفيًّا بايتات غير قابلة للقراءة أو التعديل — يستطيع مهاجم تغييرها — لكن نسخة مُعدَّلة لن تتحقّق، فيعاملها قارئ مطابق بوصفها تالفة. إنها دالّة على العبث. وهي فقط ليست ذاتية الفرض.
مثال عملي
قسم بعنوان «مثال عملي»التعبير عن إعدادات التشفير بسيط. المهمّ قراءة النتيجة بصدق: هذا يهيّئ القصد، وجزء الأذونات من ذلك القصد استشاري.
<?php
declare(strict_types=1);
use NextPDF\Core\Document;use NextPDF\Security\Encryption\EncryptionMode;use NextPDF\Security\Encryption\Permission;
$document = Document::createStandalone();$document->setTitle('Confidential Offer');$document->addPage();
// Confidentiality is real: AES-256 means the content is unreadable// without the user password. This half is cryptographically enforced.$document->encrypt( userPassword: 'open-sesame', ownerPassword: 'full-rights-key', mode: EncryptionMode::Aes256, // Permissions are a declared request to a cooperating reader, // recorded inside the encrypted document — not a hard lock. permissions: Permission::Print->value | Permission::CopyContent->value,);
$document->save('offer.pdf');كلمتا مرور المستخدم والمالك مفتاحان مختلفان بمهمّتين مختلفتين. وتصرّح
وسيطة permissions بما ينبغي لقارئ حسن السلوك السماح به. إنها
بيانات وصفية صادقة، محميّة السلامة بمعالج الأمان بحيث يكون العبث
قابلًا للاكتشاف — وذلك سقف ما يمكن لمكتبة منتِجة أن تَعِد به.
سوء فهم شائع
قسم بعنوان «سوء فهم شائع»الفخّ هو قراءة “الأذونات” بوصفها “فرضًا”. وهذا حدسي: تقول الراية الطباعة غير مسموحة، فبالتأكيد الطباعة محظورة. لكن لا شيء في ملف PDF يستطيع مدّ يده وتعطيل زرّ الطباعة في قارئ. يُسجَّل عدد الأذونات الصحيح كي يحترمه قارئ متعاون. والقارئ الذي يختار ألا يتعاون — وعدد منهم لا يفعل — حرّ في الطباعة والنسخ والتعديل.
وNextPDF متعمّد في هذا. يعامل مسار التشفير الأساسي رايات الأذونات بوصفها قصدًا مُعلَنًا ولا يتظاهر قطّ بفرضها. إن احتجت إلى منع الأفعال منعًا حقيقيًّا، فعلى ذلك الضبط أن يقيم خارج الملف — في مَن تعطيه المستند، أو في نظام تحكّم بالوصول حوله.
الحدود والقيود
قسم بعنوان «الحدود والقيود»كن دقيقًا بشأن ما يضمنه كل نصف. التشفير (طبقة كلمة مرور المستخدم) ضبط سرّيّة حقيقي: قويّ إن كانت كلمة المرور قويّة، وبجودة السرّ الذي تختاره لا أكثر. أما الأذونات (طبقة كلمة مرور المالك) فبيانات وصفية دالّة على العبث، لا تحكّمًا بالوصول.
| What you might expect | What encryption actually delivers |
|---|---|
| لا أحد يستطيع قراءة المحتوى دون كلمة المرور | صحيح. مع AES-256 وكلمة مرور مستخدم قويّة، تكون السلاسل والدفقات غير قابلة للقراءة دون المفتاح. مفروض فعلًا. |
| لا أحد يستطيع إعادة كتابة “ممنوع النسخ” إلى “النسخ مسموح” | دالّ على العبث، لا مستحيل. رايات الأذونات محميّة السلامة بمعالج الأمان القياسي: يستطيع دخيل تعديل البايتات، لكن النسخة المُعدَّلة لن تتحقّق، فيكتشف قارئ مطابق التغيير ويرفضه. |
| سيُمنَع القارئ من النسخ أو الطباعة | غير مضمون من أيّ منتِج PDF. يستطيع قارئ غير متعاون تجاهل الرايات. هذه خاصّة من خصائص التنسيق، لا قيد من قيود NextPDF. |
ثمّة حدّان آخران جديران بالذكر بوضوح. أولًا، يحمي التشفير
المحتوى، لا بنية المستند: تبقى تخطيط الكائنات وعدد الصفحات
مرئيين، وهذا طبيعي وضروري كي يعثر القارئ على قاموس التشفير.
ثانيًا، لا يستطيع ملف PDF مشفَّر أن يدّعي أيضًا مطابقة PDF/A
الأرشيفية — فذلك الملف التعريفي يمنع مدخل Encrypt، فتختار أحدهما
أو الآخر.
صفحة استكشاف أخطاء التشفير والأذونات
تغطّي الاستثناءات المحدّدة ورفض PDF/A بالتفصيل.
مستندات ذات صلة
قسم بعنوان «مستندات ذات صلة»- مشهد المعايير — أين تقع ISO 32000-2 وبنود تشفيرها بين معايير PDF.
- التشفير ورايات الأذونات — المداخل العملية: إخفاقات فكّ التشفير، وحدّ الأذونات في الشيفرة.
- ما حقيقة ملف PDF — نموذج الكائنات الذي يحميه التشفير، والبنية التي يتركها مرئية.
- كيف تتموضع التوقيعات داخل ملف PDF — النصف الآخر من ثقة المستند: التشفير يُخفي، والتوقيعات تُثبِت.
مسرد المصطلحات
قسم بعنوان «مسرد المصطلحات»- AES-256 — معيار التشفير المتقدّم (Advanced Encryption Standard) بمفتاح من 256 بِتًا، الشيفرة الحديثة المُوصى بها لتشفير محتوى PDF.
- كلمة مرور المستخدم (كلمة مرور الفتح) — السرّ المطلوب لفتح وقراءة مستند مشفَّر. ودونها لا يمكن فكّ تشفير المحتوى.
- كلمة مرور المالك (كلمة مرور الأذونات) — سرّ “الحقوق الكاملة” الذي يحكم رايات الأذونات. يمكن أن يكون لمستند واحدة منها دون اشتراط كلمة مرور مستخدم للفتح.
- رايات الأذونات — قصد الطباعة/النسخ/التعديل المُعلَن المخزّن في قاموس التشفير. محميّة السلامة بحيث يكون العبث قابلًا للاكتشاف، لكن لا يحترمها إلا قارئ متعاون.
- معالج الأمان — المكوّن الذي يشتقّ مفتاح تشفير الملف من كلمة مرور، المُعرَّف بمعالج الأمان القياسي في ISO 32000-2.
- التعاوني مع القارئ — ضبط يعتمد على اختيار البرنامج المستهلِك طاعته، بدلًا من فرضه من الملف نفسه.