Vì vậy, khi một tài liệu PKCS được chấp nhận như một tài liệu cơ sở cho một tiêu chuẩn chính thức, RSA Laboratories tuyên bố từ bỏ "quyền sở hữu" của nó.. Object Một mục được lưu trữ trê
Trang 1LỜI NÓI ĐẦU
Khi mật mã khóa công khai bắt đầu ứng dụng rộng rãi và được chấp nhận là ngày càng rõ ràng Nếu nó có được hiệu quả như các công nghệ cơ bản cho phép nó có thể, phải có tiêu chuẩn tương thích Mặc dù các nhà cung cấp có thể thoả thuận về kỹ thuật cơ bản khóa công khai, tính tương thích giữa hiện thực là do không có phương tiện bảo đảm Khả năng cộng tác đòi hỏi phải tuân thủ nghiêm ngặt theo thỏa thuậntiêu chuẩn định dạng cho dữ liệu chuyển giao
Hướng tới mục tiêu đó, RSA Laboratories đã phát triển, hợp tác với các đại diện ngành công nghiệp và các học viện, chính phủ, một họ các tiêu chuẩn được gọi là Public-Key Cryptography Standards, hoặc PKCS cho ngắn
PKCS được cung cấp bởi RSA Laboratoriescho các nhà phát triển của các hệ thống máy tính sử dụng công nghệ public-key RSA Laboratories có ý định cải thiện và tinh chỉnh các tiêu chuẩn kết hợp với các nhà phát triển hệ thống máy tính, với mục tiêu sản xuất tiêu chuẩn mà hầu hết nếu không phải tất cả các nhà phát triển thông qua
Vai trò của RSA Laboratoriestrong quá trình tiêu chuẩn làm là gấp bốn lần:
1 Xuất bản một cách cẩn thận các tài liệu bằng văn bản mô tả tiêu chuẩn
2 Cố gắng lấy được ý kiến và lời khuyên từ các nhà phát triển và người sử dụng thay đổi hữu ích hoặc cần thiết và phần mở rộng
3 Công bố tiêu chuẩn sửa đổi khi thích hợp
4 Cung cấp hướng dẫn thực hiện và / hoặc triển khai thực hiện tham chiếu
Trong quá trình phát triển của PKCS, RSA Laboratoriesvẫn giữ được quyền tối cao cuối cùng trên mỗi tài liệu, mặc dù đầu vào từ nhận xét rõ ràng là có ảnh hưởng Tuy nhiên, RSA Laboratories, mục tiêu là đẩy mạnh phát triển các tiêu chuẩn chính thức, không phải
để cạnh tranh với các công việc như vậy Vì vậy, khi một tài liệu PKCS được chấp nhận như một tài liệu cơ sở cho một tiêu chuẩn chính thức, RSA Laboratories tuyên bố từ bỏ
"quyền sở hữu" của nó
Tài liệu, mở đường cho quá trình phát triển các tiêu chuẩn mở RSA Laboratoriescó thể tiếp tục phát triển các tài liệu liên quan, tất nhiên, theo các điều khoản được mô tả ở trên
Họ PKCS hiện tại bao gồm các tài liệu sau đây:
PKCS #1: RSA Encryption Standard Version 1.5, November 1993
PKCS #3: Diffie-Hellman Key-Agreement Standard Version 1.4, November 1993
PKCS #5: Password-Based Encryption Standard Version 1.5, November 1993
PKCS #6: Extended-Certificate Syntax Standard Version 1.5, November 1993
PKCS #7: Cryptographic Message Syntax Standard Version 1.5, November 1993
PKCS #8: Private-Key Information Syntax Standard Version 1.2, November 1993
PKCS #9: Selected Attribute Types Version 1.1, November 1993
PKCS #10: Certification Request Syntax Standard Version 1.0, November 1993
PKCS #11: Cryptographic Token Interface Standard Version 1.0, April 1995
Trang 2GHI CHÚ API Giao diện lập trình ứng dụng
Application Bất kỳ chương trình máy tính mà các lời gọi giao diện Cryptoki
ASN.1 Tóm tắt Ký hiệu cú pháp, như định nghĩa trong X.208
Attribute Một đặc tính của một đối tượng
BER Thuật toán mã hóa khối Chaining chế độ, như được định nghĩa trong FIPS PUB 81 CBC Encoding Rules cơ bản, như được định nghĩa trong X.209
Certificate Một tin nhắn đã ký kết ràng buộc một tên chủ đề và một khóa công khai Cryptographic Device Một thiết bị lưu trữ thông tinmật mãvàcóthểthựchiệnchức năng
mã hóa.Có thể được thực hiện nhưmột thẻ thông minh, đĩathông minh, thẻPCMCIA, hoặc với một sốcôngnghệkhác, bao gồm cảphầnmềmhoặcmột quá trình trênmột máy chủ
Cryptoki Cryptographic mã thông báo giao diện được quy định trong tiêu chuẩn này Cryptoki library Một thư viện mà thực hiện các chức năng quy định trong tiêu chuẩn
này
DES Chuẩn mã hóa dữ liệu, như được định nghĩa trong FIPS PUB 46-2
DSA Chữ ký số thuật toán, như được định nghĩa trong FIPS PUB 186
ECB Codebook chế độ điện tử, như được định nghĩa trong FIPS PUB 81
MAC Mã xác thực tin nhắn, như được định nghĩa trong ANSI X9.9
MD2 RSA Data Security, Inc MD2 nhắn tiêu hóa thuật toán, như được định nghĩa
RFC 1319
MD5 RSA Data Security, Inc Thông điệp MD5 tiêu hóa thuật toán, như được định nghĩa
RFC 1321
Mechanism Một quá trình để thực hiện một hoạt động mật mã
Object Một mục được lưu trữ trên một thẻ, có thể là dữ liệu, chứng chỉ, hoặc một chìa
khóa
PIN Mã số cá nhân
RSA Các RSA hệ thống mật mã khóa công khai, theo quy định trong PKCS # 1
RC2 Thuộc quyền sở hữu khối thuật toán mã hóa RSA RC2 bảo mật dữ liệu đối xứng RC4 Độc quyền dòng thuật toán mã hóa RSA RC4 bảo mật dữ liệu đối xứng
Reader Các phương tiện thông tin được trao đổi với một thiết bị
Session Một kết nối hợp lý giữa một ứng dụng và một mã thông báo
SHA Thuật toán băm an toàn, như được định nghĩa trong FIPS PUB 180
Slot Một độc giả hợp lý có khả năng chứa một mã thông báo
Subject Name X.500 tên phân biệt của thực thể mà quan trọng là được giao
SO Cán bộ an ninh người sử dụng
Token quan điểmluận lýcủa một thiết bịmã hóađược xác định bởiCryptoki
User Người sử dụng một ứng dụng giao diện với Cryptoki
CÁI NHÌN TỔNG QUAN PKCS #11
Trang 3 THIẾT KẾ MỤC TIÊU
- Mục tiêu chính của Cryptokilàgiao diện lập trình ở cấp độ thấptóm tắtcácchitiếtcủa các thiết bị, và trình bàycácứngdụngmột mô hìnhphổbiếncủa các thiết bịmã hóa, đượcgọilàmột " cryptographic token" (hoặcchỉ đơn giản là"token")
- Mục tiêu thứ hai là chia sẻ tài nguyên
MÔ HÌNH
- Mô hình chung của Cryptoki được minh họa trong hình dưới đây :
XEM LUẬN LÝ CỦA MỘT TOKEN
- Xem của logic Cryptoki của một mã thông báo là một thiết bị lưu trữ đối tượng và có thể thực hiện chức năng mã hóa Cryptoki định nghĩa ba lớp học của đối tượng dữ liệu, chứng nhận, và Keys Một đối tượng dữ liệu được định nghĩa bởi một ứng dụng Một đối tượng chứng chỉ lưu trữ một giấy chứng nhận khóa công khai Một đối tượng quan trọng lưu giữ một chìa khóa mã hóa Các mã hóa khóa được một khóa công khai (RSA, DSA hoặc Diffie-Hellman), một khóa riêng (RSA, DSA hoặc Diffie- Hellman) hoặc một chìa khóa bí mật (RC2, RC4, DES, vv) Quan điểm này được minh họa
trong hình dưới đây:
Trang 4 NGƯỜI SỬ DỤNG
- Phiên bản này của Cryptoki công nhận hai loại người sử dụng mã thông báo Một loại
là bảo mật cấp cao (SO) Loại khác là người sử dụng bình thường
SESSIONS
- Cryptoki đòi hỏimột ứng dụng "mở một phiên họp" vớimột mã thông báotrước khi ứng dụngcó quyền truy cậpcho các đối tượngvàchứcnăngcủathẻ Sessioncung cấp cáckết nối hợp lýgiữa các ứng dụngvà mã thông báo Mộtsession có thểlàread/write(R
/W) phiên hoặcmột phiênread-only(R /O)
Read-only session states
Read/write session states
Trang 5 Session events
Các sự kiện phiên gây ra trạng thái phiên thay đổi Bảng dưới đây mô tả các sự kiện :
CHỨC NĂNG TỔNG QUAN
- API Cryptoki bao gồm một số chức năng, bao gồmquản lýslot và token thông qua đối
tượng quản lý, cũng như các chức năng mã hóa Các chức năng này được trình bày
trong bảng dưới đây :
Mục đích chung
C_Initialize khởi tạo Cryptoki C_GetInfo có được thông tin tổng quát
về Cryptoki
Trang 6Quản lý slot và token
C_GetSlotList có đượcđượcmộtdanh sách
cáckhecắmtrong hệ thố C_GetSlotInfo có được thông tinvềmột khe
cắmđặcbiệt C_GetTokenInfo có được thông tinvềmột mã
thông báocụthể C_GetMechansimList một danh sách các cơ chếhỗ
trợ bởimột mã thông báo C_GetMechanismInfo nhận đượcthông tinvềmột cơ chếcụthể C_InitToken khởi tạo một mã thông báo C_InitPIN khởi tạo số PINcủangười sử
dụng bình thường C_InitPIN thay đổi mã PIN của người
sử dụng hiện tại
Quản lý session
C_OpenSession
mở một kết nối"sesion" giữa một ứng dụngvàmột mã thông báocụthể
C_CloseSession đóng một session C_CloseAllSessions đóng mọi sessionsvớimột
mã thông báo C_GetSessionInfo có được thông tinvềsession C_Login bản ghivàomột mã thông
báo C_Logout bản ghi ratừmột mã thông báo
Quản lý object
C_CreateObject tạo ramột object C_CopyObject tạo ra một bảnsaocủa một
object C_DestroyObject hủymột object C_GetObjectSize
có đượcđượckích thướccủamột object trongbyte
C_GetAttributeValue có đượcđượcmột giá
trịthuộctínhcủa một object C_SetAttributeValue sửa đổi một giá
trịthuộctínhcủa một object C_FindObjectsInit khởi tạo một hoạt độngtìm
kiếmobject C_FindObjects tiếp tục mộthoạt động tìm
kiếmobject
Message digesting
C_DigestInit Khởi tạo một hoạt động
message digesting C_Digest Phân loạidữ liệumộtphần C_DigestUpdate tiếp tụcmột hoạt độngphân
loạinhiềuphần
Trang 7C_DigestFinal kết thúc một hoạt độngphân
loạinhiềuphần
Chữ ký và xác thực
C_SignInit khởi tạo một thao tácchữ ký C_Sign Đăng ký một phần dữ liệu
duy nhất C_SignUpdate tiếp tục một thao tácchữ kýnhiềuphần C_SignFinal kết thúc một thao tácchữ
kýnhiềuphần C_SignRecoverInit khởi tạo mộtthao tác chữ ký,
nơi mà códữ liệu C_SignRecover
dấu hiệu duy nhấtmột phần
dữ liệu, nơidữ liệu có thể phục hồitừchữ ký
C_VerifyInit khởi tạo một thao tácxác
thực C_Verify xácthựcmột chữ ký
trênmộtphầndữ liệu C_VerifyUpdate tiếp tụcmột thao tácxác
thựcnhiềuphần C_VerifyFinal kết thúc một thao tácxác
thựcnhiềuphần C_VerifyRecoverInit
khởi tạo một thao tácxác thựcdữ liệu
phục hồitừchữ ký
C_VerifyRecover
xác thựcmột chữ ký trênmộtphầndữ liệu,nơi mà các
dữ liệu được phục hồithểtừchữ ký
Quản lý Key
C_GenerateKey tạo một key bảo mật C_GenerateKeyPair tạo ra một
cặppublic-key/private-key C_WrapKey wraps(mã hóa) 1key C_UnwrapKey unwraps (Giải mã) 1 key C_DeriveKey xuất phát 1 keytừ 1 key cơ
bản Khởi tạo một số ngẫu
nhiên
C_SeedRandom Tập hợp các tài liệu để bổ
sung cho việc tạo số C_GenerateRandom Tạo dữ liệu ngẫu nhiên
Hàm quản lý
C_GetFunctionStatus
có được trạng tháicập nhật củamột chức năngđang chạytrong
song song vớiứng dụng C_CancelFunction hủy bỏ một chức năngchạy
song songvới các ứng dụng
Trang 8Callbacks Notify quy trình thông
báotừCryptoki
XEM XÉT AN NINH
- Là một giao diện với các thiết bị mã hóa, Cryptoki cung cấp một cơ sở cho an ninh trong một máy tính hoặc hệ thống truyền thông Hai trong số các tính năng cụ thể của giao diện để tạo điều kiện bảo đảm đó là :
1.Truy cập đến các đối tượngtưtrêntoken, vàcó thể làchức năng mã hóa, đòimột số PIN.Vì vậy, sởcácthiếtmã hoá màthực hiệncác mã thông báolàkhôngđủ; PINcũng rất cần thiết
2.Bảo vệ tối đa chođốiđược đánh dấu "sensitive" có thể đượcđọc từtoken, cũng không phải xuấtthông quacácchức năng mã hóa(mặc dùchúng có thể đượcsửnhư là key)
CÁC KIỂU DỮ LIỆU
Thông tin tổng quát
Cryptoki thể hiệnthông tin chung vớicác loại sau đây:
o CK_VERSION là một cấu trúc mô tả các phiên bản của Cryptoki
o CK_INFO cung cấp thông tin chung về Cryptoki
o CK_NOTIFICATION liệt kê các loại thông báo mà Cryptoki cung cấp cho ứng dụng
Các kiểu slot và token
o CK_SLOT_ID là một giá trị Cryptoki được giao xác định một slot
o CK_SLOT_ID_PTR trỏtới 1CK_SLOT_ID
o CK_SLOT_INFO cung cấp thông tinvề1 slot
o CK_SLOT_INFO_PTR trỏđến mộtcấu trúcCK_SLOT_INFO
o CK_TOKEN_INFO cung cấpthông tin vềmột mã thông báo
o CK_TOKEN_INFO_PTR trỏđến mộtcấu trúcCK_TOKEN_INFO
Các kiểu session
o CK_SESSION_HANDLE là một giá trị Cryptoki giao xác định một token
o CK_SESSION_HANDLE_PTRtrỏtớiCK_SESSION_HANDLE
o CK_USER_TYPE liệt kêcácloạicủa người sử dụngCryptoki
o CK_STATE liệt kêcácSession
o CK_SESSION_INFO cung cấp thông tinvềmột session
o CK_SESSION_INFO_PTR trỏđến mộtcấu trúcCK_SESSION_INFO
Các kiểu object
o CK_OBJECT_HANDLE là một định danh mã thông báo cụ thể cho một đối tượng
o CK_OBJECT_HANDLE_PTR trỏ tới CK_OBJECT_HANDLE
o CK_OBJECT_CLASS là một giá trị xác định các lớp học (hoặc các loại) của các đối tượng mà Cryptoki công nhận
o CK_OBJECT_CLASS_PTR trỏ đến cấu trúc CK_OBJECT_CLASS
o CK_KEY_TYPE là một giá trị xác định một loại quan trọng
o CK_CERTIFICATE_TYPE là một giá trị xác định một loại giấy chứng nhận
o CK_ATTRIBUTE_TYPE là một giá trị xác định một loại thuộc tính
Trang 9o CK_ATTRIBUTE là một cấu trúc bao gồm các loại, chiều dài và giá trị của một thuộc tính
o CK_ATTRIBUTE_PTR trỏ đến cấu trúc CK_ATTRIBUTE
Mechanisms
o CK_MECHANISM_TYPE là một giá trị xác định một loại cơ chế
o CK_MECHANISM_TYPE_PTR trỏ cấu trúc CK_MECHANISM_TYPE
o CK_MECHANISM là một cấu trúc xác định một cơ chế cụ thể
o CK_MECHANISM_PTR trỏ đến cấu trúc CK_MECHANISM
o CK_MECHANISM_INFO là một cấu trúc cung cấp thông tin về một cơ chế
cụ thể
o CK_MECHANISM_INFO_PTR trỏ đến cấu trúc CK_MECHANISM_INFO
o CK_RC2_CBC_PARAMS là một cấu trúc cung cấp các thông số cơ chế CKM_RC2_CBC
Functions
o CK_ENTRY
o CK_RV
OBJECTS
Hình dưới đây minhcác chi tiết củacác đối tượng1 key:
Trang 10 Các thuộc tính cơ bản
Bảng sau đây xác địnhcác thuộc tínhchungtớitất cả các đối tượng:
Data objects
Certificate objects
Trang 11 Key objects
Public key objects
Private key objects
Secret key objects
Trang 12 FUNTIONS
Chức năng của Cryptoki được tổ chức thành các loại sau đây:
Mục đích chung
Quản lý slot and token
Quản lý session
Quản lý object
Mã hóa và giải mã
Message digesting
Chữ ký và xác thực
Quản lý key
Quản lý function
Callback
Trang 14 MECHANISMS
- Phần này mô tả các cơ chếmàphiên bản nàycủaCryptokihỗcho các hoạt độngmã hoá
Bảngsau đây tóm tắtcác cơ chếvàứng dụng của chúng