ما هو تشفير الويب بصيغة JSON (JWE)؟
كما تم تعريفه في RFC 7516، تشفير الويب بصيغة JSON (JWE) هو آلية لتشفير وفك تشفير البيانات بصيغة JSON. يضيف طبقة من السرية إلى البيانات، ويكون عمليًا بشكل خاص عند نقل المعلومات الحساسة عبر شبكة غير موثوق بها.
غالبًا ما يُستخدم JWE بالاشتراك مع رموز الويب بصيغة JSON (JWTs) لحماية بيانات الحمولة. على سبيل المثال، يمكن تشفير رمز الهوية (ID token) أو رمز الوصول (Access token) باستخدام JWE لضمان أن البيانات آمنة أثناء النقل.
كيف يعمل JWE؟
لدى JWE شكلان للتسلسل: مضغوط وJSON. كل صيغة لديها طريقة خاصة لتمثيل البيانات المشفرة.
التسلسل المضغوط
في التسلسل المضغوط، يتم تمثيل JWE كسلسلة تحتوي على خمسة أجزاء مشفرة بـ Base64URL مفصولة بنقاط (.
). الأجزاء الخمسة هي:
{{header}}.{{encrypted-key}}.{{iv}}.{{ciphertext}}.{{tag}}
كل جزء له غرض معين:
header
: يحتوي على بيانات وصفية حول خوارزمية التشفير وإدارة المفاتيح.encrypted-key
: مفتاح تشفير المحتوى المشفر (CEK) المستخدم لتشفير الحمولة.iv
: المتجه البادئ المستخدم في عملية التشفير.ciphertext
: بيانات الحمولة المشفرة.tag
: الوسم الخاص بالتحقق من سلامة البيانات المشفرة.
التسلسل بصيغة JSON
التسلسل بصيغة JSON أكثر تفصيلاً ويوفر طريقة منظمة لتمثيل JWE. يتم تمثيل JWE ككائن JSON مع الخصائص التالية:
{
"protected": "{{protected-header}}",
"unprotected": "{{unprotected-header}}",
"header": "{{header}}",
"encrypted_key": "{{encrypted-key}}",
"iv": "{{iv}}",
"ciphertext": "{{ciphertext}}",
"tag": "{{tag}}",
"aad": "{{additional-authenticated-data}}"
}
protected
: يحتوي على الرأس المحمي المشفر بـ Base64URL.unprotected
: يحتوي على الرأس غير المحمي المشترك في JWE.header
: يحتوي على رأس JWE غير المحمي لكل مستلم.encrypted_key
: يحتوي على مفتاح تشفير المحتوى المشفر (CEK) المشفر بـ Base64URL.iv
: يحتوي على المتجه البادئ المشفر بـ Base64URL.ciphertext
: يحتوي على النص المشفر (الحمولة المشفرة) المشفر بـ Base64URL.tag
: يحتوي على الوسم التوثيقي المشفر بـ Base64URL.aad
: يحتوي على بيانات توثيق إضافية مشفرة بـ Base64URL.
يجب أن يكون العميل قادرًا على فك تشفير JWE باستخدام المفتاح والخوارزمية المناسبة. يمكن استخدام مفتاح تم التواصل بشأنه مسبقًا أو مفتاح مستمد من بروتوكول اتفاق المفتاح لفك تشفير JWE.
على سبيل المثال، يمكن تشفير رمز الهوية (ID token) باستخدام JWE، ويمكن للعميل فك تشفيره باستخدام المفتاح المناسب الذي يتم الحصول عليه من واجهة jwks_uri
لمزود OpenID.