GH GambleHub

التوقيع على الطلبات والتحقق منها

ويثبت توقيع الطلب صحة المرسل وسلامة مضمونه. على عكس TLS (التي تحمي القناة)، فإن التوقيع المطبق يجعل كل رسالة قابلة للتحقق ومقاومة للوكالة والذاكرة المخبأة والتأخر في التسليم.

الأهداف:

1. الأصالة (من أرسل) والنزاهة (لم تتغير).

2. التفرد (الحماية من الإعادة).

3. الفصل عن النقل (يعمل فوق HTTP، قوائم الانتظار، خطافات الويب).

4. قابلية المراجعة (فحص قابل للتكرار بعد شهور).

1) نموذج التهديد (الحد الأدنى)

استبدال الجسم/الرؤوس على طول الطريق.
إعادة التشغيل (تكرار الطلب المشروع).
خفض التصنيف/تعري التسمية التوضيحية.

سرقة أسرار الاندماج

ساعة غير متزامنة (انحراف الساعة) وقوائم الانتظار الطويلة.

2) اختيار البدائي

HMAC (التماثل): بسيط وسريع، يتم تخزين المفتاح على كلا الجانبين. مناسب لخطافات الويب B2B وواجهات برمجة التطبيقات الداخلية.
RSA/ECDSA (عدم التماثل): مفتاح خاص من المرسل، مفتاح عام من المتلقي. مناسب للتكامل المفتوح وعندما يكون من المهم عدم مشاركة سر.
mTLS: المصادقة المتبادلة لطبقة النقل غالبًا ما يتم دمجها مع توقيع NMAC/الجسم.
JWT/JWS: ملائمة لرموز حاملها وطوابع مكتفية ذاتيا ؛ للتوقيع على الجثة، من الأفضل استخدام توقيعات رسالة JWS المنفصلة/HTTP.
توقيعات رسالة HTTP (توقيع أجزاء مختارة من الطلب): نهج حديث لـ REST.

التوصية: فيما يتعلق بالخطابات الشبكية - HMAC + timetamp + nonce + body canonicalization ؛ لواجهة برمجة التطبيقات العامة - توقيعات رسالة HTTP أو JWS ؛ في خطر كبير - أضف mTLS.

3) التقنين (ما الذي نوقعه بالضبط)

تحتاج إلى التوقيع على سلسلة حتمية يمكن للطرفين استردادها بالتساوي.

التكوين المرجعي:

method \n path_with_query_normalized \n content-type \n digest: SHA-256=BASE64(SHA256(body)) \n x-ts: <unix    iso> \n x-nonce: <uuid> \n host \n x-tenant: <tenant_id> \n
إجمالي الصف:

canonical = join("\n", fields)
signature = HMAC(secret, canonical)  # или ECDSA_sign(private_key, canonical)
القواعد:
  • تطبيع مسار وترتيب بارامترات الاستعلام.
  • المساحات/Unicode/case - إصلاح (على سبيل المثال، رأس الحالة السفلية، تقليم).
  • الأجسام الكبيرة - التجزئة (Digest)، لا يتم تشغيلها «كما هي».

4) شكل العنوان

مثال HMAC:

X-Signature-Alg: hmac-sha256
X-Signature: v1=hex(hmac),ts=1730379005,nonce=550e8400-e29b-41d4-a716-446655440000,kid=prov_42
Digest: SHA-256=BASE64(SHA256(body))
X-Tenant: brand_eu
مثال على عدم التماثل (ECDSA P-256):

Signature: keyId="prov_42", alg="ecdsa-p256-sha256",
ts="2025-10-31T12:30:05Z", nonce="550e...", headers="(request-target) host digest x-tenant",
sig="BASE64(raw_signature)"

حيث يسمح لك «طفل »/« معرف المفتاح» بتحديد مفتاح من السجل (انظر التناوب).

5) التحقق عند الطرف المتلقي

Cseudocode:
python def verify(request):
1) Basic assert abs (now () - request. ts) <= ALLOWED_SKEW  # напр., 300 с assert not replayed(request. nonce, window = TTL) # store nonce/ts in KV

2) Restore canonical canonical = build_canonical (
method=request. method,
path=normalize_path(request. path, request. query),
content_type=request. headers["content-type"],
digest=hash_body(request. body),
ts=request. ts,
nonce=request. nonce,
host=request. headers["host"],
tenant=request. headers. get("x-tenant")
)

3) Get the key key = key_registry. get(request. kid) # secret (HMAC) или public key (ECDSA)

4) Verify if request signature. alg. startswith("hmac"):
ok = hmac_compare(key. secret, canonical, request. signature)
else:
ok = asym_verify(key. public, canonical, request. signature)

5) Solution if not ok: return 401, "SIGNATURE_INVALID"
return 200, "OK"

مقارنة HMAC ثابتة الوقت، تخزين 'nonce '/' (ts، event_id)' في KV السريع (TTL ≥ نافذة التسليم).

6) مكافحة إعادة التشغيل والنوافذ

Timestamp + Nonce: رفض الطلبات الأقدم من «± Δ» (على سبيل المثال 5 دقائق) و non rece في هذه النافذة.
لخطابات الويب: استخدم «حدث _ معرف» مستقر وطاولة بريدية - هذا أكثر موثوقية من مجرد غير موثوق به.
يجب أن تستخدم إعادة التسليم (إعادة التسليم) نفس ts/nonce/event_id، وليس توليد أخرى جديدة.

7) متعدد المستأجرين والمناطق

مفاتيح التخزين لكل مستأجر/منطقة: «طفل = <مستأجر>: <منطقة>: <مفتاح _ معرف>».
برك وحدود سرية منفصلة ؛ مراقبة الإقامة في البيانات.
في العناوين/التقنين، أشر إلى "X-Tenant' والمنطقة جزء من السياق الذي يتم فحصه.

8) الإدارة الرئيسية والتناوب

السجل الرئيسي (KMS/Vault): «طفل»، نوع، خوارزمية، حالة («نشط»، «مستنكر»، «متقاعد»)، «صالح _ من/صالح _ إلى».
ثنائي السرية: أمسك المفتاح الحالي والتالي في وقت واحد (يقبل المستقبل كليهما).
التناوب على جدول زمني وعلى حدث (حل وسط).
التثبيت الرئيسي (إن أمكن) وتقييد الوصول إلى المواد الرئيسية.
سجلات الوصول إلى المفاتيح والإجراءات معهم.

9) مزيج مع mTLS و OAuth

تقوم mTLS بفحص القناة و «من أنت» على مستوى الشهادة.
يحمي التوقيع الرسالة (مفيدة من خلال الوكلاء/المخابئ/قوائم الانتظار).
يكمل OAuth/JWT التوثيق/الإذن، ولكنه في حد ذاته لا يضمن سلامة الجسم (ما لم يتم التوقيع عليه في التقنين).
أفضل الممارسات: mTLS + توقيع الجسم (Digest) + HMAC/ECDSA + short' s ts '-interval.

10) الأخطاء ورموز الاستجابة

'401 SIGNATURE_INVALID' هو توقيع/خوارزمية غير صالحة.
"401 KEY_REVOKED' -" طفل "غير صالح/منتهي الصلاحية.
400 TIMESTAMP_OUT_OF_RANGE' - الساعة/النافذة.

409 NONCE_REPLAYED' اكتشفت ريدو

400 DIGEST_MISMATCH' - تغير الجسم.
"415 UNSUPPORTED_ALGORITHM' هي" alg "لم يتم حلها.
429 TOO_MANY_ATTEMPTS' - خنق المفتاح/المستأجر.

اركل السبب الدقيق في «خطأ _ رمز» مقروء آليًا ؛ لا تعيد الأسرار/التقنين «كما هو».

11) قابلية الملاحظة ومراجعة الحسابات

المقاييس:
  • 'التحقق _ p95 _ ms'،' التحقق _ الخطأ _ المعدل '،' digest _ inmatch _ rate '،' replay _ blocked _ rate '،' alg _ usage {hmac, ecdsa} '،' clock _ skew _ ms'.
  • Logs (structural): 'kid', 'alg', 'region', 'ts',' nonce ',' digest _ hash ',' decision ',' resolution ',' reason '.
  • التعقب: توقيع السمات. طفل '،' توقيع. alg '،' توقيع. ts_skew'.
  • مراجعة الحسابات: سجل غير قابل للتغيير للتناوب، واستخدام المفاتيح وأعلام التسامح.

12) الأداء

تجزئة الجسم عن طريق البث (لا تحتفظ به في ذاكرتك).
ذاكرة التخزين المؤقت للمفاتيح العامة بواسطة «طفل» مع TTL قصير وإعاقة حسب الحدث.
على الحافة/البوابة، قم بإجراء فحوصات أولية (ts/nonce/format).
أسرع من المركز الاقتصادي لأمريكا اللاتينية ومنطقة البحر الكاريبي ؛ وتعد ECDSA أكثر ملاءمة للتكامل الخارجي والمفاتيح «غير المشتركة».

13) الاختبار

مجموعات التركيبات: نفس الطلبات → نفس التقنين/التوقيع ؛ المساحات القذرة/ترتيب الاستعلام/الرؤوس → مستقرة.
سلبي: «طفل/alg» غير صالح، جسم/مضيف معدل، تكرار غير متكرر، ts عفا عليه الزمن، انحراف الساعة.
قائم على الملكية: تنتج أي استفسارات مكافئة سلسلة قانونية واحدة.
Interop: الفحوصات عبر اللغات (Go/Java/Node/Python).
الفوضى: التأخير، التراجع، التغييرات الرئيسية أثناء الطيران.

14) كتب اللعب (كتب التشغيل)

1. ارتفاع «توقيع _ غير صالح»

تحقق من دوران المفتاح، واختلال محاذاة الساعة، والتغييرات في التقنين عند المرسل.
قم مؤقتًا بتمكين «القبول المزدوج» لـ «الطفل القديم»، وإخطار الشريك.

2. النمو «المعاد»

قم بزيادة TTL للتخزين غير الآمن، وتحقق من المعاودين عند المرسل، وتحقق من انحراف الساعة.
تجاوز IP/ASN المسيء على الحافة.

3. «DIGEST _ MISMATCH» على نطاق واسع

فحص الترويسات البديلة/الضاغطة/إعادة الكتابة ؛ أصلح نسخة التقنين.
تعطيل متسللي الجسم/الرأس.

4. حل وسط رئيسي

قم على الفور بإلغاء كلمة «طفل»، وترجمتها إلى «الطفل التالي»، وتجديد جميع الأسرار/الرموز، والوصول إلى التدقيق.

15) أخطاء نموذجية

توقيع «جزء من الجسم» أو JSON دون إصلاح الترتيب → التعرض للتبديل الميداني.
يمكن أن يؤدي غياب وكيل → "Digest' إلى تغيير الجسم دون أن يلاحظه أحد.
نافذة ts طويلة بدون nonce مفتوحة → لإعادة التشغيل.
احتفظ بالأسرار في متغيرات البيئة بدون KMS/Vault.
قارن التوقيع ليس الوقت الثابت.
تجاهل «المضيف »/« المسار» في التقنين → الهجوم الأمامي.
امزج المستأجرين والمناطق المختلفة «للأطفال».

16) قائمة مرجعية قبل البيع

  • تم تحديد تنسيق التقنين (الطريقة، المسار + الاستعلام، نوع المحتوى، Digest، ts، nonce، المضيف، المستأجر).
  • تم تنفيذ HMAC/ECDSA مع «طفل» وسجل رئيسي وسر مزدوج.
  • تشمل منع إعادة التشغيل (nonce + ts) وتخزين inbox/event_id لخطابات الويب.
  • رموز الخطأ المكونة/سياسة إعادة الدفع والخنق لكل مستأجر/مفتاح.
  • قابلية الرصد: التحقق من المقاييس والسجلات والتتبع والتنبيهات للانفجارات.
  • يتم التدوير الآلي للمفتاح ؛ وحقوق مراجعة الحسابات والوصول محدودة.
  • مجموعات اختبار التوافق بين اللغتين.
  • وثائق للمدمجين مع مثال في 3-4 لغات وإصلاحات.
  • تم تمكين MTLS لعمليات التكامل الحساسة ؛ لا يستخدم JWT إلا كإضافة وليس كبديل لتوقيع الهيئة.

استنتاج

التوقيع والتحقق من الطلبات ليس «رأسًا واحدًا»، ولكنه انضباط: التقنين الواضح، ونوافذ زمنية قصيرة، ومكافحة إعادة التشغيل، وتناوب المفتاح، وقابلية المراقبة. قم ببناء معيار واحد لجميع عمليات التكامل (واجهات برمجة التطبيقات وخطافات الويب)، واستخدم «طفل »/KMS، وقبول مفتاحين أثناء الدوران، وستصبح خطوطك مقاومة للانتحال، ويمكن التنبؤ بها وسهلة التدقيق.

Contact

اتصل بنا

تواصل معنا لأي أسئلة أو دعم.نحن دائمًا جاهزون لمساعدتكم!

Telegram
@Gamble_GC
بدء التكامل

البريد الإلكتروني — إلزامي. تيليغرام أو واتساب — اختياري.

اسمك اختياري
البريد الإلكتروني اختياري
الموضوع اختياري
الرسالة اختياري
Telegram اختياري
@
إذا ذكرت تيليغرام — سنرد عليك هناك أيضًا بالإضافة إلى البريد الإلكتروني.
WhatsApp اختياري
الصيغة: رمز الدولة + الرقم (مثال: +971XXXXXXXXX).

بالنقر على الزر، فإنك توافق على معالجة بياناتك.