نموذج أمان التشفير والتوقيع
لمحة سريعة
قسم بعنوان «لمحة سريعة»تحدد هذه الصفحة نموذج الأمان للسطحين التشفيريين اللذين يتيحهما المحرك الأساسي: تشفير المستند باستخدام Advanced Encryption Standard 256-bit (AES-256)، وتوقيع المستند باستخدام Cryptographic Message Syntax (CMS)/PDF Advanced Electronic Signatures (PAdES). وتوضح ما تحميه كل آلية، وما لا تحميه، وأين يقع حد الثقة.
الحد. دعم آلية تشفيرية لا يضمن الأمان في عملية النشر الخاصة بك. تعتمد قوة المستند المشفّر على كلمة المرور وحفظ المفتاح اللذين تختارهما. ويتوقف معنى التوقيع يعتمد على الشهادة، ومرتكز الثقة، وسلطة الطابع الزمني، و سياسة المُتحقِّق. تقع تلك الضوابط خارج هذه المكتبة. هذه الصفحة تصف الآلية، ولا تصادق على النتيجة.
التثبيت
قسم بعنوان «التثبيت»composer require nextpdf/core:^3يتطلب مسارا التوقيع وCMS توفر ext-openssl.
نظرة مفاهيمية عامة
قسم بعنوان «نظرة مفاهيمية عامة»في المحرك الأساسي، يستخدم التشفير معالج الأمان AES-256 وفق ISO 32000-2 §7.6 (AESV3, Revision 6) (iso32000_2_sec7#x1.x65.p29). وهو يوفّر السرّية: فلا يستطيع طرف لا يملك كلمة المرور قراءة محتوى السلاسل النصية والتدفقات. وهو لا يوفّر السلامة أو الأصالة. فما زال من الممكن اقتطاع النص المشفّر أو استبداله. ينبغي أن يكتشف توقيع أو رمز مصادقة رسالة للمستند (MAC) تلك الحالة، أما معالج التشفير فلا يفعل ذلك.
الأذونات (الطباعة والنسخ والتعديل) قضية منفصلة يسهل إساءة فهمها. إن أعلام الأذونات في ISO 32000-2 قائمة على تعاون القارئ (iso32000_2_sec7#x1.x71.p27). يحترمها القارئ المتوافق، لكنها بيانات وصفية إرشادية، وليست تحكماً تشفيرياً في الوصول. يمكن لأداة غير متعاونة تجاهلها. يخرجها المحرك كما هي محددة، لكنه لا يستطيع فرضها.
في التوقيع، يضمّن المحرك بنية CMS SignedData كما ترد في ISO 32000-2 §12.8. نطاق البايتات الموقَّع كائن مباشر، ويستبعد الملخص عمداً قيمة Contents الخاصة بالتوقيع (iso32000_2_sec12#x1.x121.p45)، بحيث يغطي التوقيع المستند من دون أن يغطي نفسه.
سطح API
قسم بعنوان «سطح API»لا تكرر هذه الصفحة مرجع التوقيع. نقاط دخول التشفير ومنسّق التوقيع موصوفة في /modules/core/security/ و/modules/core/security/signing/. يُعنى هذا النموذج بالمعنى والحدود، لا بصيغ التوابع.
نموذج برمجي — بداية سريعة
قسم بعنوان «نموذج برمجي — بداية سريعة»يحمي التشفير السرّية تجاه الأطراف التي لا تملك كلمة المرور، ولا أكثر من ذلك:
<?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');نموذج برمجي — الإنتاج
قسم بعنوان «نموذج برمجي — الإنتاج»يطبّق مسار توقيع إنتاجي توقيعاً أساسياً وفق CMS/PAdES باستخدام مفتاح محفوظ برمجياً. ينتج إصدار Core المستوى PAdES B-B. وعند تهيئة سلطة طابع زمني، ينتج إصدار Core المستوى PAdES B-T، وهو B-B مضافاً إليه سمة غير موقَّعة واحدة من نوع 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 هو تحديداً B-B مضافاً إليه سمة غير موقَّعة واحدة من نوع RFC 3161 signature-time-stamp محمولة في CMS SignerInfo (rfc5652#p603). يربط الطابع الزمني قيمة التوقيع بوقت موثوق من سلطة طابع زمني (rfc3161#p208). وهو لا يضيف قاموس بيانات تحقق، ولا بنية معلومات إبطال، ولا حلقة طابع زمني للأرشفة. تلك مستويات طويلة الأمد متمايزة وذات نطاق مستقل، وهي ليست جزءاً من سطح B-B/B-T وخارجة عن نطاق هذه الصفحة.
U-1. لا يدّعي NextPDF أي اعتماد مستقل وفق ETSI EN 319 142-1 لـPAdES B-T. إن EN 319 142-1 ليس ضمن مجموعة التحقق المستخدمة هنا. يُتحقَّق من متطلب B-T signature-time-stamp مقابل ETSI EN 319 122-1 §5.3 — أساس CMS Advanced Electronic Signatures (CAdES) الذي تستورده عائلة EN 319 142 PAdES بالإحالة (
etsi_en_319_122_1#6.x40.p96) — إلى جانب RFC 3161 وRFC 5652 و ISO 32000-2 §12.8. لا يُعد دعم ملف التعريف B-T اعتماد توافق ولا اعتماد صلاحية قانونية. يتولى مُتحقِّق مستقل إصدار ذلك الحكم.
الحالات الحدّية والمزالق
قسم بعنوان «الحالات الحدّية والمزالق»- التشفير ≠ السلامة. قد يتلقى القارئ القادر على فتح المستند، رغم ذلك، نسخة عُبث بها. لا يكتشف ذلك إلا توقيع (أو MAC للمستند). “مقاومة العبث” ليست خاصية يوفّرها معالج التشفير، ولا يُستخدم المصطلح بوصفه ادعاءً للمنتج.
- وجود التوقيع لا يعني صلاحيته. كون المستند يحمل قاموس توقيع لا يقول شيئاً عمّا إذا كانت الشهادة موثوقة أو غير منتهية الصلاحية أو غير مُبطَلة. إثبات الصلاحية عملية على جانب المُتحقِّق تحكمها سياسة الطرف المعتمِد، لا الموقِّع.
- ثقة الطابع الزمني خارجية. لا يستمد الطابع الزمني B-T معناه إلا بقدر الثقة التي يوليها المُتحقِّق لسلطة الطابع الزمني (TSA) التي أصدرته. تحصل المكتبة على الرمز المميّز وتضمّنه. وهي لا تكفل TSA.
- وضع FIPS بيئي. التشغيل على وحدة تشفيرية معتمدة وفق FIPS خاصية للبيئة التشغيلية وللوحدة (
fips_140_3#x12)، وليس شيئاً يمكن لمكتبة PHP أن تدّعيه نيابة عن الجهة المستدعية لها.
الأداء
قسم بعنوان «الأداء»يحسب مسار التوقيع ملخصاً واحداً لنطاق البايتات وبنية CMS واحدة. يضيف امتداد B-T رحلة ذهاب وعودة متزامنة واحدة إلى سلطة الطابع الزمني. التشفير عملية متماثلة تُطبَّق per-string/per-stream. ولا يهيمن أيٌّ منهما على عملية عرض نمطية. رحلة الذهاب والعودة عبر الشبكة من أجل B-T هي الكلفة المتغيرة، وهي تعتمد على اختيار المستدعي لـTSA.
ملاحظات أمنية
قسم بعنوان «ملاحظات أمنية»بيانات الحدود، معادٌ صياغتها كقواعد قابلة للإنفاذ للمراجِعين:
- السرّية فقط. يحمي تشفير AES-256 المحتوى من الأطراف التي لا تملك كلمة المرور. وهو لا يوفّر السلامة أو الأصالة أو التحكّم في الوصول (
iso32000_2_sec7#x1.x65.p29). - الأذونات استرشادية. أعلام الأذونات قائمة على تعاون القارئ وغير مفروضة تشفيرياً (
iso32000_2_sec7#x1.x71.p27). يجب ألا تدّعي صياغة المنتج أنها تمنع إجراءً ما. - B-B وB-T فقط في هذه الصفحة. يغطي سطح التوقيع في core/Pro الموثَّق هنا B-B وامتداد الطابع الزمني B-T الخاص به، مع إيراد كل ذِكر لـB-T بمحاذاة تنبيه U-1 الوارد أعلاه. المستويات الأرشيفية طويلة الأمد سطح منفصل خاص بالإصدارات المدفوعة، ولا تُوصف هنا عمداً. لا تدّعي هذه الصفحة أي قدرة على بيانات التحقق أو معلومات الإبطال أو الطابع الزمني للأرشفة.
- لا ادعاء بصلاحية قانونية. التوقيع المنتَج أثر تشفيري. أما كونه صالحاً قانونياً فيعتمد على الاختصاص القضائي وسياسة الشهادة والطرف المعتمِد، لا على هذه المكتبة.
التوافق
قسم بعنوان «التوافق»الدعم ليس توافقاً. ينتج المحرك مخرجات تستخدم البنى المُستشهَد بها من ISO 32000-2 وRFC 3161 وRFC 5652 وETSI EN 319 122-1. ولا يدّعي المحرك توافقاً وفق PAdES أو CAdES أو eIDAS. اعتماد FIPS 140-3 خاصية module/environment (fips_140_3#x12)، وليس ادعاءً للمكتبة. يتولى مُتحقِّق أو مُقيِّم مستقل إصدار أي حكم بشأن التوافق أو الصلاحية القانونية.