Professional Documents
Culture Documents
2.1 DDL là gì
Thư viện liên kết động (dynamic library) là tập hợp những hàm, chức năng được tải lên
chương trình của bạn trong thời điểm chương trình đang thực thi. Khi biên dịch chương
trình có sử dụng thư viện liên kết động, bản thân thư viện đó sẽ không trở thành một phần
trong chương trình thực thi, nhưng nó trở thành một đơn vị riêng biệt.
Trên hệ điều hành Windows, chúng ta có thể thấy những file có phần mở rộng .dll viết tắt
của “dynamic-link library”
-Tiết kiệm bộ nhớ lưu trữ thư viện trên ổ cứng: nhiều tiến trình có thể sử dụng chung một
thư viện liên kết động.
-Khi chức năng trong thư viện liên kết động thay đổi, chương trình sử dụng thư viện đó
không cần phải biên dịch lại.
Chương trình viết trên nhiều ngôn ngữ lập trình khác nhau có thể gọi đến cùng một thư viện
liên kết động.
+, Tuy nhiên, thư viện liên kết động cũng có nhược điểm:
-Chương trình có yêu cầu sử dụng thư viện liên kết động sẽ không thể thực thi khi không tìm
thấy thư viện tương ứng.
-Giảm hiệu suất trong quá trình chương trình đang chạy, vì khi chức năng trong thư viện
được gọi, chương trình cần thời gian để tìm kiếm và tải lên RAM.
3.1 Nhà cung cấp dịch vụ mật mã - Cryptographic Service Providers (CSP)
- CSP là một thư viện cài đặt bộ Microsoft CAPI. CSP là các modul độc lập có thể sử dụng bởi
các ứng dụng khác nhau thực hiện các chức năng mã hóa và giải mã. Một chương trình gọi
các hàm CAPI và chúng được chuyển đến các hàm của CSP. Vì CSP chịu trách nhiệm triển
khai các thuật toán và mã hóa, nên các ứng dụng không cần phải quan tâm sâu hơn vào chi
tiết việc mã hóa được thực hiện như thế nào. Hơn nữa một ứng dụng có thể xác định được
CSP nào sẽ được gọi thông qua CAPI. Và thực tế tất cả các hoạt động liên quan đến mật mã
được thực hiện trong CSP. CAPI chỉ hoạt động như một cầu nối giữa ứng dụng và CSP.
- CSP cơ bản được cài đặt như một dạng đặc biệt của DLL được giới hạn trong việc sử dụng.
Tất cả các CSP phải được ký số bởi Microsoft và chữ ký phải được xác nhận với Microsoft khi
windows load CSP. Windows sẽ định kỳ quét lại các CSP để phát hiện sự giả mạo do virus
hoặc phần mềm độc hại, hay do người dùng cố gắng vượt qua các hạn chế như độ dài
khóa…
- Để có được chữ ký các CSP không phải microsoft phải cung cấp thông tin cho Micosoft và
phải tuân thủ nghiêm ngặt các quy định và hạn chế của họ
PROV_RSA_FULL
PROV_RSA_AES
PROV_RSA_SIG
PROV_RSA_SCHANNEL
PROV_DSS
PROV_DSS_DH
PROV_DH_SCHANNEL
PROV_FORTEZZA
PROV_MS_EXCHANGE
PROV_SSL
- Một số CSP :
Provider Description
Microsoft Base Cryptographic A broad set of basic cryptographic functionality that can be exported to
Provider other countries or regions.
Microsoft Enhanced Microsoft Base Cryptographic Provider with through longer keys and
Cryptographic Provider additional algorithms.
Microsoft AES Cryptographic Microsoft Enhanced Cryptographic Provider with support for AES
Provider encryption algorithms.
Microsoft DSS Cryptographic Provides hashing, data signing, and signature verification capability
Provider using the Secure Hash Algorithm (SHA) and Digital Signature Standard
(DSS) algorithms.
Microsoft Base DSS and A superset of the DSS Cryptographic Provider that also supports Diffie-
Diffie-Hellman Cryptographic Hellman key exchange, hashing, data signing, and signature verification
Provider using the Secure Hash Algorithm (SHA) and Digital Signature Standard
(DSS) algorithms.
Microsoft Enhanced DSS and Supports Diffie-Hellman key exchange (a 40-bit DES derivative), SHA
Diffie-Hellman Cryptographic hashing, DSS data signing, and DSS signature verification.
Provider
Microsoft DSS and Diffie- Supports hashing, data signing with DSS, generating Diffie-Hellman (D-
Hellman/Schannel H) keys, exchanging D-H keys, and exporting a D-H key. This CSP
Cryptographic Provider supports key derivation for the SSL3 and TLS1 protocols.
Microsoft RSA/Schannel Supports hashing, data signing, and signature verification. The algorithm
Cryptographic Provider identifier CALG_SSL3_SHAMD5 is used for SSL 3.0 and TLS 1.0 client
authentication. This CSP supports key derivation for the SSL2, PCT1,
SSL3 and TLS1 protocols.
- Tất cả các CSP đều phải tuân thủ theo các chuẩn định sẵn của các trường sau:
Session key derivation scheme : phương thức để lấy một khóa phiên từ hàm băm
Default modes : Chế độ mặc định cho các trường khác nhau
- Mật mã khóa đối xứng (1 khóa dùng cho cả mã hóa và giải mã)
- Hàm băm
- Trình tạo số giả ngẫu nhiên (CryptGenRandom): là trình tạo số giả ngẫu nhiên (PRNG) với các thuộc tính
làm cho nó phù hợp để sử dụng trong mật mã. Hầu hết các ứng dụng mật mã yêu cầu số ngẫu nhiên
Mỗi khu vực chức năng có một từ khóa trong tên chức năng cho biết khu vực chức năng
của nó.
Functional area Function name convention
Các ứng dụng sử dụng các chức năng trong tất cả các lĩnh vực này. Các chức năng này,
được thực hiện cùng nhau, tạo nên CryptoAPI.
- Các ứng dụng không thể chỉ định chi tiết của các hoạt động mật mã. Giao diện CSPI cho phép ứng
dụng chọn thuật toán mã hóa hoặc chữ ký, nhưng việc triển khai mọi hoạt động mã hóa được thực
hiện bởi CSP.
- Các ứng dụng không xử lý thông tin xác thực người dùng hoặc dữ liệu xác thực người dùng khác.
Xác thực người dùng được thực hiện bởi CSP
- Khóa được lưu trong các kho lưu trữ khóa (key container). Key container bao gồm:
+ Cặp khóa ký số
- Một người dùng đều có key container mặc định. Một người dùng có thể có nhiều key container
6. Quy trình làm việc với nhà cung cấp dịch vụ mã hóa (CSP)
- Hàm CryptoAPI đầu tiên được gọi bởi một ứng dụng sử dụng bất kỳ API mã hóa nào là hàm
CryptAcquireContext.
- Hàm này trả về một trình điều khiển tới một CSP cụ thể bao gồm đặc điểm kỹ thuật của một Bộ
chứ khóa (Key Container) trong CSP. Nó sẽ chỉ định loại nhà cung cấp và tên nhà cung cấp tùy chọn.
- Nếu cả loại và tên được chỉ định, hàm sẽ tải CSP với đúng loại và tên và trả về trình điều khiển để
ứng dụng có thể truy cập tới cả CSP và bộ chứa khóa trong CSP.
- Nếu hàm CryptAcquireContext chọn loại nhà cung cấp mà không chọn tên nhà cung cấp thì trước
tiên nó sẽ tìm trong danh sách các nhà cung cấp mặc định có liên kết với người dùng còn nếu thất
bại nó sẽ tìm trong danh sách mặc định các nhà cung cấp có liên kết với cái mát tính đó, các bước
sau thì tương tự như khi thực hiện với hàm có cả loại và tên nhà cung cấp.
- Khi bạn kết thúc sử dụng trình điều khiển CSP, giải phóng nó bằng lời gọi hàm CryptReleaseContext
High-Level
Base Funtions
Function
Certificate Encode
Key Generation Low-Level
and Decode
and Exchange Message Functions
Functions
Các nhóm hàm mã hóa được phân loại theo cách sử dụng như sau: (click vào từng hàm để xem chi tiết
và cách sử dụng chi tiết của các hàm hoặc ta có thể tra cứu dễ dàng trên link sau
https://docs.microsoft.com/vi-vn/windows/win32/seccrypto/cryptography-functions)
Base Cryptography Functions : Nhóm hàm mã hóa cơ bản cung cấp các phương tiện linh hoạt
nhất để phát triển các ứng dụng sử dụng mã hóa. Tất cả các giao tiếp với một CSP thông qua các
chức năng này.
o Service Provider Functions : Nhóm hàm để kết nối và ngắt kết nối với nhà cung cấp dịch
vụ mật mã (CSP)
o Key Generation and Exchange Functions : Nhóm hàm tạo và trao đổi exchange keys với
người dùng khác, thêm sửa xóa khóa mã hóa (crypto keys)
o Object Encoding and Decoding Functions : Nhóm hàm mã hóa và giải mã tổng quát.
Chúng được sử dụng để mã hóa và giải mã chứng chỉ , danh sách thu hồi chứng chỉ
(CRL), chứng chỉ yêu cầu và phần mở rộng chứng chỉ.
o Data Encryption and Decryption Functions : Nhóm hàm để mã hóa và giải mã dữ liệu. Nó
yêu cầu một khóa mật mã trước khi được gọi. Thuật toán mã hóa được xác định khi
khóa được tạo.
o Hash and Digital Signature Functions : Nhóm hàm để tính toán dữ liệu băm , tạo và kiểm
tra chữ ký số
Message Functions
o Low-level Message Functions : Nhóm hàm cung cấp chức năng cần thiết để mã hóa dữ
liệu để truyền và giải mã các tin nhắn PKCS # 7 nhận được. Chức năng cũng được cung
cấp để giải mã và xác minh chữ ký của tin nhắn nhận được. Việc sử dụng nhóm hàm này
thường không được gợi ý. Hầu hết các ứng dụng thì ưu tiên sử dụng hàm mã hóa đơn
giản (Simplified Message Functions) vì nó bao gồm nhiều hàm tin nhắn cấp thấp này và
được sử dụng chỉ với 1 lời gọi hàm
o Simplified Message Functions : Các hàm tin nhắn được đơn giản hóa bao bọc các Hàm
tin nhắn cấp thấp thành một hàm duy nhất để thực hiện một tác vụ được chỉ định.
Certificate and Certificate Store Functions : Nhóm hàm quản lý việc sử dụng, lưu trữ và truy xuất
chứng chỉ , danh sách thu hồi chứng chỉ (CRL) và danh sách ủy thác chứng chỉ (CTL)
o Certificate Store Functions : Nhóm hàm lưu trữ, truy xuất, liệt kê, xác minh và sử dụng
thông tin được lưu trữ trong chứng chỉ.
o Certificate Functions : Nhóm chức năng để làm việc với danh sách thu hồi chứng chỉ và
danh sách chứng chỉ đáng tin cậy.