ASE |
Tiêu chuẩn mã hóa tiên tiến (Advanced Encryption Standard) |
EM SA |
Phương pháp định dạng sử dụng trong thuật toán chữ ký số kèm phụ lục (Encoding Method for Signatures with Appendix) |
FIPS |
Tiêu chuẩn xử lý thông tin Liên bang Mỹ (Federal Information Processing Standard) được ban hành bởi Viện Tiêu chuẩn và Công nghệ Quốc gia Mỹ (National Institute of Standard and Technology-NIST) |
GCD |
Ước số chung lớn nhất (Greatest Common Divisor) |
hexa |
Biểu diễn theo hệ cơ số 16 |
I2OSP |
Hàm cơ sở chuyển đổi từ dạng số nguyên sang chuỗi octet (Integer-to-Octet-String Primitive) |
LCM |
Bội số chung nhỏ nhất (Least Common Multiplier) |
MGF |
Hàm tạo mặt nạ (Mask generation function) |
octet |
Bộ 8 bit (còn có thể hiểu là một byte), được xem như một ký tự trong hệ đếm cơ số 256 biểu diễn dưới dạng một cặp chữ số của hệ đếm cơ số 16 (hexa) |
OS2IP |
Hàm cơ sở chuyển đổi từ chuỗi octet sang số nguyên (Octet-String-to-Integer-Primitive) |
PKCS |
Tiêu chuẩn mật mã khóa công khai (Puplic Key Cryptography Standard) do Phòng thí nghiệm RSA (Mỹ) ban hành |
PSS |
Lược đồ ký xác suất (Probabilistic Signature Scheme) |
RSA |
Tên của hệ mã do ba nhà toán học Rivest, Shamir và Adleman sáng tạo ra |
RSAVP |
Phép toán cơ sở phục vụ cho kiểm tra chữ ký RSA |
RSASP |
Phép toán ký RSA cơ sở |
RSASSA |
Lược đồ ký RSA kèm phụ lục (RSA Signature Scheme with Appendix) |
SHA |
Thuật toán băm an toàn (Secure Hash Algorithm) |
Word |
Từ (32 bit) |
4.1. Tiêu chuẩn này quy định 3 thành phần cần thiết cho lược đồ chữ ký số. Thành phần thứ nhất là thuật toán chữ ký số RSA-PSS được mô tả trong Phần 5. Thành phần thứ 2 là thuật toán hàm băm SHA-256 được mô tả trong Phần 6 và thành phần cuối cùng là thuật toán số giả ngẫu nhiên dùng AES-128 được mô tả trong Phần 7. Những tiêu chuẩn về các tham số sử dụng trong thuật toán chữ ký số RSA-PSS được đề cập tới trong Phần 8.
4.2. Chữ ký số là một dạng chữ ký điện tử được sử dụng để xác minh người đã ký thông điệp và tính nguyên vẹn của nó.
4.3. Thuật toán chữ ký số là thuật toán cho phép người ký tạo ra được chữ ký số trên dữ liệu và cho phép người kiểm tra xác minh được tính xác thực của chữ ký. Mỗi người có một cặp khóa bao gồm khóa bí mật và khóa công khai. Khóa bí mật được sử dụng trong quá trình tạo chữ ký còn khóa công khai sử dụng trong quá trình kiểm tra chữ ký. Trong quá trình tạo và kiểm tra chữ ký, thông điệp M (dạng dữ liệu) được thu gọn nhờ áp dụng thuật toán băm an toàn (SHA-256). Một người không biết khóa bí mật của người đã ký thông điệp thì không thể tạo ra được chữ ký đó. Như vậy, chữ ký không thể bị giả mạo. Khi sử dụng khóa công khai của người ký, bất kỳ ai cũng có thể kiểm tra được tính chân thực của chữ ký số trên thông điệp đã được ký.
4.4. Khi khóa công khai được sử dụng để kiểm tra chữ ký không tương ứng với khóa bí mật đã được dùng trong việc tạo ra chữ ký thì không thể kết luận về tính chân thực của chữ ký đó.
Một cơ chế cần được thiết lập để gắn kết khóa công khai với danh tính của người giữ khóa bí mật tương ứng. Cơ chế này có thể đạt được nhờ sự chứng thực bởi bên thứ ba được tin cậy. Những nội dung về dịch vụ chứng thực không thuộc phạm vi của tiêu chuẩn này.
5. Thuật toán chữ ký số RSA-PSS
Các ký hiệu
º
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
c
Biểu diễn của bản mã dưới dạng một số nguyên trong khoảng từ 0 đến n-1
C
Bản mã ở dạng chuỗi Octet
d
Số mũ bí mật RSA
dP
Nghịch đảo của e theo môđun p-1 (e·dP º 1 mod (p-1))
dQ
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
e
Số mũ công khai RSA
EM
Thông điệp đã được định dạng (theo EM SA), chuỗi octet (encoded message)
GCD(.,.)
Ước chung lớn nhất của 2 số nguyên không âm
emBits
Độ dài dự kiến theo bit của EM
emLen
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
hLen
Độ dài đầu ra của hàm băm theo octet
k
Độ dài của môđun RSA (số n) theo octet
K
Khóa bí mật RSA
LCM(., . ,.)
Bội số chung nhỏ nhất của một danh sách các số nguyên không âm
m
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
M
Thông điệp dưới dạng chuỗi octet
mask
Mặt nạ, đầu ra của hàm MGF dưới dạng chuỗi octet
maskLen
Độ dài dự kiến của chuỗi mặt nạ theo octet
MGF
Hàm tạo mặt nạ
mgfSeed
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
mLen
Độ dài của thông điệp M theo octet
n
Môđun RSA
(n, e)
Khóa công khai RSA
p, q
Hai nhân tử nguyên tố của môđun RSA (n = p·q)
qlnv
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
s
Biểu diễn của chữ ký dưới dạng số nguyên giữa 0 và n-1
S
Chữ ký, ở dạng chuỗi octet
sLen
Độ dài phần phụ thêm của EM SA-PSS theo octet
x
Số nguyên không âm
X
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
xLen
Độ dài chủ định của chuỗi octet X thu được từ x
l(n)
LCM(p-1, q-1)
||
Toán tử nối
5.2. Thuật toán RSA
5.2.1. Khóa công khai RSA
Khóa công khai RSA bao gồm 2 thành phần:
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Môđun RSA, là một số nguyên dương
e
Số mũ công khai RSA, là một số nguyên dương
n là tích của hai số nguyên tố lẻ khác nhau và p và q, e là số nguyên giữa 3 và n-1 thỏa mãn điều kiện GCD(e, l(n) = 1 với l(n) = LCM(p-1, q-1). Sau đây chúng ta qui ước rằng p lớn hơn q.
5.2.2. Khóa bí mật RSA
Khóa bí mật RSA có một trong hai dạng biểu diễn:
5.2.2.1. Dạng biểu diễn thứ nhất gồm cặp (n, d) với:
n
Môđun RSA, là một số nguyên dương
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Số mũ bí mật RSA, là một số nguyên dương
Số mũ bí mật d là số nguyên dương nhỏ hơn l(n) thỏa mãn
e · d º 1 (mod l(n)).
5.2.2.2. Dạng biểu diễn thứ hai chính là (p, q, dP, dQ, qlnv), trong đó
p
Nhân tử thứ nhất, là số nguyên dương
q
Nhân tử thứ hai, là số nguyên dương
dP
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
dQ
Là số nguyên dương sao cho e · dQ º 1 mod (q-1)
qlnv
Số nguyên dương nghịch đảo của q theo môđun p, tức là q · qlnv º 1 mod p
5.3. Các hàm cơ sở chuyển đổi dữ liệu
5.3.1. Hàm cơ sở chuyển đổi dữ liệu số nguyên sang dạng chuỗi octet
I2OSP (x, xLen)
Chức năng:
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Đầu vào:
x
Số nguyên không âm cần chuyển đổi
Đầu ra:
X
Chuỗi octet tương ứng có độ dài xLen
Thông báo lỗi:
“số nguyên quá lớn”
Các bước:
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
2. viết số nguyên x duy nhất gồm xLen chữ số với cơ số 256:
x = xxLen-1·256xLen-1 + xxLen-2·256xLen-2 + … + x1·256 + x0
với 0 ≤ xi < 256 (chú ý rằng một hay nhiều chữ số đầu sẽ bằng 0 nếu x nhỏ hơn 256xLen-1).
3. cho octet Xi giá trị nguyên xxLen-i với 1 ≤ i ≤ xLen. Cho ra chuỗi octet
X = X1 X2… XxLen
5.3.2. Hàm cơ sở chuyển đổi từ dạng chuỗi octet về dạng số nguyên
OS2IP (X)
Chức năng:
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Đầu vào:
X
Chuỗi octet cần chuyển đổi
Đầu ra:
x
Số nguyên không âm tương ứng
Các bước:
1. cho X1X2…XxLen là các octet của X từ octet đầu tiên với octet cuối cùng, xxLen-i là giá trị nguyên của octet Xi với 1 ≤ i ≤ xLen;
2. cho x = xxLen-1·256xLen-1 + xxLen-2·256xLen-2 + … + x1·256 + x0;
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
5.4. Các phép toán mật mã cơ sở
5.4.1. Phép toán cơ sở RSASP
RSASP (K, m)
Đầu vào:
K
Khóa bí mật RSA, với K có một trong hai dạng sau:
- cặp (n, d);
- bộ năm (p, q, dP, dQ, qlnv);
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
m
Biểu diễn của thông điệp, dưới dạng số nguyên giữa 0 và n-1
Đầu ra:
s
Biểu diễn của chữ ký, là số nguyên giữa 0 và n-1
Thông báo lỗi:
“biểu diễn thông điệp ở ngoài miền hợp lệ”
Giả thiết:
K là một khóa bí mật RSA hợp lệ
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
1. nếu biểu diễn của thông điệp m không nằm giữa 0 và n-1, cho ra thông báo lỗi “biểu diễn thông điệp ở ngoài miền hợp lệ” và dừng lại;
2. biểu diễn của chữ ký được tính như sau:
a. nếu dạng thứ nhất (n, d) của K được sử dụng thì s = md mod n;
b. nếu dạng thứ hai (p, q, dP, dQ, qlnv) của K được sử dụng thì tiến hành như sau:
i. Lấy s1 = mdP mod p và s2 = mdQ mod q
ii. Đặt h = (s1 - s2)·qlnv mod p
iii. Đặt s = s2 + q·h
c. xuất ra s.
5.4.2. Phép toán cơ sở RSAVP
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Đầu vào:
(n, e)
Khóa công khai RSA
s
Biểu diễn của chữ ký, là số nguyên giữa 0 và n-1
Đầu ra:
m
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Thông báo lỗi:
“biểu diễn chữ ký ở ngoài miền hợp lệ”
Giả thiết:
Khóa công khai RSA (n, e) là hợp lệ
Các bước:
1. nếu biểu diễn của chữ ký s không nằm giữa 0 và n-1, cho ra “biểu diễn chữ ký ở ngoài miền hợp lệ” và dừng lại;
2. đặt m = se mod n;
3. xuất ra m.
5.5. Lược đồ chữ ký RSA kèm phụ lục theo PSS
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
5.5.1. Thao tác tạo chữ ký
RSASSA-PSS-SIGN(K, M)
Đầu vào:
K
Khóa bí mật RSA của người ký
M
Thông điệp sẽ được ký, là một chuỗi octet
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
S
Chữ ký, chuỗi octet có độ dài k, với k là độ dài của môđun RSA theo octet
Thông báo lỗi:
“văn bản quá dài”, “lỗi định dạng”
Các bước:
1. mã hóa EMSA-PSS: Áp dụng thao tác EMSA-PSS-ENCODE (được giới thiệu ở phần sau) vào văn bản M để tạo ra thông điệp được định dạng EM có độ dài é(modBits-1)/8ù octet sao cho độ dài bit của số nguyên OS2IP (EM) nhiều nhất là modBits-1, với modBits là độ dài theo bit của số n (mođun RSA):
EM = EMSA-PSS-ENCODE (M, modBits-1)
Chú ý rằng độ dài octet của EM sẽ bằng k - 1 nếu modBits-1 chia hết cho 8 và bằng k nếu modBits-1 không chia hết cho 8. Nếu hàm EMSA-PSS-ENCODE cho ra thông báo lỗi “văn bản quá dài” thì RSASSA-PSS-SIGN cũng cho ra thông báo lỗi “văn bản quá dài” và dừng lại. Nếu EMSA-PSS-ENCODE cho ra thông báo “lỗi định dạng” thì RSASSA-PSS-SIGN cũng cho ra thông báo “lỗi định dạng” và dừng lại.
2. Chữ ký RSA:
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
m = OS2IP (EM)
b. áp dụng phép toán cơ sở RSASP với K là khóa bí mật RSA và biểu diễn thông điệp m để tạo ra biểu diễn chữ ký là số nguyên s:
s = RSASP(K, m);
c. chuyển chữ ký s dạng số nguyên thành chữ ký S dạng chuỗi octet có độ dài k:
S = I2OSP (s, k)
3. xuất ra chữ ký S.
5.5.2. Thao tác kiểm tra chữ ký
RSASSA-PSS-VERIFY((n, e), M, S)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
(n, e)
Khóa công khai RSA của người ký
M
Thông điệp mà chữ ký của nó cần được kiểm tra, là chuỗi octet
S
Chữ ký được kiểm tra, chuỗi octet có độ dài k, với k là độ dài theo octet của số n, môđun RSA
Đầu ra:
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Các bước:
1. kiểm tra độ dài: Nếu độ dài của chữ ký S không là k octet, cho ra thông báo lỗi “chữ ký không hợp lệ” và dừng;
2. kiểm tra chữ ký RS;
a. chuyển chữ ký S thành biểu diễn chữ ký ở dạng số nguyên s;
s = OS2IP (S)
b. áp dụng phép toán cơ sở RSAVP với khóa công khai RSA là (n, e) và biểu diễn chữ ký s để tạo ra m là số nguyên biểu diễn thông điệp;
m = RSAVP ((n, e), s)
c. chuyển biểu diễn thông điệp m thành thông điệp đã được định dạng EM có độ dài emLen =é(modBits-1/8ù octet, với modBits là độ dài theo bit của số n (mođun RSA):
EM = I2OSP (m, emLen)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
3. kiểm tra EMSA-PSS: Áp dụng thao tác kiểm tra EMSA-PSS-VERIFY (sẽ được mô tả ở phần 5.6 dưới đây) vào thông điệp M và thông điệp đã được định dạng EM để xác định xem chúng có tương ứng với nhau hay không;
Result = EMSA-PSS-VERIFY (M, EM, modBits-1)
4. nếu kết quả (Result) là “phù hợp” thì cho ra “chữ ký hợp lệ”. Ngược lại sẽ cho ra “chữ ký không hợp lệ”.
5.6. Phương pháp định dạng cho chữ ký kèm phụ lục theo PSS (EMSA-PSS)
5.6.1. Thao tác định dạng
Phương pháp định dạng được tham số hóa bằng cách chọn:
- hàm băm (cố định với khóa RSA đã cho);
- hàm tạo mặt nạ (cố định với khóa RSA đã cho) và;
- độ dài phần phụ thêm (có thể thay đổi với khóa RSA đã cho).
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Hình 2 - Minh họa thao tác định dạng
Công thức để tính EM:
((PD2||r) Å MGF(h(PD1||h(M)||r))) || h(PD1||h(M)||r)) || 0xbc
EMSA-PSS-ENCODE (M, emBits)
Lựa chọn:
h
Hàm băm (độ dài đầu ra của nó theo octet là hLen)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
MGF
Hàm tạo mặt nạ
sLen
Đô dài chủ định của phần phụ thêm theo octet
Đầu vào:
M
Văn bản để mã hóa, là một chuỗi octet
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Đầu ra:
EM
Văn bản đã được mã, đó là chuỗi octet có độ dài emLen = éemBits/8ù
Thông báo lỗi: “lỗi định dạng”; “văn bản quá dài”
Các bước:
1. nếu độ dài của M lớn hơn giới hạn đầu vào cho hàm băm (264-1 đối với SHA-256 thì cho ra thông báo lỗi “văn bản quá dài” và dừng;
2. lấy mHash = h(M), đó là một chuỗi octet dài hLen;
3. nếu emLen < hLen + sLen + 2, cho ra thông báo “lỗi định dạng” và dừng;
4. tạo ra chuỗi octet ngẫu nhiên salt có độ dài sLen; nếu sLen = 0 thì salt không có;
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6. lấy H = Hash(M’), đó là một chuỗi octet dài hLen;
7. lấy PS là một chuỗi octet bằng 0 dài emLen - hLen - sLen - 2;
8. Lấy DB = PS || 0x01 || salt; DB là một chuỗi octet dài emLen-hLen - 1;
9. lấy maskedDB = DB Å dbMask;
10. đặt 8emLen-emBits bit đầu tiên bên trái của octet đầu tiên bên trái trong maskedDB bằng 0;
11. lấy EM = maskedDB ||H || 0xbc;
12. xuất ra EM.
5.6.2. Thao tác kiểm tra
EMSA-PSS-VERIFY(M, EM, emBits)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Lựa chọn:
h
Hàm băm (độ dài đầu ra của nó theo octet là hLen)
MGF
Hàm tạo mặt nạ
sLen
Đô dài dự kiến của phần thêm theo octet
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
M
Thông điệp cần kiểm tra chữ ký, là chuỗi octet
EM
Thông điệp đã được định dạng, là chuỗi octet có độ dài emLen = éemBits/8ù
emBits Độ dài tối đa theo bit của số nguyên OS2IP (EM), tối thiểu là 8hLen + 8sLen + 9
Đầu ra:
“phù hợp” hoặc “không phù hợp”.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
1. nếu độ dài của M lớn hơn giới hạn đầu vào của hàm băm (264 - 1 octet đối với SHA-256, thì đưa ra thông báo “không phù hợp” và dừng;
2. đặt mHash = h(M), là chuỗi octet có độ dài hLen;
3. nếu emBits < 8hLen+8sLen+9, đưa ra thông báo “không phù hợp” và dừng;
4. nếu octet đầu tiên bên phải của EM không chứa giá trị bc, đưa ra thông báo “không phù hợp” và dừng;
5. đặt maskedDB là emLen-hLen-1 octet đầu tiên bên trái của EM, và H là hLen octet tiếp theo;
6. nếu 8emLen-emBits bit đầu tiên bên trái của octet đầu tiên bên trái trong maskedDB không phải tất cả bằng 0, đưa ra thông báo “không phù hợp” và dừng;
7. đặt dbMask = MGF(H, emLen-hLen-1);
8. đặt DB = maskedDB Å dbMask;
9. thiết lập 8emLen-emBits bit đầu tiên bên trái của DB bằng 0;
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
11. đặt salt bằng sLen octet cuối cùng của DB;
12. đặt M’ = 00 00 00 00 00 00 00 00 || mHash || salt
M’ là chuỗi octet có độ dài 8+hLen+sLen với 8 octet bằng 0 khởi đầu;
13. đặt H’ = h(M’), là chuỗi octet có độ dài hLen;
14. nếu H = H’, đưa ra thông báo “phù hợp”. Ngược lại, đưa ra thông báo “không phù hợp” .
5.6.3. Hàm tạo mặt nạ MGF dựa vào hàm băm
MGF(mgfSeed, maskLen)
Lựa chọn
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Hàm băm (độ dài đầu ra của nó theo octet là hLen)
Đầu vào:
mgfSeed
Mầm được dùng để tạo mặt nạ, là chuỗi octet
maskLen
Độ dài chủ ý theo octet của mặt nạ, nhiều nhất là 232hLen
Đầu ra:
mask
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Thông báo lỗi:
“mặt nạ quá dài”
Các bước:
1. nếu maskLen > 232 hLen, cho ra thông báo lỗi “mặt nạ quá dài” và dừng;
2. lấy T là chuỗi octet rỗng;
3. với counter chạy từ 0 tới émaskLen/hLenù -1, thực hiện các bước
a. chuyển counter thành một chuỗi octet C có độ dài 4 octet;
C = I2OSP (counter, 4)
b. nối hàm mgfSeed với C, tính hàm băm của chuỗi này. Sau đó nối chuỗi octet T với giá trị băm vừa thu được.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
4. xuất ra maskLen octet đầu tiên của T như là chuỗi octet mask.
6.1. Một số khái niệm và thuật ngữ
6.1.1. Biến, tham số
a, b, c,…, h
Các biến làm việc, các biến này là các từ 32 bit được sử dụng để tính toán các giá trị băm H(i)
H(i)
Giá trị băm thứ i. H(0) là giá trị băm khởi tạo. H(N) là giá trị băm cuối cùng được sử dụng để xác định bản tóm lược của văn bản
Hj(i)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Kt
Hằng số được sử dụng cho vòng lặp thứ t của quá trình băm
k
Số lượng bit 0 được bổ sung cho thông điệp trong bước bổ sung dữ liệu
l
Độ dài của thông điệp (ký hiệu là M) theo đơn vị bit
m
Số lượng bit trong một khối thông điệp (M(i))
M
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
M(i)
Khối thông điệp thứ l
Mj(i)
Từ thứ j của khối thông điệp thứ i. M0(i) là từ ngoài cùng bên trái của khối thông điệp thứ l
n
Số lượng các bit quay vòng hoặc dịch đi khi xử lý một từ
N
Số khối của bản thông điệp sau khi đã được bổ sung
T
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Wt
Từ (32 bit) thứ t trong chuỗi thông điệp.
6.1.2. Các ký hiệu tính toán
^
Phép AND bit
v
Phép OR bit
Å
Phép XOR bit
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Phép bù bit
+
Phép cộng mođun 232
<<
Phép dịch trái, x<<n có nghĩa là dịch x đi n bit sang trái (loại bỏ n bit ngoài cùng bên trái) bổ sung n bit 0 vào bên phải;
>>
Phép dịch phải, x>>n có nghĩa là dịch x đi n bit sang phải (loại bỏ n bit ngoài cùng bên phải) bổ sung n bit 0 vào bên trái.
6.1.3. Chuỗi các bit và các số nguyên
● một chữ số hexa là một phần tử thuộc tập {0, 1,… 9, a,… f};
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
● một số nguyên lớn hơn bằng 0 và nhỏ hơn 264 có thể được biểu diễn như một từ (nếu nhỏ hơn 232) hoặc một cặp từ (nếu lớn hơn hoặc bằng 232). Chúng ta có thể dùng hai từ, để biểu diễn độ dài của thông điệp theo bit;
● đối với SHA-256, mỗi khối thông điệp gồm 512 bit, nó được biểu diễn dưới dạng 16 từ (32 bit).
6.1.4. Các phép tính với các từ
● các phép tính logic từng bit với từ: Ù, Ú, Å , và Ø;
● cộng hai từ môđun 232;
● phép dịch phải SHRn(x), với x là một từ (32 bit) và n là một số nguyên 0 ≤ n < 32, được định nghĩa như sau;
SHRn(x) = x >> n.
● phép dịch vòng phải ROTRn(x), với x là một từ (32 bit) và n là một số nguyên 0 ≤ n < 32, được định nghĩa như sau.
ROTRn(x) = (x >> n) V (x << 32 - n)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6.2. Thuật toán
6.2.1. Các hàm và các hằng được sử dụng cho thuật toán
6.2.1.1. Các hàm
SHA-256 sử dụng 6 hàm logic, mỗi hàm đều thực hiện trên các từ (32 bit), các từ này được biểu diễn bởi các biến x, y, z. Kết quả đầu ra của các hàm này là một từ 32 bit mới.
Ch(x, y, z) = (x Ù y) Å (Ø x Ù z)
Maj(z, y, x) = (x Ù y) Å (x Ù z) Å (y Ù z)
= ROTR2(x) Å ROTR13(x) Å ROTR22(x)
= ROTR6(x) Å ROTR11(x) Å ROTR25(x)
= ROTR7(x) Å ROTR18(x) Å SHR3(x)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6.2.1.2. Các hằng số
SHA-256 sử dụng chuỗi 64 từ (32 bit) làm hằng số, . Các từ này lần lượt là 32 bit đầu tiên của phần thập phân khi lấy căn bậc ba 64 số nguyên tố đầu tiên. Khi biểu diễn dưới dạng hexa các hằng số có giá trị như liệt kê dưới đây:
6.2.2. Bước tiền xử lý
Tiền xử lý được thực hiện trước khi bắt đầu tính toán giá trị băm. Bước tiền xử lý được chia làm 3 bước nhỏ: bổ sung thông điệp, chia thông điệp đã được bổ sung thành các khối, và thiết lập các giá trị băm khởi đầu H(0).
6.2.2.1. Bổ sung thông điệp
Giả sử thông điệp M có độ dài là l bit, bổ sung bit “1” vào cuối thông điệp, tiếp theo là k bit 0, với k thỏa mãn l+1+k = 448 mod 512. Cuối cùng bổ sung một khối 64 bit để lưu giá trị l (độ dài thật của thông điệp). Như vậy thông điệp sau khi đã được bổ sung có độ dài là bội của 512 bit.
6.2.2.2. Chia thông điệp thành khối sau khi đã được bổ sung
Thông điệp sau khi đã được bổ sung được chia thành N khối 512 bit, M(1), M(2),…, M(N). Mỗi khối thông điệp gồm 16 từ (32 bit). 32 bit đầu tiên của khối thông điệp thứ i là , 32 bit tiếp theo là và 32 bit cuối cùng của khối thông điệp thứ i là .
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Các giá trị băm khởi đầu gồm 8 từ (32 bit):
6.2.3. Thuật toán tính giá trị băm
SHA-256 được sử dụng để tính giá trị băm của một thông điệp có độ dài là l, với 0 ≤ l < 264. Thuật toán sử dụng một chuỗi 64 từ (32 bit) được tạo ra từ một khối thông điệp đầu vào, 8 biến làm việc cho mỗi từ 32 bit, giá trị băm trung gian gồm 8 từ (32 bit), kết quả cuối cùng của SHA-256 là 256 bit mã băm hay còn gọi là bản tóm lược thông điệp.
Các từ tạo tạo ra từ khối thông điệp đầu vào được ký hiệu là W0,W1,…,W63, tám biến làm việc được ký hiệu là a, b, c, d, e, f, g và h. Các từ của kết quả băm được ký hiệu là , chúng được gán các giá trị băm khởi đầu, H(0), và sẽ được thay thế bởi các giá trị băm trung gian (sau khi mỗi khối thông điệp được xử lý), H(i), và cuối cùng là giá trị băm, H(N).
6.2.3.1. Tiền xử lý SHA-256
Thông điệp M được xử lý như mục 6.2.2.
6.2.3.2. Tính toán giá trị băm SHA-256
Việc tính toán giá trị băm SHA-256 sử dụng các hàm và hằng được định nghĩa trong phần 6.2.1. Phép tính “+” được xem là cộng môđun 232.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Với i từ 0 đến n
{
1. Tính các từ Wt từ khối thông điệp
Wt =
với 0 ≤ t ≤ 15
với 16 ≤ t ≤ 63
2. Khởi gán tám biến làm việc a, b, c, d, e, f, g và h bằng các giá trị băm thứ (i - 1)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
3. với t từ 0 đến 63, tính
{
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
h=g
g=f
f=e
e=d+T1
d=c
c=b
b=a
a=T1+T2
}
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Sau khi xử lý N lần (tương ứng với N khối thông điệp), kết quả đầu ra hàm băm SHA-256 của thông điệp M là:
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6.2.4. Dữ liệu kiểm tra
Để giúp các nhà lập trình kiểm tra tính đúng đắn của chương trình do mình xây dựng, TCVN này đưa ra các giá trị được sử dụng để kiểm tra:
6.2.4.1. Thông điệp đầu vào chỉ có một khối
6.4.4.2. Thông điệp đầu vào gồm nhiều khối
6.2.4.3. Đầu vào là một thông điệp dài
7. Bộ tạo số giả ngẫu nhiên dùng AES-128
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
7.1. Một số ký hiệu
AESK(M)
Hàm mã hóa AES-128. Thực hiện việc mã hóa khối thông điệp M (128 bit) bởi khóa K (128 bit). Trả về 128 bít dữ liệu đã mã của M (Chi tiết về hàm AES-128 được nêu trong tài liệu FIPS 197 “Advanced Encryption Standard”)
DTj
Giá trị 128 bit, là ngày tháng/thời gian (date/time) của hệ thống
XOR
Phép toán XOR bit
éxù
Số nguyên bé nhất lớn hơn hay bằng x, ví dụ: é6ù = é5.1ù = 6
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Phép gán giá trị; ví dụ: a ¬ b có nghĩa là gán b cho a
7.2. Thuật toán
Đầu vào:
L
Số bit cần tạo ngẫu nhiên
V0
128 bit ngẫu nhiên, lựa chọn bởi người dùng
DTj
128 bit là ngày tháng/thời gian của hệ thống
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
128 bit khóa cho AES-128
Đầu ra:
Số giả ngẫu nhiên p có L bit
Các bước:
p = null
với j từ 1 đến éL/128ù, thực hiện các bước sau:
Ij = AESK(DTj)
xj = AESK(Ij XOR Vj-1)
Vj = AESK(Ij XOR xj)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
p ¬ Lấy L bit bên trái của p
8. Tiêu chuẩn tham số sử dụng trong chữ ký số RSA-PSS
Để sử dụng lược đồ chữ ký số RSA-PSS an toàn cần phải tuân thủ các yêu cầu sau đây:
8.1. Các yêu cầu chung
1. cặp khóa RSA dùng để ký thì không được dùng cho mục đích khác (chẳng hạn dùng lại để mã thông điệp);
2. hai số nguyên tố p, q và số mũ bí mật d cần phải được giữ bí mật tránh việc bị truy cập bất hợp pháp, làm lộ hoặc sửa đổi. Môđun n và số mũ công khai e phải được công bố công khai;
3. mỗi người sử dụng cần có môđun n riêng;
4. độ dài của môđun n (nlen) không được nhỏ hơn 1024 bit và nên được thay đổi theo thời gian như sau:
Thời gian sử dụng
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
nlen tối thiểu
Tới năm 2010
80
1024
Tới năm 2013
112
2048
Sau 2030
128
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Trong đó, độ an toàn (security_strength) là một số nguyên biểu thị lượng tính toán cần thiết để phá hệ mã.
Vì các phương pháp phá hệ mã thường xuyên được hoàn thiện nên cần phải định kỳ 3 đến 5 năm một lần xem xét lại nlen tối thiểu (có thể tham khảo chi tiết yêu cầu này trong tài liệu NIST Special Publication 800-57. Recommendation for Key Management - Part 1: general, May,2006).
8.2. Yêu cầu đối với các khóa RSA
1. số mũ công khai e cần phải được chọn với các ràng buộc sau:
a) số mũ công khai e cần được chọn trước khi tạo số mũ bí mật d;
b) số mũ công khai e cần phải là số nguyên dương lẻ sao cho: 65,537 ≤ e < 2nlen-2 x security_strength
Với nlen là độ dài của môđun n theo bit.
Chú ý rằng e có thể là giá trị bất kỳ mà thỏa mãn ràng buộc 1(b); p và q sẽ được chọn (trong mục 2) sao cho e là nguyên tố cùng nhau với cả (p-1) và (q-1).
2. hai số nguyên tố p và q được tạo ngẫu nhiên và giữ bí mật cần phải được chọn với các ràng buộc sau:
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
b) mỗi một số trong bốn số (p + 1), (p - 1) và (q + 1), (q - 1) cần phải có các nhân tử nguyên tố lớn hơn 2security_strength+20;
c) nhân tử nguyên tố bí mật p, q cần phải được chọn ngẫu nhiên từ các số nguyên tố thỏa mãn ;
3. số mũ bí mật d cần phải được lựa chọn sau khi tạo p và q với các ràng buộc:
a) số mũ d cần phải lớn hơn 2nlen/2, và
b) d = e-1 mod (LCM ((p-1), (q-1))).
(Chi tiết về hàm tạo các tham số RSA có thể tham khảo trong tài liệu FIPS 186-3: Digital Signature Standard).
MỤC LỤC
Lời nói đầu
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
1. Phạm vi áp dụng
2. Tài liệu viện dẫn
3. Thuật ngữ và định nghĩa, thuật ngữ viết tắt
3.1. Thuật ngữ và định nghĩa
3.1.1. Thông điệp dữ liệu (data message)
3.1.2. Chữ ký số (digital signature)
3.1.3. Hàm băm (hash function)
3.1.4. Quá trình tạo chữ số (digital signature generation)
3.1.5. Quá trình kiểm tra chữ ký số (digital signature verification)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
3.2. Từ viết tắt
4. Khái quát
5. Thuật toán chữ ký số RSA-PSS
Các ký hiệu
5.2. Thuật toán RSA
5.2.1. Khóa công khai RSA
5.2.2. Khóa bí mật RSA
5.3. Các hàm cơ sở chuyển đổi dữ liệu
5.3.1. Hàm cơ sở chuyển đổi từ dạng số nguyên sang dạng chuỗi octet
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
5.4. Các phép toán mật mã cơ sở
5.4.1. Phép toán cơ sở RSASP
5.4.2. Phép toán cơ sở RSAVP
5.5. Lược đồ chữ ký RSA kèm phụ lục theo PSS
5.5.1. Thao tác tạo chữ ký
5.5.2. Thao tác kiểm tra chữ ký
5.6. Phương pháp định dạng cho chữ ký kèm phụ lục theo PSS (EMSA-PSS)
5.6.1. Thao tác định dạng
5.6.2. Thao tác kiểm tra
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6. Hàm băm SHA-256
6.1. Một số khái niệm và thuật ngữ
6.1.1. Biến, tham số
6.1.2. Các ký hiệu tính toán
6.1.3. Chuỗi các bit và các số nguyên
6.1.4. Các phép tính với các từ
6.2. Thuật toán
6.2.1. Các hàm và các hằng được sử dụng cho thuật toán
6.2.2. Bước tiền xử lý
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6.2.4. Dữ liệu kiểm tra
7. Bộ tạo số giả ngẫu nhiên dùng AES-128
7.1. Một số ký hiệu
7.2. Thuật toán
8. Tiêu chuẩn tham số sử dụng trong chữ ký số RSA-PSS
8.1. Các yêu cầu chung
8.2. Yêu cầu đối với các khóa RSA
Tiêu chuẩn quốc gia TCVN 7635:2007 về Kỹ thuật mật mã - Chữ ký số
Số hiệu: | TCVN7635:2007 |
---|---|
Loại văn bản: | Tiêu chuẩn Việt Nam |
Nơi ban hành: | *** |
Người ký: | *** |
Ngày ban hành: | 01/01/2007 |
Ngày hiệu lực: | Đã biết |
Tình trạng: | Đã biết |
Văn bản đang xem
Tiêu chuẩn quốc gia TCVN 7635:2007 về Kỹ thuật mật mã - Chữ ký số
Chưa có Video