Ngày nay, các ứng dụng Công nghệ thông tin đã và đang ngày càng phổ biến rộng rãi đã ảnh hưởng rất lớn đến diện mạo của đời sống, kinh tế, xã hội. Mọi công việc hàng ngày của chúng ta đều có thể thực hiện được từ xa với sự hỗ trợ của máy vi tính và mạng internet (từ việc học tập, giao dịch,... đến việc gửi thư). Tất cả thông tin liên quan đến những công việc này đều do máy vi tính quản lý và truyền đi trên hệ thống mạng. Đối với những thông tin bình thường thì không có ai chú ý đến, nhưng đối với những thông tin mang tính chất sống còn đối với một số cá nhân (hay tổ chức) thì vấn đề bảo mật thật sự rất quan trọng. Vấn đề khó khăn đặt ra là làm sao giữ được thông tin bí mật và giữ cho đến đúng được địa chỉ cần đến. Nhiều tổ chức, cá nhân đã tìm kiếm và đưa ra nhiều giải pháp bảo mật, phương pháp mã hóa khóa công khai được xem là phương pháp có tính an toàn khá cao. Như vậy việc đảm bảo an toàn thông tin, tránh mọi nguy cơ bị thay đổi, sao chép hoặc mất mát dữ liệu trong các ứng dụng trên mạng luôn là vấn đề bức xúc, được nhiều người quan tâm. Trong bài viết này, xin trình bày phương pháp mã hóa thông tin đó là sử dụng hàm băm mật mã và tìm hiểu về thuật toán băm SHA2. Bài viết được tổng hợp từ nhiều nguồn bao gồm cả tài liệu tiếng Việt và tiếng Anh, do quá trình dịch và tổng hợp còn nhiều sai xót, kính mong các bạn đóng góp ý kiến để bài viết được hoàn thiện hơn..
Trang 1HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA AN TOÀN THÔNG TIN
BÀI TẬP LỚN MÔN MẬT MÃ NÂNG CAO
CÀI ĐẶT THUẬT TOÁN SHA-2
Cán bộ hướng dẫn: Phạm Quốc Hoàng
Sinh viên thực hiện:
- Hoàng Quang Thụy
- Nguyễn Việt Tiến
- Phạm Quốc Đạt
- Mai Trọng Hoàng Lớp: AT9A
Trang 2HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA AN TOÀN THÔNG TIN
BÀI TẬP LỚN MÔN MẬT MÃ NÂNG CAO
CÀI ĐẶT THUẬT TOÁN SHA-2
Nhận xét của cán bộ hướng dẫn:
Điểm chuyên cần:
Điểm báo cáo:
Trang 3MỤC LỤC
Trang 4LỜI NÓI ĐẦU
Ngày nay, các ứng dụng Công nghệ thông tin đã và đang ngày càng phổ biếnrộng rãi đã ảnh hưởng rất lớn đến diện mạo của đời sống, kinh tế, xã hội Mọi côngviệc hàng ngày của chúng ta đều có thể thực hiện được từ xa với sự hỗ trợ của máy
vi tính và mạng internet (từ việc học tập, giao dịch, đến việc gửi thư) Tất cảthông tin liên quan đến những công việc này đều do máy vi tính quản lý và truyền
đi trên hệ thống mạng Đối với những thông tin bình thường thì không có ai chú ýđến, nhưng đối với những thông tin mang tính chất sống còn đối với một số cá nhân(hay tổ chức) thì vấn đề bảo mật thật sự rất quan trọng Vấn đề khó khăn đặt ra làlàm sao giữ được thông tin bí mật và giữ cho đến đúng được địa chỉ cần đến Nhiều
tổ chức, cá nhân đã tìm kiếm và đưa ra nhiều giải pháp bảo mật, phương pháp mãhóa khóa công khai được xem là phương pháp có tính an toàn khá cao Như vậyviệc đảm bảo an toàn thông tin, tránh mọi nguy cơ bị thay đổi, sao chép hoặc mấtmát dữ liệu trong các ứng dụng trên mạng luôn là vấn đề bức xúc, được nhiềungười quan tâm
Trong bài viết này, xin trình bày phương pháp mã hóa thông tin đó là sửdụng hàm băm mật mã và tìm hiểu về thuật toán băm SHA-2 Bài viết được tổnghợp từ nhiều nguồn bao gồm cả tài liệu tiếng Việt và tiếng Anh, do quá trình dịch
và tổng hợp còn nhiều sai xót, kính mong các bạn đóng góp ý kiến để bài viết đượchoàn thiện hơn
Chân thành cảm ơn!
Trang 6CHƯƠNG I: HÀM BĂM
1 Vấn đề “Đại diện tài liệu” và “Hàm băm”
1.1 Một số vấn đề với “chữ ký số”
Vấn đề 1: “Ký số” thực hiện trên từng bit tài liệu, nên độ dài của “chữ ký số” ít
nhất cũng bằng độ dài của tài liệu Một số chữ ký trên bản tin có kích thước gấp đôi bản tin gốc Ví dụ khi dùng sơ đồ chữ ký DSS để ký vào bản tin có kích thước
160 bit, thì chữ ký số này sẽ có kích thước 320 bit.
Trong khi đó trên thực tế, ta cần phải ký vào các bản tin có kích thước rất lớn, ví dụ vài chục MegaByte (tương ứng hàng nghìn trang trên giấy) Như vậy phải tốn nhiều bộ nhớ để lưu trữ “chữ ký”, mặt khác tốn nhiều thời gian để truyền “chữ ký” trên mạng.
Vấn đề 2: Với một số sơ đồ chữ ký “an toàn”, thì tốc độ ký lại chậm vì chúng dùng
nhiều phép tính số học phức tạp như số mũ modulo.
Vấn đề 3: Thực tế có thể xảy ra trường hợp: với nhiều bản tin đầu vào khác
nhau, sử dụng hệ mã hóa hay sơ đồ ký số giống nhau (có thể khác nhau), nhưng lại cho ra bản mã hay chữ ký giống nhau (đó là ánh xạ nhiều – một) như hình dưới.
Điều này sẽ dẫn đến phức tạp cho việc xác thực thông tin.
Trang 7sơ đồ ký số
Bản mã hay bản ký số
ĐíchNguồn
1.2 Giải quyết vấn đề
Cách 1:
Một cách đơn giản để giải quyết các vấn đề trên với thông điệp có kích thước lớn là “chặt” bản tin thành nhiều đoạn nhỏ (VD 160 bit), sau đó ký lên các đoạn đó độc lập nhau Nhưng biện pháp này gặp các vấn đề trên.
Hơn thế nữa còn gặp vấn đề nghiêm trọng hơn Đó là kết quả sau khi ký, nội dung của thông điệp có thể bị xáo trộn với nhau, hoặc một số đoạn trong chúng có thể bị mất mát Ta cần phải bảo vệ tính toàn vẹn của bản tin gốc.
Cách 2:
Thay vì phải ký trên tài liệu dài, người ta thường dùng “hàm băm” để tạo
“đại diện” cho tài liệu, sau đó mới “ký số” lên “đại diện” này.
Các tài liệu (bản tin) có thể dưới dạng văn bản, hình ảnh, âm thanh, và kích thước của chúng tùy ý (vài KB đến vài chục MB), qua các thuật toán băm:
MD4, MD5, SHA, các đại diện tương ứng của chúng có kích thước cố định, ví dụ
128 bit với dòng MD, 160 bit với dòng SHA.
“Đại diện” cho tài liệu chính là giá trị của “hàm băm” trên tài liệu, nó còn
được gọi là “tóm lược” hay “bản thu gọn” của tài liệu.
Trang 8Với mỗi tài liệu (đầu vào), qua “hàm băm” chỉ có thể tính ra được một
“đại diện” - giá trị băm tương ứng – duy nhất “Đại diện” của tài liệu được xem
là “đặc thù” của tài liệu (thông điệp), giống như dấu vân tay của mỗi người.
Trên thực tế, hai tài liệu khác nhau có hai “đại diện” khác nhau Như vậy khi đã có “đại diện” duy nhất cho một tài liệu, thì việc “ký số” vào tài liệu, được thay bằng “ký số” vào “đại diện” của nó là hoàn toàn hợp lý Đó là chưa kể việc
tiết kiệm bao nhiêu thời gian cho việc “ký số”, bộ lưu giữ “chữ ký”, thời gian truyền “chữ ký” trên mạng
Cơ chế gửi tài liệu cùng “chữ ký” trên nó sử dụng hàm băm được mô tả theo các hình sau:
Trang 9Độ dài tùy ý Độ dài cố định 128 bit với MD hoặc 160 bit với SHA
Thông điệp (bản rõ)
x
(văn bản, âm thanh, hình ảnh …)
Bản băm (văn bản đại diện)
z=h(x)
Băm thông điệp (sử dụng thuật toán MD hoặc SHA)
y = sigK(z) Khóa bí mật của người gửi
Băm thông điệp
Ký trên bản băm thông điệp
9
Ký số (sử dụng
các sơ đồ ký số RSA, Elgamal, DSS)
Thông điệp, Bản ký số
(x,y)
Trang 10Truyền thông điệp và chữ ký
2 Tổng quan về hàm băm
2.1 Đặt vẫn đề
Trên thực tế, các thông điệp sử dụng chữ ký điện tử có độ dài bất kỳ, thậm chí lên đến vài Megabyte Trong khi đó, thuật toán chữ ký điện tử được trình bày trên đây lại áp dụng trên các thông điệp có độ dài cố định và thường tương đối ngắn, chẳng hạn như phương pháp DSS sử dụng chữ ký 320 bit trên thông điệp
160 bit.
Để giải quyết vấn đề này, chúng ta có thể chia nhỏ thông điệp cần ký thành các đoạn nhỏ có độ dài thích hợp và ký trên từng mảnh thông điệp này Tuy nhiên, giải pháp này lại có nhiều khuyết điểm và không thích hợp áp dụng trong thực tế:
nhiều và kết quả nhận được là một thông điệp có kích thước rất lớn Chẳng hạn như khi sử dụng phương pháp DSS thì thông điệp sau khi được ký sẽ có
độ dài gấp đôi văn bản nguyên thủy ban đầu.
tính toán cao và do đó, tốc độ xử lý rất chậm Việc áp dụng thuật toán tạo chữ ký điện tử nhiều lần trên một văn bản sẽ thực hiện rất chậm.
bớt đi mà không làm mất đi tính hợp lệ của văn bản Việc chia nhỏ văn bản sẽ không thể bảo đảm được tính toàn vẹn của thông tin ban đầu cần được ký.
2.2 Hàm băm
2.2.1 Khái niệm Hàm băm
Hàm băm là thuật toán không dùng khóa để mã hóa (ở đây dùng thuật
ngữ “băm” thay cho “mã hóa”), nó có nhiệm vụ “lọc” (băm) tài liệu (bản tin) và
cho kết quả là một giá trị “băm” có kích thước cố định, còn gọi là “đại diện tài liệu” hay “đại diện bản tin”, “đại diện thông điệp”.
Trang 11Hàm băm là hàm một chiều, theo nghĩa giá trị hàm băm là duy nhất, và
từ giá trị băm này, khó có thể suy ngược lại được nội dung hay độ dài ban đầu
của tài liệu gốc.
2.2.2 Đặc tính của Hàm băm
Hàm băm h là hàm một chiều (One – wat Hash) với các đặc tính sau:
h(x).
băm h(x’) ≠ h(x).
Cho dù chỉ là một sự thay đổi nhỏ, ví dụ chỉ thay đổi 1 bit dữ liệu của bản tin gốc
x, thì giá trị băm h(x) của nó cũng vẫn thay đổi Điều này có nghĩa là: hai thông
điệp khác nhau, thì giá trị băm của chúng cũng khác nhau.
thông điệp x thì “dễ” tính được z=h(x), nhưng lại khó tính ngược lại x nếu chỉ biết giá trị băm h(x) (kể cả khi biết hàm băm h).
2.2.3 Ứng dụng của Hàm băm
nhớ để lưu giữ “chữ ký”, tốn rất nhiều thời gian để truyền “chữ ký” trên mạng.
Người ta dùng hàm băm h để tạo đại diện cho bản tin z=h(x), nó có độ dài ngắn (ví dụ 128 bit) Sau đó ký trên z, như vậy chữ ký trên z sẽ nhỏ hơn rất nhiều
so với chữ ký trên bản tin gốc x.
bảo vệ khóa mật mã,
2.3 Cấu trúc của Hàm băm
Hầu hết các hàm băm mật mã đều có cấu trúc giải thuật như sau:
Cho trước một thông điệp M có độ dài bất kỳ Tùy theo thuật toán được sử dụng, chúng ta có thể cần bổ sung một số bit vào thông điệp này để nhận được
Trang 12thông điệp có độ dài là bội số của một hằng số cho trước Chia nhỏ thông điệp thành từng khối có kích thước bằng nhau: M1, M2, …Ms
Gọi H là trạng thái có kích thước n bit, f là “hàm nén” thực hiện thao tác trộn khối dữ liệu với trạng thái hiện hành
* H i = f(H i-1 ,M) với i = 1, 2, 3, …, s
2.4 Các tính chất của Hàm băm
Tính chất 1: Hàm băm h là không va chạm yếu.
Ví dụ: Xét kiểu tấn công như sau: kiểu tấn công theo tính chất 1.
*Hình a: Cách đi đúng của thông tin: thông tin được truyền đúng từ A đến B.
*Hình b: Thông tin bị lấy trộm và bị thay đổi trên đường truyền:
Trang 13* Kiểu tấn công theo tính chất 1:
(x,y) vì: trên đường truyền, tin bị lấy trộm Tên trộm bằng cách nào đó tìm được một bản tin x’ ≠ x nhưng lại có h(x’) = h(x) Hắn thay thế x bằng x’, và chuyển tiếp (x’,y) cho B
+ Người B nhận được (x’,y) và vẫn xác thực được thông tin đúng đắn Do đó, để tránh kiểu tấn công như trên, hàm h phải thỏa mãn tính chất: không va cham yếu.
*Khái niệm: Hàm băm không va chạm yếu.
Hàm băm h được gọi là không va chạm yếu , nếu cho trước bức điện x,
“khó có thể” tính toán để tìm ra bức điện x’ ≠ x mà h(x’) = h(x).
Tính chất 2 : Hàm băm h là không va chạm mạnh.
Ví dụ: Xét kiểu tấn công như sau: Kiểu tấn công theo tính chất 2.
+ Đầu tiên, tên giả mạo tìm được hai thông điệp khác nhau x’ và x (x’ ≠ x) mà có h(x) = h(x’) (Coi bức thông điệp x là hợp lệ, x’ là giả mạo).
Trang 14+ Tiếp theo, hắn thuyết phục ông A ký vào bản tóm lược h(x) để nhận được y Khi đó (x’,y) là bức điện giả mạo nhưng hợp lệ vì h(x) = h(x’).
Để tránh kiểu tấn công này, hàm h phải thỏa mãn tính chất không va chạm mạnh.
*Khái niệm: Hàm băm không va chạm mạnh.
Hàm băm b được gọi là không va chạm mạnh nếu “khó” thể tính toán để tìm ra hai bức thông điệp khác nhau x và x’ (x’≠ x) mà có h(x’) = h(x).
Tính chất 3: Hàm băm h là hàm một chiều.
Ví dụ: Xét kiểu tấn công như sau: Kiểu tấn công theo tính chất 3.
+ Giả sử tên giả mạo tìm được bản tin x’, được tính ngược từ bản tóm lược z=
Để tránh kiểu tấn công này, hàm băm h cần thỏa mãn tính chất một chiều.
*Khái niệm: Hàm băm một chiều.
Hàm băm h được gọi là hàm một chiều nếu khi cho trước một bản tóm lược thông báo z thì “khó thể” tính toán để tìm ra thông điệp ban đầu x sao cho
h(x) = z.
2.5 Tính an toàn của hàm băm đối với hiện tượng đụng độ
Hàm băm được xem là an toàn đối với hiện tượng đụng độ khi rất khó tìm được hai thông điệp có cùng giá trị băm
Nhận xét: Trong một tập hợp mà các phần tử mang một trong N giá trị cho trước với xác suất bằng nhau, chúng ta cần khoảng N phép thử ngẫu nhiên
để tìm ra một cặp phần tử có cùng giá trị
Trang 15Như vậy, phương pháp hàm băm được xem là an toàn đối với hiện tượng đụng độ nếu chưa có phương pháp tấn công nào có thể tìm ra cặp thông điệp có
với n là kích thước (tính bằng bit) của giá trị băm
Phương pháp tấn công dựa vào đụng độ:
• Tìm ra 2 thông điệp có nội dung khác nhau nhưng cùng giá trị băm
• Ký trên một thông điệp, sau đó, người ký sẽ không thừa nhận đây là chữ
ký của mình mà nói rằng mình đã ký trên một thông điệp khác
• Như vậy, cần phải chọn 2 thông điệp “đụng độ” với nhau trước khi ký
2.6 Các loại hàm băm
Hàm băm mật mã là hàm toán học chuyển đổi một thông điệp có độ dài bất kỳ thành một dãy bot có độ dài cố định (tùy thuộc vào thuật toán băm) Dãy bit này được gọi là thông điệp rút gọn (message digest) hay giá trị băm (hash value), đại diện cho thông điệp ban đầu.
Dễ dàng nhận thấy rằng hàm băm h không phải là một song ánh Do đó, với thông điệp x bất kỳ, tồn tại thông điệp x’ ≠ x sao cho h(x) = h(x’) Lúc này, ta nói rằng “có sự đụng độ xảy ra”.
Hàm băm h được gọi là an toàn (hay “ít bị đụng độ”), khi không thể xác
h(x’) Trên thực tế, các thuật toán băm là hàm một chiều, do đó, rất khó để xây dựng lại thông điệp ban đầu từ thông điệp rút gọn.
Hàm băm giúp xác định tính toàn vẹn dữ liệu của thông tin: mọi thay đổi,
dù là rất nhỏ, trên thông điệp cho trước, ví dụ như đổi giá trị 1 bit, đều làm thay
đổ thông điệp rút gọn tương ứng Tính chất này hữu ích trong việc phát sinh, kiểm tra chữ ký điện tử, các đoạn mã chứng nhận thông điệp, phát sinh số ngẫu nhiên, tạo ra khóa cho quá trình mã hóa…
Hàm băm là nền tảng cho nhiều ứng dụng mã hóa Có nhiều thuật toán để thực hiện hàm băm, trong số đóm hàm băm SHA-1 và MD5 được sử dụng khá là phổ biến từ thập niên 1990 cho đến nay.
Trang 162.6.1 Hàm băm MD4 (Message Disgest 4) và MD5 (Message Disgest 5)
Hàm băm MD4 được Giáo sư Ron Rivest đề nghị vào năm 1990 Vào năm
1992, phiên bản MD5 của thuật toán này ra đời Thông điệp rút gọn có độ dài
2.6.2 Hàm băm SHS (Secure Hash Standard)
Hàm băm SHS do NIST và NSA xây dựng được công bố trên Federal Register vào ngày 31/1/1992, và sau đó chính thức trở thành phương pháp chuẩn từ ngày 13/5/1993 Thông điệp rút gọn có độ dài 160bit.
Ngày 26/08/2002, Viện tiêu chuẩn và công nghệ quốc gia Hoa Kỳ đã đề xuất hệ thống chuẩn hàm băm an toàn gồm 4 thuật toán hàm băm SHA-1, SHA-
256, HA-384, SHA-512 Đến 25/03/2004, NIST đã chấp nhận thêm thuật toán hàm băm SHA-224 vào hệ thống chuẩn hàm băm Các thuật toán hàm băm do NIST đề xuất được đặc tả trong tài liệu FIPS180-2
Trang 17CHƯƠNG II: THUẬT TOÁN BĂM SHA-2
1 Khái niệm
SHA-2 (Secure Hash Algorithm 2) là tập hợp các hàm băm mật mã được
thiết kế bởi NSA Hàm băm mật mã là các phép toán chạy trên dữ liệu kỹ thuật số,bằng cách so sánh các tính toán “băm” (đầu ra từ thực hiện các thuật toán) đến cácgiá trị hash được biết đến và mong đợi, một người có thể xác định tính toàn vẹn của
dữ liệu Ví dụ, tính toán các hash của một tệp tin tải về và so sánh kết quả vào mộtkết quả băm được phát hành trước đó có thể xác định các tệp tin tải về có bị sửa đổihoặc giả mạo hay không Một khía cạnh quan trọng của hàm băm mật mã là chúngkháng xung đột: Giá trị đầu vào khác nhau thì giá trị đầu ra sẽ không giống nhau
- SHA-224 là phiên bản rút gọn của SHA-256
- SHA-384 là phiên bản rút gọn của SHA-512, tính toán với giá trị ban đầu khácnhau
- SHA-512/224 và SHA-512/256 cũng là phiên bản rút gọn của SHA-512, nhưngcác giá trị ban đầu được tao ra bằng phương pháp mô tả trong FIPS PUB 180-4.SHA-2 được phát hành năm 2001 bởi NIST như một tiêu chuẩn liên bang Mỹ(FIPS) SHA-2 được cấp bằng sáng chế tại Mỹ số 6829355 và miễn phí bảnquyền
Trang 183 Mô tả thuật toán
Mỗi thuật toán có thể được mô tả trong hai giai đoạn: tiền xử lý và tính toán
băm Tiền xử lý liên quan đến việc đệm một thông điệp, phân tích cú pháp thông
điệp đó thành các khối m-bit, và thiết lập các giá trị khởi tạo sẽ được sử dụng trong
tính toán băm Việc tính toán băm sinh ra một thông điệp lịch trình (message schedule) từ thông điệp đã đệm và sử dụng lịch trình, cùng với chức năng, hằng số,
và các hoạt động từ ngữ để lặp đi lặp lại tạo ra một loạt các giá trị băm Các bămthức giá trị được tạo ra bởi việc tính toán hash được sử dụng để xác định các thôngđiệp tóm lược (message digest)
được thay thế bằng một phép toán OR bitwise (∨)và tạo ra kết quả giống hệt nhau
3.1.1.1 SHA-224 and SHA-256 Functions
SHA-224 và SHA-256 sử dụng 6 logical functions, nơi mà mỗi chức năng
hoạt động trên 32-bit từ, được biểu diễn như là x, y, z Kết quả của mỗi chức năng
là một 32-bit từ mới
Maj(x,y,z) = (x ∧ y) ⊕ (x ∧ z) ⊕ (y ∧ z)
Trang 193.1.1.2 SHA-384, SHA-512, SHA-512/224 and SHA-512/256 Functions
Các thuật toán này cũng sử dụng 6 logical functions, nơi mà mỗi chức năng hoạt động trên 64-bit từ, được biểu diễn như là x, y, z Kết quả của mỗi chức
năng là một 64-bit từ mới
Maj(x,y,z) = (x ∧ y) ⊕ (x ∧ z) ⊕ (y ∧ z)
số nguyên tố đầu tiên Trong hex, những chữ này liên tục (từ trái sang phải)
428a2f98 71374491 b5c0fbcf e9b5dba5 3956c25b 59f111f1 923f82a4ab1c5ed5 d807aa98 12835b01 243185be 550c7dc3 72be5d74 80deb1fe9bdc06a7 c19bf174 e49b69c1 efbe4786 0fc19dc6 240ca1cc 2de92c6f4a7484aa 5cb0a9dc 76f988da 983e5152 a831c66d b00327c8 bf597fc7c6e00bf3 d5a79147 06ca6351 14292967 27b70a85 2e1b2138 4d2c6dfc53380d13 650a7354 766a0abb 81c2c92e 92722c85 a2bfe8a1 a81a664bc24b8b70 c76c51a3 d192e819 d6990624 f40e3585 106aa070 19a4c1161e376c08 2748774c 34b0bcb5 391c0cb3 4ed8aa4a 5b9cca4f 682e6ff3748f82ee 78a5636f 84c87814 8cc70208 90befffa a4506ceb bef9a3f7c67178f2
3.1.2.2 Hằng số SHA-384, SHA-512, SHA-512/224 và SHA-512/256
SHA-384, SHA-512, SHA-512/224 và SHA-512/256 sử dụng cùng một thứ
tự 80 hằng 64-bit chữ, ,,…, Những chữ này đại diện cho 64 bit đầu tiên của phần
Trang 20phân số của căn bậc 3 của 80 số nguyên tố đầu tiên Trong hex, những chữ này liêntục (từ trái sang phải).
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
3.2 Tiền xử lý
Tiền xử lý bao gồm ba bước sau: đệm tin nhắn M, phân tích cú pháp tin nhắnthành các khối tin và thiết lập các giá trị băm ban đầu H(0)
Trang 213.2.1 Đệm các tin nhắn
Mục đích của việc đệm này là để đảm bảo rằng thông điệp đệm là một bội sốcủa 512 hoặc 1024 bit, tùy thuộc vào các thuật toán Phần đệm có thể được chènvào trước khi tính toán băm bắt đầu, hoặc tại bất kỳ thời điểm nào trong quá trìnhtính toán băm trước khi xử lý các khối đã đệm
3.2.1.1 SHA-224 and SHA-256
Giả sử độ dài của tin nhắn M là l bít, nối các bit “1” vào cuối tin nhắn và theo sau là k bit “0” với k nhỏ nhất, không âm và là nghiệm của phương trình l + 1 + k 448 mod 512 Sau đó nối các khối 64-bit bằng với số l sử dụng các đại diện nhị
phân Ví dụ, tin nhắn “abc” (8-bit ASCII) có độ dài 8x3=24, vì vậy tin nhắn được
đệm 1 bit “1” và 448-(24+1)=423 bit “0” để trở thành tin nhắn có độ dài 512 bit
Chiều dài của tin nhắn đệm nên là bội số của 512 bits
3.2.1.2 SHA-384, SHA-512, SHA-512/224 and SHA-512/256
Giả sử độ dài của tin nhắn M là l bít, nối các bit “1” vào cuối tin nhắn và theo sau là k bit “0” với k nhỏ nhất, không âm và là nghiệm của phương trình l + 1 + k 896 mod 1024 Sau đó nối các khối 128-bit bằng với số l sử dụng các đại diện
nhị phân Ví dụ, tin nhắn “abc” (8-bit ASCII) có độ dài 8x3=24, vì vậy tin nhắn
được đệm 1 bit “1” và 896-(24+1)=871 bit “0” để trở thành tin nhắn có độ dài 1024bit
Trang 22Chiều dài của tin nhắn đệm nên là bội số của 1024 bits.
3.2.2 Phân tích cú pháp tin nhắn
Thông điệp và phần đệm của nó phải được phân tích thành các khối bit N m-bit.
3.2.2.1 SHA-224 and SHA-256
Đối với SHA-224 và SHA-256, thông điệp và phần đệm của nó được phântích thành N khối 512-bit, M(1), M(2), , M(N) Kể từ 512 bits của khối đầu vào có thể
được thể hiện như 16 chữ 32-bit, 32 bit đầu tiên của khối tin i được ký hiệu là , 32
bit tiếp theo là , và như vậy lên đến
3.2.2.2 SHA-384, SHA-512, SHA-512/224 và SHA-512/256
Đối với SHA-384, SHA-512, SHA-512/224 và SHA-512/256, thông điệp vàphần đệm của nó được phân tích thành N khối 1024-bit, M(1), M(2), , M(N) Kể từ
1024 bits của khối đầu vào có thể được thể hiện như 16 chữ 64-bit, 64 bit đầu tiên
của khối tin i được ký hiệu là , 64 bit tiếp theo là , và như vậy lên đến
3.2.3 T hiết lập các giá trị băm ban đầu H (0) .
Trước khi tính toán băm bắt đầu cho mỗi thuật toán băm an toàn, giá trị bămban đầu H(0) phải được thiết lập Các kích thước và số lượng của các chữ trong H(0)
phụ thuộc vào các kích thước thông điệp tóm lược