Chương 1. CÁC ỨNG DỤNG CỦA MẬT MÃ TRONG AN TOÀN THÔNG TIN VÀ VAI TRÒ CỦA CÁC NGÔN NGỮ LẬP TRÌNH 1.1 SƠ LƯỢC VỀ MẬT MÃ HỌC 1.1 Lịch sử của mật mã Mật mã học có một lịch sử dài và rất thú vị. Tài liệu phi kỹ thuật đầy đủ nhất về chủ đề này là cuốn “The Codebreakers” tạm dịch là “Những người bẻ mã” của tác giả David Kahn. Cuốn sách này đã theo dấu mật mã học từ khởi đầu của nó và khi mà mật mã được những người Ai Cập sử dụng còn hạn chế cách đây hơn 4000 năm, cho đến thế kỷ XX khi nó đóng một vai trò quan trọng trong kết quả của hai cuộc chiến tranh thế giới.
Hoàn thành vào năm 1963, cuốn sách của Kahn bao gồm những khía cạnh lịch sử có ý nghĩa nhất cho sự phát triển của mật mã (tính đến thời điểm xuất bản đó). Đối tượng chủ yếu của mật mã là những người có liên quan đến quân đội, ngoại giao và chính phủ nói chung. Mật mã đã được sử dụng như một công cụ để bảo vệ các chiến lược và bí mật quốc gia. Sự gia tăng của máy tính và hệ thống thông tin liên lạc trong những năm 1960 mang theo nó là một nhu cầu rất lớn đối với việc bảo vệ thông tin dạng số và các dịch vụ an toàn thông tin.
Bắt đầu với công việc của Feistel tại IBM vào đầu những năm 1970, mà đỉnh cao nhất là vào năm 1977, đó là việc chuẩn mã hóa dữ liệu DES (Data Encryption Standard) được thông qua như một chuẩn xử lý thông tin dành cho Liên Bang Mỹ (FIPS), và được dùng để mã hóa các thông tin không được phân loại. DES là chuẩn mã hóa nổi tiếng nhất trong lịch sử. Nó còn là chuẩn để đảm bảo an toàn thông tin trong thương mại điện tử cho nhiều tổ chức tài chính trên thế giới. Sự phát triển nổi bật nhất trong lịch sử mật mã là vào năm 1976 khi Diffie và Hellman công bố bài viết “New Directions in Cryptography” tạm dịch là“Những hướng mới trong mật mã”.
Bài viết này giới thiệu khái niệm mang tính cách 2 Tieu luan mạng của mật mã khóa công khai và c4ũng cung cấp một phương pháp mới và khéo léo để trao đổi khóa, với độ an toàn dựa trên tính khó giải của bài toán lôgarit rời rạc. Mặc dù các tác giả chưa đưa ra được cách thực hiện cụ thể cho một hệ mật khóa công khai vào thời điểm đó, nhưng ý tưởng đã rõ ràng, từ đó tạo nên sự quan tâm rộng rãi trong cộng đồng mật mã. Vào năm 1978 Rivest, Shamir và Adleman phát minh ra hệ mật khóa công khai và lược đồ chữ ký thực tiễn đầu tiên, mà hiện nay gọi là RSA. Hệ mật RSA dựa trên một bài toán khó của toán học, đó là bài toán phân tích số nguyên lớn thành tích các thừa số nguyên tố.
Ứng dụng bài toán khó trong toán học của hệ mật này đã mang lại nhiều nỗ lực tìm kiếm của các nhà khoa học để tìm ra các phương pháp hiệu quả phân tích số nguyên. Những năm 1980 chứng kiến những tiến bộ lớn trong lĩnh vực mật mã, tuy nhiên không có gì đủ chứng tỏ rằng hệ mật RSA là không an toàn. Một lớp hệ mật mạnh và có ý nghĩa thực tiễn khác được tìm ra bởi ElGamal vào năm 1985, hệ mật này dựa trên tính khó giải của bài toán lôgarit rời rạc. Một trong những đóng góp quan trọng nhất mà hệ mật khóa công khai cung cấp là chữ ký số.
Năm 1991, chuẩn quốc tế đầu tiên cho chữ ký số (ISO/IEC 9796) đã được thông qua. Năm 1994, Chính phủ Hoa Kỳ chấp nhận chuẩn chữ ký số DSS (Digital Signature Standard), một lược đồ chữ ký số dựa trên hệ mật Elgamal. Việc tìm kiếm các hệ mật mới, cải thiện cơ chế mã hóa hiện có, và chứng minh độ an toàn tiếp tục phát triển với tốc độ nhanh chóng. Các tiêu chuẩn và cơ sở hạ tầng khác nhau liên quan đến mật mã đang được đưa ra.
Các sản phẩm bảo mật cũng được phát triển để đáp ứng nhu cầu an ninh của một xã hội thông tin ngày càng chuyên sâu.2 Các mục tiêu của mật mã Mục tiêu của mật mã là nhằm đảm bảo các tính chất sau của an toàn thông tin: tính bí mật, tính toàn vẹn, tính xác thực và tính chống chối bỏ. Tính bí mật (Confidentiality): Dịch vụ này đảm bảo rằng chỉ những đối tượng đã được cấp quyềnh mới biết được nội dung thông tin. Bí mật là một thuật ngữ đồng nghĩa với bảo mật và riêng tư. Có nhiều cách khác nhau để cung cấp 3 Tieu luan bảo mật, từ các phương pháp vật lý cho tới các thuật toán làm cho dữ liệu không thể hiểu được.
Tính toàn vẹn dữ liệu (Data Intergrity): là dịch vụ giúp phát hiện những sự thay đổi trái phép lên dữ liệu. Những sự thay đổi dữ liệu thường là các hành động như chèn, xóa, thay thế dữ liệu. Tính xác thực (Authentication): Xác thực là dịch vụ liên quan đến sự nhận dạng, định danh. Chức năng này áp dụng cho cả các thực thể và bản thân thông tin.
Hai thực thể khi bắt đầu giao tiếp cần xác định danh tính lẫn nhau. Thông tin chuyển qua kênh truyền cần được xác thực về nguồn gốc, ngày xuất hiện, nội dung thông tin, thời gian gửi, v. Vì những lý do này, nó được chia làm 2 loại: xác thực thực thể và xác thực nguồn gốc dữ liệu. Tính chống chối bỏ (Non-repudiation): là dịch vụ ngăn không cho một thực thể chối bỏ về những cam kết hay hành động đã thực hiện trước đó của mình.
Ứng dụng thường gặp nhất của dịch vụ này là chữ ký số. Một thực thể sau khi ký lên thông báo, văn bản điện tử,. thì anh ta không thể chối bỏ về hành động đó của mình, bởi vì chỉ có anh ta mới có thể tạo ra chữ ký hợp lệ cho các thông báo ấy, với giả thiết rằng các thuật toán mật mã được sử dụng ở đây là đủ mạnh để ngăn không cho các thực thể khác có thể tạo ra chữ ký số giả một cách hợp lệ.3 Phân loại các loại mật mã Dưới đây là mô hình phân loại các thành phần mật mã cơ bản, được sử dụng trong hầu hết các ứng dụng mật mã. 4 Tieu luan Các hàm băm độ dài tùy ý Các thành phần không Các phép hoán vị dùng khóa một chiều Các dãy ngẫu nhiên Các hệ mã khối Các hệ mật khóa đối xứng Các hệ mã dòng Các mã xác thực thông báo (MACs) Các thành phần bảo Các thành phần dùng khóa Chữ ký số mật cơ bản đối xứng Dãy giả ngẫu nhiên Các định danh cơ bản Các hệ mật khóa công khai Các thành phần dùng khóa bất đối xứng Chữ ký số Các định danh cơ bản Hình 1.1 Lược đồ các thành phần mật mã cơ bản Khi sử dụng các thành phần mật mã trên, ta cần quan tâm tới các tính chất sau: • Độ an toàn: đây thường là vấn đề khó đánh giá.
Thường được xác định bằng số lượng công việc cần thiết để phá vỡ đối tượng, được tính bằng số phép toán yêu cầu (theo phương pháp tốt nhất được biết hiện tại) để có thể phá vỡ đối tượng đó, hay còn gọi là độ an toàn tính toán. • Chức năng: khi sử dụng thực tế, các thành phần bảo mật cơ bản cần kết hợp lại với nhau để đáp ứng các mục tiêu an toàn thông tin khác 5 Tieu luan nhau. Tùy đặc tính của từng thành phần mà nó sẽ có hiệu quả cao nhất với một mục tiêu an toàn cụ thể. • Phương pháp vận hành: Các thành phần bảo mật cơ bản khi được áp dụng bằng các cách khác nhau, với những đầu vào khác nhau, thì sẽ có những đặc điểm khác nhau.
Do đó, một thành phần bảo mật cơ bản có thể cung cấp những chức năng rất khác nhau, tùy thuộc vào chế độ hoạt động hoặc cách sử dụng. • Hiệu suất: tính chất này dùng để chỉ hiệu quả của một thành phần bảo mật trong một chế độ vận hành riêng. • Khả năng cài đặt: liên quan đến những khó khăn khi cài đặt, triển khai trong thực tế, có thể trong phần cứng hoặc phần mềm. Tầm quan trọng của các tiêu chí khác nhau phụ thuộc rất nhiều vào ứng dụng và nguồn tài nguyên hiện có.
Ví dụ, trong một môi trường mà sức mạnh tính toán bị hạn chế, ta có thể phải đánh đổi một mức độ bảo mật rất cao cho hiệu năng của hệ thống.2 CÁC ỨNG DỤNG CỦA MẬT MÃ 1.1 Các ứng dụng trong thực tiễn 1.1 Ứng dụng trong đời sống thông tin, kinh tế, xã hội Sự phát triển lớn mạnh của công nghệ thông tin trong những năm vừa qua, đặc biệt là sự bùng nổ của mạng Internet đã dẫn đến việc sử dụng rộng rãi hệ thống máy tính trong mọi tổ chức, cá nhân và công cộng. Các hoạt động thông tin, kinh tế, xã hội cũng đang được áp dụng, triển khai rộng rãi qua mạng Internet. Từ đó cũng đã làm xuất hiện một nền kinh tế mới, nền kinh tế thương mại điện tử, nơi mà các hoạt động mua bán và dịch vụ đều dựa trên hệ thống mạng Internet. Hệ thống Worl Wide Web trước kia sử dụng giao thức HTTP để đảm bảo cho việc truyền nhận thông tin tới các đối tượng, nhưng lại không thể đảm bảo bí mật cho các thông tin đó khi truyền đi, thì ngày nay đã được thay thế bằng giao 6 Tieu luan thức HTTPS, ngoài việc đảm bảo truyền nhận thông thường thì nội dung thông tin cũng được đảm bảo giữ bí mật.
Khi các hàm băm chưa được sử dụng, các ngân hàng lưu trữ thông tin thẻ tín dụng ở dạng clear-text (gồm: tên chủ thẻ, số tài khoản, mã PIN, ngày hết hạn, v. Điều này tạo ra nguy cơ bị lộ toàn bộ thông tin thẻ tín dụng, khi kẻ tấn công có thể truy cập và đọc được nội dung những trường hoặc file lưu trữ của cơ sở dữ liệu đó (thông qua một số kiểu tấn công như SQL Injection chẳng hạn). Ngày nay mối lo ngại này đã được loại bỏ, các thông tin bí mật sẽ không được lưu trữ một cách trực tiếp, mà được thay thế bằng giá trị băm của thông tin đó, nên cho dù kẻ tấn công có thể đọc được giá trị băm, thì cũng rất khó để tìm ra thông tin bí mật trước khi bị băm là thông tin gì. Các hoạt động xã hội trước kia, như: nộp thuế, kê khai thuế, vốn yêu cầu những văn bản có giá trị pháp lý cao, bắt buộc phải có chữ ký (hoặc dấu vân tay) của người nộp, kê khai thuế.