An toàn và an ninh mạng - Chương 4: Hàm băm và các kỹ thuật xác thực thông tin

Các nguy cơ bảo mật đối với thông tin trao đổi trên mạng bao gồm: • Tiết lộ thông tin (Disclosure): Hacker đọc được thông tin mà không cần có khóa giải mã. • Phân tích lưu lượng mạng (Traffic analysis): phân tích các gói dữ liệu trên mạng để tìm dấu vết của thông tin. • Giả mạo thông tin (Masquerade):Chèn thông tin giả mạo vào luồng thông tin đang trao đổi. • Thay đổi nội dung thông tin (Content modification): Thêm hoặc sửa, xóa thông tin đang trao đổi. • Thay đổi thứ tự (Sequence modification):Làm thay đổi thứ tự các gói dữ liệu đang trao đổi bằng cách xóa bỏ, chèn thêm, lưu và phát lại. • Thay đổi thời gian (Timing modification):làm trì hoãn việc truyền thông tin trên mạng • Từ chối nguồn gốc (Source repudiation): Từ chối nguồn gốc của thông tin. • Từ chối nhận (Destination repudiation): Từ chối việc chấp nhận thông tin ở phía nhận.

pdf21 trang | Chia sẻ: lvbuiluyen | Lượt xem: 5366 | Lượt tải: 18download
Bạn đang xem trước 20 trang tài liệu An toàn và an ninh mạng - Chương 4: Hàm băm và các kỹ thuật xác thực thông tin, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1 CHƯƠNG 4 HÀM BĂM VÀ CÁC KỸ THUẬT XÁC THỰC THÔNG TIN I-XÁC THỰC THÔNG TIN I.1-Yêu cầu xác thực thông tin Các nguy cơ bảo mật đối với thông tin trao đổi trên mạng bao gồm: • Tiết lộ thông tin (Disclosure): Hacker đọc được thông tin mà không cần có khóa giải mã. • Phân tích lưu lượng mạng (Traffic analysis): phân tích các gói dữ liệu trên mạng để tìm dấu vết của thông tin. • Giả mạo thông tin (Masquerade): Chèn thông tin giả mạo vào luồng thông tin đang trao đổi. • Thay đổi nội dung thông tin (Content modification): Thêm hoặc sửa, xóa thông tin đang trao đổi. • Thay đổi thứ tự (Sequence modification): Làm thay đổi thứ tự các gói dữ liệu đang trao đổi bằng cách xóa bỏ, chèn thêm, lưu và phát lại... • Thay đổi thời gian (Timing modification): làm trì hoãn việc truyền thông tin trên mạng • Từ chối nguồn gốc (Source repudiation): Từ chối nguồn gốc của thông tin. • Từ chối nhận (Destination repudiation): Từ chối việc chấp nhận thông tin ở phía nhận. Trong 8 nguy cơ ở trên, thì hai nguy cơ đầu tiên tác động đến tính bảo mật của thông tin, được giải quyết bằng các thuật toán mật mã. Các nguy cơ từ 3 đến 6 tác động đến sự toàn vẹn về nội dung thông tin, được giải quyết bằng các thủ tục xác thực thông tin. Và cuối cùng, hai nguy cơ còn lại tác động đến sự toàn vẹn về nguồn gốc thông tin, được khắc phục bởi bằng cách dùng chữ ký số và các giao thức chuyên dụng khác. Như vậy, xác thực thông tin (message authentication) là cơ chế đảm bảo thông tin truyền đi giữa các thực thể (thường thông qua hệ thống mạng) không bị giả mạo, thay đổi nội dung, thứ tự và thời gian truyền có ý nghĩa. Cần phân biệt hai mức xác thực thông tin: • Xác thực thông tin mức thấp: dùng các cơ chế như mã hóa, hàm băm, chữ ký số để xác thực nội dung và nguồn gốc của từng bản tin (message) riêng lẻ. • Xác thực thông tin mức cao: dựa trên cơ sở xác thực mức thấp để xây dựng các giao thức xác thực phức tạp (ví dụ như Kerberos và một số giao thức xác thực khác). Phần này chỉ đề cập đến các cơ chế xác thực mức thấp, với hai kỹ thuật cơ bản là hàm băm và chữ ký số. I.2- Các kỹ thuật xác thực thông tin 2 I.2.1-Dùng các thuật tóan mật mã: Nguyên tắc của mật mã là chỉ có những đối tượng hợp lệ mới khôi phục được thông tin gốc từ thông tin mật. Nếu dùng mật mã đối xứng, khi bên A muốn gởi thông tin M cho bên B, thì A phải thực hiện mã hóa M bằng khóa bí mật K dùng chung giữa A và B để tạo ra thông tin mật C. Bên B khi nhận được thông tin C sẽ dùng khóa K để giải mã. Nếu kết quả giải mã là đúng, thì có thể khẳng định rằng thông tin nhận được là do A gởi và không bị thay đổi trong quá trình truyền dựa trên lý luận: chỉ có A và B có khóa K nên không có thành phần thứ 3 nào có thể giả mạo được thông tin mật C, do đó không thể thay đổi thông tin gốc M thành M’ để tạo ra thông tin mật C’ hợp lệ. Tuy nhiên, vấn đề là làm thế nào để xác định kết quả giải mã là “đúng”? Thông thường, điều này chỉ làm được khi bên B biết trước cấu trước cấu trúc thông tin mà A sẽ gởi cho mình. Nếu có một sự thay đổi tùy ý nào đó đối với thông tin C, thì kết quả giải mã sẽ không còn đúng như cấu trúc ban đầu. Một ví dụ điển hình là thông tin gốc là một đoạn văn bản được viết theo cú pháp và từ vựng của một ngôn ngữ tự nhiên nào đó (tiếng Anh hay Việt). Trong thực tế, có thể kết hợp giữa kỹ thuật mã hóa và các kỹ thuật kiểm tra sai (Frame Check Sequence) mức thấp để thực hiện chức năng xác thực. Nếu dùng mật mã bất đối xứng, thì bên A trước khi gởi thông tin cần phải mã hóa M bằng khóa riêng (PR) của chính mình. Ở phía nhận, B cũng sẽ thực hiện giải mã thông tin bằng khóa công khai của A. Cơ chế xác thực này cũng dựa trên nguyên tắc là bên B biết trước cấu trúc thông tin M, để có thể xác định kết quả mã hóa là đúng hay không đúng. Đồng thời giả thiết rằng khóa PR của bên A hoàn toàn không bị tiết lộ. Như vậy, cơ chế xác thực thông tin dùng mật mã dựa trên các giả thiết cơ sở sau đây: • Khóa bí mật (hoặc khóa riêng) hoàn toàn không bị tiết lộ cho một bên thứ 3. • Phía nhận thông tin phải biết trước cấu trúc của thông tin gốc. 3 I.2.2-Dùng mã xác thực: Mã xác thực MAC (Message Authentication Code) được sinh ra từ tổ hợp gồm một khối thông tin gốc có độ dài bất kỳ và một khóa bí mật theo một thuật toán biến đổi C định trước. Kích thước của MAC là cố định, không phụ thuộc vào kích thước của khối dữ liệu gốc và thường nhỏ hơn dữ liệu gốc. Phía gởi thông tin sẽ gởi kèm giá trị MAC đi cùng với thông tin gốc. Phía nhận sau khi nhận được thông tin gốc cùng với giá trị MAC gởi kèm sẽ thực hiện thao tác tạo ra giá trị MAC mới từ thông tin gốc cùng với khóa bí mật đã thống nhất giữa hai bên. Nếu giá trị MAC vừa tạo ra giống với giá trị MAC nhận được từ phía gởi, phía nhận có thể chắc chắn rằng thông tin gốc không bị thay đổi trong quá trình truyền (hình 2.25). Việc dùng MAC để xác thực thông tin dựa vào các giả thiết cơ sở: • Ứng với một khối thông tin gốc M và một khóa bí mật K, hàm C chỉ tạo ra duy nhất một mã xác thực MAC. • Chỉ có phía gởi và phía nhận hợp lệ mới được biết khóa K. Nơi gởi thông tin Nơi nhận thông tin a- Dùng mật mã đối xứng b- Dùng mật mã bất đối xứng Hình 2.24: Xác thực thông tin dùng mật mã C C M: thông tin gốc E: thuật tóan mật mã D: Thuật tóan giải mã C: Thông tin mật K: Khóa bí mật dùng chung giữa bên gởi và bên nhận PRa: Khóa bí mật của bên gởi. PUa: Khóa công khai của bên gởi 4 • Mã xác thực MAC được truyền từ bên gởi đến bên nhận một cách chính xác. Có hai kỹ thuật tạo ra mã xác thực MAC: kỹ thuật thứ nhất dùng cơ chế mật mã khối (Cipher Block Chaining)* và được gọi là CMAC hay CBC-MAC. Kỹ thuật thứ hai dựa trên các hàm băm bảo mật và được gọi là HMAC. Mã xác thực MAC được ứng dụng trong các trường hợp thông tin chỉ yêu cầu đảm bảo tính xác thực mà không cần đảm bảo tính bí mật. I.2.3-Dùng các hàm băm bảo mật: Hàm băm bảo mật (secure hash function) là một trong những kỹ thuật mã hóa được dùng phổ biến trong các ứng dụng xác thực thông tin. Giống như mã xác thực MAC, hàm băm cũng xử lý khối thông tin gốc có độ dài bất kỳ theo một thuật toán biến đổi H xác định trước. Kết quả của thuật toán biến đổi H là một khối thông tin ngắn có độ dài cố định gọi là mã băm (hash code hoặc message digest). Tuy nhiên, khác với MAC, hàm băm chỉ dựa vào thông tin gốc để tạo ra mã băm mà không dùng thêm bất kỳ khóa bí mật nào. Do vậy, để có thể sử dụng như một cơ chế xác thực thông tin, hàm băm phải được dùng kèm với một thuật tóan mật mã nào đó (đối xứng hoặc bất đối xứng) nhằm đích bảo vệ giúp mã băm không bị thay đổi. Hình 2.26 trình bày một ứng dụng điển hình của hàm băm trong xác thực thông tin. Theo cơ chế này, mã băm sau khi được tạo ra sẽ được mã hóa bằng một thuật tóan mật mã đối xứng với khóa bí mật K chỉ có bên gởi và bên nhận biết. Đọan mã băm đã được mật mã hóa được gởi đi kèm với thông tin gốc và quá trình kiểm tra ở phía nhận cũng được tiến hành theo trình tự ngược lại, tức là giải mã đọan mã băm bằng khóa bí mật, sau đó tạo ra mã băm mới từ thông tin gốc và so sánh hai đọan mã băm. Có nhiều cách áp dụng kết hợp các thuật tóan mật mã vào hàm băm để xác thực thông tin: * Xem lại các chế độ thực hiện mã khối ở phần Mật mã đối xứng Nơi gởi thông tin Nơi nhận thông tin Mã xác thực (MAC) So sánh M: thông tin gốc C: Hàm tạo mã xác thực K: Khóa bí mật dùng chung giữa bên gởi và bên nhận | |: Nối mã xác thực vào thông tin gốc Hình 2.25: Xác thực thông tin dùng MAC 5 • Dùng mã đối xứng để mã hóa mã băm rồi gởi kèm với thông tin gốc. • Dùng mã bất đối xứng để mã hóa mã băm rồi gởi kèm với thông tin gốc. • Dùng mã đối xứng để mã hóa tổ hợp thông tin gốc cùng với mã băm. • Dùng mã bất đối xứng để mã hóa tổ hợp thông tin gốc cùng với mã băm. Trong các trường hợp dùng mã bất đối xứng, thì bên gởi sẽ mã hóa thông tin gốc hoặc mã băm dùng khóa công khai của bên nhận. II- CÁC HÀM BĂM BẢO MẬT II.1- Tổng quan về hàm băm II.1.1- Cơ chế của hàm băm: Nguyên tắc của hàm băm là biến đổi khối thông tin gốc có độ dài bất kỳ thành một đoạn thông tin có độ dài cố định gọi là mã băm (hash code hay message digest). Mã băm được dùng để kiểm tra tính chính xác của thông tin nhận được. Một hàm băm H áp dụng cho khối thông tin M tạo ra kết quả m, trong tài liệu này, được ký hiệu là H(M) = m. Thông thường, mã băm được gởi kèm với thông tin gốc, cùng với một cơ chế bảo vệ nào đó giúp mã băm không bị thay đổi hoặc tính lại. Ở phía nhận, hàm băm lại được áp dụng đối với thông tin gốc để tìm ra mã băm mới, giá trị này được so sánh với mã băm đi kèm với thông tin gốc. Nếu hai mã băm giống nhau, nghĩa là thông tin gởi đi không bị thay đổi. Chỉ có thể dùng hàm băm để tạo ra mã băm từ thông tin gốc chứ không thể phục hồi được thông tin gốc từ mã băm. Do đặc tính này, các hàm băm bảo mật cũng còn được gọi là hàm băm một chiều (one way hash funtion). Hình 2.27 mô tả một ứng dụng xác thực thông tin đơn giản dùng hàm băm. Nơi gởi thông tin Nơi nhận thông tin Mã băm đã được mã hóa So sánh M: thông tin gốc H: hàm băm E: thuật tóan mã hóa D: thuật tóan giải mã K: khóa bí mật dùng chung giữa phía gởi và phía nhận. | |: nối mã băm đã được mã hóa vào thông tin gốc Hình 2.26: Xác thực thông tin dùng hàm băm 6 II.1.2- Các yêu cầu và thuộc tính của hàm băm: Các yêu cầu về thiết kế đối với một hàm băm bảo mật H: • H có thể được áp dụng cho khối thông tin với chiều dài bất kỳ. • Kết quả của hàm H luôn có chiều dài cố định. • Việc tính giá trị của H(M) với một khối thông tin M cho trước phải đơn giản, có thể thực hiện được bằng phần mềm và phần cứng một cách nhanh chóng và không tốn nhiều tài nguyên. Ngoài ra, trong một số tài liệu, yêu cầu về tính nén (compression) cũng được đề xuất như một thuộc tính của hàm băm, bởi vì trong đa số trường hợp, mã băm có kích thước ngắn hơn rất nhiều so với thông tin gốc. Tuy nhiên, đối với những trường hợp mà thông tin gốc ngắn hơn mã băm (ví dụ thông tin gốc là mật khNu với chiều dài vài ký tự) thì kết quả của hàm băm có thể dài hơn thông tin gốc. Một hàm băm bảo mật phải có 3 thuộc tính bắt buộc sau đây: • Tính một chiều (one-way property): Cho trước một đoạn thông tin m bằng với kích thước mã băm của một hàm băm H, không thể tìm được một khối thông tin M sao cho H(M) = m. • Tính kháng đụng độ yếu (weak collision resistance): Cho trước khối thông tin M, không thể tìm được một khối thông tin M’ khác x sao cho H(M) = H(M’). • Tính kháng đụng độ mạnh (strong collision resistance): Không thể tìm được hai khối thông tin M và M’ khác nhau sao cho H(M) = H(M’). Khái niệm “không thể” trong các thuộc tính của hàm băm nói riêng và trong mã hóa nói chung không có nghĩa là “không thể thực hiện được trên lý thuyết”, mà chỉ biểu diễn tính khó thực hiện bằng tay hoặc bằng máy tính với chi phí thời gian chấp nhận được. Ví dụ, để tìm ra một trường hợp đụng độ của một hàm băm H, cần phải thực hiện nhiều phép thử với Th ôn g tin gố c H Th ôn g tin gố c Th ôn g tin gố c H So sánh : Mã băm H : Hàm băm Hình 2.27: Một ứng dụng điển hình của hàm băm 7 thời gian hàng trăm thậm chí hàng ngàn năm, hành động này có thể được xem là “không thể” thực hiện được. II.1.3- Tấn công các hàm băm: Nguyên lý làm việc của hàm băm H là biểu diễn một khối thông tin M có kích thước lớn bởi một đoạn thông tin m có kích thước nhỏ hơn nhiều. Trường hợp lý tưởng nhất là kích thước thông tin gốc nhỏ hơn hay bằng với chiều dài của mã băm, khi đó hàm H biểu diễn các quan hệ 1:1 giữa tập các khối thông tin gốc và tập các giá trị mã băm, nghĩa là sẽ không xảy ra tình huống 2 khối thông tin khác nhau cùng cho ra một mã băm. Trong thực tế thì kích thước M luôn lớn hơn m, do đó sẽ có trường hợp có 2 khối thông tin gốc khác nhau cho ra cùng một mã băm, ta nói thuật tóan băm bị đụng độ (collision). Mục tiêu tấn công vào một hàm băm bảo mật là tạo ra các tình huống đụng độ này. Tấn công hàm băm cũng như tấn công các thuật toán mật mã khác, có thể thực hiện bằng hai phương pháp: thử tuần tự (brute-force) và phân tích mã (cryptanalysis). a-Tấn công brute-force: Độ phức tạp của phương pháp thử tuần tự phụ thuộc vào kích thước của mã băm, tức phụ thuộc vào số lượng mã băm có thể sinh ra từ hàm H. Kích thước này càng nhỏ thì khả năng xảy ra đụng độ càng lớn, và do đó xác suất tấn công thành công càng lớn. Để tạo ra một tình huống đụng độ yếu, tức cho trước M và biết H(M) = m, cần tìm M’ khác M sao cho H(M’) cũng cho ra cùng một giá trị m, cần phải thực hiện 2n -1 lần thử, với n là chiều dài của m tính bằng bit. Năm 1994, một nghiên cứu về việc áp dụng các thuật toán tìm kiếm song song để tìm đụng độ trên hàm băm MD5 (có kích thước mã băm là 128 bit) đã chứng minh bằng thực nghiệm là có thể tìm được đụng độ trong thời gian là 24 ngày(*). Do đó, hàm băm MD5 hiện nay được xem là một hàm băm không an toàn. Để tạo ra một tình huống đụng độ mạnh, tức tìm cặp M và M’ bất kỳ sao cho H(M) = H(M’), thì số lần thử ít hơn. Bài toán ngày sinh (Birthday problem)(*) chỉ ra rằng: với kích thước mã băm là n bit, thì cần có khoảng 2n/2 khối thông tin được xử lý, tức là cần thực hiện 2n/2 lần thử. Người ta thường dùng nguyên lý này để tấn công vào các ứng dụng có sử dụng hàm băm, các tấn công này được gọi là Birthday attack. Tấn công Birthday attack được thực hiện như sau: -Giả sử, user A xác thực một văn bản M bằng cách xác mã băm H(M) = m (n bit), sau đó mã hóa m bằng khóa riêng PRA và gởi kèm với văn bản gốc M. -Để tạo ra một văn bản M’ khác với M nhưng cho cùng mã băm, hacker tạo ra một tập S gồm 2n/2 biến thể của M (bằng cách thêm dấu câu, thay đổi từ này thành từ khác, …sau cho (*): Van Oorschot, P., and Wiener, M. "Parallel Collision Search with Application to Hash Functions and Discrete Logarithms." Proceedings, Second ACM Conference on Computer and Communications Security, 1994. Cần chú ý thêm rằng, chi phí để thực hiện hệ thống máy tính xử lý song song này lên tới 10 triệu USD. (*) : Bài toán ngày sinh được phát hiểu như sau: trong một tập thể có n người, để xác suất có 2 người có cùng ngày sinh nhật (cùng ngày và cùng tháng) là 50% thì n chỉ có giá trị khoảng 23. Kết quả này rất khác so với các lập luận thông thường nên còn được gọi là nghịch lý ngày sinh nhật (birthday paradox). 8 nội dung về cơ bản là không thay đổi). Sau đó, hacker tạo ra một văn bản giả M’ với dụng ý thay thế cho M, rồi cũng tiến hành tạo một tập S’ gồm có 2n/2 biến thể của văn bản M’. -Đem các phần tử hai tập S và S’ so sánh với nhau từng đôi một để tìm ra một cặp phần tử có mã băm giống nhau. Bài toán ngày sinh cho biết rằng với 2n/2 phần tử khác nhau thì khả năng tìm được một cặp giống nhau là hơn 50%. -Sau khi chọn xong được một cặp M và M’, hacker sẽ chuyển gí trị M cho A để tạo mã xác thực, sau đó thay thế M bởi M’ mà kết quả xác thực vẫn không hề thay đổi. b- Phân tích mã: Kỹ thuật tấn công bằng cách phân tích mã dựa vào các cấu trúc bên trong của các hàm băm, với được thiết kế dưới dạng các hàm nén được thực hiện nhiều lần. Thông tin gốc trước khi đưa vào hàm băm được cắt thành từng khối có kích thước cố định, đồng thời được chèn thêm thông tin giả cho chẵn với kích thước khối. Một số nghiên cứu đã chứng minh được rằng có thể chèn thêm một khối thông tin tùy chọn vào một khối thông tin cho trước để tạo ra các trường hợp đụng độ. Rainbow table là một kỹ thuật cho phép xác định nhanh thông tin gốc từ mã băm, kết quả có thể là một đụng độ bất kỳ của thông tin gốc chứ không nhất thiết là thông tin gốc. Để thực hiện Rainbow Table, một vùng nhớ đệm với kích thước lớn được dùng để chứa các giá trị trung gian của quá trình dò tìm. Do vậy, thực chất thì Rainbow table là một cách đánh đổi chi phí bộ nhớ để giảm chi phí về thời gian. Rainbow table được dùng hiệu quả trong việc phục hồi các mật khNu người dùng trong Windows, vốn được lưu trữ dưới dạng các mã băm trong SAM database. II.2- Hàm băm SHA: SHA (Secure Hash Function) là hàm băm được viện Tiêu chuNn và Công nghệ hoa kỳ (NIST) chuNn hoá năm 1993, sau đó được chỉnh sửa năm 1995 và đặt tên là SHA-1, từ đó phiên bản cũ được gọi là SHA-0 và gần như không được dùng đến. SHA-1 dựa chủ yếu cấu trúc của hàm băm MD4. SHA-1 tạo ra mã băm có chiều dài cố định là 160 bit. Năm 2002, xuất hiện thêm một số phiên bản khác của SHA, chủ yếu là tăng chiều dài mã băm, như: SHA-256 (mã băm dài 256 bit), SHA-384 (mã băm dài 385 bit) và SHA-512 (mã băm dài 512 bit). Bảng 2.2: Các phiên bản SHA Thông số SHA-1 SHA-256 SHA-384 SHA-512 Kích thước mã băm (bit) 160 256 384 512 Kích thước thông tin gốc (bit) < 264 < 264 < 2128 <2128 Kích thước khối (bit) 512 512 1024 1024 Độ dài từ (bit) 32 32 64 64 Số bước thực hiện (bước) 80 64 80 80 Phần này chỉ mô tả thuật toán băm SHA-1, các phiên bản khác của SHA cũng được thiết kế theo nguyên lý tương tự. 9 SHA-1 chấp nhận các khối thông tin có kích thước tối đa là 264 bit để tạo ra mã băm với độ dài cố định 160 bit. Tòan bộ khối thông tin được xử lý theo từng khối 512 bit, qua 5 công đoạn như sau: 1- Gắn bit đệm – Append padding bit: thông tin gốc được gắn thêm các bit thừa để có chiều dài (448 modulo 512) bit, tức là tất cả các khối trước có chiều dài bằng nhau là 512 bit, riêng khối cuối cùng là 448 bit. Chú ý rằng việc chèn thêm bit vào khối thông tin được thực hiện đối với tất cả các khối thông tin gốc, kể cả khi khối thông tin gốc có số bit chính xác bằng 448 mod 512 (khi đó chuỗi bit chèn vào sẽ có chiều dài là 512 bit). Nguyên tắc đệm là thêm một bit 1 vào cuối chuỗi bit, sau đó gắn 1 chuỗi bit 0 đủ để tạo thành khối 448 bit. 2- Gắn chiều dài – Append length: một chuỗi 64 bit được gắn thêm vào khối thông tin. 64 bit này được xử lý như một số nguyên không dấu, cho biết chiều dài của khối thông tin gốc tính bằng bit (chiều dài thật sự của thông tin khi chưa thực hiện công đoạn 1). Sau công đoạn này, khối thông tin nhận được có chiều dài chính xác là bội số của 512 bit, được chia thành các nhóm, mỗi nhóm tương đương với 16 thanh ghi 32 bit (16*32 = 512 bit). 3- Khởi tạo bộ đệm MD – Initialize MD buffer: bộ đệm MD (message digest) là bộ nhớ có dung lượng 160 bit dùng để chứa các kết quả trung gian và kết quả cuối cùng của mã băm. Bộ nhớ này được tổ chức thành 5 thanh ghi 32 bit và được khởi tạo các giá trị ban đầu như sau (Hex): A = 67452301 B = EFCDAB89 C = 98BADCFE D = 10325476 E = C3D2E1F0 4- Xử lý thông tin theo từng khối 512 bit – Process message: đây là công đọan trung tâm quả hàm băm, còn được gọi là hàm nén (compress function), bao gồm 4 vòng, mỗi vòng 20 bước. Hình 2.28 trình trình bày sơ đồ khối của bước 4. Cả 4 vòng có cấu trúc tương tự nhau, nhưng mỗi vòng sử dụng một hàm luận lý khác nhau là f1, f2, f3 và f4. Ngõ vào của mỗi vòng là khối bit Y (512 bit) đang xử lý cùng với giá trị của bộ đệm MD. Mỗi vòng sử dụng một biến cộng Kt khác nhau, với 0 ≤ t ≤ 79 biểu diễn cho 80 bước của 4 vòng. Tuy nhiên, thực tế chỉ có 4 giá trị K khác nhau như sau: Bước Giá trị K (Hexa) 0 ≤ t ≤ 19 Kt = 5A827999 20 ≤ t ≤ 39 Kt = 6ED9EBA11 40 ≤ t ≤ 59 Kt = 8F1BBCDC 60 ≤ t ≤ 79 Kt = CA62C1D6 10 Ngõ ra của vòng thứ tư (tức bước 80) được cộng với ngõ vào của vòng đầu tiên để tạo ra CVq+1. Thao tác cộng được thực hiện một cách độc lập, ứng với từng thanh ghi trong bộ đệm MD với một từ tương ứng trong CVq, sử dụng phép cộng modulo 232. 5- Xuất kết quả - Output: Sau khi tất cả các khối 512 bit đã được xử lý, ngõ ra của bước cuối cùng chính là giá trị của mã băm. Một thuộc tính quan trọng của giải thuật băm SHA-1 là mỗi bit trong mã băm đều có quan hệ với tất cả các bit trong thông tin gốc. Việc lặp lại các hàm f một cách phức tạp như vậy nhằm mục đích đảm bảo rằng dữ liệu đã được trộn một các