Mã hóa phi đối xứng và ứng dụng của nó trong chứng thực điện tử

1. TỔNG QUAN VỀ CÁC HỆ MÃ HÓA` 1.1. Mã hóa khóa bí mật. Hệ thống mã hoá khóa bí mật , là hệ thống mã hóa trong đó quá trình mã hóa và giải mã đều được sử dụng chung một khóa gọi là khóa bí mật (Secret key). Việc bảo mật thông tin phụ thuộc vào việc bảo mật khóa.
1.2 Mã hóa khóa công khai. 1.2.1. Lý thuyết toán học * Mã hóa khóa công khai (public key cryptography), còn gọi là mã hóa bất đối xứng (asymetric cryptography), được Whitfield Diffie và Martin Hellman đã đề xuất 1976, là bước đột phá quan trọng trong lĩnh vực mã hóa. * Sử dụng 2 khóa có quan hệ toán học với nhau, khóa công khai (public key dùng để mã hóa, được công bố rộng rãi. Khóa còn lại là khóa bí mật (private key) dùng để giải mã, được giữ bí mật. * Cơ sở toán học của hệ mã hóa bất đối xứng là dùng những hàm một chiều, tức là những hàm để tính theo chiều thuận thì dễ còn theo chiều ngược lại thì với không khả thi với hệ thống máy tính hiện tại.
1.2.2. Hệ mã RSA * RSA là một THUẬT TOÁN mật mã hóa công khai. * Được đưa ra lần đầu tiên vào năm 1977 bởi Ron Rivert, Adi Shamir và Len Adleman tại học viện Công nghệ MIT. Ngày nay được ứng dụng rất nhiều trong bảo mật thông tin, chữ kí điện tử, bầu cử điện tử. * Độ an toàn rất cao – tốc độ chậm(khoảng 100 lần so với DES). * Ý tưởng của thuật toán mã hóa dựa trên một bài toán lớp NP – những bài toán mà để kiểm tra kết quả thì dễ nhưng để tìm ra kết quả thì với tốc độ máy tính trong tương lai gần là gần như không giải được. Bài toán cụ thể được áp dụng là bài toán phân tích thừa số nguyên tố. ** 1.2.3. Độ an toàn của hệ mã RSA** * Cách thức phân phối khóa công khai là một trong những yếu tố quyết định đối với độ an toàn của RSA. * Quá trình phân phối khóa cần chống lại được tấn công đứng giữa (man-in-the-middle attack). * Các phương pháp chống lại dạng tấn công này thường dựa trên các chứng thực khóa công khai (digital certificate) hoặc các thành phần của hạ tầng khóa công khai (public key infrastructure - PKI).
2. HẠ TẦNG KHÓA CÔNG KHAI, CHỨNG THỰC SỐ VÀ ỨNG DỤNG. 2.1 Khái niệm PKI. * Trong mật mã học, hạ tầng khóa công khai (public key infrastructure, viết tắt PKI) 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 Các quá trình này thường được thực hiện bởi một phần mềm đặt tại trung tâm và các phần mềm phối hợp khác tại các địa điểm của người dùng. * Khái niệm hạ tầng khóa công khai (PKI) thường được dùng để chỉ toàn bộ hệ thống bao gồm nhà cung cấp chứng thực số (CA) cùng các cơ chế liên quan đồng thời với toàn bộ việc sử dụng các thuật toán mật mã hóa công khai trong trao đổi thông tin. * PKI cho phép những người tham gia xác thực lẫn nhau và sử dụng thông tin từ các chứng thực khóa công khai để mật mã hóa và giải mã thông tin trong quá trình trao đổi. Thông thường, PKI bao gồm phần mềm máy khách (client), phần mềm máy chủ (server), phần cứng(như thẻ thông minh) và các quy trình hoạt động liên quan. Người sử dụng cũng có thể ký các văn bản điện tử với khóa bí mật của mình và mọi người đều có thể kiểm tra với khóa công khai của người đó. PKI cho phép các giao dịch điện tử được diễn ra đảm bảo tính bí mật, toàn vẹn và xác thực lẫn nhau mà không cần phải trao đổi các thông tin mật từ trước.
2.2. 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(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 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à bản tóm tắt thông điệp(message digest) hoặc chữ kí số (digital fingerprint). * Hàm băm mật mã học là hàm băm có tính chất một chiều. Từ khối dữ liệu ban đầu chỉ có thể đưa ra 1 giá trị băm duy nhất. Một người nào đó bắt được giá trị băm cũng không thể suy ngược ra giá trị, đoạn tin nhắn khởi điểm. * Giá trị đầu vào bị thay đổi thì giá trị băm tương ứng cũng 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 biết ngay lập tức. * Một vài hàm băm thường dùng hiện nay là MD4, MD5, SHA – 0, SHA -1, trong đồ án này sử dụng hàm băm SHA -1, được đánh giá là an toàn hơn MD5 và tạo ra thông điệp tóm tắt 160bit.
**2.3. Chữ kí điện tử. ** * Chữ ký điện tử (electronic signature) là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh, video...) nhằm mục đích xác định người chủ của dữ liệu đó. * Chữ ký điện tử được sử dụng trong các giao dịch điện tử. Xuất phát từ thực tế, chữ ký điện tử cũng cần đảm bảo các chức năng: xác định được người chủ của một dữ liệu nào đó: văn bản, ảnh, video,... dữ liệu đó có bị thay đổi hay không. * Hai khái niệm chữ ký số (digital signature) và chữ ký điện tử (electronic signature) thường được dùng thay thế cho nhau mặc dù chúng không hoàn toàn có cùng nghĩa. Chữ ký số chỉ là một tập con của chữ ký điện tử (chữ ký điện tử bao hàm chữ ký số) * Một chữ ký điện tử sẽ là một chữ ký số nếu nó sử dụng một phương pháp mã hóa nào đó để đảm bảo tính toàn vẹn (thông tin) và tính xác thực. * Chữ kí số là một chữ kí điện tử dựa trên kĩ thuật mã hóa khóa công khai, trong đó mỗi người có một cặp khóa. Khóa bí mật dùng để “kí” lên dữ liệu mình gửi đi và người nhận sử dụng khóa công khai của người gửi để xác thực đúng người đã gửi
2.4. Chứng thực số. * Trong mật mã học, chứng thực khóa công khai (còn gọi là chứng thực số /chứng thực điện tử) là một chứng thực sử dụng chữ kí số để gắn khóa công khai với một thực thể(cá nhân, máy chủ hoặc công ti...). * Một chứng thực khóa công khai tiêu biểu thường gồm khóa công khai và các thông tin(tên, địa chỉ,...) về thực thể sở hữu khóa đó. Chứng thực số có thể được sử dụng để xác định một khóa công khai thuộc về ai * Nhà cung cấp chứng thực số (Certificate Authoirity – CA) phát hành các chứng thực khóa công khai trong đó CA đó chứng nhận khóa công khai nằm trong mỗi chứng thực thuộc về cá nhân, tổ chức, máy chủ hay bất kì thực thể nào ghi cùng trong chứng thực đó. Nhiệm vụ của CA là kiểm tra tính chính xác của thông tin liên quan đến thực thể được cấp chứng thực. Khi người sử dụng tin tưởng vào một CA và họ có thể kiểm tra chữ kí số của CA thì họ cũng có thể tin vào khóa công khai và thực thể ghi trong chứng thực số. 2.5. Ứng dụng của PKI và cấp phát chứng thực số. 2.5.1. Cấp phát chứng thực số. * Tại Client hệ thống PKI sẽ sử dụng thuật toán sinh khóa hợp lí (ở đây là RSA) để cấp phát cặp khóa riêng và khóa công khai. * Sau khi tạo khóa ngẫu nhiên, hệ thống PKI Client sẽ tạo ra chữ kí số tương ứng với cặp khóa ngẫu nhiên của từng Client và kí theo từng văn bản ngẫu nhiên. * Sau khi Client tạo cặp khóa ngẫu nhiên, kí lên văn bản bất kì. Các thông tin bảo gồm khóa công khai, văn bản rõ, văn bản đã kí được gửi đến Server. * Tại server, server sẽ xác thực những thông tin mà client gửi đến có chính xác và đúng đắn. Nếu thông tin chứng thực là đúng, server sẽ cấp cho client 1 chứng thực số bao gồm thông tin cá nhân, khóa công khai, ngày tạo, ngày hết hạn và ID của chứng thực số có tính duy nhất với mỗi client. * Xác thực: Một người thứ 3 bất kì đều có thể kiểm tra tính đúng đắn của 1 chứng thực số bởi vì PKI Client sẽ cung cấp 1 dịch vụ xác thực. Người dùng nhập vào ID của 1 chứng thực số bất kì và gửi lên Server. Nếu chứng thực số đó tồn tại Server sẽ gửi trả về cho Client vừa kiểm tra. * Một chứng thực số có thể bị thu hồi khi hết hạn hoặc client phát hiện kháo bí mật của mình bị lộ,... Sau đó client có thể xin cấp 1 chứng thực số mới nếu cần.
2.5.2. Ứng dụng. * Trong thực tế, với những lợi thế về mặt bảo mật, an toàn, dễ triển khai trên hệ thống mạng không an toàn, chứng thực số được ứng dụng rất nhiều, cụ thể là trong việc mã hóa, chống giả mạo, xác thực, chống chối bỏ nguồn gốc, bảo mật phần mềm, bảo mật website,...