Tải bản đầy đủ (.pdf) (37 trang)

Báo cáo tóm tắt Chuẩn Chữ ký số và ứng dụng

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 (463.85 KB, 37 trang )

Báo cáo tóm tắt Chuẩn Chữ ký số và ứng dụng

- 1 -

Lời mở đầu.

Trong sự phát triển của xã hội loài người, kể từ khi có sự trao đổi thông tin, an
toàn thông tin trở thành một nhu cầu gắn liền với nó như hình với bóng. Đặc biệt trong
thời đại mà thương mại điện tử đang lên ngôi thì việc có được các công cụ đầy đủ để
đảm bảo cho sự an toàn trao đổi thông tin liên lạc là vô cùng cần thiết. Chính vì vậy mà
chữ ký số đã ra đời với nhiều tính năng ư
u việt. Bằng việc sử dụng chữ ký số mà những
giao dịch liên quan đến lĩnh vực kinh tế (như giao dịch tài chính –ngân hàng, thuế, hải
quan, bảo hiểm…) và những giao dịch yêu cầu tính pháp lý cao (các dịch vụ hành
chính công, đào tạo từ xa) có thể thực hiện qua mạng máy tính.
Ngày nay, chữ ký số đóng một vai trò quan trọng trong kế hoạch phát triển
Thương mại điện tử và Chính phủ điện tử
ở nước ta. Chính vì vậy em đã chọn lĩnh vực
“chuẩn chữ ký số” làm đề tài nghiên cứu cho bài luận văn tốt nghiệp của mình. Nội
dung của bài báo cáo tóm tắt này em xin trình bày hai phần chính:
Chương 1 – Chuẩn hàm băm an toàn. Mục đích của chương này là trang bị cho
người đọc các kiến thức cần thiết về hàm băm cũng như giới thiệu các hàm băm an
toàn được sử dụng trong giải thuậ
t tạo và xác nhận chữ ký số được trình bày trong
chương 3.
Chương 2 – Chuẩn chữ ký số. Đây là nội dung trọng tâm của bài luận văn trong
đó trình bày chi tiết về chuẩn chữ ký số, giải thuật tạo và xác nhận chữ ký số DSA, các
giải thuật tạo và xác nhận các tham số cần thiết được sử dụng trong giải thuật tạo và
xác nhận chữ ký số DSA đó.
Do hạn chế v
ề kiến thức cũng như về thời gian nghiên cứu, bài luận văn này chắc


chắn không tránh khỏi những sai sót. Em rất mong nhận được ý kiến đóng góp của các
thầy cô giáo và bạn bè.

Cuối cùng em xin chân thành cảm ơn sự hỗ trợ của các thầy cô trong khoa, đặc
biệt tới thầy giáo TS. Lê Phê Đô, người đã luôn tận tình hướng dẫn, theo dõi em trong
quá trình thực hiện đề tài.
Sinh viên thực hiện:
Nguyễn Đ
ình Lượng
Báo cáo tóm tắt Chuẩn Chữ ký số và ứng dụng

- 2 -
Danh sách các từ viết tắt
DSA: Digital Signature Standard.
DSS: Digital Signature A
lgorithm.

FIPS: PUB Federal Information Processing Standards Publication.
NIST: the National Institute of Standards and Technology.
SHS: Secure Hash Standard
SHA: Secure Hash A
lgorithm.

Các ký hiệu toán học



Phép toán và theo bít.



Phép toán hoặc theo bít .


Phép toán XOR theo bít.

⎡⎤
a
Trả về số nguyên nhỏ nhất thỏa mãn ≥ a.
Ví dụ:
⎡ ⎤
5
=5,
⎡ ⎤
4.5
= 6,
⎡ ⎤
1.2−
= -2.
ROTL
n
(x) Phép quay trái từ x đi n bít, được thực hiện bằng cách bỏ đi n bít
trái nhất của từ x và sau đó lại thêm đúng n bít trái nhất vừa bỏ
đi đó vào phía bên phải của x.
ROTR
n
(x) Phép quay phải từ x đi n bít, được thực hiện bằng cách bỏ đi n
bít phải nhất của từ x và sau đó lại thêm đúng n bít phải nhất vừa
bỏ đi đó vào phía bên trái của x.
Báo cáo tóm tắt Chuẩn Chữ ký số và ứng dụng


- 3 -
Chương 1
CHUẨN HÀM BĂM AN TOÀN
(SHS - FIPS PUB 180-2)

1.1 Giới thiệu về NIST.
Viện chuẩn và công nghệ quốc gia NIST (the National Institute of Standards and
Technology), được thành lập năm 1901, là một cơ quan quản trị công nghệ của bộ
thương mại Hoa Kì. Nhiệm vụ của Viện này là thúc đẩy các đổi mới và nâng cao tính
cạnh tranh công nghệ bằng cách đưa ra khoa học đo lường, các chuẩn và công nghệ
tiên tiến theo cách làm tăng tính an toàn kinh tế và cải thiện chất lượng cuộc sống.
Với một phần nhiệm vụ này, các nhà khoa học và kỹ sư của NIST đã không
ngừng cải tiến khoa học đo lường, làm cho công nghệ và chế tạo siêu chính xác, cái mà
rất cần thiết cho các công nghệ tiên tiến nhất ngày nay, trở nên có thể thực hiện được.
Họ còn quan tâm trực tiếp đến việc nghiên cứu và phát triển các chuẩn, được thực hiện
bởi các cơ quan của chính phủ Mỹ và của tư nhân. Sự đổi mới và các tiến bộ về công
nghệ phụ thuộc vào các kỹ năng và khả năng độc nhất của NIST, đặc biệt trong 4 lĩnh
vực trọng yếu là: công nghệ sinh học, công nghệ nano, công nghệ thông tin và chế tạo
tiên tiến.
NIST thực hiện nhiệm vụ của mình trong 4 chương trình hợp tác sau:
- Thư Viện NIST: thực hiện các nghiên cứu có vai trò thúc đẩy cơ sở công
nghệ của quốc gia và điều này là cần thiết cho nền công nghiệp của nước Mỹ
để có thể cải tiến liên tục các sản phẩm và dịch vụ.
- Chương trình chất lượng quốc gia Baldrige: thúc đẩy hoạt động của các nhà
sản xuất, công ty dịch vụ, Viện giáo dục và các cơ sở y tế chăm sóc sức
khỏe; chỉ đạo thực hiện các chương trình lớn và quản lý giải thưởng chất
lượng quốc gia Malcolm Baldrige hàng năm để ghi nhận các kết quả hoạt
động xuất sắc và chất lượng đã đạt được.
- Đối tác sản xuất mở rộng Hollings: là một mạng bao gồm các trung tâm địa
phương nhằm hỗ trợ về mặt kỹ thuật và kinh doanh cho các nhà sản xuất

nhỏ.
- Chương trình công nghệ nâng cao: nhằm tạo ra sự phát triển của các công
nghệ mới để mang lại lợi nhuận lớn cho quốc gia bằng cách cùng với các khu
vực tư nhân đồng tài trợ cho đối tác R&D (Reseach and Development).
NIST đã có một quỹ hoạt động trị giá khoảng 930 triệu USD cho năm tài chính
2006 của mình. NIST sở hữu khoảng 2800 các nhà khoa học, kỹ sư, kỹ thuật viên, hỗ
Báo cáo tóm tắt Chuẩn Chữ ký số và ứng dụng

- 4 -
trợ viên và nhân viên hành chính. Ngoài ra NIST còn có khoảng 1800 công tác viên (là
những người tìm kiếm khách hàng và các kỹ sư của các công ty ở Mỹ và ở nước
ngoài). Hơn nữa, NIST còn có đội ngũ hội viên đông đảo với khoảng 1400 chuyên gia
và nhân viên sản xuất của gần 350 trung tâm chi nhánh trên toàn quốc.
Một số tài liệu công nghệ mà NIST đã công bố là:

FIPS 113 Tháng 3 năm 1985, xác thực dữ liệu máy tính.
FIPS 140-1 Tháng 1 năm 1994, Các yêu cầu bảo mật cho các module mã hóa.
FIPS 140-2 Tháng 3 năm 2001, Các yêu cầu bảo mật cho các module mã hóa.
FIPS 140-3 Tháng 7 năm 2007, Các yêu cầu bảo mật cho các module mã hóa.
FIPS 140-3 là một phiên bản sửa đổi của FIPS 140-2. Nó đưa ra 5 mức
độ bảo mật thay vì là 4 như trong FIPS 140-2 và có một phần giành
riêng cho bảo mật phần mềm.
FIPS 180-2 Ngày 1 tháng 8 năm 2002, chuẩn hàm băm an toàn SHS.
FIPS 186-2 Tháng 1 năm 2000, chuẩn chữ ký số DSS.
FIPS 188 Tháng 9 năm 1994, chuẩn các mức độ bảo mậ
t cho truyền tin.
FIPS 190 Tháng 9 năm1994, nguyên tắc sử dụng các lựa chọn công nghệ mật mã
tiên tiến.
FIPS 196 Tháng 2 năm 1997, thực thể xác nhận sử dụng mật mã khóa công khai.
FIPS 197 Tháng 11 năm 2001, chuẩn mật mã tiên tiến.

FIPS 199 Tháng 2 năm 2004, các chuẩn về phân loại mức an toàn của các hệ
thống thông tin liên bang.
FIPS 31 Tháng 6 năm1974, các nguyên tắc về tính bảo mật của việc xử lý dữ liệ
u
tự động và quản lý rủi ro.
FIPS 41 Tháng 5 năm 1975, các nguyên tắc bảo mật máy tính cho việc thực hiệ
n
các hoạt động riêng tư.
FIPS 46-3 Tháng 10 năm1999, chuẩn mã hóa dữ liệu DES.
FIPS 73 Tháng 6 năm 1980, các nguyên tắc bảo mật cho các ứng dụng máy tính.
FIPS 74 Tháng 8 năm 1981, các nguyên tắc thực thi và sử dụng chuẩn mật mã d

liệu NBS.
FIPS 102 Tháng 9 năm 1983, các nguyên tắc cấp chứng thực và xác nhận sự an
toàn của máy tính.
FIPS 171 Tháng 8 năm 1992, quản lý khóa có sử dụng ANSI X9.17.
Báo cáo tóm tắt Chuẩn Chữ ký số và ứng dụng

- 5 -
1.2. Sơ lược về hàm băm
1.2.1. Giới thiệu
Theo các sơ đồ chữ ký ở trên thì chữ ký của thông điệp cũng có độ dài bằng độ
dài của thông điệp, đó là một điều bất tiện. Ta mong muốn như trong trường hợp chữ
ký viết tay, chữ ký có độ dài ngắn và hạn chế cho dù văn bản có độ dài bằng bao nhiêu.
Vì chữ ký số được ký cho từng bit của thông điệp, nếu muốn chữ ký có
độ dài hạn chế
trên thông điệp có độ dài tùy ý thì ta phải tìm cách rút gọn độ dài thông điệp. Nhưng
bản thân thông điệp không thể rút ngắn được, nên chỉ còn cách là tìm cho mỗi thông
điệp một thông điệp thu gọn có độ dài hạn chế và thay việc ký trên thông điệp, ta ký
trên thông điệp thu gọn.

Để giải quyết vấn đề này ta sử dụng hàm băm, chấp nhận một thông điệp có độ
dài tuỳ ý làm đầu vào. Hàm băm sẽ biến đổi thông điệp này thành một thông điệp rút
gọn và sau đó sẽ dùng lược đồ ký để ký lên thông điệp rút gọn đó.

1.2.2. Định nghĩa hàm băm
Hàm băm là một hàm h có ít nhất hai tính chất sau:
• Tính chất nén: h sẽ ánh xạ một đầu vào x có độ dài bit hữu hạn tùy ý tới một
đầu ra h(
x
) có độ dài n bit hữu hạn.
• Tính chất dễ dàng tính toán: Với
h
cho trước và một đầu vào
x
, có thể dễ dàng
tính được h(x).
Hàm băm yếu:
Hàm băm h được gọi là yếu nếu:
• Với y cho trước và không có biến đầu vào tương ứng thì không có khả năng
tính toán để tìm thông điệp x sao cho:
h(x) = y
• Cho một thông điệp x thì về mặt tính toán không tìm ra được thông điệp x’
khác
x
sao cho:
h(x’) = h(x)
Hàm băm mạnh:
Hàm băm h được gọi là mạnh nếu:
• Cho một thông điệp x thì về mặt tính toán không tìm ra được thông điệp x’
khác x sao cho:

h(x’) = h(
x
)
• Không có khả năng về mặt tính toán để tìm hai thông điệp khác nhau bất kỳ
x


x
’ sao cho:
h(x) = h(x’)
Báo cáo tóm tắt Chuẩn Chữ ký số và ứng dụng

- 6 -

1.3 Chuẩn hàm băm an toàn
1.3.1. Giới thiệu
Chuẩn hàm băm an toàn SHS-FIPS PUB 180 (Secure Hash Standard) được NIST
đưa ra lần đầu vào 11/5/1993. Nội dung chỉ có một giải thuật hàm băm được đưa ra là
SHA-1. Và phiên bản thứ 2 của chuẩn hàm băm an toàn là FIPS PUB 180-2, được đưa
ra vào ngày 1/8/2002.

Trong FIPS PUB 180-2 chỉ rõ 4 giải thuật hàm băm an toàn là SHA-1, SHA-256,
SHA-384, and SHA-512. Cả 4 giải thuật này đều là các hàm băm một chiều có thể xử
lý thông điệp để tạo ra một thông điệp thu gọn của thông điệp ban đầu. Các giải thuật
này đều đảm bảo được tính toàn vẹn của thông điệp: bất cứ sự thay đổi nào với thông
điệp M thì đều dẫn tới sự thay đổi củ
a thông điệp rút gọn H(M)- với một xác suất là rất
lớn. Đặc điểm này rất có ích trong việc tạo và xác nhận chữ ký số cũng như trong việc
tạo ra các số ngẫu nhiên.
Mỗi một giải thuật đều gồm 2 bước: bước tiền xử lý và bước tính toán băm. Bước

tiền xử lý bao gồm các công việc như độn tin, chia khối, thiết lập giá tri khởi t
ạo dùng
cho tính toán băm. Bước tính toán băm sẽ tạo ra một danh sách thông định sẵn từ bản
tin độn và sử dụng cơ chế đó với các hàm, hằng và các phép toán để tạo ra một chuỗi
các giá trị băm. Giá trị băm cuối cùng được tạo bởi bước tính toán băm sẽ chính là
thông điệp rút gọn.
Bốn giải thuật này khác nhau chủ yếu ở số bít bảo mật. Số bít bảo m
ật có liên
quan trực tiếp tới độ dài của thông điệp rút gọn. Khi một giải thuật hàm băm được sử
dụng cùng với một giải thuật khác thì ta cần phải chỉ ra hàm băm cần sử dụng có số bít
bảo mật là bao nhiêu. Ví dụ, nếu một thông điệp được ký bằng giải thuật chữ ký số với
128 bít bảo mật thì giải thuật chữ ký số đ
ó có thể yêu cầu sử dụng một hàm băm an
toàn có 128 bít bảo mật (ví dụ SHA-256).
Ngoài ra, 4 giải thuật khác nhau ở kích thước của khối và từ dữ liệu được dùng
trong quá trình băm. Bảng dưới đây sẽ trình bày các đặc điểm cơ bản của 4 giải thuật
hàm băm an toàn.





Báo cáo tóm tắt Chuẩn Chữ ký số và ứng dụng

- 7 -
Giải thuật
Kích thước
thông điệp
(bits)
Kích thước

khối
(bits)
Kích thước
từ
(bits)
Kích thước thông
điệp thu gọn
(bits)
Bit
an toàn
(bits)
SHA-1 < 2
64
512 32 160 80
SHA-256 < 2
64
512 32 256 128
SHA-384 < 2
128
1024 64 384 192
SHA-512 < 2
128
1024 64 512 256

Bảng 2.1. Đặc điểm của các giải thuật hàm băm an toàn.

1.3.2. Các hàm sử dụng trong SHA
Trong quá trình tính toán băm thì mỗi một giải thuật hàm băm sẽ sử dụng các
hàm được định sẵn cho từng giải thật như sau:


Các hàm của SHA-1:
SHA-1 sử dụng một danh sách các hàm logic f
0
, f
1
,…, f
79
. Mỗi hàm toán học f
t
,
trong đó 0 ≤ t ≤ 79 đều được thực hiện trên các từ dữ liệu 32 bít x, y, z và đầu ra của nó
cũng là một từ có kích thước 32 bít. Hàm f
t
(x, y, z) được định nghĩa như sau:

f
t
(x, y, z) =







≤≤⊕⊕=
≤≤∧⊕∧⊕∧=
≤≤⊕⊕=
≤≤∧¬⊕∧=
7960 z x z) y, Parity(x,

5940 )()( y) (x z) y, Maj(x,
3920 z x z) y, Parity(x,
190 ) z x( y) (x z) y, Ch(x,
ty
txzzy
ty
t
(2.1)

Các hàm của SHA-256:
SHA-256 sử dụng 6 hàm logic, trong đó mỗi hàm đều thực hiện trên các từ 32 bít
được biểu diễn bởi x, y, z. Kết quả đầu ra của các hàm cũng đều là từ nhớ 32 bít.
Ch( x, y, z) = ( x

y)

(
¬
x

z) (2.2)
Maj( x, y, z) = ( x

y)

( x

z)

( y


z) (2.3)

)()()(
2213
256
0
2
xROTRxROTRxROTR ⊕⊕

(2.4)

)()()(
2511
256
1
6
xROTRxROTRxROTR ⊕⊕

(2.5)

)()()(
3187
256
0
xROTRxROTRxROTR ⊕⊕
σ
(2.6)

)()()(

101917
256
1
xROTRxROTRxROTR ⊕⊕
σ
(2.7)

Báo cáo tóm tắt Chuẩn Chữ ký số và ứng dụng

- 8 -
Các hàm của SHA-384 và SHA-512:
SHA-384 và SHA-512 đều sử dụng 6 hàm logic, trong đó mỗi hàm đều thực hiện
trên các từ 64 bít x, y, z. Kết quả đầu ra của các hàm này cũng đều là một từ 64 bít.
Ch( x, y, z) = ( x

y)

(
¬
x

z) (2.8)
Maj( x, y, z) = ( x

y)

( x

z)


( y

z) (2.9)

)()()(
3934
512
0
28
xROTRxROTRxROTR ⊕⊕

(2.10)

)()()(
4118
512
1
14
xROTRxROTRxROTR ⊕⊕

(2.11)

)()()(
781
512
0
xROTRxROTRxROTR ⊕⊕
σ
(2.12)


)()()(
66119
512
1
xROTRxROTRxROTR ⊕⊕
σ
(2.13)

1.3.3 Các hằng được sử dụng trong SHA
Các hằng của SHA-1:
SHA-1 sử dụng một dãy 80 hằng 32 bít K
0
, K
1
,…, K
79
. Công thức tính chúng như
sau:







≤≤
≤≤
≤≤
≤≤
=

79 t 60 ca62c1d6
59 t 40 8f1bbcdc
39 t 20 6ed9eba1
19 t 0 5a827999
t
K
(2.14)

Các hằng của SHA-256:
SHA-256 sử dụng 64 hằng số 32 bít như sau: K
0
{256}
, K
1
{256}
,… , K
63
{256}
. Dưới
đây là 64 hằng số của SHA-256 biểu diễn ở dạng hexa:

428a2f98 71374491 b5c0fbcf e9b5dba5 3956c25b 59f111f1 923f82a4 ab1c5ed5
d807aa98 12835b01 243185be 550c7dc3 72be5d74 80deb1fe 9bdc06a7 c19bf174
e49b69c1 efbe4786 0fc19dc6 240ca1cc 2de92c6f 4a7484aa 5cb0a9dc 76f988da
983e5152 a831c66d b00327c8 bf597fc7 c6e00bf3 d5a79147 06ca6351 14292967
27b70a85 2e1b2138 4d2c6dfc 53380d13 650a7354 766a0abb 81c2c92e 92722c85
a2bfe8a1 a81a664b c24b8b70 c76c51a3 d192e819 d6990624 f40e3585 106aa070
19a4c116 1e376c08 2748774c 34b0bcb5 391c0cb3 4ed8aa4a 5b9cca4f 682e6ff3
748f82ee 78a5636f 84c87814 8cc70208 90befffa a4506ceb bef9a3f7 c67178f2


Các hằng của SHA-384 và SHA-512:
SHA-384 và SHA-512 cùng sử dụng một dãy 80 hằng số 64 bít K
0
{512}
, K
1
{512}
,…,
K
79
{512}
. Dưới đây là 80 hằng số của SHA-384 và SHA-512 biểu diễn ở dạng hexa:
Báo cáo tóm tắt Chuẩn Chữ ký số và ứng dụng

- 9 -

428a2f98d728ae22 7137449123ef65cd b5c0fbcfec4d3b2f e9b5dba58189dbbc
3956c25bf348b538 59f111f1b605d019 923f82a4af194f9b ab1c5ed5da6d8118
d807aa98a3030242 12835b0145706fbe 243185be4ee4b28c 550c7dc3d5ffb4e2
72be5d74f27b896f 80deb1fe3b1696b1 9bdc06a725c71235 c19bf174cf692694
e49b69c19ef14ad2 efbe4786384f25e3 0fc19dc68b8cd5b5 240ca1cc77ac9c65
2de92c6f592b0275 4a7484aa6ea6e483 5cb0a9dcbd41fbd4 76f988da831153b5
983e5152ee66dfab a831c66d2db43210 b00327c898fb213f bf597fc7beef0ee4
c6e00bf33da88fc2 d5a79147930aa725 06ca6351e003826f 142929670a0e6e70
27b70a8546d22ffc 2e1b21385c26c926 4d2c6dfc5ac42aed 53380d139d95b3df
650a73548baf63de 766a0abb3c77b2a8 81c2c92e47edaee6 92722c851482353b
a2bfe8a14cf10364 a81a664bbc423001 c24b8b70d0f89791 c76c51a30654be30
d192e819d6ef5218 d69906245565a910 f40e35855771202a 106aa07032bbd1b8
19a4c116b8d2d0c8 1e376c085141ab53 2748774cdf8eeb99 34b0bcb5e19b48a8
391c0cb3c5c95a63 4ed8aa4ae3418acb 5b9cca4f7763e373 682e6ff3d6b2b8a3

748f82ee5defb2fc 78a5636f43172f60 84c87814a1f0ab72 8cc702081a6439ec
90befffa23631e28 a4506cebde82bde9 bef9a3f7b2c67915 c67178f2e372532b
ca273eceea26619c d186b8c721c0c207 eada7dd6cde0eb1e f57d4f7fee6ed178
06f067aa72176fba 0a637dc5a2c898a6 113f9804bef90dae 1b710b35131c471b
28db77f523047d84 32caab7b40c72493 3c9ebe0a15c9bebc 431d67c49c100d4c
4cc5d4becb3e42b6 597f299cfc657e2a 5fcb6fab3ad6faec 6c44198c4a475817

1.3.4 Tiền xử lý
Bước tiền xử lý được thực hiện trước khi tính toán băm được bắt đầu. Tiền xử lý
bao gồm 3 bước: độn tin, phân khối bản tin độn và cuối cùng là thiết lập giá trị băm
khởi tạo H
(0)
.

a. Độn bản tin
Một bản tin hay thông điệp M trước khi tính toán băm sẽ được độn thêm bít nhằm
đảm bảo bản tin sau khi độn (bản tin độn) có kích thước là một bội số của 512 hoặc
1024 bit (kích thước này phụ thuộc vào giải thuật được sử dụng).
Với SHA-1 và SHA-256
Giả thiết rằng chiều dài của bản tin M ban đầu là l bít. Cách độn bản tin sẽ được
tiến hành như sau: đầu tiên, ta thêm một bít “1” vào cuối bản tin và ngay tiếp sau bít
“1” vừa được thêm vào này, ta thêm k bít “0” liên tiếp, trong đó k là số nguyên nhỏ
nhất thỏa mãn l + 1 +k ≡ 448 mod 512. Sở dĩ l +1+k ≡ 448 mod 512 là vì khối 64 bít
Báo cáo tóm tắt Chuẩn Chữ ký số và ứng dụng

- 10 -
cuối cùng đã được dành ra để lưu thông tin về kích thước l của bản tin ban đầu. Ví dụ
với bản tin hệ mã ASCII-8 bít có nội dung là “abc” thì chiều dài của bản tin này sẽ là l
= 8.3 = 24 bít. Vì bản tin được độn thêm một bít “1” nên số bít “0” cần độn thêm vào
bản tin sẽ là 448 - (24 +1) = 423. Như vậy từ một bản tin M ban đầu có kích thước là

24 bít, bằng việc độn thêm bít như này, ta thu được một bản tin độn có kích thước là
512 bít, thỏa mãn là bội số của 512.



Với SHA-384 và SHA-512.
Giả sử rằng chiều dài của bản tin M ban đầu là l bít. Các độn bản tin sẽ được tiến
hành như sau: đầu tiên, ta thêm một bít “1” vào cuối bản tin và ngay tiếp sau bít “1”
vừa được thêm vào này, ta thêm k bít “0” liên tiếp, trong đó k là số nguyên nhỏ nhất
thỏa mãn l + 1+ k ≡ 896 mod 1024. Sở dĩ l+1+ k ≡ 896 mod 1024 là vì khối 128 bít
cuối cùng đã được dành ra
để lưu thông tin về kích thước l của bản tin ban đầu.
Ví dụ với bản tin hệ mã ASCII-8 bít có nội dung là “abc” thì chiều dài của bản tin
này sẽ là l = 8.3 = 24 bít. Vì bản tin được độn thêm một bít “1” nên số bít “0” cần độn
thêm vào bản tin sẽ là 896 - (24 + 1) = 871. Như vậy từ một bản tin M ban đầu có kích
thước là 24 bít, bằng việc độn thêm bít như này, ta thu được một bản tin độn có kích
thước là 1024 bít, thỏa mãn là bội số của 1024.



b. Phân phối bản tin độn
Sau khi bản tin được độn thêm bít, nó cần phải được phân ra thành N khối m-bít
trước khi quá trình tính toán băm được bắt đầu.
SHA-1 và SHA-256.
Với SHA-1 and SHA-256, bản tin độn sẽ được phân ra thành N khối 512 bít: M
(1)
,
M
(2)
,…, M

(N)
. Mỗi khối tin M
(i)
biểu diễn 16 từ-32 bít: M
0
(i)
, M
1
(i)
,…, M
15
(i)
.
SHA-384 và SHA-512.
Báo


M
(2
M
0

c.
T
tạo
thư
SH

SH



o cáo tóm t
Với SHA
2)
,…, M
(N)
.
(i)
, M
1
(i)
,…,
Thiết lập g
Trước k
h
o-H
(0)
cần ph
ước của thôn
HA-1.
Với SHA

HA-256.
Với SHA
tắt
A-384 và SH
Mỗi khối t
M
15
(i)

.
iá trị băm
hi thực hiện
hải được kh
ng điệp rút
A-1, giá trị b
A-256, giá t
HA-512, bả
tin M
(i)
có đ
khởi tạo-H
n tính toán
hởi tạo. Kíc
gọn.
băm khởi tạ
trị băm khở
H
H
H
H
H
H
H
H
ản tin độn đ
độ lớn 1024
H
(0)


băm cho m
ch thước và
ạo H
(0)
bao
ởi tạo H
(0)
ba
H
)0(
0
=
6a09
H
)0(
1
=
bb67
H
)0(
2
=
3c6e
H
)0(
3
=
a54f
H
)0(

4
=
510e
H
)0(
5
=
9b05
H
)0(
6
=
1f83
H
)0(
7
=
5be0
-
được phân r
4 bít có thể
mỗi một giả
à số lượng từ
gồm 5 từ 3

ao gồm 8 từ
e667

ae85


f372

ff53a

e527f

5688c

3d9ab

0cd19

Chuẩn Chữ
11 -
ra thành N k
ể biểu diễn
ải thuật băm
ừ của H
(0)
p
2 bít sau:
ừ 32 bít sau
ữ ký số và ứ
khối 1024 b
thánh 16 từ
m, giá trị bă
phụ thuộc v
u:
ứng dụng
bít. M

(1)
,
ừ-64 bít
ăm khởi
vào kích

Báo cáo tóm tắt Chuẩn Chữ ký số và ứng dụng

- 12 -
SHA-384.
Với SHA-384, giá trị băm khởi tạo H
(0)
bao gồm 8 từ-64 bít sau:


SHA-512.
Với SHA-512, giá trị băm khởi tạo H
(0)
bao gồm 8 từ-64 bít sau:



1.3.5. Các giải thuật hàm băm an toàn
Trong phần này, em xin trình bày giải thuật SHA-512 trước giải thuật SHA-384
bởi vì giải thuật SHA-384 giống hệt giải thuật SHA-512, chỉ có giá trị băm khởi tạo là
khác và giá trị băm cuối cùng được cắt lấy 384 bít chứ không phải lấy toàn bộ 512 bít
như giải thuật SHA-512 để tạo ra thông điệp rút gọn. Mỗi giải thuật băm an toàn đều
có các phương pháp tính luân phiên để tạo ra kết quả.

a. SHA-1

SHA-1 có thể được dùng để tính băm cho các thông điệp M có độ dài là l bít với
0 ≤ l < 2
64
. Giải thuật sử dụng:
1. Một danh sách thông định sẵn gồm 80 từ-32 bít.
2. Năm biến làm việc có độ dài 32 bít.
Báo cáo tóm tắt Chuẩn Chữ ký số và ứng dụng

- 13 -
3. Một giá trị băm bao gồm 5 từ-32 bít. Kết quả cuối cùng của giải thuật SHA-1 là
một thông điệp rút gọn 160 bít.
Các từ của danh sách thông định sẵn được đánh nhãn là W
0
, W
1
,…, W
79
. Năm biến
làm việc là a, b, c, d và e. Các từ của giá trị băm được gán nhãn là H
0
(i)
, H
1
(i)
, …, H
4
(i)

trong đó giá trị băm khởi tạo H
(0)

liên tiếp được thay thế bởi các giá trị băm trung gian
H
(i)
cho đến giá trị băm cuối cùng H
(N)
. Ngoài ra SHA-1 còn sử dụng một biến trung
gian T có kích thước bằng một từ 32 bít.
Qui trình tiền xử lý của SHA-1.
1. Độn tin cho bản tin M.
2. Phân bản tin M ra thành N khối 512 bít M
(1)
, M
(2)
, …, M
(N)
.
3. Thiết lập giá trị khởi tạo H
(0)
.
Qui trình tính toán băm của SHA-1.
Để tính toán băm, giải thuật SHA-1 sử dụng các hàm và các hằng số được cho
trong mục 2.3.2 và 2.3.3. Phép cộng (+) được thực hiện trên modulo 2
32
.
Sau khi tiền xử lý, mỗi khối tin M
(1)
, M
(2)
, …, M
(N)

được xử lý lần lượt theo các
bước sau:
For i = 1 to N:
{
1. Chuẩn bị danh sách thông định sẵn {W
t
}:

2. Khởi tạo 5 biến hoạt động a, b, c, d và e ứng với giá trị băm thứ (i-1).
a = H
0
(i-1)

b = H
1
(i-1)
c = H
2
(i-1)
d = H
3
(i-1)
e = H
4
(i-1)

3. For t = 0 to 79:
{
T = ROTL
5

(a) + f
t
(b, c, d) +e + K
t
+ W
t

e = d
d = c
c = ROTL
30
(b)
b = a
Báo cáo tóm tắt Chuẩn Chữ ký số và ứng dụng

- 14 -
a = T
}
4. Tính giá trị băm trung gian thứ i - H
(i)

H
0
(i)
= a + H
0
(i-1)
H
1
(i)

= b + H
1
(i-1)

H
2
(i)
= c + H
2
(i-1)

H
3
(i)
= d + H
3
(i-1)

H
4
(i)
= e + H
4
(i-1)

}
Sau khi lặp lại các bước từ (1) tới (4) là N lần, thông điệp rút gọn 160 bít của M
sẽ là H
0
(N)

|| H
1
(N)
|| … || H
4
(N)


b. SHA-256.
SHA-256 có thể được dùng để tính băm cho các thông điệp M có độ dài là l bít
với 1 ≤ l ≤ 2
64
. Giải thuật SHA-256 sử dụng
1. Một danh sách thông định sẵn gồm 64 từ-32 bít.:
2. Tám biến hoạt động có độ dài 32 bít.
3. Một giá trị băm gồm 8 từ-32 bít. Kết quả cuối cùng của giải thuật SHA-256 là
thông điệp rút gọn dài 256
Các từ của danh sách thông định sẵn được gán nhãn là W
0
, W
1
,…, W
63
. Tám biến
hoạt động đặt tên là a, b, c, d, e, f, g và h. Các từ của giá trị băm được gán nhãn là H
0
(i)
,
H
1

(i)
, …, H
7
(i)
trong đó giá trị băm khởi tạo H
(0)
sẽ được thay thế liên tiếp bằng các giá
trị băm trung gian H
(i)
cho đến giá trị băm cuối cùng là H
(N)
. SHA-256 còn sử dụng hai
biến trung gian T
1
và T
2
có độ lớn là 32 bít.
Qui trình tiền xử lý của SHA-256.
1. Độn tin cho bản tin M.
2. Phân bản tin M ra thành N khối 512 bít M
(1)
, M
(2)
, …, M
(N)
.
3. Thiết lập giá trị khởi tạo H
(0)
.
Qui trình tính toán băm của SHA-256.

SHA-256 sử dụng các hàm và các hằng số được mô tả trong phần 2.3.2 và 2.3.3
để tính toán băm. Phép toán cộng (+) được thực hiện theo modulo 2
32
.
Sau bước tiền xử lý, từng khối tin M
(1)
, M
(2)
, …, M
(N)
sẽ được xử lý tuần tự theo
các bước sau:
For i = 1 to N:
{
1.

Chuẩn bị danh sách thông định sẵn, {Wt}:

×