Tiểu luận tìm hiểu về hàm băm RIPEMD Tiểu luận tìm hiểu về hàm băm RIPEMD Tiểu luận tìm hiểu về hàm băm RIPEMD Tiểu luận tìm hiểu về hàm băm RIPEMD Tiểu luận tìm hiểu về hàm băm RIPEMD Tiểu luận tìm hiểu về hàm băm RIPEMD Tiểu luận tìm hiểu về hàm băm RIPEMD
Trang 1CÀI ĐẶT THUẬT TOÁN RIPEMD
Giảng Viên: TS.Trần Tuấn Anh
Thực hiện: Sinh viên AT8C
1 Lê Xuân Đoàn
2 Bùi Đức Thiện
Trang 2Ý KIẾN GIẢNG VIÊN
M C L C ỤC LỤC ỤC LỤC LỜI NÓI ĐẦU 1
CHƯƠNG 1 HÀM BĂM MẬT MÃ 2
1.1 Tổng quan về hàm băm mật mã 2
1.2 Định nghĩa tổng quát của hàm băm 2
1.3 Các tính chất của hàm băm mật mã 3
Trang 31.3.1 Tính kháng tiền ảnh (Preimage resistance) 3
1.3.2 Tính kháng tiền ảnh thứ hai (2nd - Preimage resistance) 3
1.3.3 Tính kháng xung đột (Collision resistance) 3
1.4 Phân loại hàm băm mật mã 3
1.5 Cấu trúc của thuật toán hàm băm 4
1.6 Ứng dụng của hàm băm mật mã 5
1.7 Các hàm băm mật mã hiện nay 5
CHƯƠNG 2 HÀM BĂM RIPEMD 8
2.1 Tổng quan về hàm băm RIPEMD 8
2.2 RIPEMD-128 8
2.3 RIPEMD-160 9
CHƯƠNG 3 PHÂN TÍCH THIẾT KẾ VÀ CÀI ĐẶT RIPEMD 11
3.1 Phân tích 11
3.2 Thiết kế 14
3.3 Cài đặt 17
KẾT LUẬN 22
TÀI LIỆU THAM KHẢO 23
Trang 4LỜI NÓI ĐẦU
Ngày nay với việc ứng dụng của công nghệ thông tin càng ngày càng phổ biến rộngrã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àngngày của chúng ta đều có thể thực hiện với sự hỗ trợ của máy vi tính và mạnginternet(từ học tập giao dịch …) và máy tính và internet đã trở thành một phần khó cóthể tách rời với nhịp sống hiện đại ngày nay Nhưng một vấn đề khó đặt ra là làm sao
để giữ được bí mật thông tin cho đến khi chúng đến nơi mà chúng cần đến Nhiều tổchức cá nhân đã tìm kiếm và đưa ra giải pháp bảo mật phương pháp mã hóa khá cao.Như vậy mã hóa thông tin sẽ đảm bào cho thông tin tránh bị thay đổi hoặc sao chép.Trong bài nghiên cứu này nhóm sẽ trình bày về vấn đề mã hóa thông tin sử dụng hàmbăm, tìm hiểu tổng quan về hàm băm và đi sâu tìm hiểu phân tích thiết kế cài đặt thuậttoán mã hóa RIPEMD
Trang 5CHƯƠNG 1 HÀM BĂM MẬT MÃ
1.1 Tổng quan về hàm băm mật mã
Hiểu theo nghĩa đơn giản, hàm băm là hàm cho tương ứng một mảng dữ liệulớn với một mảng dữ liệu nhỏ hơn mà được dùng rộng rãi trong nhiều ứng dụngtin học, không chỉ thuộc phạm vi mật mã Ở đây, chúng ta chỉ xét đến các hàmbăm trong phạm vi các hàm băm mật mã, xem xét cụ thể đến các ứng dụng củachúng trong việc đảm bảo tính toàn vẹn của dữ liệu
Các hàm băm nhận đầu vào là một chuỗi bit có chiều dài hữu hạn tùy ý vàtạo ra một chuỗi bit có chiều dài cố định bằng n bit (n > 0) gọi là mã băm (hashcode)
Trong mã hóa, mã băm được xem như là ảnh đại diện thu gọn (compactrepresentative image) của một chuỗi bit có độ dài hữu hạn tùy ý và được dùng
để nhận diện cho chuỗi bit đó Kết hợp với công cụ tạo chữ ký số, các hàm bămđược dùng cho việc đảm bảo tính toàn vẹn của dữ liệu Trong lược đồ chữ ký số,
mã băm của chuỗi bit được tính ở thời điểm T1 và được bảo vệ để chống lại mọi
sự thay đổi bất hợp pháp Tại thời điểm T2 sau đó, để kiểm tra xem chuỗi bit x có
bị thay đổi hay không, người ta thường tính giá trị hàm băm của chuổi bit này tại
thời điểm T2, mà ta ký hiệu là xT2, sau đó so sánh giá trị vừa tính với mã băm tại
thời điểm T1 Nếu 2 giá trị bằng nhau thì người ta chấp nhận chuổi bit tại thờiđiểm T2 trùng khớp với chuổi bit tại thời điểm T1, tức chuỗi bit x vẫn chưa bị thayđổi Như vậy vấn đề bảo đảm tính toàn vẹn của chuỗi bit có chiều dài tùy ý đượcthay bằng việc bảo vệ sự toàn vẹn của chuỗi bit có chiều dài cố định
1.2 Định nghĩa tổng quát của hàm băm
Hàm h(x) được gọi là một hàm băm nếu nó thoả mãn hai tính chất sau:
Trang 6Nén gọn (Compression): Hàm h(x) tương ứng chuỗi bit đầu vào x có
chiều dài hữu hạn tuỳ ý vào chuỗi bit y = h(x) có chiều dài cố định n >0
cho trước
Dễ tính toán (Easy of computation): Với mọi chuỗi bit đầu vào x có
chiều dài hữu hạn tuỳ ý, h(x) được tính toán dễ dàng.
1.3 Các tính chất của hàm băm mật mã
Một hàm băm mật mã lý tưởng có các tính chất sau :
1.3.1 Tính kháng tiền ảnh (Preimage resistance)
Với mọi đầu ra y cho trước, không thể tìm được bất kỳ dữ liệu đầu vào x sao cho h(x) = y (hay không thể tìm được một thông điệp từ một giá trị băm cho trước).
1.3.2 Tính kháng tiền ảnh thứ hai (2 nd - Preimage resistance)
Với mọi dữ liệu đầu vào x cho trước và y = h(x), không thể tính toán để tìm rađược giá trị x„ x sao cho h(x„)=h(x) (hay không thể tìm ra 2 thông điệp khác nhau mà
có cùng giá trị băm)
1.3.3 Tính kháng xung đột (Collision resistance)
Không thể tính toán để tìm được hai dữ liệu đầu vào x và x„ phân biệt sao chochúng có cùng giá trị băm h(x)=h(x„) (hay không thể sửa được một thông điệp màkhông làm thay đổi giá trị băm của nó)
Dựa trên tham biến đầu vào của các hàm băm, các hàm băm mật mã đượcphân thành hai lớp:
Lớp các hàm băm sử dụng khoá (keyed hash functions), chẳng hạn nhưMAC (Message Authentication Codes): nhận hai giá trị đầu vào
o Thông điệp cần tính giá trị băm
o Khoá bí mật để băm văn bản theo đúng chuẩn quy định
Trang 7 Lớp các hàm băm không sử dụng khoá (unkeyed hash functions): chỉnhận duy nhất một giá trị đầu vào là Thông điệp (message).
Trong lớp các hàm băm không sử dụng khoá thì MDCs (ModificationDetection Codes – mã nhận diện sự thay đổi) là lớp con của lớp này Lớp hàmnày lại tiếp tục phân thành các lớp con nhỏ hơn
- Hàm băm một chiều (One-Way Hash Functions - OWHFs): các
hàm trong lớp này đều thoã tính chất là với mọi mã băm biết trước, khôngthể tính toán để tìm được chuỗi bit đầu vào có mã băm bằng với mã băm
đã cho
Hàm băm kháng xung đột (Collision Resistant Hash Functions CRHFs): các hàm trong lớp này thoã mãn tính chất không thể tính
-toán để tìm ra hai chuỗi bit có cùng giá trị băm
1.5 Cấu trúc của thuật toán hàm băm
Khối dữ liệu đầu vào x có chiều dài tuỳ ý sẽ được phân thành các khối con liêntiếp x1, x2, …, xm (với xi có chiều dài cố định là r) Tuy nhiên do chiều dài khối banđầu là tùy ý nên ta cần thêm vào dữ liệu ban đầu một số bit phụ sao cho tổng số bitcủa khối dữ liệu x sau khi thêm vào sẽ là bội số của r Ngoài ra số bit phụ thêm vàothường chứa một khối bit xác định chiều dài thực sự của khối dữ liệu khi chưa thêmcác bit phụ Sau đó ta lần lượt cắt từng khối con r bit từ khối x
Mỗi khối con r bit xi ta thực hiện một hàm nén của hàm băm h(x) được ký hiệu
là f Tại bước thứ i, hàm nến f nhận dữ liệu đầu vào là xi và kết quả trung gian củabước trước đó để tạo đầu ra là kết quả trung gian bước thứ i, ký hiệu là Hi Kết quảtrung gian tại mỗi bước Hi là một chuổi bit có độ dài cố định bằng n>0 Nếu ký hiệu
IV (init value) là giá trị khởi tạo ban đầu cho H0, thì quá trình lặp xử lý dãy các khốicon x1,x2,…, xm được mô tả như sau:
H 0 =IV
H 1 = f(H i-1, x i ), (i=1,…,m)
h(x) = g(H m )
Trang 8Hi là kết quả trung gian sau bước thứ i, là các biến dây chuyền Hàm g(x)
ánh xạ biến dây chuyền cuối cùng để tạo ra mã băm kết quả Và thông thường,
g(x) được chọn là ánh xạ đồng nhất: g(Hm)o Hm Khâu then chốt trong xây dựng hàm băm là thiết kế hàm nén f.
1.6 Ứng dụng của hàm băm mật mã
Một ứng dụng điển hình của một hàm băm mật mã học như sau: Alice đưa choBob một câu đố khó và tuyên bố rằng cô ấy đã giải được rồi Bob muốn tự giải,nhưng cũng muốn chắc chắn là Alice đúng là đã giải được Do đó, Alice viết đáp án,gắn thêm một nonce ngẫu nhiên, tính giá trị băm của nó, và đưa kết quả băm cho Bob(trong khi vẫn giữ bí mật đáp án và nonce) Bằng cách này, khi Bob tự giải xong,Alice có thể chứng minh rằng cô đã có đáp án từ trước bằng cách đưa nonce choBob Trong thực tiễn, Alice và Bob thường là các chương trình máy tính, và bí mậtthường là cái gì đó không dễ lừa bằng một lời giải cho câu đó Ứng dụng trên được
gọi là một hệ thống tin cậy (commitment scheme).
Một ứng dụng quan trọng khác của các hàm băm bảo mật là sự kiểm tra tínhtoàn vẹn của thông điệp Ví dụ, việc xác định xem một file hay một thông điệp có bịsửa đổi hay không có thể thực hiện bằng cách so sánh tóm tắt được tính trước và saukhi gửi (hoặc một sự kiện bất kỳ nào đó) Còn có thể dùng tóm tắt thông điệp làmmột phương tiện đáng tin cậy cho việc nhận dạng file
Một ứng dụng có liên quan là kiểm tra mật khẩu Mật khẩu thường khôngđượclưu dưới dạng văn bản rõ (clear text), mà ở dạng tóm tắt Để xác thực một ngườidùng, mật khẩu do người đó nhập vào được băm và so sánh với kết quả băm đượclưu trữ
Do các lý do cả về bảo mật và hiệu năng chương trình, đa số các thuật toánchữ ký số nói rằng chỉ có tóm lược của thông điệp, chứ không phải toàn văn thôngđiệp, được "ký" Các hàm băm còn có thể được dùng để tạo các bit giả ngẫu nhiên
(pseudorandom).
1.7 Các hàm băm mật mã hiện nay
Trong danh sách dài các hàm băm mật mã dưới đây, có một số hàm băm đượccho là dễ bị tổn thương và không nên sử dụng Ngay cả khi một hàm băm chưa bị
Trang 9phá vỡ, một tấn công thành công đối với một biến thể yếu đó có thể làm giảm sự tựtin của các chuyên gia và dẫn đến loại bỏ nó Ví dụ, vào tháng 8 năm 2004 người ta
đã tìm ra những điểm yếu của một vài hàm băm phổ biến vào thời đó, bao gồm
SHA-0, RIPEMD, và MD5 Điều này đã đặt ra câu hỏi an ninh lâu dài của các thuậttoán sau này được bắt nguồn từ những hàm băm này - đặc biệt, SHA-1 (một phiênbản mạnh của SHA-0), RIPEMD-128, và RIPEMD-160 (cả hai phiên bản mạnh củaRIPEMD) Vì vậy, cả SHA-0 và RIPEMD đều không được sử dụng rộng rãi kể từkhi chúng được thay thế bởi các phiên bản mạnh
Thuật toán Kích thước đầu ra Kích
thước trạng thái trong
Kích thước khối
Thông điệp tối đa
Kích thước word
Xung đột
Khả năng lớn
Trang 11CHƯƠNG 2 HÀM BĂM RIPEMD
2.1 Tổng quan về hàm băm RIPEMD
RIPEMD (RACE Integrity Primitives Evaluation Message Digest) là một họ của hàm băm mật mã được phát triển ở Leuven- Bỉ bởi Hans Dobbertin, Antoon Bosselaers và Bart Preneel tại nhóm nghiên cứu COSIC tại Katholieke Universiteit Leuven và lần đầu tiên được xuất bản vào năm 1996 RIPEMD được dựa trên các nguyên tắc thiết kế được sử dụng trong MD4, nhưng hiệu năng hoạt động phổ biến hơn MD4
2.2 RIPEMD-128
RIPEMD - 128 là một hàm băm 128 -bit sử dụng xây dựng như mở rộng củaThuật toán Merkle Damgard : hàm băm được xây dựng bằng cách duyệt một chứcnăng nén 128 -bit mà mất như một đầu vào 512 -bit với đẩu ra là 128 bit
Các chức năng nén RIPEMD - 128 dựa trên MD4 , với các đặc thù mà nó sửdụng hai trường hợp song song của nó, Chúng ta phân biệt hai chi nhánh tính toán củanhánh trái và nhánh phải và chúng ta hiển thị bởi Xi (resp Yi) 32 bit của nhánh trái
(resp right branch).Quá trình này sẽ được cập nhật trong bước i của hàm nén Quá
trình này bao gồm 64 bước chia thành 4 vòng 16 bước từng ở cả hai chi nhánh cụ thể
về quá trình:
Khởi tạo: Các đầu vào 128 -bit chuỗi cvi biến được chia thành 4 từ hi mỗi 32 bit, sẽ
sử dụng để khởi tạo các nhánh trái và phải 128 -bit trạng thái nội bộ :
Trang 12Mở rộng tin: Khối tin đầu vào 512 -bit được chia thành 16 từ Mi của mỗi 32 bit mỗi
từ Mi sẽ được sử dụng một lần trong mỗi vòng theo một thứ tự hoán vị ( tương tự nhưMD4 ) và cho cả 2 nhánh
Chức năng của từng bước: Tại mỗi bước i ,sổ đăng ký Xi+1 và Yi+1 được cập nhật
với các chức năng f1 j và f r j điều đó phụ thuộc vào những vòng j trong mà i thuộc về:
Kết thúc quá trình: Một quyết toán và một feed-forward được áp dụng khi tất cả 64
bước đã được tính toán trong cả 2 chi nhánh Bốn 32 -bit từ hi' soạn ra chuỗi biến cuốicùng đã thu được bằng cách :
Có ba lý chính để xem đây là một sự thay đổi tốt :
Một kết quả băm 128 -bit không cung cấp đủ bảo vệ nữa, một cuộc tấn côngbrute force vào hàm 128 bit chỉ đòi hỏi 264 hoặc 2.1019 giá trị của hàm Năm
1994 Paul van Oorschot và Mike Wiener cho thấy việc brute- lực lượng này cóthể được thực hiện trong vòng chưa đầy một tháng với một khoản đầu tư $10.000.000
Trong nửa đầu năm 1995 Hans Dobbertin tìm thấy va chạm đối với một phiênbản của RIPEMD hạn chế đến hai vòng cùng của ba Sử dụng kỹ thuật tương tự
Trang 13được sản xuất Hans vào mùa thu năm 1995 cho các va chạm (tất cả 3 vòng )MD4 Cuộc tấn công vào MD4 chỉ đòi hỏi một vài giây trên một máy tính , vàvẫn còn để lại một ít tự do để lựa chọn các tin nhắn, cầm quyền rõ ràng ra MD4như là một hàm băm kháng va chạm Ngay sau đó , vào mùa xuân năm 1996,Hans cũng tìm thấy va chạm cho các chức năng nén MD5 Mặc dù chưa được
mở rộng đến va chạm với MD5 bản thân , cuộc tấn công này phôi nghi ngờnghiêm trọng về sức mạnh của MD5 là một vụ va chạm
Crypto 2004 Xiaoyun Wang , Dengguo Feng , Xuejia Lai và Hongbo Yu tìmthấy sự xung đột trong: MD4, MD5, RIPEMD, and the 128-bit version ofHAVAL
RIPEMD - 160 là một phiên bản được tăng cường của RIPEMD với một kếtquả băm 160 -bit , và dự kiến sẽ được an toàn trong mười năm tới hoặc hơn Triết lýthiết kế là xây dựng càng nhiều càng tốt về kinh nghiệm thu được bằng cách đánh giáMD4 , MD5 , và RIPEMD Giống như người tiền nhiệm của nó , RIPEMD - 160được điều chỉnh cho bộ vi xử lý 32 -bit , mà chúng ta cảm thấy sẽ vẫn quan trọngtrong thập kỷ tới
RIPEMD - 256 và RIPEMD - 320 là phần mở rộng tùy chọn tương ứng choRIPEMD - 128 và RIPEMD - 160 , và được dành cho các ứng dụng của các hàm băm
mà đòi hỏi một kết quả hash lâu hơn mà không cần một mức độ bảo mật lớn hơn
Trang 14CHƯƠNG 3 PHÂN TÍCH THIẾT KẾ VÀ CÀI ĐẶT RIPEMD
3.1 Phân tích
hình 3.1 Sơ đồ thuật toán
Trang 15Mô tả thuật toán
Input : Thông điệp (văn bản) có độ dài tùy ý
Ouput: Bản băm,đại diện cho văn bản gốc,độ dài cố định ( phụ thuộc vào thuật toán
RIPEMD mà bản băm có kích thước 128 bit,160 bit,256 bit,320 bit)
Giả sử thông điệp đầu vào là a có độ dài b ( b có thể bằng 0)
Phân tích thuật toán RIPEMD-160
RIPEMD-160 nén một chuỗi đầu vào kích thước tùy ý bằng cách chia thànhkhối của mỗi 512 bit Mỗi khối được chia thành 16 chuỗi 4 byte mỗi,và mỗi chuỗi 4-byte đó được chuyển đổi thành một từ 32-bit
Để đảm bảo rằng kích thước tổng số đầu vào là một bội số của 512 bit,đầu vàođược đệm thêm chuỗi n các số 0 ( 0 < n < 511) Thông điệp đầu vào sẽ được xử lí qua
5 vòng song song Kết quả của RIPEMD-160 được chứa trong 5 từ 32 bit
Hoạt động của thuật toán
Trang 16Xác định rõ hơn các hoán vị π bằng cách thiết lập π (i) = 9i + 5 (mod 16) Thứ tự của các thông điệp được cho bởi bảng sau:
Các hàm Logic được xác định như sau
Các hàm Logic được áp dụng như sau
4 :
Những thay đổi
Trang 175 :
Các hằng số
Phân tích thuật toán RIPEMD-128
RIPEMD-128 có 1 vài sự thay đổi đối với RIPEMD-160
Thông điệp đầu vào sẽ được xử lí qua 4 vòng song song Kết quả của
RIPEMD-128 được chứa trong 4 từ 32 bit
Trang 182: Xây dựng các vòng xử lí chuỗi đầu vào
RIPEMD-160 : Gồm 5 vòng song song (file : rmd160.h source code)
RIPEMD-128 : Gồm 4 vòng song song (file : rmd128.h source code)
3: Xây dựng hàm xử lí băm chuỗi của mỗi thuật toán
RIPEMD-160(file : rmd160.c source code)
RIPEMD-128(file rmd128.c source code)
4: Xây dựng các hàm băm file,băm chuỗi,và kiểm tra hiệu suất thuật toán
( hashtest.c source code)
5:Chạy chương trình cài đặt
Trang 19RIPEMD-128
Trang 203.3 Cài đặt
- Sử dụng ngôn ngữ lập trình C ,viết mã trên phần mềm C-free
Kết quả băm 1 vài thử nghiệm
RIPEMD-160:
""
Trang 223.4Phương pháp kiểm tra tính chính xác của cài đặt
1:Sử dụng hệ thống website online để kiểm tra
http://crypo.in.ua/tools/eng_ripemd.php
https://quickhash.com/