إنتقل إلى المحتوى الرئيسي
ينطبق على:
PKCS#11 (Cryptoki) 2.40Oracle TDEOracle Key VaultDuoKey Cockpit

مقدمة​

مكتبة DuoKey PKCS#11 هي مكتبة مشتركة أصلية تنفّذ معيار PKCS#11 (Cryptoki) 2.40. تحمّلها تطبيقات مثل Oracle Database TDE وOracle Key Vault كأي مزوّد HSM وتستدعي وظائف C_* القياسية. لا تنفّذ المكتبة أي تشفير محلياً — تُرسَل كل عملية عبر HTTPS إلى DuoKey Cockpit، الذي ينفّذها مقابل خزنة المستأجر أو HSM الداعم. لا تقيم مادة المفتاح أبداً على مضيف التطبيق.

التغليف​

الخاصيةالقيمة
الأداةLinux libdke_pkcs11.so · Windows dke_pkcs11.dll
المعيارPKCS#11 (Cryptoki) 2.40
الرمز المصدَّرC_GetFunctionList — الرمز الوحيد الذي يجب أن يصدّره مزوّد PKCS#11؛ يُعيد جدول الوظائف الكامل
التشفير المحليلا يوجد — تُنقَل كل العمليات إلى DuoKey Cockpit
معرّف الصانعDuoKey

البنية​

لا يتحدث تطبيق مع Cockpit مباشرة أبداً. فهو يحمّل المكتبة، التي تحوّل كل استدعاء Cryptoki إلى طلب واحد إلى نقطة نهاية وكيل في Cockpit؛ ويؤدي Cockpit العملية ويعيد النتيجة.

نقاط التصميم​

لا تشفير محلي

لا تحتفظ المكتبة بأي مفاتيح ولا تشغّل أي تشفير. تكتفي بترميز الحمولات وإعادة توجيهها؛ والخلفية هي من تؤدي العمل.

رمز تصدير واحد

لا يُصدَّر إلا C_GetFunctionList؛ وتُستدعى كل وظيفة أخرى عبر الجدول المُعاد.

جلسات تسلسلية

تُسلسَل حالة المكتبة بأكملها خلف قفل واحد، ولا تُدعَم إلا الجلسات التسلسلية؛ تُرفَض الجلسات المتوازية بـ CKR_SESSION_PARALLEL_NOT_SUPPORTED.

ربط مقابض الكائنات

تُربَط مقابض PKCS#11 الصحيحة بمعرّفات كائنات على جانب الخادم؛ تُخزَّن الواصفات مؤقتاً وتُزال تكراراتها بحيث يُعيد الكائن نفسه دائماً المقبض نفسه.

مصادقة بالرمز، لا PIN

لا يُرسِل C_Login أي PIN — فهو ينقل الجلسة فقط إلى حالة المستخدم. المصادقة هي رمز حامل لكل طلب من التكوين.

تغطية الوظائف​

تنفّذ المكتبة المجموعة الفرعية من Cryptoki اللازمة لإدارة المفاتيح واستخدامها عبر Cockpit — عمليات أحادية الجزء فقط. الجدول الكامل لكل وظيفة موجود في صفحة تغطية الوظائف؛ والملخص:

الفئةالوظائف المُنفَّذة
أغراض عامةC_GetFunctionList, C_Initialize, C_Finalize, C_GetInfo
الفتحة والرمزC_GetSlotList, C_GetSlotInfo, C_GetTokenInfo, C_GetMechanismList, C_GetMechanismInfo
الجلسةC_OpenSession, C_CloseSession, C_CloseAllSessions, C_GetSessionInfo, C_Login, C_Logout
الكائناتC_FindObjectsInit / C_FindObjects / C_FindObjectsFinal, C_GetAttributeValue, C_DestroyObject
التشفير / فك التشفيرC_EncryptInit / C_Encrypt, C_DecryptInit / C_Decrypt (أحادي الجزء)
التوقيع / التحقق / التلخيصC_Sign, C_Verify, C_Digest (أحادي الجزء)
إدارة المفاتيحC_GenerateKey, C_GenerateKeyPair, C_WrapKey, C_UnwrapKey
العشوائيةC_GenerateRandom (يُقبَل C_SeedRandom ويُتجاهَل)
غير مدعوم (أحادي الجزء بالتصميم)

تُعيد العمليات متعددة الأجزاء / التدفقية (*_Update / *_Final)، والتشفير ثنائي الوظيفة، وC_DeriveKey، وإنشاء/نسخ/ضبط سمات الكائن (C_CreateObject، وC_CopyObject، وC_SetAttributeValue)، وإدارة الرمز/PIN (C_InitToken، وC_InitPIN، وC_SetPIN) القيمة CKR_FUNCTION_NOT_SUPPORTED. تُعيد C_GetFunctionStatus وC_CancelFunction القيمة CKR_FUNCTION_NOT_PARALLEL. عمليات المفتاح الرئيسي أحادية الجزء بحكم البناء، لذا حُذفت هذه عمداً.

الآليات​

يُعلِن C_GetMechanismList عن العائلات التالية (تضبط C_GetMechanismInfo أيضاً CKF_HW). راجع تغطية الوظائف للقائمة الدقيقة ونطاقات حجم المفتاح.

العائلةالآلياتالعمليات
AESCKM_AES_KEY_GEN, CKM_AES_ECB/CBC/CBC_PAD, CKM_AES_GCM, CKM_AES_KEY_WRAP(_PAD)التوليد، التشفير/فك التشفير، التغليف/فك التغليف
RSACKM_RSA_PKCS_KEY_PAIR_GEN, CKM_RSA_PKCS, CKM_RSA_PKCS_OAEP, CKM_RSA_PKCS_PSS, CKM_SHAn_RSA_PKCSالتوليد، التشفير/فك التشفير، التوقيع/التحقق، التغليف/فك التغليف
ECCKM_EC_KEY_PAIR_GEN, CKM_ECDSA, CKM_ECDSA_SHA256/384التوليد، التوقيع/التحقق
التلخيصCKM_SHA_1, CKM_SHA256/384/512التلخيص (SHA-256/384/512 في الخلفية)
HMACCKM_SHA256/384/512_HMACالتوقيع/التحقق
الآليات المستخدَمة تعتمد على المستهلك

هذا مزوّد Cryptoki عام الغرض، لذا يُعلِن عن AES وRSA وEC وSHA وHMAC. يستخدم كل تطبيق ما يحتاجه فقط. على سبيل المثال، يستخدم Oracle TDE AES فقط — مفتاحه الرئيسي هو AES256 ولا يستخدم أبداً RSA أو EC (راجع Oracle TDE ← Cockpit v2). قد تستخدم تكاملات أخرى RSA أو EC.

الكائنات والسمات​

  • فئات الكائنات: CKO_DATA, CKO_CERTIFICATE, CKO_PUBLIC_KEY, CKO_PRIVATE_KEY, CKO_SECRET_KEY, CKO_DOMAIN_PARAMETERS.
  • أنواع المفاتيح: CKK_AES, CKK_RSA, CKK_EC, CKK_GENERIC_SECRET, CKK_DSA, CKK_DH, CKK_SHA256/384/512_HMAC.
  • تُعنوَن المفاتيح بـ CKA_LABEL وCKA_ID؛ يجيب C_GetAttributeValue من واصف مخزَّن مؤقتاً.
  • لا تُعاد CKA_VALUE أبداً — فهي تعيد CKR_ATTRIBUTE_SENSITIVE، لأن مادة المفتاح الخام لا تقيم إلا في الخلفية. تُوسَم المفاتيح المُعادة بأنها غير قابلة للاستخراج وحساسة.

التكوين​

تقرأ المكتبة ملف TOML يُحدَّد مساره عبر DKE_PKCS11_CONF (يضبطه Oracle / OKV في بيئة المحفظة). تتجاوز متغيرات البيئة الملف.

pkcs11.tomlTOML
[http_config]
server_url = "https://<cockpit-host>/api/apps/<app_id>/tde/pkcs11/<access_guid>"
access_token = "<access_guid>" # sent as the bearer token
timeout_secs = 30
verify_tls = true

[pkcs11]
slot_id = 0
logging_level = "info"
logging_folder = "/var/log/dke-pkcs11"
متغيّر البيئةيتجاوز
DKE_PKCS11_CONFمسار ملف TOML (إذا لم يُضبَط، يُبنى التكوين من المتغيرات أدناه)
DKE_PKCS11_SERVER_URLhttp_config.server_url
DKE_PKCS11_ACCESS_TOKENhttp_config.access_token
DKE_PKCS11_VERIFY_TLShttp_config.verify_tls
DKE_PKCS11_SLOT_IDpkcs11.slot_id
DKE_PKCS11_LOGGING_LEVELpkcs11.logging_level
DKE_PKCS11_LOGGING_FOLDERpkcs11.logging_folder
أبقِ التحقق مفعَّلاً

تكون verify_tls بقيمة true افتراضياً. لا تضبطها على false إلا للاختبار مقابل شهادات موقَّعة ذاتياً — فهي تعطّل التحقق من شهادة TLS.

المستهلكون​

ليست هذه المكتبة

يستخدم Microsoft SQL Server EKM مزوّداً منفصلاً (ملف DLL من نوع CNG Key Storage Provider)، وليس مكتبة DuoKey PKCS#11. راجع دليل SQL EKM.