Chuẩn mật mã nâng cao không chỉ đơnthuần là mã hóa và giải mã thông tin mà còn bao gồm nhiều vấn đề khác nhau cầnđược nghiên cứu và giải quyết như ứng dụng xây dựng hàm băm phục vụ việcc
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN
Học phần:An toàn bảo mật
Hệ thống thông tin
Bài báo cáo:
Tìm hiểu các giải thuật băm SHA-0,1,2,3
Các điểm yếu, các dạng tấn công vào SHA
Cài đặt thử nghiệm SHA1
Giảng viên hướng dẫn:NTT Trang Sinh viên thực hiện: Nhóm 7
Trang 2LỜI MỞ ĐẦU 2
Chương 1:Khái quát về hàm băm mật mã 3
1.1 Khái quát 3
1.2 Phân loại 4
1.3 Mô hình xử lý dữ liệu 6
1.4 Ứng dụng 7
Chương 2: CÁC GIẢI THUẬT HÀM BĂM SHA 8
2.1 Giới thiệu SHA 8
2.2 Các giải thuật SHA 10
2.2.1 SHA-0 10
2.2.2 SHA-1 11
2.2.2 SHA-2 13
2.2.3 SHA-3 20
Giới thiệu về SHA-3 20
Thiết kế SHA-3 21
Chương 3: Các điểm yếu và các dạng tấn công 28
3.1 Các điểm yếu 28
3.2 Các dạng tấn công thường gặp 28
3.2.1 Dạng tấn công Brute-Force 28
3.2.2 Tấn công va chạm (Collision Attack) 29
3.2.3 Tấn công Length Extention 30
3.2.4 Tấn công từ điển: 31
3.2.5 Birthday Paradox 31
KẾT LUẬN 34
TÀI LIÊU THAM KHẢO 34
Trang 3LỜI MỞ ĐẦU
Với sự phát triển ngày càng nhanh chóng của Internet và các ứng dụng giaodịch điện tử trên mạng, nhu cầu bảo vệ thông tin trong các hệ thống và ứng dụngđiện tử ngày càng được quan tâm và có ý nghĩa hết sức quan trọng Vì thế việcnghiên cứu về chuẩn mật mã nâng cao và ứng dụng nó trong các lĩnh vực bảo mậtthông tin là rất cần thiết
Ứng dụng của chuẩn mật mã nâng cao đang được sử dụng ngày càng phổbiến trong nhiều ứng dụng khác nhau Chuẩn mật mã nâng cao không chỉ đơnthuần là mã hóa và giải mã thông tin mà còn bao gồm nhiều vấn đề khác nhau cầnđược nghiên cứu và giải quyết như ứng dụng xây dựng hàm băm phục vụ việcchứng thực nguồn gốc nội dung thông tin ( kỹ thuật chữ ky điện tử), xác thực tínhnguyên vẹn dữ liệu,…
Một trong những hàm băm đang được sử dụng rộng rãi nhất hiện nay là hàmbăm SHA được phát triển bởi cục an ninh quốc gia Mỹ (National Security Agencyhay NSA) Với nhiều ưu điểm và cũng có nhiều phiên bản khác nhau được pháthành Với bài tiểu luận với đề tài “ Tìm hiểu giải thuật băm SHA0,1,2,3 Các điểmyếu, các dạng tấn công vào SHA Cài đặt thử nghiệm SHA1” chúng ta sẽ cùng tìmhiểu về các hàm băm SHA và ứng dụng của nó để hiểu rõ hơn và tiến hành thửnghiệm kiểm chứng
Chương 1:Khái quát về hàm băm mật mã
1.1 Khái quát
Các hàm băm (Hash functions) là các thuật toán để tạo các bản tóm tắt củathông điệp được sử dụng để nhận dạng và đảm bảo tính toàn vẹn của thôngđiệp
Các hàm băm là các hàm công khai được dùng để tạo các giá trị băm haythông điệp rút gọn (message digest)
Chiều dài của thông điệp là bất kỳ, nhưng đầu ra có chiều dài cố định
Trang 4Hình 1.1: Mô hình nén thông tin của hàm băm
Hàm băm là một hàm toán học h có tối thiểu 2 thuộc tính:
Nén (compression): h là một ánh xạ từ chuỗi đầu vào x có chiều dài bất kỳsang một chuỗi đầu ra h(x) có chiều dài cố định n bit
Dễ tính toán (ease of computation): cho trước hàm h và đầu vào x, việc tínhtoán h(x) là dễ dàng
Một số tính chất khác:
Tính xác định: Đầu ra sẽ giống nhau đối với một kết quả nhất định
Không thể đảo ngược: Không thể đảo ngược hàm băm trở lại văn bản đầu vào
Không trùng lặp : Văn bản đầu vào không thể tạo ra cùng một đầu ra
Không thể dự đoán: Một hàm băm ngẫu nhiên tạo ra một giá trị băm duy nhất không thể dự đoán được
1.2 Phân loại
Trang 5Hình 1.2: Phân loại các hàm băm mật mã và ứng dụngPhân loại hàm băm theo khóa sử dụng:
Hàm băm không khóa(unkeyed): đầu vào chỉ là thông điệp có dạng h(x) vớihàm băm h và thông điệp x
VD: MDC, họ hàm băm MD (MD2, MD4, MD5, MD6), họ hàm bămSHA(0,1,2,3), CRC, Checksums,…
Hàm băm có khóa(keyed): đầu vào gồm thông điệp và khóa có dạng h(x, K)với hàm băm h, thông điệp x và khóa bí mật K)
VD: MAC,…
Phân loại hàm băm theo tính năng:
Mã phát hiện sửa đổi (MDC - Modification detection codes):
Trang 6Được sử dụng để tạo chuỗi đại diện cho thông điệp và dùng kết hợp với
các biện pháp khác để đảm bảo tính toàn vẹn của thông điệp, thuộc loại hàm băm không khóa
Hai loại MDC:
o Hàm băm một chiều (OWHF - One-way hash functions): dễ dàngtính giá trị băm, nhưng khôi phục thông điệp từ giá trị băm rất khókhăn
o Hàm băm chống đụng độ (CRHF - Collision resistant hashfunctions): Rất khó tìm được 2 thông điệp trùng giá trị băm
MDC thường được dùng trong quá trình tạo và kiểm tra chữ kí số
Mã xác thực thông điệp (MAC - Message authentication codes)
Được dùng để đảm bảo tính toàn vẹn của thông điệp mà không cần một
biện pháp bổ sung khác, thuộc loại hàm băm có khóa
MAC được dùng trong các giao thức bảo mật SSL/TLS, IPSec,
1.3 Mô hình xử lý dữ liệu
Hình 1.3: Mô hình tổng quát quá trình xử lý dữ liệu của hàm băm
Sau khi tạo ra chuỗi rút gọn Digset có kích thước cố đinh (Fixed length out put), chuỗi này đi qua 1 khâu chuyển đổi định dạng tùy chọn để tạo ra chuỗi băm kết quả (out put)
Trang 7Hình 1.4: Mô hình xử lý dữ liệu của hàm bămGồm 3 giai đoạn:
1) Tiền xử lí: x được nối đuôi thêm một số bit đêm và kích thước khối rồi chia thành các khối có kích thước như nhau và xác định
2) Xử lý lặp: Từng khối dữ liệu xi được xử lí thông qua hàm nén ɰ để tạo đầu ra Hi->Ht
3) Chuyển đổi định dạng Ht thành giá trị băm kết quả h(x) thông qua hàm g
1.4 Ứng dụng
So với các hàm hash thông thường, hàm băm mật mã thường có xu hướng sửdụng nhiều tài nguyên tính toán hơn Vì lí do này, các hàm băm mật mã thường chỉđược dùng trong các bối cảnh cần bảo vệ, chống thông tin giả mạo trước các đốitượng độc hại
Sau đây là một số ứng dụng của hàm băm mật mã:
Trang 8- Kiểm tra tính toàn vẹn của message và file: bằng cách so sánh giá trị bămcủa message trước và sau khi truyền để xác định xem liệu có thay đổi nào đãxảy ra trong quá trình truyền hay không.
- Xác thực mật khẩu: ta có thể lưu trữ mật khẩu bằng giá trị hàm băm của nó
để tăng tính bảo mật Để kiểm tra, mật khẩu được người dùng đưa vào sẽđược băm và so sánh với giá trị băm đã được lưu
- Lưu trữ mật khẩu: Hashing bảo vệ cách mật khẩu được lưu trữ và lưu trữ Thay vì giữ mật khẩu, ở dạng bản rõ Nó được lưu trữ dưới dạng giá trị băm hoặc thông báo Các giá trị băm được lưu trữ trong bảng băm
Kẻ xâm nhập chỉ có thể xem các giá trị băm và không thể đăng nhập vào hệ thống sử dụng giá trị băm
- Bằng chứng công việc (Proof of Work): được sử dụng trong blockchain đểchống lại DoS, spam bằng cách yêu cầu một số công việc từ bên muốn truycập Đặc điểm chính của công việc này là công việc phải có độ khó cao, tốnnhiều thời gian (nhưng khả thi) ở phía người yêu cầu nhưng lại dễ kiểm tracho nhà cung cấp
Chương 2: CÁC GIẢI THUẬT HÀM BĂM SHA
2.1 Giới thiệu SHA
SHA là các thuật giải được chấp nhận bởi FIPS dùng để chuyển một đoạn dữliệu nhất định thành một đoạn dữ liệu có chiều dài không đổi với xác suất khác biệtcao Những thuật giải này được gọi là "an toàn" bởi vì, theo nguyên văn của chuẩnFIPS 1802 phát hành ngày 1 tháng 8 năm 2002:
1.Cho một giá trị băm nhất định được tạo nên bởi một trong những thuật giảiSHA, việc tìm lại được đoạn dữ liệu gốc là không khả thi
2 Việc tìm được hai đoạn dữ liệu khác nhau có cùng kết quả băm tạo ra bởimột trong những thuật giải SHA là không khả thi
Bất cứ thay đổi nào trên đoạn dữ liệu gốc, dù nhỏ, cũng sẽ tạo nên một giátrị băm hoàn toàn khác với xác suất rất cao."
Các thuật giải SHA là SHA-1 (trả lại kết quả dài 160 bit), SHA-224 (trả lạikết quả dài 224 bit), SHA-256 (trả lại kết quả dài 256 bit), SHA-384 (trả lại kết quảdài 384 bit), và SHA-512(trả lại kết quả dài 512 bit) Thuật giải SHA là thuật giảibăm mật được phát triển bởi cục an ninh quốc gia Mĩ (National Security Agency
Trang 9hay NSA) và được xuất bản thành chuẩn của chính phủ Mĩ bởi viện công nghệ vàchuẩn quốc gia Mĩ (National Institute of Standards and Technology hay NIST).Bốn thuật giải sau thường được gọi chung là SHA-2 SHA-3 là phiên bản mới nhấtcủa NIST nó bao gồm 6 phiên bản SHA3-224, SHA3-256, SHA3-384 , SHA3-512,SHAKE128, SHAKE256 các phiên bản là khá giống nhau và được phát hành vàotháng 8 năm 2015.
SHA-1 được sử dụng rộng rãi trong nhiều ứng dụng và giao thức an ninhkhác nhau, bao gồm TLS và SSL, PGP, SSH, S/MIME, và IPSec SHA-1 được coi
là thuật giải thay thế MD5, một thuật giải băm 128 bit phổ biến khác.Hiện nay,SHA-1 không còn được coi là an toàn bởi đầu năm 2005, ba nhà mật mã họcngườiTrung Quốc đã phát triển thành công một thuật giải dùng để tìm được hai đoạn dữliệu nhất định có cùng kết quả băm tạo ra bởi SHA-1.Mặc dù chưa có ai làm đượcđiều tương tự với SHA-2, nhưng vì về thuật giải, SHA-2 không khác biệt mấy sovới SHA-1 nên nhiều nhà khoa học đã bắt đầu phát triển một thuật giải khác tốthơn SHA.NIST cũng đã khởi đầu một cuộc thi phát triển thuật giải băm mới antoàn hơn SHA,giống như quy trình phát triển chuẩn mã hóa tiên tiến (AdvancedEncryption Standardhay AES)
Trang 102.2 Các giải thuật SHA
2.2.1 SHA-0
2.2.1.1 Giới thiệu SHA-0
SHA-0 là phiên bản đầu tiên gồm các đặc tả ban đầu của thuật toán hàm băm
an toàn đã được xuất bản vào năm 1993 dưới tiêu đề Secure Hash Standard , FIPS PUB 180, bởi cơ quan tiêu chuẩn Hoa Kỳ của cơ quan NIST (Viện Tiêu chuẩn và Công nghệ Quốc gia) Nó đã bị NSA thu hồi ngay sau khi xuất bản và bị thay thế bởi bản sửa đổi, được xuất bản vào năm 1995 trong FIPS PUB 180-1 và được gọi
là SHA-1
SHA-0 là một hàm băm dành riêng 160-bit dựa trên nguyên lý thiết kế của MD4 Nó ápdụng mô hình Merkle-Damgard cho một chức năng nén chuyên dụng Đầu vào tin nhắn được đệm và chia thành k khối tin 512-bit Tại mỗi lần lặp lại củahàm nén h, một biến chuỗi 160 bit Ht được cập nhật bằng một khối tin Mt+1, tức là
Ht+1 = h (Ht, Mt+1) Giá trị ban đầu H0 (còn gọi là IV) được xác định trước và Hk là đầu ra của hàm băm
2.2.1.2 Giải thuật SHA-0
Hàm nén SHA-0 được xây dựng dựa trên cấu trúc Davis-Meyer Nó sử dụngmột hàm E như là một mật mã khối với Ht cho đầu vào tin nhắn và Mt+1 cho đầuvào khóa, cần phải có một feed-forward để phá vỡ tính không thể đảo ngược củaquá trình:
32-Wi = Wi-16⨁ Wi-14⨁ Wi-8⨁ Wi-3 với 16 ≤ i ≤ 79
Cập nhật trạng thái: Đầu tiên, biến chuỗi Ht được chia thành 5 từ 32 bit đểđiền vào 5 thanh ghi (A0, B0, C0, D0, E0) Sau đó chuyển đổi tiếp theo được thựchiện 80 lần:
Trang 11Lưu ý rằng tất cả các thanh ghi được cập nhật nhưng thanh ghi Ai+1 chỉ lànhững bản sao quay nên chúng ta chỉ cần xem xét thanh ghi A ở mỗi bước Vì vậy,chúng ta có:
A i+1= A i
≪ 5
+f i¿ ,Ai≪−32)+A i≪−42+ K i +W i
3 41≤i≤60 fM A J = (B𝖠C) ⨁ (B𝖠D) ⨁ (C𝖠D) 0x8fabbcdc
Bảng 2.1: Các hàm Boolean và hằng số trong SHA-0
2.2.2 SHA-1
2.2.2.1 Giới thiệu SHA-1
Hàm băm SHA-1 đã được NIST đưa ra vào năm 1995 như là một Tiêu chuẩn
xử lý Thông tin Liên bang Từ khi xuất bản, SHA-1 đã được chấp nhận bởi nhiềuchính phủ và các tiêu chuẩn ngành an ninh, đặc biệt là các tiêu chuẩn về chữ ký số
mà cần có hàm băm chống xung đột Ngoài việc sử dụng chữ ký số, SHA-1 cũng
đã được triển khai như một thành phần quan trọng trong các chương trình và giaothức mật mã khác nhau, chẳng hạn như xác thực người dùng, hợp đồng khóa và tạo
Trang 12ra số giả ngẫu nhiên Do đó, SHA-1 đã được triển khai rộng rãi trong hầu hết các
hệ thống và sản phẩm bảo mật thương mại
SHA-1 khác với SHA-0 chỉ bằng một vòng quay đơn lẻ trong lịch trìnhthông báo của hàm nén Theo NSA, điều này đã được thực hiện để sửa một lỗhổng trong thuật toán ban đầu làm giảm độ an toàn mã hoá của nó, nhưng họkhông cung cấp thêm lời giải thích nào
SHA1 (Secure Hash Function) được NSA (Mỹ) thiết kế năm 1995 để thaythế cho SHA0;
SHA1 được sử dụng rộng rãi để đảm bảo tính xác thực và toàn vẹn thôngđiệp
2.2.2.2 Giải thuật SHA-1
Hàm băm SHA-1 nhận thông báo có chiều dài nhỏ hơn 2 64 bit và tạo ra giátrị băm 160 bit Thông điệp đầu vào được đệm và sau đó được xử lý trong các khối512-bit trong cấu trúc lặp Damgard / Merkle Mỗi lần lặp lại gọi hàm nén có giá trịràng buộc 160 bit và một khối tin 512 bit và xuất ra một giá trị chuỗi khác 160 bit.Ban đầu giá trị chuỗi (gọi là IV) là một tập các hằng cố định, và giá trị chuỗi cuốicùng là băm của thông báo
Trong phần sau, chúng ta mô tả hàm nén của SHA-1
Đối với mỗi khối 512 bit của tin nhắn có đệm, chia nó thành 16 từ 32-bit,(m0, m1, ,m15) Các từ của tin nhắn lần đầu tiên được mở rộng như sau: for i =
16, , 79, mi = ( mi-3 ⨁ mi-8⨁ mi-14⨁ mi-16) ≪1 Các từ tin nhắn được mở rộng sau
đó được xử lý trong bốn vòng, mỗi vòng gồm 20 bước
Lưu đồ xử lý một vòng của SHA1:
▪ A, B, C, D, E: các từ 32 bit
▪ Wt: khối 32 bit thông điệp đầu vào;
▪ Kt: 32 bit hằng Mỗi sử dụng một hằng khác nhau;
▪ <<n: thao tác dịch trái n bit
▪ F: hàm phi tuyến tính (phụ thuộc vào số vòng lặp t)
Trang 13Hình 2.1 biểu diễn lưu đồ một vòng xử lý của SHA-1, trong đó A, B, C, D, Elàcác từ 32 bit của state, Wt: khối 32 bit thông điệp đầu vào, Kt là 32 bit hằng khácnhau cho 16 mỗi vòng, <<hàm phi tuyến tính.
Hình 2.1: Lưu đồ một vòng xử lý của SHA-1
2.2.2 SHA-2
2.2.2.1 Giới thiệu SHA-2
SHA-2 là một tập hợp các hàm băm mật mã được thiết kế bởi Cơ quan An ninh Quốc gia Hoa Kỳ (NSA).Nó có cấu trúc cấu trúc Merkle–Damgård, là một phương pháp xây dựng các hàm băm mật mã chống va chạm từ các hàm nén một chiều chống va chạm
SHA-2 kế thừa của SHA-1, được phê duyệt và khuyến nghị bởi NIST, SHA-2, bao gồm một gia đình gồm sáu thuật toán với các kích thước băm khác nhau
Trang 14SHA-256 được sử dụng rộng rãi, đặc biệt là bởi các cơ quan chính phủ Hoa Kỳ
để bảo mật dữ liệu nhạy cảm của họ Mạnh hơn nhiều so với SHA-1, nó bao gồm thuật toán băm an toàn hơn nhiều.Công nghệ Blockchain — SHA-256 tham gia vào chức năng chứng minh công việc trong Bitcoin và nhiều loại tiền mã hóa khác
Nó cũng có thể tham gia vào các dự án blockchain dựa trên chứng minh cổ phần
Dữ liệu Chính phủ Hoa Kỳ — Từ năm 2015, Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST) đã khuyến nghị rằng tất cả các cơ quan liên bang nên sử dụng ent lệnh từ gia đình SHA-2 hoặc SHA-3 cho hầu hết các ứng dụng
Kích thước
mã băm(bit)
Kích thướckhối(bit)
Đầu vào Biến khởi
tạo
Số vòng lặp
Trang 15- SHA-512/224 –tương tự như SHA-512, ngoại trừ việc nó tạo ra một băm cắtngắn 224-bit Điều này có nghĩa là nó liên quan đến một quy trình chủ yếu giống nhau, ngoại trừ việc chỉ có 224 bit bên trái được lấy làm băm, trong khi phần còn lại bị loại bỏ
- SHA-512/256 –tương tự như SHA-512, ngoại trừ việc nó tạo ra một băm cắtngắn 256-bit bằng cách chỉ lấy 256 bit bên trái
Hình 2.2: Lưu đồ một vòng lặp của SHA-2Hình biểu diễn lưu đồ 1 lần lặp trong hàm nén của họ SHA-2 Các thànhphần màu xanh thực hiện các hoạt động sau:
Trang 16Vòng quay theo chiều bit sử dụng các hằng số khác nhau cho SHA-512 Các
số đã cho là dành cho SHA-256 Hình ⊞ là toán tử cộng modulo 232 cho SHA-256
và 264 cho SHA-512
2.2.2.2 Các phiên bản
2.2.2.2.1 SHA-256
SHA-256 (một nhánh của hàm băm bảo mật SHA-2) là thuật toán bảo mật
256 bit và dùng để tạo ra các hàm băm không thể đảo ngược và duy nhất Số lượnghàm băm có thể càng lớn, thì xác suất để 2 giá trị có thể tạo ra cùng 1 giá trị hàmbăm càng nhỏ
Thuật toán SHA-256 tạo ra một mã băm cố định 256 bit (32 byte) gần nhưduy nhất Một chuỗi băm được tạo ra không thể được tính toán trở lại Điều nàylàm cho nó phù hợp để xác nhận mật khẩu, chống giả mạo, chữ ký số,… Ứng dụngnổi tiếng nhất của SHA-256 là hệ thống tiền tệ Bitcoin
Các bước thực hiện của SHA-256:
- Các lưu ý:
Trang 17+ Tất cả các biến là số nguyên không dấu 32 bit và phép công được tính theomodulo 232
+ Đối với mỗi vòng, có một hằng số vòng k[i] và một mục nhập trong mảngLịch trình thông báo w[i],
+ Hàm nén sử dụng 8 biến làm việc, từ a đến h.
+ Quy ước big-endian được sử dụng khi biểu thị các hằng số trong mã giảnày, và khi phân tích cú pháp tin nhắn sẽ chặn dữ liệu từ byte thành từ
- Bước 1: Khởi tạo giá trị băm(32 bit đầu tiên của phần phân đoạn căn bậc hai của
8 số nguyên tố đầu tiên 2 19):
0xe9b5dba5
0x3956c25b
0x59f111f1
0x923f82a4
0xab1c5ed50xd807
aa98
0x1283
5b01
0x243185be
0x550c7dc3
0x72be5d74
0x80deb1fe
0x9bdc06a7
0xc19bf1740xe49b
69c1
0xefbe4
786
0x0fc19dc6
0x240ca1cc
0x2de92c6f
0x4a7484aa
0x5cb0a9dc
0x76f988da0x983e
5152
0xa831c
66d
0xb00327c8
0xbf597fc7
0xc6e00bf3
0xd5a79147
0x06ca6351
0x142929670x27b7
0a85
0x2e1b
2138
0x4d2c6dfc
0x53380d13
0x650a7354
0x766a0abb
0x81c2c92e
0x92722c85