Chọn thuật toán cho chuẩn hàm băm năm 2012

15:02 | 19/07/2011

Cuộc thi chọn chuẩn hàm băm mới được Viện Tiêu chuẩn và công nghệ quốc gia Mỹ (NIST) phát động nhằm thay thế SHA-1,SHA-2 đã bước sang năm thứ Tư, đã qua hai vòng tuyển chọn và đã tìm được 5 ứng cử viên vào vòng chung kết. Mỗi cuộc thi chọn thuật toán chuẩn mật mã luôn là sự kiện quan trọng và lôi cuốn sự chú ý của cộng đồng mật mã quốc tế. Trong cuộc thi này, liêu thuât toán nào sẽ được chọn làm chuẩn hàm băm mới?

Vài nét về hàm băm mật mã 
Hàm băm (Hash function) là phép biến đổi toán học biến một chuỗi bit có độ dài bất kì thành một chuỗi bit có độ dài cố định. Đầu ra của hàm băm được gọi là giá trị băm hay tóm lược thông báo. Hàm băm ra đời trước hết từ nhu cầu phát hiện các sai sót phát sinh khi truyền thông báo như các sai sót do lỗi của thiết bị hay của đường truyền.
Ví dụ đơn giản của hàm băm là tổng kiểm tra (Checksum - tổng kiểm tra được gửi kèm theo thông báo. Phía nhận tính giá trị checksum và so sánh với giá trị nhận được. Nếu hai giá trị không trùng nhau thì có nghĩa là trên đường truyền đã xuất hiện lỗi làm biến đổi nội dung thông báo. Khi đó Phía nhận có thể yêu cầu truyền lại). Nói chung giữa tập hợp các thông báo và tập hợp giá trị băm không tồn tại quan hệ đơn trị, tức có thể tồn tại nhiều thông báo có cùng giá trị băm. Những thông báo có cùng giá trị băm được gọi là các “va chạm” (collision). Bởi vậy, một vấn đề quan trọng khi xây dựng hàm băm là làm sao để xác suất xuất hiện các va chạm càng thấp càng tốt.
Trong số các hàm băm thì hàm băm mật mã (Cryptographic hash function) có vai trò đặc biệt và thường được sử dụng khi có nhu cầu bảo vệ thông tin. Hàm băm mật mã, ngoài các chức năng của hàm băm thông thường, còn thỏa mãn các yêu cầu sau: 1) Là hàm một chiều, tức là biết đầu vào là thông báo M dễ dàng tính giá trị đầu ra h nhưng biết giá trị đầu ra h khó tính được đầu vào M. 2) Khả năng kháng xung đột loại một: Đối với thông báo M1 cho trước không thể tính được thông báo M2 có cùng giá trị băm với M1. 3) Khả năng kháng xung đột loại hai: không có khả năng tính được hai thông báo M1và M2 khác M1 có cùng giá trị băm. Ba tính chất trên đây của hàm băm mật mã làm cho chúng được ứng dụng rộng rãi: sử dụng để đảm bảo tính toàn vẹn của thông điệp, có mặt trong các loại chữ ký số, kiểm tra tính đúng đắn của mật khẩu truy cập; nhờ có tính ngẫu nhiên, hàm băm còn được sử dụng như những bộ tạo các dãy giả ngẫu  nhiên và cấu trúc khối chúng còn là cơ sở cho các thuật toán mã khối. Hàm băm đảm bảo an toàn cho các giao thức kết nối an toàn các trang web, hỗ trợ trong tổ chức quản lý khóa trong thư điện tử an toàn và trong các chương trình mã hóa tiếng nói.... Hàm băm còn được sử dụng trong các mạng riêng ảo để bảo vệ các tên miền DNS. Trong các hệ điều hành máy tính, hàm băm có mặt trong tất cả các cấu trúc đảm bảo an ninh. Nói cách khác trong lĩnh vực máy tính hay mạng, ở đâu có nhu cầu bảo vệ thông tin thì ở đó có mặt hàm băm. Nhiều chuyên gia đã không cường điệu khi nói rằng hàm băm là chú ngựa thồ trong lĩnh vực an ninh thông tin.


Vì sao có  cuộc thi?
Cuộc thi lần này do Viện NIST tổ chức không phải để chọn chuẩn hàm băm nói chung mà là chọn hàm băm thay thế SHA- 1 và SHA- 2 là chuẩn về hàm băm của Mỹ (được đưa vào trong tiêu chuẩn  FIPS 180- 1) và cũng là chuẩn quốc tế. Bởi vậy hàm băm mới sẽ được đặt tên  là SHA- 3.
Nhưng vì sao lại phải tổ chức cuộc thi chọn hàm băm mới thay thế các hàm băm SHA- 1, SHA- 2?
Trước năm 2005, SHA- 1 được coi là bất khả xâm phạm đối với bất kỳ tấn công nào. Nhưng vào tháng 2/2005, tại hội nghị của CRYPTO, nhóm chuyên gia Trung Quốc gồm Xiaoyua, Jigun Lia Yin, Hongbo Yu đã trình bày một tấn công lên SHA- 1 với đầy đủ số vòng lặp 80. Họ đã công bố một cặp xung đột của SHA- 1 với thời gian tìm là 1 giờ 5 phút. Quan trọng hơn là các chuyên gia Trung Quốc đã chọn được chiến lược và phương pháp để vượt qua những chướng ngại lớn nhất trong việc tìm các xung đột trong SHA- 1. Vào tháng 8/2005, tại một hội nghị khác của CRYPTO họ đã trình bày phương án tấn công cải tiến vào SHA- 1 chỉ với 263 phép toán. Kết quả nghiên cứu của các chuyên gia Trung Quốc đã được các nhà mật mã trên thế giới đặc biệt quan tâm và coi đây là sự kiện có ý nghĩa bước ngoặt trong nghiên cứu hàm băm. Một số trung tâm mật mã đã kiểm tra lại và xác nhận kết luận của các nhà mật mã Trung Quốc. Một số khác trực tiếp tham gia tìm kiếm các phương án cải tiến. Tại ASIACRYPT 2006, hai nhà mật mã Cristof Canier và Christan Rexberg đã trình bày phương án tấn công SHA- 1 64 vòng chỉ với 235 phép toán. Báo cáo trên được coi là hay nhất của Hội nghị này. 
Sau sự kiện trên, mặc dù chưa phát hiện một tấn công thực tế nào lên SHA- 1 nhưng NIST vẫn khuyến cáo chuyển sang sử dụng họ hàm băm an toàn hơn là SHA- 2 (bao gồm SHA- 224, SHA- 256, SHA- 384, SHA- 512) và đã dự kiến không sử dụng SHA- 1 trong chữ ký số. Tuy nhiên, nhiều chuyên gia cho rằng do SHA- 2 có nhiều nét giống SHA - 1 nên cũng không thể có triển vọng lâu dài, đã đến lúc cần xem xét lại họ hàm băm này một cách toàn diện. Bởi vậy trong hai năm 2005 - 2006, Viện NIST đã tổ chức nhiều cuộc hội thảo về hàm băm. Kết quả các cuộc hội thảo cho thấy sự cần thiết phải tổ chức một cuộc thi chọn hàm băm mới tương tự như đã làm với tiêu chuẩn mã dữ liệu mới thay thế thuật toán DES những năm trước. Tuy nhiên, nếu như trong cuộc thi chọn tiêu chuẩn mã dữ liệu mới (với kết quả là thuật toán AES), các nhà tổ chức đã có được hệ thống tiêu chí để lựa chọn các ứng cử viên cho thuật toán mới thì đối với hàm băm lại không như vậy. Có thể nói, trong số các cơ sở nguyên thủy của mật mã thì hàm băm còn được hiểu ít nhất, do đó các nhà tổ chức hi vọng cuộc thi này sẽ đạt phương châm “một công đôi việc”, nghĩa là ngoài việc chọn ra được chuẩn hàm băm mới còn có thể xây dựng được các tiêu chí cho chúng và thúc đẩy một bước tiến lý thuyết đáng kể trong lĩnh vực này.
Ngày 2/11/2007, Viện NIST đã chính thức công bố cuộc thi với hy vọng đây là một trong những sự kiện quan trọng nhất trong hoạt động của cộng đồng các nhà  mật mã trong những năm 2007 - 2012 và sẽ huy động được sự tham gia của những bộ óc sắc sảo nhất trong lĩnh vực này.

Kết quả qua hai vòng chọn
Cuộc thi đã thu hút được sự tham gia của rất nhiều nước trên thế giới. Trong các nước châu Á tham gia có Hàn Quốc, Nhật Bản, Trung Quốc và Singapore, đặc biệt giải pháp JH của Singapore đã lọt vào vòng chung kết. Cuộc thi cũng đã thu hút được sự tham gia của nhiều nhà mật mã nổi tiếng như Schneier, Rivesst, Bernstein, Daeme....
Tiến trình cuộc thi về cơ bản đã diễn ra như dự kiến. Đến 31/11/2008 đã có 51 ứng cử viên tham gia ở vòng một. Vào cuối tháng 2/2009, Hội thảo lần thứ Nhất đã được tổ chức. Tại đây, nhóm các tác giả đã trình bày các thuật toán của mình và hội đồng tuyển chọn do NIST đề xuất đã thảo luận để đưa ra được các tiêu chí chọn các ứng cử viên vào vòng 2. Tháng 7/2009, một danh sách gồm 14 ứng cử viên vào vòng 2 đã được xác lập. Đến ngày 10/12/2010, danh sách gồm 5 ứng cử viên vào vòng chung kết đã được công bố. Đó là các thuật toán Blake, Grost, JH, Keccak, Skein.
- Về cấu trúc thuật toán, các ứng cử viên vòng hai được thiết kế theo một trong ba nguyên lý: cấu trúc HAIFA, cấu trúc WP (wide pipe design) và cấu trúc Sponge. Ngoài ra, chúng còn được xem xét dưới các đặc trưng: nguyên lý feistel, lược đồ khóa; ma trận MDS, hộp thế - SBOX, thanh ghi dịch phản hồi FSR.
- Tốc độ xử lý của các giải pháp ứng cử được phân lớp và so sánh với SHA- 2.            
-  Độ an toàn của các giải pháp được đánh giá theo ba đặc trưng cơ bản: Tính kháng xung đột, tính kháng nghịch ảnh loại 2 và tính không phân biệt được với Random Oracle (thiết bị tiên tri ngẫu nhiên). Các ứng cử viên có thể vận dụng các thành tựu nghiên cứu độ an toàn lý thuyết đã có cho các cấu trúc mà các hàm băm được thiết kế theo đó.

Keccak hay Skein sẽ là SHA-3
Vòng chung kết sẽ được tiến hành vào cuối năm 2011, tuy nhiên ngay từ bây giờ nhiều ý kiến đã cho rằng người chiến thắng chỉ có thể là Keccak do nhóm các nhà mật mã người Bỉ đứng đầu là Daemen (người là đồng tác giả của thuật toán AES) thiết kế hoặc là Skein do nhóm người Mỹ đứng đầu là Schneier thiết kế.
Skein được xây dựng trên cơ sở mã khối Threefish làm việc ở chế độ UBI. Quan điểm cơ bản trong thiết Skein là tối ưu hóa bằng cách sử dụng tối thiểu bộ nhớ, bộ vi xử lý bậc 64 và sử dụng tối đa các loại bảng. Hiển nhiên, Skein hướng đến khả năng chống lại mọi tấn công, kể cả các loại tấn công mới nhất như tấn công dựa trên “lựa chọn các thông số có độ dài đượcmở rộng và các giả xung đột”. Về kích thước, Skein làm việc ở các trạng thái kích thước 256, 512, 1024 và nhờ sử dụng bộ xử lý bậc 64 nên có tốc độ gấp đôi bộ xử lý bậc 32. Theo nhóm tác giả trên, các bộ xử lý phổ biến Skein có tốc độ nhanh hơn 2 lần so với SHA- 512, còn Threefish nhanh hơn hai lần AES.
Keccak có số vòng lặp là 18 vòng và kích thước trạng thái thay đổi lần lượt là 25, 50, 100, 200, 400, 800, 1.600 và có hai phương án thực hiện, cả trên bộ xử lí bậc 32 và bậc 64. Các nhà phân  tích cho rằng nhóm thiết kế đã đưa vào cấu trúc của Keccak một loạt giải pháp rất cơ bản và sâu sắc. Trước hết là cấu trúc Sponge. Nhóm tác giả đã quyết định không sử dụng hàm nén dưới dạng một khối riêng và để xây dựng một biến đổi mật mã an toàn họ đã thiết kế một PRP không khóa. Tất cả được gói vào một cấu trúc rất đơn giản được gọi là cấu trúc Sponge. Bên cạnh cấu trúc Sponge các tác giả còn thực hiện các biện pháp như bổ sung khóa mật vào đầu vào của Keccak biến nó thành mã xác thực thông báo, bổ sung khóa mật vào véc tơ khởi đầu công khai và đưa vào chế độ gama có độ dài tùy ý biến cấu trúc Sponge thành mã dòng. Một  điểm đặc biệt nữa của Keccak là coi tiêu chuẩn cần và đủ duy nhất cho tính an toàn là sự không phân biệt được của hàm hash với Random Oracle. Quan điểm này được lập luận như sau: Random Oracle là một hàm lý tưởng mô tả công việc của máy với bộ nhớ vô hạn đáp ứng mọi yêu cầu đưa ra một số ngẫu nhiên lý tưởng.
Chưa ai nói trước được Skein hay Keccak sẽ được chọn làm SHA- 3 nhưng dư luận chung công nhận rằng cả hai đều là thuật toán vạn năng, chúng không chỉ thực hiện phép băm mà còn có thể thực hiện hàng loạt các chức năng mật mã khác, điều này cho phép trên thực tế có thể đơn giản hóa nhiều giao thức mật mã, cả những giao thức đang tồn tại và cả những giao thức đang được thiết kế. Do đó, dù thuật toán nào được lựa chọn thì điều đó đều đánh dấu một bước tiến quan trọng trong nghiên cứu hàm băm.