Khóa luận Nghiên cứu và xây dựng hạ tầng khóa công khai

Trong kỷ nguyên của công nghệ thông tin, tính phổ biến rộng rãi của Internet một mặt đem lại nhiều ứng dụng tiện lợi, thú vị và dần thay thế các hoạt động truyền thống trong thế giớ thực; mặt khác nó đặt ra các vấn đề về sự an toàn, tính tin cậy của những giao dịch trên Internet. Cơ sở hạ tầng khóa công khai (PKI) có thể đáp ứng, giải quyết những vấn đề cơ bản nhất cho những yêu cầu trên. Dựa trên các dịch vụ cơ bản về chứng thực số và chữ ký số, một PKI chính là bộ khung của các chính sách, dịch vụ và phần mềm mã hóa, đáp ứng nhu cầu bảo mật của người sử dụng. Không chỉ nằm trong lĩnh vực thương mại điện tử, chứng thực số hiện còn được sử dụng như một dạng chứng minh thư cá nhân. Tại các nước công nghệ phát triển, chứng thực số CA được tích hợp vào các chip nhớ nằm trong thẻ căn cước, thẻ tín dụng để tăng cường khả năng bảo mật, chống giả mạo, cho phép chủ thẻ xác thực danh tính của mình trên nhiều hệ thống khác nhau, chẳng hạn như xe bus, thẻ rút tiền ATM, kiểm soát hải quan, ra vào chung cư .v.v. Với các đặc điểm nổi bật như không thể giả mạo, chứng thực nguồn gốc xuất xứ, các quốc gia phát triển đều đã sử dụng chứng thực số như một bằng chứng pháp lý từ rất sớm. Đây là yếu tố rất quan trọng để có thể phát triển thương mại điện tử, vì không ai dám mạo hiểm với tiền của mình, khi họ chưa chắc chắn được rằng các hoạt động đó có được đảm bảo, và có được pháp luật công nhận hay không. Trong bản khóa luận tốt nghiệp này, tác giả xin trình bày tổng quát về cơ sở hạ tầng khóa công khai và ứng dụng của nó trong thương mại điện tử. Qua đó trình bày một bản platform mô phỏng hoạt động của một hạ tầng khóa công khai (PKI) cơ bản.

doc52 trang | Chia sẻ: tuandn | Lượt xem: 2287 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Khóa luận Nghiên cứu và xây dựng hạ tầng khóa công khai, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Trần Quang Thuận NGHIÊN CỨU VÀ XÂY DỰNG HẠ TẦNG KHÓA CÔNG KHAI KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành : Công nghệ thông tin HÀ NỘI - 2010 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Trần Quang Thuận NGHIÊN CỨU VÀ XÂY DỰNG HẠ TẦNG KHÓA CÔNG KHAI KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành : Công nghệ thông tin Cán bộ hướng dẫn: PGS – TS.Hồ Sỹ Đàm Cán bộ đồng hướng dẫn: TS.Lê Đức Phong HÀ NỘI - 2010 LỜI CẢM ƠN Tôi xin gửi lời cảm ơn chân thành nhất tới PGS.TS Hồ Sĩ Đàm, TS. Lê Đức Phong. Những người thầy đã cho tôi những định hướng và những ý kiến rất quý báu để tôi hoàn thành được khóa luận tốt nghiệp này. Tôi xin tỏ lòng biết ơn sâu sắc tới các thầy cô, bạn bè đã dìu dắt, giúp đỡ tôi tiến bộ trong suốt quá trình làm khóa luận tốt nghiệp. Xin cảm ơn gia đình và bè bạn, những người luôn khuyến khích và giúp đỡ tôi trong mọi hoàn cảnh khó khăn. Tôi xin cảm ơn bộ môn Truyền Thông và Mạng Máy Tính, khoa Công Nghệ Thông Tin trường Đại Học Công Nghệ-Đại Học Quốc Gia Hà Nội đã hết sức tạo điều kiện cho tôi trong quá trình học, làm và hoàn thành khóa luận này. M ỤC L ỤC TÓM TẮT KHÓA LUẬN Khóa luận “Hạ tầng khóa công khai (PKI), vấn đề cấp phát chứng thực số và ứng dụng trong thương mại điện tử”. Hạ tầng khóa công khai là một bộ khung cơ bản để xây dựng mô hình an ninh, bảo mật trong thương mại điện tử. Tìm hiểu vai trò của chứng thực số trong hạ tầng khóa công khai. Vai trò của chứng thực số trong các giao dịch trực tuyến. Người sử dụng, ngoài hình thức bảo mật thông thường như mật khẩu, cũng phải dùng một chứng thực số cá nhân để khẳng định danh tính của mình, xác nhận các hoạt động giao dịch của mình với dịch vụ ngân hàng, thương mại điện tử, dao dịch chứng khoán... Chứng thực số sẽ giúp nhà quản lý đảm bảo rằng khách hàng không thể chối cãi các giao dịch của mình, khi họ đã dùng chứng thực số. Từ đó đặt ra các vấn đề quản lý (cấp phát,xác thực) thu hồi và cấp phát lại chứng thực số. Trong khóa luận tôi sẽ trình bày về các vấn đề chính xoay quanh vấn đề hạ tầng khóa công khai (PKI). Phần đầu của khóa luận (chương 1) giới thiệu vấn đề và cách tiếp cận giải quyết vấn đề sẽ trình bày khái quát về một vài khái niệm cơ bản về mật mã học khóa công khai, hạ tầng khóa công khai ; các khái niệm cơ bản về thuật toán và lý thuyết độ phức tạp; một vài công cụ nền tảng của mật mã học khóa công khai (mã hóa thông tin, hàm băm, chữ ký số). Chương 2 của khóa luận sẽ làm rõ hơn các khái niệm, các vấn đề cơ bản bên trong một hạ tầng khóa công khai (chứng thực số, các dịch vụ đăng ký, cấp phát, xác thực, thu hồi, … khóa công khai); ứng dụng của hạ tầng khóa công khai trong giao dịch điện tử ngày nay ; và một vài hệ thống hạ tầng khóa công khai trong thực tế. Chương 3 đặc tả một hạ tầng khóa công khai đơn giản và Kết Luận. DANH MỤC TỪ VIẾT TẮT PKI Public Key Infrastructure CA Certificate Authority RSA Rivest Shamir Adleman DSA Digital Signature Algorithm MD5 Message Digest 5 RA Registration Authority SHA Secure Hash Algorithm SHS Secure Hash Standard H Hash function RFC Request For Comments DANH MỤC HÌNH VẼ VÀ BẢNG Hình 1.1: Cấp phát khóa riêng khóa công khai Hình 1.2: Mã hóa thông tin Hình 1.3: Tạo và xác thực chữ ký số Hình 1.4 : Mô hình xây dựng PKI cơ bản Bảng 1.5 : mô hình xử dụng xác thực  Hình 2.1 : Đặc điểm của các thuật toán băm SHA Bảng 2.2 :So sánh thời gian tạo khóa, tạo chữ ký và xác nhận chữ ký của RSA với DSA Hình 2.3 : Thời gian xác nhận chữ ký của RSA và DSA Hình 2.4 : Thời gian tạo chữ ký của RSA và DSA Hình 2.5 : Thời gian xác nhận chữ ký của RSA và DSA Hình 2.6 : Mô hình phân cấp Hình 3.1 : Hàm tạo cặp khóa riêng và khóa công khai Hình 3.2 : Mô phỏng tạo khóa Hình 3.3 : Tạo chữ ký số Hình 3.4 : Form nhập thông tin của client Hình 3.5 : Thông báo trả về khi kết quả gửi thông tin thành công Hình 3.6 : Xác thực khóa công khai và chữ ký số Hình 3.7 : cấp phát chứng thực số Hình 3.8 : Kiểm tra thông tin và cấp phát chứng thực số Hình 3.9 : Xác thực chứng thực số Hình 3.10 : Form tìm kiếm, sửa, xóa thông tin chứng thực số Hình 3.11 : Kiểm tra và thu hồi chứng thực số hết hạn sử dụng Mở Đầu Trong kỷ nguyên của công nghệ thông tin, tính phổ biến rộng rãi của Internet một mặt đem lại nhiều ứng dụng tiện lợi, thú vị và dần thay thế các hoạt động truyền thống trong thế giớ thực; mặt khác nó đặt ra các vấn đề về sự an toàn, tính tin cậy của những giao dịch trên Internet. Cơ sở hạ tầng khóa công khai (PKI) có thể đáp ứng, giải quyết những vấn đề cơ bản nhất cho những yêu cầu trên. Dựa trên các dịch vụ cơ bản về chứng thực số và chữ ký số, một PKI chính là bộ khung của các chính sách, dịch vụ và phần mềm mã hóa, đáp ứng nhu cầu bảo mật của người sử dụng. Không chỉ nằm trong lĩnh vực thương mại điện tử, chứng thực số hiện còn được sử dụng như một dạng chứng minh thư cá nhân. Tại các nước công nghệ phát triển, chứng thực số CA được tích hợp vào các chip nhớ nằm trong thẻ căn cước, thẻ tín dụng để tăng cường khả năng bảo mật, chống giả mạo, cho phép chủ thẻ xác thực danh tính của mình trên nhiều hệ thống khác nhau, chẳng hạn như xe bus, thẻ rút tiền ATM, kiểm soát hải quan, ra vào chung cư .v.v. Với các đặc điểm nổi bật như không thể giả mạo, chứng thực nguồn gốc xuất xứ, các quốc gia phát triển đều đã sử dụng chứng thực số như một bằng chứng pháp lý từ rất sớm. Đây là yếu tố rất quan trọng để có thể phát triển thương mại điện tử, vì không ai dám mạo hiểm với tiền của mình, khi họ chưa chắc chắn được rằng các hoạt động đó có được đảm bảo, và có được pháp luật công nhận hay không. Trong bản khóa luận tốt nghiệp này, tác giả xin trình bày tổng quát về cơ sở hạ tầng khóa công khai và ứng dụng của nó trong thương mại điện tử. Qua đó trình bày một bản platform mô phỏng hoạt động của một hạ tầng khóa công khai (PKI) cơ bản. Chương 1 : Giới Thiệu Tìm hiểu Mật mã học khoá công khai Mật mã học khoá công khai  Mật mã học khóa công khai (Phi đối xứng) là gì  là một chuyên ngành của mật mã học cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó. Điều này được thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học với nhau là khóa công khai và khóa cá nhân (hay khóa bí mật). Trong mật mã học khóa công khai, khóa cá nhân phải được giữ bí mật trong khi khóa công khai được phổ biến công khai. Trong 2 khóa, một dùng để mã hóa và khóa còn lại dùng để giải mã. Điều quan trọng đối với hệ thống là không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai.[1] Mục đích của hệ thống mã hoá công khai : Cấp phát khoá riêng và khoá công khai : Hình 1.1: Cấp phát khóa riêng khóa công khai Việc cấp phát khoá công khai và khoá bí mật thông qua thuật toán RSA (phổ biến). Thuật toán RSA tạo ra cặp khoá bằng các phương thức toán học từ 2 số nguyên tố bất kỳ đủ lớn. Mã hoá : Hình 1.2: Mã hóa thông tin Bob mã hóa thông tin gửi cho Alice bằng khóa công khai của Alice. Alice nhận được tin nhắn từ Bob kiểm tra tin nhắn và giải mã bằng khóa bí mật của Alice. Tạo và xác thực chữ ký số : Hình 1.3: Tạo và xác thực chữ ký số S = H(m)^d mod n (Tạo chữ kí số) Cho phép kiểm tra một văn bản có phải đã được tạo với một khóa bí mật nào đó hay không. Tạo chữ kí số bằng khóa bí mật của Alice. Và ký vào tin nhắn Alive gửi cho Bob Bob kiểm tra chữ ký số bằng khóa công khai của Alice: S^e mod n =H(m) với H(m) là giá trị sau khi băm tin nhắn Alice gửi cho Bob. Chữ ký số đúng đắn đồng nghĩa với việc các thông tin Alice gửi bob là đúng đắn. Ứng dụng Ứng dụng rõ ràng nhất của mật mã hóa khóa công khai là trong lĩnh vực bảo mật, an toàn thông tin: Một văn bản được mã hóa bằng khóa công khai của một người sử dụng thì chỉ có thể giải mã với khóa bí mật của người đó.Các thuật toán tạo chữ ký số khóa công khai cho phép định danh một tin nhắn hay 1 tài liệu . Một người sử dụng có thể mã hóa văn bản với khóa bí mật của mình. Nếu một người khác có thể giải mã với khóa công khai của người gửi thì có thể tin rằng văn bản thực sự xuất phát từ người gắn với khóa công khai đó (Đây là nguyên lý sinh & xác thực chữ ký số, người gửi sử dụng khóa bí mật của mình để sinh ra 1 chữ ký số cho 1 tin nhắn, tài liệu. Bên nhận có thể xác thực tính đúng đắn của chữ ký số đó nhờ vào khóa công khai của người gửi).Các đặc điểm trên còn có ích cho nhiều ứng dụng khác như: tiền điện tử, thỏa thuận khóa...  Các vấn đề và mục đích của đề tài. Thuật toán và độ phức tạp thuật toán Thuật toán Thuật toán được hiểu là sự đặc tả chính xác của một dãy các bước có thể được thực hiện một cách máy móc để giải quyết một vấn đề. Cần nhấn mạnh rằng, mỗi thuật toán có một dữ liệu vào (Input) và dữ liệu ra (Output); khi thực hiện thuật toán (thực hiện các bước đã mô tả) , thuật toán cần cho ra các kiểu dữ liệu ra tương ứng với các dữ liệu vào.[2] Phân tích thuật toán Tính hiệu quả của thuật toán Khi giải một vấn đề, chúng ta cần chọn trong số các thuật toán, một thuật toán mà chúng ta cho là “tốt” nhất. Cơ sở đánh chọn lựa thuật toán : Thuật toán đơn giản, dễ hiểu, dễ cài đặt(dễ viết chương trình) Thuật toán sử dụng tiết kiệm nhất các nguồn tài nguyên của máy tính và đặc biệt chạy nhanh nhất có thể được. Tính hiệu quả của thuật toán bao gồm 2 nhân tố cơ bản : Dung lượng không gian nhớ cần thiết để lưu giữ các dữ liệu vào, các kết quả tính toán trung gian và các kết quả của thuật toán Thời gian cần thiết để thực hiện thuật toán(hay thời gian chạy) [3] Đánh giá thời gian thực hiện thuật toán Thời gian chạy chương trình phụ thuộc vào các nhân tố chính sau: Các dữ liệu vào Chương trình dịch để chuyển chương trình nguồn thành mã máy. Tốc độ thực hiện của các phép toán của máy tính được sử dụng để chạy chương trình. Giả sử T(n) là thời gian thực hiện thuật toán và f(n) là hàm xác định dương.T(n)=O(f(n)) nếu $ các hằng số dương c và n0 sao cho T(n) c.g(n) với mọi n>= n. Hạ tầng khóa công khai (PKI) PKI là gì Để hiểu rõ về việc xây dựng cơ PKI và vần đề cấp phát chứng thực số có vai trò và ứng dụng như thế nào trong thương mại điên tử. Chúng ta sẽ đi phân tích từng khía cạnh xung quanh PKI. Trước tiên chúng hiểu thế nào là PKI và tính cấp thiết của PKI hiện nay : PKI : viết tắt của Public Key Infrastructure tức là hạ tầng cơ sở khóa công khai. Là một cơ chế để cho một bên thứ 3 (thường là nhà cung cấp chứng thực số) cung cấp và xác thực định danh các bên tham gia vào quá trình trao đổi thông tin. Cơ chế này cũng cho phép gán cho mỗi người sử dụng trong hệ thống một cặp khóa công khai/khóa bí mật. Trong kỷ nguyên bùng nổ của công nghệ thông tin, mọi giao dịch từ xa có thể thông qua internet. Tuy nhiên, mặt khác khó mà bảo đảm rằng những giao dịch trên Internet luôn an toàn. Cơ sở hạ tầng khóa công khai (PKI) đã đáp ứng những yêu cầu cấp thiết đó. Dựa trên cách sử dụng của chìa khóa mật mã công cộng và chữ ký điện tử, một PKI chính là bộ khung của các chính sách, dịch vụ và phần mềm mã hóa, đáp ứng nhu cầu bảo mật của người sử dụng. Cở sở hạ tầng khóa công khai Hình 1.4 : Mô hình xây dựng PKI cơ bản PKI cung cấp một cặp chìa khóa, trong đó có một chìa là chìa khóa công khai (Public key) để có thể sử dụng dịch vụ, chìa còn lại là chìa khóa bí mật (Private key) mà người sử dụng phải giữ bí mật. Hai chìa khóa này có liên quan mật thiết đến nhau, sao cho một thông điệp được mã hóa bởi một chìa khóa mật mã công khai thì chỉ giải mã được bởi một chìa khóa bí mật tương ứng. Ví dụ về mô hình xử dụng xác thực : Giả sử có 2 người dùng Bob và Alice muốn chuyển thư điện tử cho nhau để đảm bảo tính xác thực và bảo mật họ dùng 1 phần mềm PKI  Hành động Trạng thái của hệ thống PKI Bob muốn chuyển một thư điện tử đến cho Alice, với yêu cầu rằng giao dịch phải chứng minh được chính anh đã gởi nó đi và nội dung bức thư không bị thay đổi. Phần mềm PKI dùng chìa khóa cá nhân của Bob tạo ra một chữ ký điện tử cho bức thư Bob muốn chắc chắn rằng không ai ngoài Alice đọc được bức thư này Phần mềm PKI của Bob dùng chìa khóa công cộng của Alice để mã hóa thông điệp của Bob. Alice muốn đọc thư do Bob gởi Phần mềm PKI dùng chìa khóa cá nhân của Alice để để giải mã thông điệp. Alice muốn kiểm chứng rằng chính Bob đã gởi đi thông điệp đó và nội dung thông điệp không bị chỉnh sửa. Phần mềm PKI của Alice dùng chìa khóa công cộng của Bob để kiểm chứng chữ ký điện tử của anh ta. Bảng 1.5 : Mô hình sử dụng xác thực Một vài kiến trúc và công nghệ PKI hiện hành  Một số ứng dụng Mục tiêu chính của PKI là cung cấp khóa công khai và xác định mối liên hệ giữa khóa và định dạng người dùng. Nhờ vậy người dùng có thể sử dụng trong một số ứng dụng như: Mã hoá Email hoặc xác thực người gửi Email (OpenPGP hay S/MIME). Mã hóa hoặc nhận thực văn bản (Các tiêu chuẩn Chữ ký XML* hoặc mã hoá XML* khi văn bản được thể hiện dưới dạng XML). Xác thực người dùng ứng dụng (Đăng nhập bằng thẻ thông minh - smartcard, nhận thực người dùng trong SSL). Các giao thức truyền thông an toàn dùng kỹ thuật Bootstrapping (IKE, SSL): trao đổi khóa bằng khóa bất đối xứng, còn mã hóa bằng khóa đối xứng. Một số hệ thống PKI Dưới đây là danh sách một số hệ thống PKI, trong đó một số nhà cung cấp chứng thực số hàng đầu (ví dụ VeriSign) không được liệt kê vì các phần mềm của họ không được công bố công khai : Hệ thống quản lý chứng thực Red Hat Computer Associate eTrust PKI Microsoft OpenCA (Một mô hình PKI mã nguồn mở) RSA Security IDX-PKI Simple CA Mục đích của đề tài Một vài năm trở lại đây PKI là 1 chủ đề nóng đối với các doanh nghiệp lớn. Ở Việt Nam đây vấn là một đề tài khá mới mẻ. Do vậy tìm hiểu và xây dựng hạ tầng cơ sở xác thực khóa công khai(PKI) là một cách tiếp cận cho một nền tảng mới. Từ đó nêu rõ vai trò và ứng dụng của hạ tầng khóa công khai trong thương mại điện tử. Tìm hiểu về các thuật toán(sinh số ngẫu nhiên trong việc tạo khóa, hàm băm, mã hóa, tạo chữ ký số...) Đặt vần đề ? Để xây dựng một cơ sở hạ tầng chúng ta phải giải quyết sơ bộ những vấn đề sau đây : Làm sao để cấp phát khóa công khai và khóa bí mật cho từng người. Vấn đề đăng ký khóa công khai với một CA Vấn đề thu hồi/cấp phát lại khóa công khai Vấn đề kiểm chứng khóa công khai Làm sao từ khóa công khai của 1 người hệ thống PKI phải xác định xem chữ ký số có phải của người đó hay không. Vấn đề toàn vẹn dữ liệu. Hệ thống PKI phải xác định xem liệu tin nhắn gửi đi giữa client và server có bị thay đổi hay không? Một thông điệp được mã hóa bởi một chìa khóa mật mã công khai thì chỉ giải mã được bởi một chìa khóa bí mật tương ứng. Khóa của bên thứ 3 bên thẩm định sẽ do cấp hay tổ chức nào giám đinh. Hay phải có cơ chế nào để chống giả mạo bên chứng thực. Các Vấn đề liên quan đến chứng thực số cấp phát, xác thực và quản lý tại server ra sao. Các vấn đề sẽ giải quyết trong khóa luận  Với những yêu cầu về một hệ thống PKI như trên chúng ta phải xây dựng bài toán như thế nào.Chương trình thiết kế phải bao gồm 3 đối tượng : Server : Cho phép người dùng trong hệ thống đăng ký khóa công khai. Cấp phát 1 chứng thực số (certificat) cho người dùng đó nếu khóa công khai hợp lệ Quản lý khóa công khai, Thu hồi/cấp phát lại chứng thực số Cho phép bên thứ 3 kiểm tra tính đúng đắn của 1 chứng thực số bất kỳ User : Hệ thống PKI cấp phát một khóa công khai cho user và khóa bí mật (Khóa riêng) do PKI client cấp phát và user phải giữ bí mật. Tạo chữ ký số cho từng văn bản ngẫu nhiên. Bên thứ 3 là bên thẩm định và đánh giá : Cấp phát và bảo mật Khóa riêng và khóa công khai của CA. Chương 2 : Xây dựng hạ tầng khóa công khai(PKI), vấn đề cấp phát chứng thực số và ứng dụng trong thương mại điện tử Hàm băm mật mã học Hàm băm Hàm băm (tiếng Anh: hash function) là hàm sinh ra các giá trị băm tương ứng với mỗi khối dữ liệu (có thể là một chuỗi kí tự, một đoạn tin nhắn...). Giá trị băm đóng vai trò gần như một khóa để phân biệt các khối dữ liệu, tuy nhiên, người ta chấp nhận hiện tượng trùng khóa hay còn gọi là đụng độ và cố gắng cải thiện giải thuật để giảm thiểu sự đụng độ đó. Hàm băm thường được dùng trong bảng băm nhằm giảm chi phí tính toán khi tìm một khối dữ liệu trong một tập hợp (nhờ việc so sánh các giá trị băm nhanh hơn việc so sánh những khối dữ liệu có kích thước lớn). Hàm băm mật mã học Trong ngành mật mã học, một hàm băm mật mã học (tiếng Anh: Cryptographic hash function) là một hàm băm với một số tính chất bảo mật nhất định để phù hợp việc sử dụng trong nhiều ứng dụng bảo mật thông tin đa dạng, chẳng hạn như chứng thực (authentication) và kiểm tra tính nguyên vẹn của thông điệp (message integrity). Một hàm băm nhận đầu vào là một xâu ký tự dài (hay thông điệp) có độ dài tùy ý và tạo ra kết quả là một xâu ký tự có độ dài cố định, đôi khi được gọi là tóm tắt thông điệp (message digest) hoặc chữ ký số (digital fingerprint).[4] Đảm bảo tính toàn vẹn dữ liệu Hàm băm mật mã học là hàm bam và có tính chất là hàm 1 chiều. Từ khối dữ liệu hay giá trị băm đầu vào chỉ có thể đưa ra 1 giá trị băm duy nhất. Như chúng ta đã biết đối với tính chất của hàm 1 chiều. Một người nào đó dù bắt được giá trị băm họ cũng không thể suy ngược lại giá trị, đoạn tin nhắn băm khởi điểm. Hàm băm thường được dùng trong bảng băm nhằm giảm chi phí tính toán khi tìm một khối dữ liệu trong một tập hợp. Giá trị băm đóng vai trò gần như một khóa để phân biệt các khối dữ liệu Giá trị đầu vào(tin nhắn, dữ liệu...) bị thay đổi tương ứng giá trị băm cũng bị thay đổi. Do vậy nếu 1 kẻ tấn công phá hoại, chỉnh sửa dữ liệu thì server có thể biết ngay lập tức. Một số hàm băm thông dụng Thuật toán hàm băm MD5 Thuật toán hàm băm MD5 MD5 (Message-Digest algorithm 5) là một hàm băm mật mã được sử dụng phổ biến, được thiết kể bởi Giáo sư Ronald L. Rivest tại trường MIT vào năm 1991 để thay thế cho hàm băm trước đó là MD4 (1990). Là một chuẩn Internet (RFC 1321), MD5 đã được dùng trong nhiều ứng dụng bảo mật và cũng được dùng phổ biến để kiểm tra tính toàn vẹn của tập tin. Cũng như các hàm băm khác như MD4 và SHS (Secure Hash Standard), MD5 là phương pháp có ưu điểm tốc độ xử lý rất nhanh, thích hợp với các thông điệp dài và cho ra giá trị băm dài 128 bit. Trong MD5, thông điệp ban đầu X sẽ được mở rộng thành dãy bit X có độ dài là bội của 512. Dãy bit X gồm các thành phần được sắp thứ tự như sau: Dãy bit X ban đầu, một bit 1, dãy d bit 0 (d được tính sao cho dãy X cuối cùng là bội của 512), dãy 64 bit l biểu diễn chiều dài của thông điệp. Đơn vị xử lý trong MD5 là các từ 32-bit, nên dãy bit X ở trên sẽ được biểu diễn thành dãy các từ X[i] 32-bit sau: X=X[0] X[1] X[2] …X[N−1] , với N là bội của 16.[5] Phương pháp MD5 có những ưu điểm sau so với phương pháp MD4 Thay vì có 3 chu kỳ biến đổi như trong MD4, MD5 bổ sung thêm chu kỳ thứ 4 để tăng mức độ an toàn. Trong mỗi thao tác của từng chu kỳ, MD5 sử dụng hằng số ti phân biệt, trong khi MD4 sử dụng hằng số chung cho mọi thao tác trong cùng chu kỳ biến đổi. Hàm G ở chu kỳ 2 của MD4: G(X,Y,Z) = ((XZ) (XY) (Y)) được thay thế bằng G(X,Y,Z) = (XZ) (Y()) để giảm tính đối xứng. Mỗi bước biến đổi trong từng chu kỳ chịu ảnh hưởng kết quả của bước biến đổi trước, vì vậy làm tăng nhanh tốc độ của hiệu ứng lan truyền (avalanche). Các hệ số dịch chuyển xoay vòng trong mỗi chu kỳ được tối ưu hóa nhằm tăng tốc độ hiệu ứng lan truyền. Ngoài ra, mỗi chu kỳ sử dụng 4 hệ số dịch chuyển khác nhau. Lý do MD5 được thiết kế thay thế cho MD4 là vì các phân tích chỉ ra rằng phương pháp MD4 có vẻ không an toàn. Den Boer và Bosselaers đã chỉ ra các điểm yếu trong MD4 trong một bài báo được đăng vào năm 1991và một tấn công xung đột đầu tiên được tìm thấy bởi Han Dobbertin vào năm 1996 . Tuy nhiên, các nỗ lực tấn công, phân tích của các nhà nghiên cứu cho thấy MD5 cũng không còn an toàn và cần được thay thế bằng một thuật toán băm khác như các công bố của Den Boer và Bosselaers năm 1993; của Hans Dobbertin năm 1996; của nhóm tác giả Xiaoyun Wang, Dengguo Feng, Xuejia Lai, và Hongbo ngày 19/8/2004; của Arjen Lenstra, Xiaoyun Wang, và Benne de Weger ngày 1/3/2005; và của Vlastimil Klima, … Chuẩn băm an toàn SHS SHS (Secure Hash S