CHƯƠNG 1. KIẾN THỨC CƠ SỞ 1. Khái quát về mật mã học 1. Giới thiệu về mật mã học Mật mã học là ngành khoa học ứng dụng toán học vào việc biến đổi thông tin thành một dạng khác với mục đích che dấu nội dung, ý nghĩa thông tin cần mã hóa.
Đây là một ngành quan trọng và có nhiều ứng dụng trong đời sống xã hội. Ngày nay, các ứng dụng mã hóa và bảo mật thông tin đang được sử dụng ngày càng phổ biến hơn trong các lĩnh vực khác nhau trên thế giới, từ các lĩnh vực an ninh, quân sự, quốc phòng…, cho đến các lĩnh vực dân sự như thương mại điện tử, ngân hàng… Cùng với sự phát triển của khoa học máy tính và Internet, các nghiên cứu và ứng dụng của khoa học mật mã ngày càng trở nên đa dạng hơn, mở ra nhiều hướng nghiên cứu chuyên sâu vào từng lĩnh vực ứng dụng đặc thù với những đặc trưng riêng. Ứng dụng của khoa học mật mã không chỉ đơn thuầ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: chứng thực nguồn gốc nội dung thông tin (kỹ thuật chữ ký điện tử), chứng nhận tính xác thực về người sở hữu mã khóa (chứng nhận khóa công cộng), các quy trình giúp trao đổi thông tin và thực hiện giao dịch điện tử an toàn trên mạng. Những kết quả nghiên cứu về mật mã cũng đã được đưa vào trong các hệ thống phức tạp hơn, kết hợp với những kỹ thuật khác để đáp ứng yêu cầu đa dạng của các hệ thống ứng dụng khác nhau trong thực tế, ví dụ như hệ thống bỏ phiếu bầu cử qua mạng, hệ thống đào tạo từ xa, hệ thống quản lý an ninh của các đơn vị với hướng tiếp cận sinh trắc học, hệ thống cung cấp dịch vụ multimedia trên mạng với yêu cầu cung cấp dịch vụ và bảo vệ bản quyền sở hữu trí tuệ đối với thông tin số.
Vấn đề về mã hóa Mật mã học là một lĩnh vực liên quan với các kỹ thuật ngôn ngữ và toán học để Luan van 5 đảm bảo an toàn thông tin, cụ thể là trong thông tin liên lạc. Hiện nay có nhiều kĩ thuật mật mã khác nhau, mỗi kĩ thuật có ưu và nhược điểm riêng. Tùy theo yêu cầu của môi trường ứng dụng ta dùng kĩ thuật này hay kĩ thuật khác. Mật mã cổ điển chủ yếu dùng để che dấu dữ liệu.
Với mật mã hiện đại ngoài khả năng che dấu dữ liệu, còn dùng để thực hiện: Ký số, tạo giao diện thông điệp, giao thức bảo toàn dữ liệu, xác thực thực tế…. Theo nghĩa hẹp, mật mã dùng để bảo mật dữ liệu, người ta quan niệm: Mật mã học là môn khoa học nghiên cứu mật mã: tạo mã và phân tích mã (thám mã). Mật mã đảm bảo những tính chất sau: Tính bí mật (Bảo mật): Thông tin không bị lộ đối với người không được phép nhận Tính toàn vẹn (Bảo toàn): Ngăn chặn hay hạn chế việc bổ sung, loại bỏ và sửa chữa dữ liệu không được phép. Tính xác thực (Chứng thực): Xác thực đúng thực thể cần kết nối, giao dịch.
Xác thực đúng thực thể có trách nhiệm về nội dung thông tin. Tính sẵn sàng: Thông tin sẵn sàng cho người dùng hợp pháp. Thám mã (phá mã) là tìm những điểm yếu hoặc không an toàn trong phương thức mật mã hóa. Thám mã có thể được thực hiện bởi những kẻ tấn công, nhằm làm hỏng hệ thống, hoặc bởi những người thiết kế ra hệ thống (hoặc những người khác) với ý định đánh giá độ an toàn của hệ thống.
Hệ mã hóa là dùng một quy tắc nhất định để mã hóa thông tin. Hệ mã hóa được định nghĩa là một bộ năm thành phần (P,C,K,E,D) thỏa mãn các tính chất sau: P (Plaintext) là tập hợp hữu hạn các bản rõ có thể. C (Ciphertext) là tập hợp hữu hạn các bản mã có thể. K (Key) là tập hợp các bản khóa có thể.
E (Encrytion) là tập hợp các quy tắc mã hóa có thể. Luan van 6 D (Decrytion) là tập hợp các quy tắc giải mã có thể. Quá trình mã hóa được tiến hành bằng cách áp dụng hàm toán học E lên thông tin P ( được biểu diễn dưới dạng số ) để trở thành thông tin đã mã hóa C. Quá trình giải mã được tiến hành ngược lại: áp dụng hàm D lên thông tin C để được thông tin đã giải mã.
Quá trình mã hóa và giải mã Có hai loại mã hóa: Mã hóa khóa đối xứng và mã hóa khóa bất đối xứng Hệ mật mã đối xứng (hay còn gọi là mật mã khóa bí mật): là những hệ mật dùng chung một khóa cả trong quá trình mã hóa dữ liệu và giải mã dữ liệu. Do đó khóa phải được giữ bí mật tuyệt đối. Một số thuật toán nổi tiếng trong mã hóa đối xứng là DES, Triple DES (3DES), AES … Hệ mật mã bất đối xứng (hay còn gọi là mật mã khóa công khai): Các hệ mật này dụng chung một khóa để mã hóa sau đó dùng một khóa khác để giải mã, nghĩa là khóa để mã hóa và giải mã là khác nhau. Các khóa này tạo nên từng cặp chuyển đổi ngược nhau và không có khóa nào có thể suy được từ khóa kia.
Khóa dùng để mã hóa có thể công khai nhưng khóa dùng để giải mã phải giữ bí mật. Do đó trong thuật toán này có hai loại khóa: Khóa để mã hóa được gọi là khóa công khai – Public Key, khóa để giải mã được gọi là khóa bí mật – Private Key. Một số thuật toán mã hóa công khai nổi tiếng: Diffle-Hellman, RSA, ElGamal,… Trong mô hình mật mã cổ điển mà cho tới nay vẫn còn được nghiên cứu Alice (người gửi ) và Bob (người nhận) bằng cách chọn một khóa bí mật K. Sau đó Alice dùng khóa K để mã hóa theo luật ek và Bod dùng chung khóa K đó để giải mã theo Luan van 7 luật giải dk.
Trong hệ mật này dk hoặc ek dễ dàng nhận được vì quá trình giải mã tương tự như quá trình mã hóa nhưng thủ tục khóa thì ngược lại. Nhược điểm lớn của hệ mật này là nếu để lộ ek thì làm cho hệ thống mất an toàn, chính vì vậy chúng ta cần tạo ra cho hệ mật này một kênh an toàn. Ý tưởng xây dựng một hệ mật khóa công khai là tìm ra một hệ mật có khả năng tính toán được dk khi biết được ek. Khi Alice (người gửi) chuyển bản tin cho Bob (người nhận) thì chỉ có duy nhất Bob mới có thể giải được bản tin này bằng cách sử dụng luật giải mã bí mật dk.
Để giải quyết vấn đề phân phối và thỏa thuận khóa, năm 1976 Diffie và Hellman đã đưa ra khái niệm về hệ mật mã khóa công khai và phương pháp trao đổi công khai để tạo ra một khóa bí mật chung. Tính an toàn của hệ mật được đảm bảo bởi độ khó một bài toán học cụ thể (bài toán Logarit rời rạc). Hệ mật mã khóa công khai còn được gọi là hệ mật mã phi đối xứng sử dụng một cặp khóa: khóa công khai(public key) và khóa bí mật(private key). Khóa công khai dùng để mã hóa còn khóa bí mật dùng để giải mã.
Mật mã hóa khóa công khai là một dạng mật mã hóa 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 đó, đượ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óa 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 hai 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.
Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích: Mã hóa, tạo Chữ ký số, Thỏa thuận khóa, cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa hai bên. Các kỹ thuật mật mã hóa khóa công khai đòi hỏi khối lượng tính toán nhiều hơn các kỹ thuật mã hóa khóa đối xứng nhưng có nhiều ưu điểm nên được áp dụng trong nhiều ứng dụng. Cơ sở toán học 1. Modulo số học Modulo số học đã và đang dần trở lên quan trọng trong lĩnh vực mật mã.
Lý thuyết modulo số học được sử dụng trong các thuật toán mã hóa khóa công khai như thuật toán RSA và Diffie-Hellman, các thuật toán khóa đối xứng như AES, DES. Ưu điểm chính của việc sử dụng modulo số học là nó cho phép chúng ta thực hiện phép nhân nhanh hơn. Ví dụ với phép toán phức tạp, việc tính toán đa thức đó (nhân đa thức) với một lượng số nguyên lớn thì việc sử dụng modulo số học sẽ làm giảm thời gian tính toán của phép toán lớn này. Áp dụng vào ứng dụng sửa mã lỗi, bằng việc sử dụng lý thuyết modulo số học mỗi chữ số của mã được liên kết đến các phần tử của trường hữu hạn.
Toán tử modulo (mod n) ánh xạ tới tất cả các số nguyên trong tập {0, 1, 2, ….,(n-1)} và tất cả các phép toán số học được thực thi trong tập hợp này. Kỹ thuật này được gọi là modulo số học. Tập các số nguyên và các số nguyên khác 0 của mod n được ký hiệu bởi Zn và Z*n. Ví dụ: Cộng và nhân modulo trên modulo 23 Giả sử, 12 + 20 = (12 + 20) mod 23 = 32 mod 23 = 9 vì 32 chia cho 23 dư 9 Tương tự phép nhân, 8x9 = 72 mod 23 = 3, vì 72 chia cho 23 dư 3 1.
Nhóm, vành và trường Trong đại số trừu tượng, chúng ta làm việc với các tập mà các phần tử được thao tác một cách đại số. Ví dụ, chúng ta có thể nói rằng bằng cách kết hợp hai phần tử của một tập theo nhiều cách khác nhau, ta có thể tạo ra được phần tử thứ ba của tập hợp. Tất cả các phép toán sẽ tuân theo một số quy tắc cụ thể được định nghĩa trong tập.