Tải bản đầy đủ (.doc) (21 trang)

TIểu luận môn CHỨNG THỰC SỐ ĐỀ TÀI: PasswordBased Cryptography Standard

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (199.44 KB, 21 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN

ĐỀ TÀI:

PKCS #5 v2.0: Password-Based Cryptography Standard

Giáo viên hướng dẫn
ThS.Phạm Xuân Khánh

Sinh viên thực hiện
Hoàng Đặng Vĩnh Cường Mssv:07520040
Đinh Quốc Hịa
Mssv:07520138

Lớp: KỸ THUẬT MÁY TÍNH 02

Hồ Chí Minh - 2011

1


Mục Lục
Trang
Trang bìa. ..…………...............................................................................................

1

Mục Lục....................................................................................................................


2

Danh mục các ký hiệu,các chữ viết tắt......................................................................

4

1- LỊCH SỬ CÁC PHIÊN BẢN ..............................................................................

5

1.1-VERSIONS 1.0–1.3...............................................................................

5

1.2-VERSION 1.4...........................................................................................

5

1.3-VERSION 1.5...........................................................................................

5

1.4-VERSION 2.0...........................................................................................

5

2. SƠ LƯỢT..........................................................................................................

5


3. SALT VÀ ITERATION COUNT (SỐ LẶP).....................................................

6

3.1 SALT ...................................................................................................................

6

3.2 ITERATION COUNT.........................................................................................

8

4. KEY DERIVATION FUNCTIONS .....................................................................

8

4.1 PBKDF1..............................................................................................................

9

4.2 PBKDF2............................................................................................................... 10
5. ENCRYPTION SCHEMES .................................................................................... 11
5.1 PBES1 ................................................................................................................. 12
5.1.1 Encryption operation......................................................................................... 12
5.1.2 Decryption operation.......................................................................................... 13
2


5.2 PBES2 .................................................................................................................. 14
5.2.1 Encryption operation.......................................................................................... 14

5.2.2 Decryption operation......................................................................................... 15
6. MESSAGE AUTHENTICATION SCHEMES....................................................... 15
6.1 PBMAC1.............................................................................................................. 15
6.1.1 MAC generation ................................................................................................ 15
6.1.2 MAC verification............................................................................................... 16
7. CÁC QUY ĐỊNH ................................................................................................

17

7.1 PBKDF1............................................................................................................... 17
7.2 PBKDF2............................................................................................................... 17
7.3 PBES1 ................................................................................................................. 19
7.4 PBES2 ................................................................................................................. 19
7.5 PBMAC1............................................................................................................. 20

3


Danh mục các ký hiệu,các chữ viết tắt:
C ciphertext, an octet string
c iteration count, a positive integer
DK derived key, an octet string
dkLen length in octets of derived key, a positive integer
EM encoded message, an octet string
Hash underlying hash function
hLen length in octets of pseudorandom function output, a positive integer
l length in blocks of derived key, a positive integer
IV vector khởi tạo, chuỗi octet
K encryption key, chuỗi octet
KDF key derivation function

M message, chuỗi octet
P password, chuỗi octet
PRF underlying pseudorandom function
PS padding string, chuỗi octet
psLen length in octets of padding string, a positive integer
S salt, chuỗi octet
T message authentication code, an octet string

4


1- LỊCH SỬ CÁC PHIÊN BẢN:
1.1-VERSIONS 1.0–1.3:
Phiên bản 1,0-1,3 được phân phối cho người tham gia vào RSA Data Security, Inc 's
Public-Key Cryptography Standards ra mắt vào tháng Hai và tháng Ba năm 1991.
1.2-VERSION 1.4:
Phiên bản 1.4 ra mắt tháng 6 năm 1991.
1.3-VERSION 1.5:
Phiên bản 1.5 tích hợp một số thay đổi,cập nhật các tài liệu tham khảo.
1.4-VERSION 2.0:
Phiên bản 2.0 tích hợp những thay đổi chính trong cấu trúc tài liệu và giới thiệu cơ
chế mã hóa PBES2,cơ chế chứng thực thơng điệp PBMAC1,khóa dẫn xuất chức năng
độc lập dựa trên mật khẩu (PBKDF) Phiên bản này vẫn tiếp tục hỗ trợ q trình mã
hóa trong phiên bản 1.5.
2 - SƠ LƯỢT:
Trong nhiều ứng dụng của mật mã khoá công khai, người sử dụng bảo mật cuối
cùng phụ thuộc vào một hay nhiều giá trị văn bản bí mật hoặc mật khẩu. Kể từ khi mật
khẩu không trực tiếp áp dụng như một chìa khóa cho bất kỳ hệ thống mật mã thông
thường, tuy nhiên, một số hoạt động của mật khẩu là cần thiết để thực hiện các hoạt
động mã hóa với nó. Hơn nữa, như mật khẩu thường chọn từ một không gian tương

đối nhỏ, lưu ý đặc biệt là cần thiết trong các hoạt động đó để bảo vệ chống lại các
cuộc tấn cơng tìm kiếm. Một cách tiếp cận chung để mã hóa dựa trên mật khẩu, như
được mô tả bởi Morris và Thompson để bảo vệ các bảng mật khẩu, là kết hợp một mật
khẩu với Salt để sản xuất một khoá. Salt này có thể được xem như là một chỉ mục vào
một tập lớn của các khóa nguồn gốc từ mật khẩu, và khơng cần phải được giữ bí
mật.Mặc dù nó có thể bị sử dụng để tái tạo bản mã có thể. xây dựng một bảng của các

5


khóa có thể như vậy sẽ rất khó khăn, vì sẽ có nhiều các khóa có thể cho mỗi mật
khẩu.Điều này sẽ hạn chế việc tìm kiếm thơng qua mật mã riêng biệt cho mỗi Salt.
Thêm cách tiếp cận dựa trên mã hoá mật khẩu là xây dựng các kỹ thuật khóa dẫn xuất
tương đối phức tạp. Do đó làm tăng chi phí dị tìm đầy đủ. Một cách để làm điều này
là đưa một số lặp (iteration count) trong các kỹ thuật dẫn xuất chính. Cho biết số lần
để chuyển đổi một số chức năng cơ bản của các khóa được dẫn xuất.Một số lần lặp
khiêm tốn, khoảng 1000, khơng có khả năng là một gánh nặng cho các bên hợp pháp
khi tính tốn một khóa, nhưng sẽ là một gánh nặng lớn cho kẻ dị tìm.
Số “Salt” và iteration count tạo cơ sở cho việc mã hóa mật khẩu PKCS # 5 v1.5.Và
thông qua cho hoạt động mã hố khác nhau. Như vậy, khóa dẫn xuất dựa trên mật
khẩu như được định nghĩa ở đây là một hàm của một mật khẩu, Salt, và đếm một
lặp,nơi hai số lượng sau này khơng cần phải được giữ bí mật.
Từ một Hàm khóa dẫn xuất dựa trên mật khẩu ,đơn giản để xác định mã hóa dựa trên
mật khẩu và cơ chế xác thực thông điệp. Như trong PKCS # 5 v1.5 các cơ chế dựa
trên mã hóa mật khẩu ở đây được dựa trên một cơ sở, thông thường mã hóa cơ chế,
nơi mà các khóa cho các cơ chế thơng thường có nguồn gốc từ mật khẩu. Tương tự
như vậy, thông báo mật khẩu dựa trên chế thẩm định dựa trên một cơ chế cơ bản
thơng thường.
Nó được mong đợi rằng hàm khóa dẫn xuất dựa trên mật khẩu có thể tìm thấy các áp
dụng khác hơn là chỉ việc mã hóa và chứng thực thơng điệp ở đây.

3 - SALT VÀ ITERATION COUNT (SỐ LẶP):
3.1 - SALT: ITERATION COUNT
Salt dùng để tạo lượng lớn khóa dựa trên mật khẩu nhận.Một khóa cá nhân trong số đó
được chọn bằng cách áp dụng KDF(key derivation function).
 DK = KDF (P, S)
+DK(derived key)
+P (Password)
6


+S (Salt)

Điều này có 2 lợi ích:
+khó để tính tốn lại tất cả các khóa tương ứng với một từ điển các mật khẩu, thậm
chí các khóa có khả năng nhất. Nếu Salt dài 64 bits sẽ có 2^64 khóa cho mỗi một mật
khẩu nên hạn chế được việc dò mật khẩu.
+Ít có khả năng cùng một khóa sẽ được lựa chọn hai lần.Nếu Salt dài 64 bits, xác suất
trường hợp trên rất nhỏ khi khoảng 2^32 khóa đã được tạo.
Trong mã hóa mật khẩu trên, bên mã hóa tin nhắn có thể được đảm bảo rằng
các quyền lợi này được thực hiện đơn giản bằng cách chọn một Salt lớn và đầy đủ
ngẫu nhiên khi phát sinh một khóa mã hóa từ mật khẩu. Một bên tạo ra một xác thực
mã thơng điệp có thể được bảo đảm như vậy trong một kiểu tương tự.
P1 mã hóa một thơng điệp ,P2 giải mã thông điệp hay mã thông điệp chứng thực,tuy
nhiên không thể đảm bảo chắc rằng Salt thực sự được cung cấp ngẫu nhiên bởi P1.
Salt có thể bị sao chép từ hoạt động dựa trên mật khẩu khác để khai thác các tương
tác giữa các bên dùng cùng khóa giống nhau. Giả sử 2 bên hợp pháp trao đổi thơng
điệp được mã hóa với khóa mã hóa là khóa 80 bits được tạo từ mật khẩu chung với
salt.
Bên bất hợp pháp có thể lấy salt từ hoạt động mã hóa đó và gởi cho một trong các bên
hợp pháp như để dùng cho khóa 40 bits.Nếu một trong các bên tiết lộ kết quả giải mã

khóa 40 bits,bên bất hợp pháp có thể giải khóa 40 bits.Trong trường hợp khóa 40 bits
là nửa đầu của khóa 80 bits,bên bất hợp pháp có thể giải phần cịn lại của khóa 80 bits
Để ngăn tấn cơng trên,tương tác giữa các bên dùng cùng khóa nên được phân tích cẩn
thận,hoặc salt nên chứa dữ liệu phân biệt rõ ràng giữa những hoạt động khác nhau.
Dựa vào đó có 2 cách lựa chọn Salt:
7


+Nếu không quan tâm về sự tương tác giữa nhiều bên sử dụng cùng một khóa với
mã hóa mật khẩu trên và kỹ thuật xác thực hỗ trợ việc cho mật khẩu, Salt có thể được
tạo ra ngẫu nhiên và không cần phải được kiểm tra cho một định dạng cụ thể của bên
nhận. Nó phải có chiều dài ít nhất 64 bits.
+Cách khác để bảo vệ chống lại các cuộc tấn công như vậy Salt nên chứa dữ liệu
phân biệt rõ ràng giữa các hoạt động và độ dài khóa khác nhau,thêm một phần ngẫu
nhiên dài ít nhất 64 bits và dữ liệu này nên được kiểm tra hoặc tái tạo lại bởi bên nhận
Salt.
 Ví dụ, các salt có thể có thơng tin bổ sung chuỗi octet xác định liệu các khóa
xuất phát là cho việc mã hóa, cho tin nhắn chứng thực, hoặc cho một số hoạt
động khác.
3.2 - ITERATION COUNT:
Số ngẫu nhiên tăng chi phí tạo khóa từ mật khẩu, do đó cũng tăng sự khó khăn cho
việc tấn công. Đối với các phương pháp này,cần tối thiểu là 1000 lần lặp. Điều này sẽ
làm tăng chi phí tìm kiếm đáng kể, mà khơng có một tác động đáng kể trong chi phí
phát sinh các khóa cá nhân.
4 - KEY DERIVATION FUNCTIONS:
Một key derivation function (KDF) tạo ra một khóa dẫn xuất từ một khóa cơ bản và
các thông số khác.Trong PBKDF (password-based key derivation function) khóa cơ
bản là một mật khẩu và tham số khác là một salt và iteration count. Các ứng dụng
chính của các PBKDF xác định ở đây là các cơ chế mã hóa tại mục 5 và cơ chế xác
thực thơng điệp của tại mục 6.Các ứng dụng khác tất nhiên có thể, vì thế mà định

nghĩa độc lập của các hàm. Hai hàm được xác định trong phần này: PBKDF1 và
PBKDF2. PBKDF dùng cho các ứng dụng mới; PBKDF1 được bao gồm chỉ để tương
thích với các ứng dụng hiện có, và khuyến cáo khơng được dung cho các ứng dụng
mới.
Một ứng dụng điển hình của các hàm khóa dẫn xuất được xác định ở đây có thể bao
gồm các bước sau:
1. Chọn một Salt S và đếm iteration count c
8


2. Chọn một chiều dài octet cho khóa dẫn xuất, dkLen.
3. Áp dụng các KDF để các mật khẩu, các Salt, số lặp c và
chiều dài khóa để sản xuất một khóa dẫn xuất.
4. Kết quả các khóa dẫn xuất.
Bất kỳ số lượng các khóa có thể thể phát sinh từ một mật khẩu bằng cách thay đổi các
Salt.
4.1 - PBKDF1:
PBKDF1 áp dụng một hàm hash (MD2 , MD5 hoặc SHA-1 ), để chuyển các khóa.
Độ dài của khóa nguồn được giới hạn bởi chiều dài của hàm.
Với MD2(16 octets) ,MD5(16 octets) ,SHA-1(20 octets) tương thích với q trình dẫn
xuất khóa trong PKCS # 5 v1.5.
PBKDF1 được khuyến cáo chỉ để tương thích với các áp dụng hiện có từ các các khóa
nó tạo ra có thể khơng đủ lớn cho một số áp dụng khác.
 PBKDF1 (P, S, c, dkLen)
 Input: P password, một chuỗi octet
 S salt, 8 octets
 c iteration count, số nguyên dương
 dkLen độ dài khóa nguồn, số ngun dương, ít nhất 16 bits cho MD2 hay MD5
and 20 hoặc SHA-1
 Output: DK khóa dẫn xuất, a dkLen-chuỗi octet

Các bước:
1. If dkLen > 16 for MD2 and MD5, or dkLen > 20 for SHA-1, output “derived key
too long” and stop.
2. Áp dụng hàm Hash cho số lặp c để kết hợp password P và Salt S, sau đó rút
dkLen octets đầu tiên để làm khóa nguồn(DK).
T1 = Hash (P || S) ,
9


T2 = Hash (T1) ,

Tc = Hash (Tc-1) ,
DK = Tc<0..dkLen-1> .
3. Xuất DK.
4.2- PBKDF2:
PBKDF2 áp dụng một hàm giả ngẫu nhiên để chuyển các khóa. Chiều dài của khóa
nguồn bản chất là không bị giới hạn. (Tuy nhiên, tối đa tìm kiếm hiệu quả khơng gian
cho các khóa nguồn có thể bị giới hạn bởi các cấu trúc của các cơ sở hàm giả ngẫu
nhiên.
VD hàm giả HMAC-SHA-1
 PBKDF2 (P, S, c, dkLen).
 Input: P password, một chuỗi octet.
 hLen biểu thị chiều dài octet của hàm giả ngẫu nhiên.
 S salt, một chuỗi octet.
 c iteration count, số nguyên dương.
 dkLen định chiều dài trong các octet của khóa dẫn xuất, số nguyên
dương,nhiều nhất là (2^32 – 1) × hLen
 Output: DK , a dkLen-octet string
Các bước:
1. Nếu dkLen > (2^32 – 1) × hLen, xuất “derived key too long” và dừng.

2. Giả sử L là số các khối hLen-octet trong khóa nguồn, làm trịn lên và cho r làm số
của các octets trong khối cuối cùng:
10


L= [dkLen / hLen],
r = dkLen – (L – 1) × hLen .
3. Đối với mỗi khối của khóa nguồn áp dụng hàm F định nghĩa bên dưới để các mật
khẩu P, S, c, và chỉ số khối để tính toán khối
T1 = F (P, S, c, 1) ,
T2 = F (P, S, c, 2) ,

TL = F (P, S, c, L) ,
Nơi hàm F được định nghĩa như tổng của lặp c đầu tiên của hàm giả PRF áp dụng cho
password P và sự kết nối của Salt S với chỉ số khối L:
F (P, S, c, i) = U1 \xor U2 \xor ⋅⋅⋅ \xor Uc
U1 = PRF (P, S || INT (i)) ,
U2 = PRF (P, U1) ,

Uc = PRF (P, Uc-1) .
INT (i) là một mã hóa 4 octet của số nguyên i,octet đầu quan trọng nhất.
Ở đây, INT (i) là một mã hóa bốn octet của i nguyên, quan trọng nhất octet đầu tiên.
4. Ghép các khối và trích dkLen octet đầu tiên để tạo một khóa nguồn
DK = T1 | | T2 | | ⋅ ⋅ ⋅ | | Tl <0 .. r-1>.
5. Xuất DK.
5 - ENCRYPTION SCHEMES:
Một cơ chế mã hóa, trong mơi trường đối xứng, bao gồm một hoạt động mã hóa và
hoạt động giải mã, nơi mà các hoạt động mã hóa tạo ra một bản mã từ một thơng điệp
trong khố, và các hoạt động giải mã phục hồi các thông điệp từ bản mã theo cùng
11



một khóa. Trong một cơ chế mã hóa mật khẩu trên, khóa là một mật khẩu. Áp dụng
điển hình của cơ chế mã hóa dựa trên mật khẩu là cơng cụ bảo vệ khóa cá nhân,nơi
thơng điệp chứa thơng tin khóa cá nhân, như trong PKCS #8. Các chương trình mã
hóa được định nghĩa ở đây sẽ là thuật tốn mã hóa phù hợp trong bối cảnh đó, hai
phương án được quy định trong phần này:. PBES1 và PBES2.
5.1- PBES1:
PBES1 kết hợp hàm PBKDF1 với một thuật tốn mã hóa khối cơ bản là DES hay
RC2TM trong chế độ CBC . PBES1 tương thích với các cơ chế mã hóa trong PKCS #
5 v1.5.
PBES1 được khuyến cáo chỉ để tương thích với các ứng dụng hiện có, kể từ khi nó hỗ
trợ chỉ có hai cơ sở cơ chế mã hóa, mỗi trong số đó có một kích thước khóa (56 hoặc
64 bit) mà có thể khơng đủ lớn cho một số ứng dụng.
5.1.1- Encryption operation:
Các hoạt động mã hóa cho PBES1 bao gồm các bước sau đây, mã hóa một
thông điệp M theo một mật khẩu P để tạo một bản mã C:
1. Chọn Salt S 64 bits và số lăp c.
2. Áp dụng KDF PBKDF cho password P,Salt S,và số lặp c để tạo khóa nguồn chiều
dài 16 octets:
DK = PBKDF1 (P, S, c, 16) .
3. Tách khóa nguồn DK thành khóa mã hóa K gồm có 8 octets đầu của DK và một
vector khởi tạo IV chứa 8 octets còn lại:
K = DK<0..7> ,
IV = DK<8..15> .
4. Ghép M và một chuỗi đệm PS để tạo một thơng điệp được mã hóa EM:
EM = M || PS ,
12



Chuỗi đệm PS bao gồm 8-(||M|| mod 8) octets mỗi octet có giá trị 8-(||M|| mod 8).
Chuỗi đệm PS sẽ đáp ứng sau:
PS = 01 — if ||M|| mod 8 = 7 ;
PS = 02 02 — if ||M|| mod 8 = 6 ;
...
PS = 08 08 08 08 08 08 08 08 — if ||M|| mod 8 = 0.
Chiều dài trong octet của thơng điệp được mã hóa sẽ là một bội số của tám và nó sẽ có
thể phục hồi thông điệp M rõ ràng từ thông điệp được mã hóa.
5. Chuyển mã các thơng điệp được mã hóa EM với các thuật tốn mã hóa khối cơ bản
(DES hoặc RC2) trong chế độ mật mã khối thay đổi theo khóa mã hóa K với vector
khởi tạo IV để sản xuất các bản mã C.
6. Xuất bảng mã C.
5.1.2 - Decryption operation:
Các hoạt động giải mã cho PBES1 bao gồm các bước sau đây, giải mã bản mã C
theo một mật khẩu P để phục hồi thông điệp M:
1. Obtain the eight-octet salt S and the iteration count c.
2. Áp dụng KDF PBKDF cho password P, salt S, và số lặp c để tạo khóa nguồn DK
dài 16 octets:
DK = PBKDF1 (P, S, c, 16) .
3. Tách derived key DK thành khóa mã hóa K gồm 8 octets đầu of DK và một vector
khởi tạo IV gồm 8 octets còn lại:
K = DK<0..7> ,
IV = DK<8..15> .

13


4. Giải mã ciphertext C với các thuật toán mã hóa khối cơ bản (DES hoặc RC2) trong
khối cơ yếu chuỗi chế độ theo K mã hóa khóa với vector khởi tạo IV để phục hồi một
thông báo được mã hóa EM.. Nếu chiều dài ở octet của bản mã C không phải là một

bội số của tám, xuất "giải mã lỗi" và dừng lại.
5. Tách thơng điệp mã hóa EM thành một tin nhắn M và một chuỗi đệm PS:
EM = M | | PS,
nơi chuỗi đệm PS bao gồm một số octet psLen mỗi số có giá trị psLen, nơi psLen là từ
1 đến 8. Nếu không thể tách
tin mã hóa EM này, xuất đầu ra "lỗi giải mã" và dừng lại.
6. Output the recovered message M.
5.2 - PBES2:
PBES2 kết hợp PBKDF2 cho phiên bản này của PKCS # 5, với một cơ chế mã hóa
cơ bản (Phụ lục B.2). Chiều dài khóa và bất kỳ thơng số khác cho các cơ sở cơ chế mã
hóa phụ thuộc vào cơ chế này.PBES2 được khuyến khích cho các ứng dụng mới.
5.2.1- Encryption operation:
Các hoạt động mã hóa cho PBES2 bao gồm các bước sau đây, mã hóa một
thong điệp M theo một mật khẩu P để tạo một bản mã C, áp dụng KDF được chọn và
cơ chế mã hóa được chọn:
1. Chọn một Salt S 64 bits và Số lặp c.
2. Chọn độ dài trong octet, dkLen, cho khóa dẫn xuất cho các cơ chế mã hóa cơ bản.
3. Áp dụng KDF
DK = KDF (P, S, c, dkLen).
4. Mã hóa thơng điệp M với các cơ chế mã hóa cơ bản thuộc khóa dẫn xuất DK để tạo
ra một bản mã C.
5. Xuất các bản mã C.
Salt S,số lặp c, dkLen, và nhận dạng cho các KDF và các cơ chế mã hóa cơ bản có thể
được chuyển cho bên thực hiện giải mã.
14


5.2.2 - Decryption operation:
Giải mã bản mã C theo mật khẩu P để phục hồi thông điệp M:
1. Thu được Salt S.

2. Có được các Số lặp c cho KDF.
3. Có được chiều dài khóa octet, dkLen, cho khóa dẫn xuất cho các cơ chế mã hóa cơ
sở.
4. Áp dụng KDF đươc chọn cho mật khẩu P, S Salt, và các Số lặp c để tạo ra một khóa
dẫn xuất DK với chiều dài dkLen:
DK = KDF (P, S, c, dkLen).
5. Giải mã bản mã C với các cơ chế mã hóa cơ bản thuộc khóa dẫn xuất DK để phục
hồi tin nhắn M. Nếu các chức năng giải mã đầu ra " decryption error ", sau đó đầu ra"
decryption error "và dừng lại.
6. Xuất thông điệp phục hồi M.
6 - MESSAGE AUTHENTICATION SCHEMES:
Một cơ chế xác thực thông điệp bao gồm một MAC(message authentication code)
tạo hoạt động và hoạt động xác minh MAC,nơi mà các MAC tạo hoạt động phát sinh
một mã xác thực thông điệp từ một thong điệp dưới dạng khóa.Và hoạt động xác minh
MAC xác minh mã xác thực thơng điệp dưới cùng một khóa.
Trong một cơ chế xác thực thong điệp dựa trên mật khẩu ,khóa là một mật khẩu.Cơ
chế giới thiệu ở đây là PBMAC1.
6.1- PBMAC1:
PBMAC1 kết hợp một KDF dựa vào mật khẩu, như là PBKDF2 cho phiên bản
PKCS#5, với một thiết kế chứng thực thơng điệp cơ sở. Độ dài khóa và các tham số
khác cho thiết kế chứng thực thông điệp cơ sở phụ thuộc vào thiết kế.
6.1.1- MAC generation:

15


Hoạt động phát sinh MAC cho PBMAC1 gồm các bước sau, xử lý một thông điệp
M với mật khẩu P để sinh ra mã chứng thực thông điệp T, áp dụng một hàm dẫn xuất
KDF chọn trước và một thiết kế chứng thực thông điệp cơ sở chọn trước:
1.Chọn salt S và một số lặp c

2.Chọn một độ dài khóa kiểu octets, dkLen, dành cho khóa dẫn xuất cho thiết kế
chứng thực thông điệp cơ sở.
3.Dùng hàm dẫn xuất từ khóa đã chọn vào mật khẩu P, salt S, và số lặp c để sinh ra
một khóa dẫn xuất DK của độ dài dkLen octets:
DK = KDF (P, S, c, dkLen) .
4.Xử lý thông điệp M với thiết kế chứng thực thơng điệp cơ với với khóa dẫn xuất DK
để sinh ra mã chứng thực thông điệp T.
5.Xuất ra mã chứng thực thông điệp T.
6.1.2 - MAC verification:
Hoạt động chứng thực MAC cho PBMAC1 gồm các bước sau, xử lý một thông điệp
M dưới mật khẩu P để sinh ra mã chứng thực thông điệp T:
1.Thu salt S và số lần lặp c.
2.Thu được độ dài khóa kiểu octets, dkLen, dành cho khóa dẫn xuất cho thiết kế
chứng thực thơng điệp cơ sở.
3. Dùng hàm dẫn xuất khóa chọn trước vào mật khẩu P, salt S, và số lần lặp c để sinh
ra một khóa dẫn xuất Dk có đọ dài dkLen octets:
DK = KDF (P, S, c, dkLen) .
4. Xử lý thông điệp M với thiết kế chứng thực thơng điệp cơ sở dưới khóa dẫn xuất
DK để xác thực mã chứng thực thông điệp T.
5. Nếu mã chứng thực thơng điệp được xác nhận, xuất ra ”correct”, cịn khơng thì xuất
ra ‘incorrect”.
16


7 – CÁC QUY ĐỊNH:
Phần này định nghĩa cú pháp cho các hàm dẫn xuất trọng điểm.
7.1- PBKDF1:
Không định danh đối tượng được đưa ra cho PBKDF1, như định danh đối tượng cho
PBES1 là có đủ cho các ứng dụng hiện có và PBKDF2 được khuyến khích cho các
ứng dụng mới.

7.2- PBKDF2:
Các đối tượng định danh id-PBKDF2 xác định các KDF cho PBKDF2
id-PBKDF2 OBJECT IDENTIFIER ::= {pkcs-5 12}
Các thông số liên quan đến lĩnh vực OID này trong một AlgorithmIdentifier sẽ có
các loại PKDF2-params :
PBKDF2-params ::= SEQUENCE {
salt CHOICE {
specified OCTET STRING,
otherSource AlgorithmIdentifier {{PBKDF2-SaltSources}
},
iterationCount INTEGER (1..MAX),
keyLength INTEGER (1..MAX) OPTIONAL,
prf AlgorithmIdentifier {{PBKDF2-PRFs}} DEFAULT
algid-hmacWithSHA1 }
Các lĩnh vực kiểu PKDF2-params có ý nghĩa sau đây:

17


Salt quy định giá trị Salt, hoặc nguồn gốc của giá trị Salt. Nó có sẽ là một chuỗi octet
hoặc một thuật toán ID với một OID trong PBKDF2 cài đặt SaltSources, cái là dành
cho các phiên bản tương lai của PKCS # 5.
Cách tiếp cận nguồn Salt là nhằm chỉ ra làm thế nào giá trị Salt là được tạo ra như là
một Hàm của tham số trong các thuật toán ID. , ứng dụng dữ liệu, hoặc cả hai.
Ví dụ, nó có thể chỉ ra rằng giá trị Salt tạo ra từ các mã hóa của một cấu trúc mà quy
định cụ thể thông tin chi tiết về các khóa dẫn xuất. Một sốcác thơng tin có thể tiến
hành ở nơi khác, ví dụ như, trong thuật tốn mã hóa ID.Tuy nhiên, các cơ sở này được
hỗn lại đến một phiên bản tương lai của PKCS # 5.Trong phiên bản này, một ứng
dụng có thể đạt được những lợi ích được đề cập bởi lựa chọn một giải thích đặc biệt
của giá trị Salt trong các giải pháp thay thế xác định.

PBKDF2-SaltSources THUẬT TOÁN-nhận dạng:: = {... }
iterationCount quy định các tính lặp đi lặp lại. Các tính lặp đi lặp lại tối đa
cho phép phụ thuộc vào việc thực hiện. Người ta cho rằng triển khai thực hiện nhiều
cấu hình hơn nữa có thể hạn chế giới hạn.
keyLength, một trường tùy chọn, là chiều dài trong octet của khóa dẫn xuất. Các
chiều dài khóa tối đa cho phép phụ thuộc vào việc thực hiện, đó là dự kiến cấu hình có
thể tiếp tục thực hiện hạn chế giới hạn. Lĩnh vực này được cung cấp tiện lợi; các
chiều dài khóa mã hóa khơng được bảo vệ. Nếu có quan tâm về sự tương tác giữa các
hoạt động với độ dài khác nhau khóa cho một Salt nhất định các Salt nên phân biệt
giữa các độ dài khóa khác nhau.
PRF xác định các Hàm cơ bản giả ngẫu nhiên. Nó sẽ là một ID thuật tốn với
một OID trong PBKDF2 cài đặt PRFs, đó cho phiên bản này của PKCS # 5 sẽ bao
gồm id-hmacWithSHA1 bất kỳ OIDs khác theo quy định của ứng dụng.
PBKDF2-PRFs ALGORITHM-IDENTIFIER ::=
{ {NULL IDENTIFIED BY id-hmacWithSHA1}, ... }
Các Hàm giả ngẫu nhiên mặc định là HMAC-SHA-1:
algid-hmacWithSHA1 AlgorithmIdentifier {{PBKDF2-PRFs}} ::=
18


{algorithm id-hmacWithSHA1, parameters NULL : NULL}
7.3 - PBES1:
định danh đối tượng khác nhau xác định các sơ đồ mã hóa PBES1 theo
với hàm băm trong KDF và khối mật mã cơ bản, như tóm tắt trong bảng sau:

pbeWithMD2AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 1}
pbeWithMD2AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 4}
pbeWithMD5AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 3}
pbeWithMD5AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 6}
pbeWithSHA1AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 10}

pbeWithSHA1AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 11}
Đối với mỗi OID, các lĩnh vực liên quan đến các thông số OID trong một
AlgorithmIdentifier sẽ có kiểu PBEParameter:
PBEParameter ::= SEQUENCE {
salt OCTET STRING (SIZE(8)),
iterationCount INTEGER }
7.4 - PBES2:
19


The object identifier id-PBES2 identifies the PBES2 encryption scheme (Section 6.2).
id-PBES2 OBJECT IDENTIFIER ::= {pkcs-5 13}
The parameters field associated with this OID in an AlgorithmIdentifier shall
have type PBES2-params:
PBES2-params ::= SEQUENCE {
keyDerivationFunc AlgorithmIdentifier {{PBES2-KDFs}},
encryptionScheme AlgorithmIdentifier {{PBES2-Encs}} }
Các trường của kiểu PBES2-params:
• KDF xác định các Hàm cơ bản dẫn xuất khóa. Nó sẽ được một thuật tốn ID với
một OID trong PBES2 cài đặt KDFs, đó cho phiên bản này củaPKCS #5 sẽ gồm có
id-PBKDF2
PBES2-KDFs ALGORITHM-IDENTIFIER ::=
{ {PBKDF2-params IDENTIFIED BY id-PBKDF2}, ... }
• encryptionScheme xác định các sơ đồ mã hóa cơ bản. Nó sẽ là một thuật tốn ID với
OID một trong PBES2 cài đặt Encs, có nghĩa là trái với các ứng dụng. Ví dụ các sơ đồ
mã hóa cơ bản được đưa ra.PBES2-Encs THUẬT TOÁN-nhận dạng:: = {... }
7.5 - PBMAC1:
id-PBMAC1 OBJECT IDENTIFIER ::= {pkcs-5 14}
Các thông số liên quan đến lĩnh vực OID này trong một AlgorithmIdentifier sẽ
có kiểu PBMAC1-params:

PBMAC1-params ::= SEQUENCE {
keyDerivationFunc AlgorithmIdentifier {{PBMAC1-KDFs}},
messageAuthScheme AlgorithmIdentifier {{PBMAC1-MACs}} }

20


Trường KDF có ý nghĩa tương tự như các lĩnh vực tương ứng của PBES2-params,
ngoại trừ các thiết lập của OIDs là PBMAC1-KDFs.
PBMAC1-KDFs ALGORITHM-IDENTIFIER ::=
{ {PBKDF2-params IDENTIFIED BY id-PBKDF2}, ... }
Các trường messageAuthScheme xác định xác thực thông điệp cơ bản
sơ đồ. Nó sẽ là một ID thuật tốn với một OID trong tập PBMAC1-MAC, có
nghĩa là trái với các ứng dụng
PBMAC1-MACs ALGORITHM-IDENTIFIER ::= { ... }

21



×