الختم التشفيري وسلسلة التجزئة: لماذا لا يمكن تعديل فاتورة بعد إصدارها
الختم التشفيري وسلسلة التجزئة هما ما يجعل الفاتورة غير قابلة للتعديل. شرح مبسّط لكيفية عملهما، ولماذا تنكسر السلسلة، وكيف تتجنّب ذلك.
سامي الحيدري

الختم التشفيري وسلسلة التجزئة هما العنصران اللذان حوّلا الفاتورة من ورقة قابلة للتعديل إلى سجل لا يمكن العبث به. فهمهما ليس ترفاً تقنياً: أغلب أخطاء الرفض في المرحلة الثانية تعود إليهما، وأغلب الحلول الخاطئة تزيدها سوءاً.
الفكرة في جملة: كل فاتورة تحمل بصمة محتواها، وبصمة الفاتورة التي سبقتها، وتوقيعاً رقمياً من جهاز مسجّل باسمك.
ما هي التجزئة ولماذا تُربط الفواتير ببعضها؟
التجزئة بصمة رياضية تُحسب من محتوى الفاتورة. أي تغيير ولو في هللة واحدة يُنتج بصمة مختلفة تماماً، ولا يمكن الرجوع من البصمة إلى المحتوى.
والذكاء في التصميم أن كل فاتورة تحمل أيضاً بصمة الفاتورة السابقة. هكذا تتكوّن سلسلة: الفاتورة رقم 100 تحمل بصمة 99، و99 تحمل بصمة 98، وهكذا إلى البداية.
النتيجة العملية: لا تستطيع حذف فاتورة من الوسط، ولا إدراج واحدة بأثر رجعي، ولا تعديل مبلغ قديم. أي محاولة تكسر السلسلة من نقطة التغيير إلى آخرها، وتظهر فوراً.
ما هو الختم التشفيري؟
التجزئة تثبت أن المحتوى لم يتغيّر، لكنها لا تثبت من أصدره. هنا يأتي الختم.
داخل وحدة الإصدار لديك مفتاح خاص لا يغادرها. النظام يستخدمه لتوقيع بصمة الفاتورة، وينتج توقيعاً يمكن لأي أحد التحقّق منه بالمفتاح العام المنشور في رمز الاستجابة السريعة.
فالتجزئة تجيب على «هل تغيّر المحتوى؟» والختم يجيب على «من أصدر هذه الفاتورة؟». ومعاً يجعلان الفاتورة قابلة للتحقّق دون الرجوع إلى نظامك.
الختم التشفيري وسلسلة التجزئة مع العدّاد: الحلقة الثالثة
إلى جانب البصمة والختم، لكل وحدة إصدار عدّاد تصاعدي لا يُصفَّر ولا يُعاد ترقيمه. وظيفته منع نوع آخر من التلاعب: حذف فاتورة كاملة من النهاية.
| العنصر | يجيب على | ماذا يمنع |
|---|---|---|
| التجزئة | هل تغيّر المحتوى؟ | تعديل المبالغ أو البنود |
| تجزئة السابقة | هل السلسلة متصلة؟ | الحذف من الوسط والإدراج الرجعي |
| العدّاد | هل الترقيم متصل؟ | حذف فواتير من النهاية |
| الختم | من أصدرها؟ | انتحال وحدة إصدار أخرى |
الأربعة معاً هي ما يجعل الدفاتر الإلكترونية قابلة للفحص دون الحاجة إلى الثقة في البائع.
لماذا تنكسر السلسلة؟ خمسة أسباب
- نسخ إعدادات جهاز إلى جهاز آخر. الجهازان يحملان الهوية نفسها ويزيدان العدّاد نفسه، فتتضارب السلسلتان.
- استعادة نسخة احتياطية قديمة لقاعدة البيانات. النظام يعود إلى فاتورة قديمة ويبدأ منها، فتتكرّر الأرقام.
- تشغيل بيئة تجربة وإنتاج بالتوازي على البيانات نفسها.
- حذف سطر فاتورة من قاعدة البيانات مباشرة لحل مشكلة ظاهرية. هذا أسوأ ما يمكن فعله.
- إعادة تثبيت النظام دون استعادة المفتاح والشهادة، فتضيع هوية وحدة الإصدار.
القاسم المشترك بينها جميعاً: محاولة التدخّل اليدوي في ما صُمِّم ليكون آلياً.
ماذا تفعل إذا انكسرت السلسلة؟
لا تحاول «إصلاحها» بتعديل قاعدة البيانات. هذا يضاعف المشكلة ويترك أثراً يصعب تفسيره لاحقاً.
الإجراء الصحيح:
- أوقف الإصدار من تلك الوحدة فوراً حتى لا تتراكم فواتير معطوبة.
- وثّق ما حدث: متى، وأي فاتورة آخر واحدة سليمة، وما الذي جرى قبلها مباشرة.
- ارجع إلى المورّد بالمعلومة لا بالطلب. قل له «انكسرت السلسلة بعد الفاتورة كذا بسبب كذا»، لا «أصلح الوضع».
- صحّح الفواتير المتأثّرة بإشعارات لا بالحذف، وأعد إصدارها بشكل سليم.
- عالج السبب حتى لا يتكرّر: من يملك صلاحية الوصول لقاعدة البيانات؟ ومن يستعيد النسخ الاحتياطية؟
مثال عملي: ماذا يرى الفاحص؟
تخيّل أن منشأة حذفت فاتورة بمبلغ كبير من قاعدة البيانات لإخفائها. ما الذي يحدث؟
الفاتورة التالية لها ما زالت تحمل بصمة الفاتورة المحذوفة، لكن تلك الفاتورة لم تعد موجودة. وعدّاد الوحدة يقفز رقماً. والفواتير اللاحقة كلها مرتبطة بسلسلة تبدأ من حلقة مفقودة.
الفاحص لا يحتاج إلى إثبات أن فاتورة حُذفت؛ يكفيه أن السلسلة لا تتصل. وهذا هو الفرق الجوهري بين الدفتر الورقي الذي تُنزع منه صفحة دون أثر، والسجل الإلكتروني الذي يحمل أثر كل تغيير فيه.
وبالمثل، لو عُدِّل مبلغ فاتورة في قاعدة البيانات، فبصمتها المحسوبة اليوم لن تطابق البصمة المخزّنة في الفاتورة التالية، ولا الختم المرسل إلى المنصة وقت الإصدار.
كيف تحمي السلسلة من البداية؟
- اجعل كل جهاز وحدة إصدار مستقلة بشهادتها، ولا تنسخ شيئاً بين الأجهزة.
- امنع الوصول المباشر لقاعدة بيانات الفواتير عن أي شخص، بمن فيهم المورّد، إلا بإجراء موثّق.
- خذ نسخاً احتياطية تشمل الشهادة والمفتاح لا البيانات فقط.
- افصل بيئة التجربة عن الإنتاج فصلاً تاماً.
المواصفات الفنية للتجزئة والختم والعدّاد وطريقة حسابها منشورة في الأدلة الرسمية لدى هيئة الزكاة والضريبة والجمارك، وهي المرجع عند أي اختلاف.
اقرأ أيضاً


الأسئلة الشائعة
ما الفرق بين الختم التشفيري وسلسلة التجزئة؟
التجزئة بصمة رياضية تُحسب من محتوى الفاتورة وتثبت أنه لم يتغيّر. والختم التشفيري توقيع رقمي بمفتاح خاص داخل وحدة الإصدار ويثبت من أصدر الفاتورة. التجزئة تجيب على «هل تغيّر المحتوى؟» والختم على «من أصدرها؟».
لماذا تحمل كل فاتورة بصمة الفاتورة السابقة؟
لتتكوّن سلسلة مترابطة تمنع حذف فاتورة من الوسط أو إدراج واحدة بأثر رجعي أو تعديل مبلغ قديم. أي تغيير يكسر السلسلة من نقطته إلى آخرها ويظهر فوراً عند الفحص.
ما الذي يكسر سلسلة التجزئة؟
نسخ إعدادات جهاز إلى آخر، واستعادة نسخة احتياطية قديمة لقاعدة البيانات، وتشغيل بيئة التجربة والإنتاج على البيانات نفسها، وحذف سطر فاتورة من قاعدة البيانات مباشرة، وإعادة تثبيت النظام دون استعادة المفتاح والشهادة.
ماذا أفعل إذا انكسرت السلسلة؟
أوقف الإصدار من تلك الوحدة فوراً، ووثّق آخر فاتورة سليمة وما جرى قبلها، ثم ارجع إلى المورّد بالمعلومة. صحّح الفواتير المتأثّرة بإشعارات لا بالحذف، ولا تحاول إصلاح السلسلة بتعديل قاعدة البيانات لأن ذلك يضاعف المشكلة.