إنتقل إلى المحتوى الرئيسي
ينطبق على:
OpenSC pkcs11-toolمكتبة DuoKey PKCS#11Linux / Windows

المتطلبات المسبقة​

المتطلبات المسبقة

  • تثبيت OpenSC pkcs11-tool
  • مكتبة DuoKey PKCS#11 مُصرَّفة (libdke_pkcs11.so أو dke_pkcs11.dll)
  • ملف pkcs11.toml (المسار في DKE_PKCS11_CONF) أو متغيرات DKE_PKCS11_* مُكوَّنة (راجع نظرة عامة ← التكوين)
ملاحظة
يمكن أن تكون قيمة PIN (مثل 1234) أي قيمة لأنها لا تُتحقَّق منها حالياً من المكتبة. تُطلَب بموجب صياغة pkcs11-tool لكن تُتجاهَل من مكتبة DuoKey.

معلومات عامة​

عرض معلومات الرمز​

pkcs11-tool --module ./libdke_pkcs11.so --list-token-slots

سرد الآليات المدعومة​

pkcs11-tool --module ./libdke_pkcs11.so --list-mechanisms

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

سرد كل الكائنات​

pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so --list-objects

سرد مفتاح محدد بالتسمية​

pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--list-objects \
--label "test-key-RSA-2048"

التصفية حسب نوع المفتاح​

# List public keys only
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--list-objects \
--type pubkey

# List by key type (e.g., AES)
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--list-objects \
--key-type "AES"
تنبيه
مرشِّح --key-type معطوب (لا يعمل) في الإصدار 0.26 من pkcs11-tool.

تصدير المفاتيح العامة​

لا يمكن تصدير إلا المفاتيح العامة. تبقى المفاتيح الخاصة محمية في خلفية Cockpit.

تصدير مفتاح RSA العام​

pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--read-object \
--type pubkey \
--label "test-key-RSA-2048" \
--output-file test-key-RSA-2048.pubkey

تصدير مفتاح ECC العام​

pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--read-object \
--type pubkey \
--label "test-key-ECC-256" \
--output-file test-key-ECC-256.pubkey

التشفير وفك التشفير​

مهم
بالنسبة لعمليات التشفير/فك التشفير، لا تدعم pkcs11-tool البحث عن المفتاح إلا بالمعرّف (لا بالتسمية). استخدم أمر --list-objects أعلاه لاكتشاف معرّف المفتاح المطلوب استخدامه.

تشفير / فك تشفير RSA​

# Encrypt
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--encrypt \
--mechanism RSA-PKCS-OAEP \
--hash-algorithm sha256 \
--mgf MGF1-SHA256 \
--id "63336235376338372d333734662d346366332d396231332d626532353837333865666336" \
--input-file plaintext.txt \
--output-file encrypted.txt

# Decrypt
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--decrypt \
--mechanism RSA-PKCS-OAEP \
--hash-algorithm sha256 \
--mgf MGF1-SHA256 \
--id "63336235376338372d333734662d346366332d396231332d626532353837333865666336" \
--input-file encrypted.txt \
--output-file plaintext-2.txt

تشفير / فك تشفير AES-GCM​

# Encrypt with AES-GCM
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--encrypt \
--mechanism AES-GCM \
--iv 000102030405060708090a0b0c0d0e0f \
--aad "48656c6c6f" \
--tag-bits-len 128 \
--id "30613263353462622d643436322d343864632d613132302d343135326661393033323063" \
--input-file plaintext.txt \
--output-file encrypted-aes.txt

# Decrypt with AES-GCM
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--decrypt \
--mechanism AES-GCM \
--iv 000102030405060708090a0b0c0d0e0f \
--aad "48656c6c6f" \
--tag-bits-len 128 \
--id "30613263353462622d643436322d343864632d613132302d343135326661393033323063" \
--input-file encrypted-aes.txt \
--output-file plaintext-2-aes.txt

تشفير / فك تشفير AES-CBC-PAD​

# Encrypt with AES-CBC-PAD
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--encrypt \
--mechanism AES-CBC-PAD \
--iv 000102030405060708090a0b0c0d0e0f \
--id "30613263353462622d643436322d343864632d613132302d343135326661393033323063" \
--input-file plaintext.txt \
--output-file encrypted-aes-cbc.txt

# Decrypt with AES-CBC-PAD
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--decrypt \
--mechanism AES-CBC-PAD \
--iv 000102030405060708090a0b0c0d0e0f \
--id "30613263353462622d643436322d343864632d613132302d343135326661393033323063" \
--input-file encrypted-aes-cbc.txt \
--output-file plaintext-2-aes-cbc.txt

إدارة الكائنات​

تُنشَأ الكائنات بواسطة أوامر توليد المفاتيح أدناه أو تُكتشَف بـ --list-objects. إنشاء كائن بيانات بـ --write-object غير مدعوم (C_CreateObject).

حذف مفتاح​

pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--delete-object \
--type secrkey \
--label 'test-pkcs11-generated-key-aes-1'
غير مدعوم

إنشاء الكائنات (--write-object)، ونسخ الكائنات، وتعديل السمات غير مدعومة. راجع تغطية الوظائف.

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

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

pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--keypairgen \
--label 'test-pkcs11-generated-key-rsa' \
--key-type RSA:2048

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

pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--keygen \
--label 'test-pkcs11-generated-key-aes-1' \
--key-type AES:256

المحاذير​

التوقيع/التحقق والتغليف/فك التغليف مدعومان (لمفاتيح RSA / EC؛ ولا ينطبقان على مفاتيح Oracle TDE الرئيسية من نوع AES فقط). المحاذير الحقيقية هي:

العنصرملاحظة
إنشاء الكائنات (--write-object)غير مدعوم (C_CreateObject / C_CopyObject / C_SetAttributeValue).
العمليات متعددة الأجزاءلا يُدعَم إلا التشفير/فك التشفير/التوقيع/التحقق/التلخيص أحادي الجزء.
اشتقاق المفاتيحغير مدعوم (C_DeriveKey).
تلخيص SHA-1CKM_SHA_1 مُعلَنة لكن مرفوضة من الخلفية — استخدم SHA-256 / 384 / 512.
مرشِّح --key-typeمعطوب في pkcs11-tool 0.26 (خلل في pkcs11-tool، وليس في المكتبة).