الآليات التشفيرية
تدعم مكتبة 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_CBC | AES-CBC | "AES-CBC" | iv: <iv> |
CKM_AES_CBC_PAD | AES-CBC مع الحشو | "AES-CBC" | iv: <iv>، padding: "PKCS7" |
CKM_AES_GCM | AES-GCM | "AES-GCM" | iv: <iv>، aad: <aad>، tagLength: 128 |
CKM_RSA_PKCS_KEY_PAIR_GEN | زوج مفاتيح RSA | "RSA" | keySize: 2048/3072/4096 |
CKM_RSA_PKCS_OAEP | RSA-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: TRUECKA_DECRYPT: TRUECKA_WRAP: TRUECKA_UNWRAP: TRUE
تشفير مفتاح الجدول
الآلية: CKM_AES_CBC_PAD
العملية:
- يولّد Oracle مفتاح تشفير الجدول (TEK)
- يشفّر Oracle الـ TEK بالمفتاح الرئيسي باستخدام CBC-PAD
- يُخزَّن الـ TEK المشفّر في قاموس البيانات
تشفير مفتاح مساحة الجداول
الآلية: CKM_AES_CBC_PAD
العملية:
- يولّد Oracle مفتاح تشفير مساحة الجداول
- يشفّر Oracle المفتاح بالمفتاح الرئيسي باستخدام CBC-PAD
- يُخزَّن المفتاح المشفّر في ترويسة مساحة الجداول
اعتبارات الأمن
أحجام المفاتيح
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
- حالة الاستخدام: عمليات غير متماثلة عالية الأداء
نصائح التحسين
- استخدم AES-GCM عند الحاجة إلى المصادقة (عملية واحدة)
- استخدم AES-CBC-PAD للتوافق مع Oracle TDE
- خزّن المفاتيح مؤقتًا في الجلسة لتجنّب عمليات البحث المتكرّرة
- جمّع العمليات عند الإمكان (تحسين مستقبلي)
الخطوات التالية
- طبقة واجهة PKCS#11 → - شاهد كيفية استخدام الآليات
- تدفّق الاتصال → - افهم تدفّق العمليات
- التكوين → - تعلّم عن تكوين الآليات