إنتقل إلى المحتوى الرئيسي

الآليات التشفيرية

تدعم مكتبة DuoKey PKCS#11 مجموعة شاملة من الآليات التشفيرية التي يتطلّبها Oracle TDE. تفصّل هذه الصفحة جميع الخوارزميات المدعومة واستخدامها وكيفية ترجمتها إلى استدعاءات DuoKey Cockpit API.

نظرة عامة​

التشفير المتماثل​

AES-GCM (وضع غالوا/العدّاد)​

آلية PKCS#11: CKM_AES_GCM

الوصف: وضع تشفير مصادَق عليه يوفّر السرّية والأصالة معًا.

الميزات:

  • المصادقة: يتضمّن علامة مصادقة لاكتشاف العبث
  • البيانات الإضافية: يدعم البيانات الإضافية المصادَق عليها (AAD)
  • متجّه التهيئة (IV): يتطلّب متجّه تهيئة (IV)
  • الأداء: دعم فعّال لتسريع العتاد

الاستخدام:

CK_MECHANISM mechanism = {
mechanism: CKM_AES_GCM,
pParameter: &gcmParams,
ulParameterLen: sizeof(gcmParams)
};

CK_GCM_PARAMS gcmParams = {
pIv: iv, // 12 bytes recommended
ulIvLen: 12,
ulIvBits: 96, // IV length in bits
pAAD: aad, // Additional authenticated data
ulAADLen: aadLen,
ulTagBits: 128 // Authentication tag length
};

ترجمة DuoKey API:

{
"algorithm": "AES-GCM",
"iv": "base64-encoded-iv",
"aad": "base64-encoded-aad",
"tagLength": 128
}

حالات الاستخدام:

  • تشفير عالي الأمان مع التحقّق من السلامة
  • عندما تكون مصادقة البيانات المشفّرة مطلوبة
  • يدعم العمليات أحادية الجزء ومتعددة الأجزاء مع IV و AAD وطول علامة قابل للتكوين

AES-CBC (تسلسل كتل الشيفرة)​

آلية PKCS#11: CKM_AES_CBC

الوصف: وضع شيفرة كتلية يسلسل الكتل معًا.

الميزات:

  • حجم الكتلة: 128 بت (16 بايت)
  • IV مطلوب: يجب توفير متجّه تهيئة
  • الحشو: يتطلّب حشوًا يدويًا (أو استخدم CBC-PAD)

الاستخدام:

CK_MECHANISM mechanism = {
mechanism: CKM_AES_CBC,
pParameter: iv,
ulParameterLen: 16 // IV length = block size
};

ترجمة DuoKey API:

{
"algorithm": "AES-CBC",
"iv": "base64-encoded-iv"
}

حالات الاستخدام:

  • التوافق القديم
  • عندما يكون تسلسل كتل محدّد مطلوبًا

AES-CBC-PAD (CBC مع حشو PKCS#7)​

آلية PKCS#11: CKM_AES_CBC_PAD

الوصف: وضع CBC مع حشو PKCS#7 تلقائي.

الميزات:

  • حشو تلقائي: يتعامل مع الحشو تلقائيًا
  • طول متغيّر: يمكنه تشفير بيانات بأي طول
  • IV مطلوب: يجب توفير متجّه تهيئة

الاستخدام:

CK_MECHANISM mechanism = {
mechanism: CKM_AES_CBC_PAD,
pParameter: iv,
ulParameterLen: 16
};

ترجمة DuoKey API:

{
"algorithm": "AES-CBC",
"iv": "base64-encoded-iv",
"padding": "PKCS7"
}

حالات الاستخدام:

  • Oracle TDE: الآلية الأساسية لعمليات تشفير مساحات جداول Oracle TDE
  • تشفير البيانات متغيّرة الطول
  • عندما يكون الحشو مطلوبًا
  • يدعم العمليات أحادية الجزء (C_Encrypt/C_Decrypt) ومتعددة الأجزاء (C_EncryptUpdate/C_EncryptFinal)

تفاصيل الحشو:

Plaintext: "Hello World" (11 bytes)
Block Size: 16 bytes
Padding Needed: 5 bytes

Padded Data:
[Hello World][05 05 05 05 05]

التشفير غير المتماثل​

RSA-OAEP-256​

آلية PKCS#11: CKM_RSA_PKCS_OAEP

الوصف: تشفير RSA مع حشو التشفير غير المتماثل الأمثل باستخدام SHA-256.

الميزات:

  • حجم المفتاح: 2048 أو 3072 أو 4096 بت
  • خوارزمية التجزئة: SHA-256
  • MGF: MGF1 مع SHA-256
  • التسمية: معامل تسمية اختياري

الاستخدام:

CK_MECHANISM mechanism = {
mechanism: CKM_RSA_PKCS_OAEP,
pParameter: &oaepParams,
ulParameterLen: sizeof(oaepParams)
};

CK_RSA_PKCS_OAEP_PARAMS oaepParams = {
hashAlg: CKM_SHA256,
mgf: CKG_MGF1_SHA256,
source: CKZ_DATA_SPECIFIED,
pSourceData: label,
ulSourceDataLen: labelLen
};

ترجمة DuoKey API:

{
"algorithm": "RSA-OAEP-256",
"label": "base64-encoded-label"
}

حالات الاستخدام:

  • لفّ/فكّ لفّ المفاتيح
  • تبادل آمن للمفاتيح
  • ميزات Oracle TDE المستقبلية

توليد المفاتيح​

توليد مفتاح AES​

آلية PKCS#11: CKM_AES_KEY_GEN

أحجام المفاتيح المدعومة:

  • 128 بت (16 بايت) - CKA_VALUE_LEN = 16
  • 192 بت (24 بايت) - CKA_VALUE_LEN = 24
  • 256 بت (32 بايت) - CKA_VALUE_LEN = 32 (موصى به)

الاستخدام:

CK_MECHANISM mechanism = {
mechanism: CKM_AES_KEY_GEN,
pParameter: NULL,
ulParameterLen: 0
};

CK_ATTRIBUTE template[] = {
{CKA_KEY_TYPE, &keyType, sizeof(keyType)}, // CKK_AES
{CKA_VALUE_LEN, &keySize, sizeof(keySize)}, // 32 for 256-bit
{CKA_LABEL, label, labelLen},
{CKA_ENCRYPT, &true, sizeof(true)},
{CKA_DECRYPT, &true, sizeof(true)}
};

ترجمة DuoKey API:

{
"algorithm": "AES",
"keySize": 256,
"label": "ORACLE.TDE.CDB$ROOT.MK.20251219"
}

استخدام Oracle TDE:

  • مفاتيح التشفير الرئيسية: مفاتيح AES بطول 256 بت (افتراضي)
  • مفاتيح الجداول: مشفّرة بالمفتاح الرئيسي
  • مفاتيح مساحات الجداول: مشفّرة بالمفتاح الرئيسي

توليد زوج مفاتيح RSA​

آلية PKCS#11: CKM_RSA_PKCS_KEY_PAIR_GEN

أحجام المفاتيح المدعومة:

  • 2048 بت - الحد الأدنى الموصى به
  • 3072 بت - موصى به للأمان العالي
  • 4096 بت - أقصى أمان

الاستخدام:

CK_MECHANISM mechanism = {
mechanism: CKM_RSA_PKCS_KEY_PAIR_GEN,
pParameter: NULL,
ulParameterLen: 0
};

CK_ATTRIBUTE publicTemplate[] = {
{CKA_MODULUS_BITS, &modulusBits, sizeof(modulusBits)}, // 2048, 3072, 4096
{CKA_PUBLIC_EXPONENT, &pubExp, sizeof(pubExp)} // Usually 65537
};

CK_ATTRIBUTE privateTemplate[] = {
{CKA_DECRYPT, &true, sizeof(true)},
{CKA_SIGN, &true, sizeof(true)}
};

ترجمة DuoKey API:

{
"algorithm": "RSA",
"keySize": 2048,
"publicExponent": 65537
}

حالات الاستخدام:

  • لفّ المفاتيح
  • التواقيع الرقمية
  • تبادل آمن للمفاتيح

توليد زوج مفاتيح ECC​

آلية PKCS#11: CKM_EC_KEY_PAIR_GEN

المنحنيات المدعومة:

  • P-256 (secp256r1) - CKA_EC_PARAMS = secp256r1
  • P-384 (secp384r1) - CKA_EC_PARAMS = secp384r1
  • P-521 (secp521r1) - CKA_EC_PARAMS = secp521r1

الاستخدام:

CK_MECHANISM mechanism = {
mechanism: CKM_EC_KEY_PAIR_GEN,
pParameter: NULL,
ulParameterLen: 0
};

CK_ATTRIBUTE publicTemplate[] = {
{CKA_EC_PARAMS, ecParams, ecParamsLen} // Curve OID
};

ترجمة DuoKey API:

{
"algorithm": "ECC",
"curve": "P-256"
}

حالات الاستخدام:

  • تشفير المنحنيات الإهليلجية
  • ميزات Oracle TDE المستقبلية
  • عمليات غير متماثلة عالية الأداء

ترجمة الآليات​

تترجم المكتبة ثوابت آلية PKCS#11 إلى معاملات DuoKey Cockpit API.

جدول الترجمة​

ثابت PKCS#11الآليةخوارزمية DuoKey APIالمعاملات
CKM_AES_KEY_GENتوليد مفتاح AES"AES"keySize: 128/192/256
CKM_AES_CBCAES-CBC"AES-CBC"iv: <iv>
CKM_AES_CBC_PADAES-CBC مع الحشو"AES-CBC"iv: <iv>، padding: "PKCS7"
CKM_AES_GCMAES-GCM"AES-GCM"iv: <iv>، aad: <aad>، tagLength: 128
CKM_RSA_PKCS_KEY_PAIR_GENزوج مفاتيح RSA"RSA"keySize: 2048/3072/4096
CKM_RSA_PKCS_OAEPRSA-OAEP"RSA-OAEP-256"label: <label>
CKM_EC_KEY_PAIR_GENزوج مفاتيح ECC"ECC"curve: "P-256/P-384/P-521"

عملية الترجمة​

مثال على الترجمة:

// PKCS#11 Input
mechanism := CKM_AES_CBC_PAD
parameters := []byte{...} // IV

// Translation
apiRequest := {
Algorithm: "AES-CBC",
IV: base64.Encode(parameters),
Padding: "PKCS7"
}

استخدام Oracle TDE​

توليد المفتاح الرئيسي​

الآلية: CKM_AES_KEY_GEN

حجم المفتاح: 256 بت (32 بايت)

السمات:

  • CKA_LABEL: "ORACLE.TDE.CDB$ROOT.MK.########"
  • CKA_ENCRYPT: TRUE
  • CKA_DECRYPT: TRUE
  • CKA_WRAP: TRUE
  • CKA_UNWRAP: TRUE

تشفير مفتاح الجدول​

الآلية: CKM_AES_CBC_PAD

العملية:

  1. يولّد Oracle مفتاح تشفير الجدول (TEK)
  2. يشفّر Oracle الـ TEK بالمفتاح الرئيسي باستخدام CBC-PAD
  3. يُخزَّن الـ TEK المشفّر في قاموس البيانات

تشفير مفتاح مساحة الجداول​

الآلية: CKM_AES_CBC_PAD

العملية:

  1. يولّد Oracle مفتاح تشفير مساحة الجداول
  2. يشفّر Oracle المفتاح بالمفتاح الرئيسي باستخدام CBC-PAD
  3. يُخزَّن المفتاح المشفّر في ترويسة مساحة الجداول

اعتبارات الأمن​

أحجام المفاتيح​

AES:

  • 128 بت: الحد الأدنى، مقبول لمعظم حالات الاستخدام
  • 192 بت: أمان جيد
  • 256 بت: موصى به، أقصى أمان

RSA:

  • 2048 بت: الحد الأدنى الموصى به
  • 3072 بت: موصى به لعمليات النشر الجديدة
  • 4096 بت: أقصى أمان، أداء أبطأ

ECC:

  • P-256: مكافئ لـ RSA بطول 3072 بت
  • P-384: مكافئ لـ RSA بطول 7680 بت
  • P-521: أقصى أمان

إدارة متجّه التهيئة (IV)​

أفضل الممارسات:

  • متجّهات تهيئة عشوائية: استخدم دائمًا متجّهات تهيئة عشوائية لكل عملية تشفير
  • طول IV: طابق طول IV مع حجم الكتلة (16 بايت لـ AES)
  • تخزين IV: خزّن IV مع النص المشفّر
  • إعادة استخدام IV: لا تعد استخدام متجّهات التهيئة مطلقًا بنفس المفتاح

هجمات أوراكل الحشو (Padding Oracle)​

الحماية:

  • استخدم التشفير المصادَق عليه (AES-GCM) عند الإمكان
  • تحقّق من الحشو بشكل صحيح
  • استخدم عمليات ثابتة الزمن

اعتبارات الأداء​

أداء الخوارزميات​

المتماثل (AES):

  • تسريع العتاد: تحتوي المعالجات الحديثة على تعليمات AES-NI
  • الإنتاجية: عالية جدًا (جيجابايت/ثانية)
  • زمن الانتقال: منخفض (ميكروثوانٍ)

غير المتماثل (RSA):

  • الأداء: أبطأ من المتماثل
  • تأثير حجم المفتاح: المفاتيح الأكبر = عمليات أبطأ
  • حالة الاستخدام: تبادل المفاتيح، وليس التشفير بالجملة

ECC:

  • الأداء: أسرع من RSA لأمان مكافئ
  • حجم المفتاح: مفاتيح أصغر من RSA
  • حالة الاستخدام: عمليات غير متماثلة عالية الأداء

نصائح التحسين​

  1. استخدم AES-GCM عند الحاجة إلى المصادقة (عملية واحدة)
  2. استخدم AES-CBC-PAD للتوافق مع Oracle TDE
  3. خزّن المفاتيح مؤقتًا في الجلسة لتجنّب عمليات البحث المتكرّرة
  4. جمّع العمليات عند الإمكان (تحسين مستقبلي)

الخطوات التالية​