Academia.eduAcademia.edu
LỜI NÓI ĐẦU Trao đổi thông tin luôn là nhu cầu cần thiết của con người, đặc biệt là trong cuộc sống hiện đại ngày nay khi mà mạng máy tính và Internet phát triển một cách mạnh mẽ và giữ vai trò quan trọng trong mọi lĩnh vực của đời sống xã hội như: chính trị, quân sự, học tập, mua sắm, kinh doanh, … Tất cả những thông tin liên quan đến những công việc này đều được máy vi tính quản lý và truyền đi trên hệ thống mạng. Đối với những thông tin bình thường thì không ai chú ý đến, nhưng đối với những thông tin mang tính chất sống còn đối với một cá nhân hay một tổ chức thì vấn đề bảo mật thông tin là rất quan trọng và được đặt lên hàng đầu. Chính vì vậy nên rất nhiều tổ chức, cá nhân đã nghiên cứu, tìm kiếm và đưa ra rất nhiều giải pháp bảo mật thông tin. Trong đó mã hóa khóa công khai đang tỏ ra rất thích hợp rất trong truyền thông tin dữ liệu và có tính bảo mật khá cao. Báo cáo này do nhóm biên soạn dựa trên những kiến thức lĩnh hội được từ thầy giáo Th.S. Nguyễn Chiến Trinh, và thông qua sự tìm hiểu, nghiên cứu tích cực của các thành viên trong nhóm. Báo cáo của nhóm đi sâu vào trình bày mã hóa khóa công khai RSA và giao thức thỏa thuận khóa Diffie - Hellman với nội dung gồm 4 chương được chia thành các chủ đề khác nhau, từ việc giới thiệu sơ bộ, trình bày khái niệm, cách thiết lập, sơ đồ và các ví dụ minh họa cụ thể về giao thức thỏa thuận khóa. Mặc dù nhóm đã rất cố gắng song vẫn không tránh khỏi một số thiếu sót mong thầy cô và bạn bè đóng góp ý kiến để nhóm hoàn thiện hơn báo cáo này. Thay mặt nhóm em xin chân thành cảm ơn ! PHÂN CÔNG CÔNG CÔNG VIỆC STT Mã Sinh Viên Tên Sinh Viên Nội dung Trang-trang Nhận xét 1 1021010262 Phan Lạc Dương Tìm hiểu về chung về mã hóa + mã hóa khóa công khai ( CI + CII ) 6 - 12 Tích cực nghiên cứu hoàn thành tốt nhiệm vụ 2 1021010251 Lưu Doãn Bắc Tìm hiểu thuật toán mã hóa khóa công khai RSA (CIII) 13-24 Tích cực nghiên cứu hoàn thành tốt nhiệm vụ 3 0821010195 Nguyễn Xuân Hiệp Tìm hiểu giao thức thỏa thuận khóa Diffie - Hellman 25-34 Tích cực nghiên cứu hoàn thành tốt nhiệm vụ MỤC LỤC LỜI NÓI ĐẦU 1 PHÂN CÔNG CÔNG VIỆC 2 MỤC LỤC 3 DANH MỤC HÌNH VẼ 4 CHƯƠNG 1: TÌM HIỂU CHUNG VỀ MÃ HÓA 6 1.1. Khái niệm......... 6 1.2. Các yêu cầu đối với mã hóa 6 1.3. Phân loại mã hóa 7 1.4. Tại sao cần phải phân loại mã hóa ? 7 CHƯƠNG 2: MÃ HÓA KHÓA CÔNG KHAI 9 2.1. Giới thiệu 9 2.2.Tại sao mã hóa khóa công khai ra đời 10 2.3. Nguyên tắc cấu tạo của hệ mã hóa công khai 10 2.4. Các đặc điểm của hệ mã hóa công khai 11 2.5. Phân biệt mã hóa công khai với mã hóa đối xứng 11 2.6. Ứng dụng của hệ mã hóa công khai 12 CHƯƠNG 3: THUẬT TOÁN MÃ HÓA KHÓA CÔNG KHAI RSA 13 3.1. Giới thiệu về RSA 13 3.2. Mô tả hoạt động của RSA 14 3.2.1. Quá trình tạo khóa cho hệ mật RSA 15 3.2.2. Quá trình mã hóa 16 3.2.3. Quá trình giải mã 16 3.2.4. Ví dụ 16 3.2.5. Chuyển đổi văn bản rõ 18 3.2.6.Tạo chữ ký vào văn bản 19 3.3. Các vấn đề của RSA 20 3.4. Ứng dụng thực tế của RSA 21 3.2.1. Chữ ký điện tử ( Digital Signature ) 21 3.2.2. SSL 21 CHƯƠNG 4: GIAO THỨC THỎA THUẬN KHÓA DIFFIE - HELLMAN 24 4.1. Giới thiệu chương 24 4.2. Giao thức thỏa thuận khóa Difie - Hellman 26 4.2.1. Khái niệm thỏa thuận khóa 26 4.2.2. Giao thức thỏa thuận khóa Diffie - Hellman 28 4.2.3. Các đặc điểm đặc trưng của giao thức thỏa thuận khóa Diffie - Hellman 29 TÀI LIỆU THAM KHẢO 33 DANH MỤC HÌNH VẼ Hình 2.1. Cách thức mã hóa công khai 9 Hình 3.1: Các tác giả Ronal Rivest, Adi Shamir và Leonard Adleman tại Học Viện Công Nghệ Masachusetts (MIT) vào năm 1977. 13 Hình 3.2: Sơ đồ biểu diễn thuật toán mã RSA 15 Hình 3.3: Mô hình chung của chữ ký điện tử 21 Hình 4.1: Giáo sư Martin Hellman (giữa) cùng đồng nghiệp là Whitfield Defie (phải) đã khám phá ra mật mã khóa công khai Difie - Hellman 24 Hình 4.2: Sơ đồ giao thức thỏa thuận khóa Difie - Hellman 28 CHƯƠNG I. TÌM HIỂU CHUNG VỀ MÃ HÓA 1. 1. Khái niệm Nói đến mã hóa tức là nói đến việc che dấu thông tin bằng cách sử dụng thuật toán. Che dấu ở đây không phải là làm cho thông tin biến mất mà là cách thức chuyển từ dạng “có thể đọc hiểu được” thành dạng “đọc nhưng không thể hiểu được”. Một thuật toán là một tập hợp của các câu lệnh mà theo đó chương trình sẽ biết phải làm thể nào để xáo trộn hay phục hồi lại dữ liệu. Chẳng hạn tôi có một thuật toán rất đơn giản mã hóa thông điệp cần gửi đi như sau : Bước 1 : Thay thế toàn bộ chữ cái “e” thành chữ số “3”. Bước 2 : Thay thế toàn bộ chữ cái “a” thành chữ số “4”. Bước 3 : Đảo ngược thông điệp. Trên đây chỉ là một ví dụ rất đơn giản mô phỏng cách thức làm việc của mã hóa ( Cryptography ) . Trong thực tế đây là một quá trình cực kì phức tạp và rất khó để diễn tả. 1.2. Các yêu cầu đối với mã hóa. Confidentiality (Tính bí mật) : Đảm bảo cho dữ liệu được truyền đi một cách an toàn và không thể bị lộ thông tin nếu như có ai đó cố tình muốn có được nội dung của dữ liệu gốc ban đầu. Chỉ những người được chỉ định mới có khả năng đọc được nội dung thông tin ban đầu. Authentication (Tính xác thực) : Giúp cho người nhận dữ liệu xác định được chắn chắn dữ liệu mà họ nhận là dữ liệu gốc ban đầu.Kẻ giả mạo không thể có khả năng để giả dạng như là một người khác hay nói cách khác là không thể mạo danh để gửi dữ liệu. Người nhận có khả năng kiểm tra nguồn gốc thông tin mà họ nhận được. Integrity (Tính toàn vẹn): Giúp cho người nhận dữ liệu kiểm tra được rằng dữ liệu không bị thay đổi trong quá trình truyền đi. Kẻ giả mạo không thể có khả năng thay thế dữ liệu ban đầu bằng dữ liệu giả mạo. Non-repudation (Tính không thể chối bỏ): Người gửi hay người nhận không thể chối bỏ sau khi đã gửi hoặc nhận thông tin. 1.3. Phân loại mã hóa. Phân loại theo các phương pháp:         – Mã hóa cổ điển (Classical cryptography)         – Mã hóa đối xứng (Symmetric cryptography).         – Mã hóa bất đổi xứng (Asymmetric cryptography).         – Hàm băm một chiều (Hash function) Phân lọai theo số lượng khóa:         – Mã hóa khóa bí mật (Private-key Cryptography)         – Mã hóa khóa công khai (Public-key Cryptography 1.4. Tại sao cần phải mã hóa ? Ngày nay, khi mạng Internet đã kết nối các máy tính ở khắp nơi trên thế giới lại với nhau, thì vấn đề bảo vệ máy tính khỏi sự thâm nhập phá hoại từ bên ngoài là một điều cần thiết. Thông qua mạng Internet, các hacker có thể truy cập vào các máy tính trong một tổ chức (dùng telnet chẳng hạn), lấy trộm các dữ liệu quan trọng như mật khẩu, thẻ tín dụng, tài liệu… Hoặc đơn giản chỉ là phá hoại, gây trục trặc hệ thống mà tổ chức đó phải tốn nhiều chi phí để khôi phục lại tình trạng hoạt động bình thường. Đây là một phương pháp hỗ trợ rất tốt trong việc chống lại những truy cập bất hợp pháp tới các thông tin được truyền đi trên mạng, áp dụng mã hóa sẽ khiến cho nội dung thông tin được truyền đi dưới dạng không thể đọc được đối với bất kỳ ai cố tình muốn lấy thông tin đó. Tất nhiên không phải ai cũng phải dùng mã hóa. Nhu cầu về sử dụng mã hóa xuất hiện khi các bên giao tiếp muốn bảo vệ các tài liệu quan trọng hay truyền chúng một cách an toàn. Các tài liệu quan trọng có thể là: tài liệu quân sự, tài chính, kinh doanh hoặc đơn giản là một thông tin nào đó mà mang tính riêng tư. Như các bạn cũng đã biết, Internet hình thành và ra đời từ yêu cầu của chính phủ Mĩ nhằm phục vụ cho mục đích quân sự. Khi chúng ta tham gia trao đổi thông tin, chat, gửi mail v..v.. Internet là một môi trường không an toàn, đầy rủi ro và nguy hiểm, không có gì đảm bảo rằng thông tin mà chúng ta truyền đi không bị đọc trộm trên đường truyền. Từ đó mã hóa được áp dụng như một biện pháp nhằm giúp chúng ta tự bảo vệ chính mình cũng như những thông tin mà chúng ta gửi đi. CHƯƠNG II. MÃ HÓA KHÓA CÔNG KHAI 2.1. Giới thiệu Mã hóa khóa công khai (Public Key Cryptography) được thiết kế sao cho khóa sử dụng trong quá trình mã hóa khác biệt với khóa được sử dụng trong quá trình giải mã. Hơn thế nữa, khóa dùng trong quá trình giải mã không thể được tính toán hay suy luận từ khóa dùng để mã hóa và ngược lại, tức là hai khóa này có quan hệ với nhau về mặt toán học nhưng không thể suy diễn được ra nhau. Thuật toán này được gọi là Public-Key bởi vì khóa dùng cho việc mã hóa được công khai cho tất cả mọi người.Một người hòan toàn xa lạ có thể dùng khóa này để mã Hình 2.1: Cách thức mã hóa công khai hóa dữ liệu nhưng chỉ duy nhất người mà có khóa giải mã tương ứng mới có thể đọc được dữ liệu mà thôi. 2.2. Tại sao mã hóa công khai ra đời Mã hóa đối xứng dù rằng đã phát triển từ cổ điển đến hiện đại, vẫn tồn tại hai điểm yếu sau: Vấn đề trao đổi khóa giữa người gửi và người nhận: Cần phải có một kênh an toàn để trao đổi khóa sao cho khóa phải được giữ bí mật chỉ có người gửi và người nhận biết. Điều này tỏ ra không hợp lý khi mà ngày nay, khối lượng thông tin luân chuyển trên khắp thế giới là rất lớn. Việc thiết lập một kênh an toàn như vậy sẽ tốn kém về mặt chi phí và chậm trễ về mặt thời gian. Tính bí mật của khóa: không có cơ sở quy trách nhiệm nếu khóa bị tiết lộ. Vào năm 1976 Whitfield Diffie và Martin Hellman đã tìm ra một phương pháp mã hóa khác mà có thể giải quyết được hai vấn đề trên, đó là mã hóa khóa công khai (public key cryptography) hay còn gọi là mã hóa công khai (asymetric cryptography). Đây có thể xem là một bước đột phá quan trọng nhất trong lĩnh vực mã hóa.2.3. Nguyên tắc cấu tạo của hệ mã hóa công khai. Mã hóa khóa công khai ra đời đã giải quyết được vấn đề mà mã hóa riêng thiếu xót. Trong hệ thống mã hóa này thì mỗi một người sử dụng khi tham gia vào đều được cấp 2 khóa : Một khóa dùng cho việc mã hóa dữ liệu (Public key) Và một khóa dùng cho việc giải mã dữ liệu (Private key), Trong đó Public key được đưa ra cho tất cả mọi người cùng biết, còn Private keyphải được giữ kín một cách tuyệt đối.Giả sử hai phía muốn truyền tin cho nhau thì quá trình truyền sử dụng mã hóa khóa công khai được thực hiện như sau : -  Sender yêu cầu cung cấp hoặc tự tìm khoá công khai của Receiver trên một Server chịu trách nhiệm quản lý khoá công khai.  - Sau đó hai phía thống nhất thuật toán dùng để mã hóa dữ liệu, Sender sử dụng khóa công khai của Receiver cùng với thuật toán đã thống nhất để mã hóa thông tin bí mật.  - Thông tin sau khi mã hóa được gửi tới Receiver, lúc này chính Sender cũng không thể nào giải mã được thông tin mà anh ta đã mã hóa (khác với mã hóa khóa riêng).  - Khi nhận được thông tin đã mã hóa, Receiver sẽ sử dụng khóa bí mật của mình để giải mã và lấy ra thông tin ban đầu. Có nhiều phương pháp mã hóa thuộc loại mã hóa khóa công khai. Đó là các phương pháp Knapsack, RSA, Elgaman, và phương pháp đường cong elliptic ECC…. Mỗi phương pháp có cách thức ứng dụng hàm một chiều khác nhau. 2.4. Các đặc điểm của hệ mã hóa công khai Thông thường, 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 những lợi điểm mà chúng mang lại khiến cho chúng được áp dụng trong nhiều ứng dụng. Vậy là với sự ra đời của Mã hóa khóa công khai thì khóa được quản lý một cách linh hoạt và hiệu quả hơn. Người sử dụng chỉ cần bảo vệ khóa Private key.  Hệ thống này an toàn hơn nhiều so với mã hóa khóa riêng, người mã hóa không thể giải mã được dữ liệu đã mã hóa bằng khóa công khai của người khác. Tuy nhiên nhược điểm của mã hóa khóa công khai nằm ở tốc độ thực hiện, nó chậm hơn mã hóa khóa riêng cỡ ~1000 lần 2.5. Phân biệt mã hóa công khai với mã hóa đối xứng Điều kiện cần của những giải thuật này là: 1. Khi một người nào đó có được một hay nhiều chuỗi bít được mã hóa, người đó cũng không có cách nào giải mã được mẫu tin ban đầu, trừ khi người đó biết được “ secret key ’’ dùng cho mã hóa. 2. Secret key phải trao đổi một cách an toàn giữa hai party tham gia vào quá trình mã hóa. Mã hóa bất đối xứng là những giải thuật mã hóa sử dụng 2 khóa : public key và private-key. Hai khóa này có một mối liên hệ toán học với nhau. Mã hóa bằng khóa này thì chỉ có thể giải mã bằng khóa kia. Có hai ứng dụng của loại mã hóa này : Mã hóa bất đối xứng và chữ ký điện tử ( digital signature ). Trong ứng dụng mã hóa bất đối xứng ( ví dụ giải thuật RSA )mỗi bên A, B sẽ có một public key (PU) private key (PR) riêng mình. A tạo ra PUA và PRA.B tạo ra PUB và PRB. PUA sẽ được A gửi cho B và khi B muốn truyền dữ liệu cho A thì B sẽ mã hóa bằng PUA. A sẽ giải mã bằng PRA. Ngược lại nếu A muốn truyền cho B thì A sẽ mã hóa bằng PUB và B giải mã bằng PRB. PRA và PRB không bao giờ được truyền đi và chỉ được giữ riêng cho mỗi bên .  Trong ứng dụng chữ ký điện tử thì A sẽ mã hóa mẫu tin bằng PRA. Bởi vì chỉ có A là biết được PRA nên khi một party nào đó nhận được mẫu tin này , party đó có thể biết được mẫu tin đó xuất phát từ A chứ không phải một ai khác. Đương nhiên để giải mã , party đó cần có PUA.  2.6. Ứng dụng của hệ mã hóa công khai Mã hóa Email hoặc xác thực người gửi Email (OpenPGP or 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ã hóa 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, 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. CHƯƠNG III. THUẬT TOÁN MÃ HÓA KHÓA CÔNG KHAI RSA 3.1. Giới thiệu về RSA. Tiêu chuẩn Rivest-Shamir-Adleman (RSA) - Giải thuật mã hóa khóa công khai RSA là một tiêu chuẩn được các tác giả Ronal Rivest, Adi Shamir và Leonard Adleman phát triển tại Học Viện Công nghệ Masachusetts (MIT) vào năm 1977, tên tiêu chuẩn được lấy từ 3 chữ cái đầu của tên 3 tác giả, hiện tiêu chuẩn được các tổ chức Viện Tiêu chuẩn Quốc gia Hoa Kỳ (American National Standards Institute – ANSI), Viện Kỹ nghệ Điện và Điện tử (Institute of Electrical and Electronics Engineers – IEEE) và Phòng thí nghiệm RSA công nhận (RSA Laboratories là một bộ phận của Tập đoàn EMC). Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa. Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa công cộng. RSA đang được sử dụng phổ biến trong thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn. Hình 3.1. Các tác giả Ronal Rivest, Adi Shamir và Leonard Adleman tại Học Viện Công nghệ Masachusetts (MIT) vào năm 1977 Trước đó vài năm, Clifford Cox, một chuyên gia mã hóa người Anh đã phát triển riêng một biến thể của RSA. Tuy nhiên, Chính phủ Anh xem đây là vấn đề mật và đã không công bố. Khi Rivest, Shamir và Adleman công bố RSA trong ấn phẩm Scientific American tháng 9/1977, Cơ quan An ninh quốc gia Hoa Kỳ (NSA) không đồng ý về việc phổ biến rộng rãi RSA và ra lệnh cấm, tuy nhiên lệnh cấm này không có cơ sở pháp lý. Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm 1983 (Số đăng ký 4,405,829). Bằng sáng chế này hết hạn vào ngày 21 tháng 9 năm 2000. Tuy nhiên, do thuật toán đã được công bố trước khi có đăng ký bảo hộ nên sự bảo hộ hầu như không có giá trị bên ngoài Hoa Kỳ. Ngoài ra, nếu như công trình của Clifford Cocks đã được công bố trước đó thì bằng sáng chế RSA đã không thể được đăng ký. Năm 1978, các tác giả đã công bố thuật toán trên Tạp chí của Hiệp hội Kỹ thuật Tính toán Hoa Kỳ (Communications of the Association for Computing Machinery – ACM). Hiện nay, có thể tham khảo đặc tả của RSA trên trang thông tin của Tập đoàn EMC. 3.2. Mô tả hoạt động của RSA. Định lý cơ sở: Định lý nhỏ của Fermat: Với p là một số nguyên tố khác 2 thì chia một số a lũy thừa p cho p sẽ có số dư chính bằng a: Mở rộng ta có: Với là số nguyên tố cùng nhau với m và nhỏ hơn m - Thuật toán RSA có 2 khóa: Khóa công khai (Public Key) Khóa bí mật (Private Key) - Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã. - Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa. - Khóa bí mật được cá nhân giữ kín và dùng để giải mã Ví dụ: Bod muốn gửi cho Alice một thông tin mật M mà Bod muốn duy nhất Alice có thể đọc được. Bod Alice ( Mã hóa M bằng Public Key của A đc C) (Giải mã C bằng Private Key của A đc M ) Hình 3.2: Sơ đồ biểu diễn thuật toán mã RSA 3.2.1. Quá trình tạo khóa cho hệ mật RSA. Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh không an toàn (ví dụ như Internet). Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theo 5 bước sau: Chọn 2 số nguyên tố lớn khác nhau p, q thỏa mãn điều kiện Tính tích của nó Tính giá trị hàm Phi Euler của n: . Chọn số nguyên d, sao cho và gcd(d,)=1. Tính giá trị e thỏa mãn điều kiện:. Khóa công khai bao gồm: n và e. Khóa mật: d còn p,q và thường là xóa sau khi tính toán khóa. 3.2.2. Quá trình mã hóa: Giả sử Bob muốn gửi đoạn thông tin M cho Alice. Đầu tiên Bob chuyển M thành một số m < n theo một hàm có thể đảo ngược (từ m có thể xác định lại M) được thỏa thuận trước. Quá trình này được mô tả ở phần Chuyển đổi văn bản rõ. Lúc này Bob có m và biết n cũng như e do Alice gửi. Bob sẽ tính c là bản mã hóa của m theo công thức: Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ (môđun) bằng phương pháp bình phương. Cuối cùng Bob gửi C cho Alice 3.2.3. Quá trình giải mã: Alice nhận c từ Bob và khóa bí mật d. Alice có thể tìm được m từ c theo công thức sau: Biết m, Alice tìm lại M theo phương pháp đã thỏa thuận trước. Quá trình giải mã hoạt động vì ta có: Do ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), theo Định lý Fermat nhỏ nên: và Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý phần dư trung hoa, chúng ta có: Hay 3.2.4. Ví dụ: Sau đây là một ví dụ với những số cụ thể. Ở đây chúng ta sử dụng những số nhỏ để tiện tính toán còn trong thực tế phải dùng các số có giá trị đủ lớn. Lấy: p = 61 — số nguyên tố thứ nhất (giữ bí mật hoặc hủy sau khi tạo khóa) q = 53 — số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo khóa) n = pq = 3233 — môđun (công bố công khai) e = 17 — số mũ công khai d = 2753 — số mũ bí mật Khóa công khai là cặp (e, n). Khóa bí mật là d. Hàm mã hóa là: encrypt(m) = me mod n = m17 mod 3233 với m là văn bản rõ. Hàm giải mã là: decrypt(c) = cd mod n = c2753 mod 3233 với c là văn bản mã. Để mã hóa văn bản có giá trị 123, ta thực hiện phép tính: encrypt(123) = 12317 mod 3233 = 855 Để giải mã văn bản có giá trị 855, ta thực hiện phép tính: decrypt(855) = 8552753 mod 3233 = 123 Cả hai phép tính trên đều có thê được thực hiện hiệu quả nhờ giải thuật bình phương và nhân 3.2.5. Chuyển đổi văn bản rõ Trước khi thực hiện mã hóa, ta phải thực hiện việc chuyển đổi văn bản rõ ( chuyển đổi từ M sang m) sao cho không có giá trị nào của M tạo ra văn bản mã không an toàn. Nếu không có quá trình này, RSA sẽ gặp phải một số vấn đề sau : Nếu m = 0 hoặc m = 1 sẽ tạo ra các bản mã có giá trị là 0 và 1 tương ứng Khi mã hóa với số mũ nhỏ (chẳng hạn e =3) và m cũng có giá trị nhỏ, giá trị me cũng nhận giá trị nhỏ (so với n). Như vậy phép môđun không có tác dụng và có thể dễ dàng tìm được m bằng cách khai căn bậc e của c ( bỏ qua môđun). RSA là phương pháp mã hóa xác định ( không có thành phần ngẫu nhiên) nên kẻ tấn công có thể thực hiện tấn công lựa chọn bản rõ bằng cách tạo ra một bảng tra giữa bản rõ và bản mã. Khi gặp một bản mã, kẻ tấn công sử dụng bảng tra để tìm ra bản rõ tương ứng. Trên thực tế, ta thường gặp 2 vấn đề đầu khi gửi các bản tin ASCII ngắn với m là nhóm vài ký tự ASCII. Một đoạn tin chỉ có 1 ký tự NUL sẽ được gán giá trị m = 0 và cho ra bản mã là 0 bất kể giá trị của e và N. Tương tự, một ký tự ASCII khác, SOH, có giá trị 1 sẽ luôn cho ra bản mã là 1. Với các hệ thống dùng giá trị e nhỏ thì tất cả ký tự ASCII đều cho kết quả mã hóa không an toàn vì giá trị lớn nhất của m chỉ là 255 và 2553 nhỏ hơn giá trị n chấp nhận được. Những bản mã này sẽ dễ dàng bị phá mã. Để tránh gặp phải những vấn đề trên, RSA trên thực tế thường bao gồm một hình thức chuyển đổi ngẫu nhiên hóa m trước khi mã hóa. Quá trình chuyển đổi này phải đảm bảo rằng m không rơi vào các giá trị không an toàn. Sau khi chuyển đổi, mỗi bản rõ khi mã hóa sẽ cho ra một trong số khả năng trong tập hợp bản mã. Điều này làm giảm tính khả thi của phương pháp tấn công lựa chọn bản rõ (một bản rõ sẽ có thê tương ứng với nhiều bản mã tùy thuộc vào cách chuyển đổi). Một số tiêu chuẩn, chẳng hạn như PKCS, đã được thiết kế để chuyển đổi bản rõ trước khi mã hóa bằng RSA. Các phương pháp chuyển đổi này bổ xung thêm bit vào M. Các phương pháp chuyển đổi cần được thiết kế cẩn thận để tránh những dạng tấn công phức tạp tận dụng khả năng biết trước được cấu trúc của bản rõ. Phiên bản ban đầu của PKCS dùng một phương pháp đặc ứng (ad-hoc) mà về sau được biết là không an toàn trước tấn công lựa chọn bản rõ thích ứng (adaptive choén ciphertext attack). Các phương pháp chuyển đổi hiện đại sử dụng các kỹ thuật như chuyển đổi mã hóa bất dối xứng tối ưu như (Optimal Asymmetric Encryption Padding – OAEP) để chống lại tấn công dạng này. Tiêu chuẩn PKCS còn được bổ xung các tính năng khác để đảm bảo an toàn cho chữ ký RSA (Probabilistic Signature Scheme for RSA-RSA-PSS). 3.2.6. Tạo chữ ký vào văn bản. Thuật toán RSA còn được dùng để tạo chữ ký số cho văn bản. Giả sử Alice muốn gửi cho Bob một văn bản có chữ ký của mình. Để làm việc này, Alice tạo ra một giá trị băm (hask value) của văn bản cần ký và tính giá trị mũ d mod n của nó (giống như khi Alice thực hiện giải mã). Giá trị cuối cùng chính là chữ ký điện tử của văn bản đang xét. Khi Bob nhận được văn bản cùng với chữ ký điện tử, anh ta tính giá trị mũ e mod n của chữ ký đồng thời với việc tính giá trị băm của văn bản. Nếu 2 giá trị này như nhau thì Bob biết rằng người tạo ra chữ ký biết khóa bí mật của Alice và văn bản đã không bị thay đổi sau khi ký. Cần chú ý rằng các phương pháp chuyển đổi bản rõ ( như RSA-PSS) giữ vai trò quan trọng đối với quá trình mã hóa cũng như chữ ký điện tử và không được dùng chung cho đồng thời cho cả hai mục đích trên. 3.3. Các vấn đề của RSA. Sau đây ta sẽ xem xét một số các tấn công phương pháp RSA. Vét cạn khóa: cách tấn công này thử tất cả các khóa d có thể có để tìm ra bản giải mã có ý nghĩa, tương tự như cách thử khóa K của mã hóa đối xứng. Với N lớn, việc tấn công là bất khả thi. Phân tích N thành thừa số nguyên tố N = pq: Chúng ta đã nói rằng việc phân tích phải là bất khả thi thì mới là hàm một chiều, là nguyên tắc hoạt động của RSA. Tuy nhiên, nhiều thuật toán phân tích mới đã được đề xuất, cùng với tốc độ xử lý của máy tính ngày càng nhanh, đã làm cho việc phân tích N không còn quá khó khăn như trước đây. Năm 1977, các tác giả của RSA đã treo giải thưởng cho ai phá được RSA có kích thước của N vào khoảng 428 bít, tức 129 chữ số. Các tác giả này ước đoán phải mất 40 nghìn triệu triệu năm mới có thể giải được. Tuy nhiên vào năm 1994, câu đố này đã được giải chỉ trong vòng 8 tháng. Bảng sau liệt kê kích thước N của các RSA đã phá mã được cho đến hiện nay. Số chữ số của N Số bit Năm phá mã Thuật toán 100 322 1991 Quadratic sieve 110 365 1992 Quadratic sieve 120 398 1993 Quadratic sieve 129 428 1994 Quadratic sieve 130 431 1996 GNFS 140 465 1999 GNFS 155 512 1999 GNFS 160 530 2003 Lattice sieve 174 576 2003 Lattice sieve 200 633 2005 Lattice sieve Dĩ nhiên là việc phá mã trên chỉ được thực hiện trong phòng thí nghiệm. Tuy nhiên người ta cho rằng kích thước của N phải khoảng 1024 bít (309 chữ số) thì mới bảo đảm an toàn thật sự. Đo thời gian: Đây là một phương pháp phá mã không dựa vào mặt toán học của thuật toán RSA, mà dựa vào một “hiệu ứng lề” sinh ra bởi quá trình giải mã RSA. Hiệu ứng lề đó là thời gian thực hiện giải mã. Giả sử người phá mã có thể đo được thời giải mã dùng thuật toán bình phương liên tiếp. Trong thuật toán bình phương liên tiếp, nếu một bít của d là 1 thì xảy ra hai phép modulo, nếu bít đó là 0 thì chỉ có một phép modulo, do đó thời gian thực hiện giải mã là khác nhau. Bằng một số phép thử chosen-plaintext, người phá mã có thể biết được các bít của d là 0 hay 1 và từ đó biết được d. 3.4. Ứng dụng thực tế của RSA. Tiêu chuẩn RSA được ứng dụng rộng rãi trong nhiều lĩnh vực như chữ ký số, thương mại điện tử, bảo mật, xác thực… Trong Thông tư số 01/2011/TT-BTTTT ngày 04/01/2011 của Bộ trưởng Bộ Thông tin và Truyền thông Công bố Danh mục tiêu chuẩn kỹ thuật về ứng dụng công nghệ thông tin trong cơ quan nhà nước quy định Khuyến nghị áp dụng tiêu chuẩn RSA, là một trong những giải thuật mã hóa và được xếp vào nhóm Tiêu chuẩn về an toàn thông tin. 3.4.1. Chữ ký điện tử (Digital Signature). Chữ ký điện tử là chữ ký được tạo lập dưới dạng từ, chữ số, ký hiệu, âm thanh hoặc các hình thức khác bằng phương tiện điện tử, gắn liền hoặc kết hợp một cách logic với thông điệp dữ liệu. Chữ ký điện tử có giá trị xác nhận người ký thông điệp dữ liệu và xác nhận sự chấp thuận của người đó đối với nội dung thông điệp dữ liệu được ký. Chữ ký điện tử 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 tạo ra bằng cách áp dụng thuật toán băm một chiều trên văn bản gốc để tạo ra bản phân tích văn bản (mesage digest) hay còn gọi là fingerprint, sau đó mã hóa bằng private key tạo ra chữ ký số đính kèm với văn bản gốc được tính lại fingerprint để so sánh với fingerprint cũ cũng được phục hồi từ việc giải mã chữ ký số. Mô hình chung của chữ kí điện tử : Hình 3.3: Mô hình chung của chữ ký điện tử Đặc điểm của chữ ký điện tử rất đa dạng, có thể là một tên hoặc hình ảnh cá nhân kèm theo dữ liệu điện tử, một mã khóa bí mật, hay một dữ liệu sinh trắc học ( chẳng hạn như hình ảnh mặt, dấu vân tay, hình ảnh mống mắt … ) có khả năng xác thực người gửi. Độ an toàn của từng dạng là khác nhau. Quy trình thực hiện chữ ký điện tử : Các bước mã hóa : 1. Dùng giải thuật băm để thay đổi thông điệp cần truyền đi, kết quả là ta được một message digest, dùng giải thuật md5 (message digest 5) ta được digest có chiều dài 128 bit, dùng giải thuật sha ( secure hash algorithm ) ta có chiều dài 160 bit. 2. Sử dụng khóa private key của người gửi để mã hóa mesage digest thu được ở bước 1. Thông thường ở bước này ta dùng giải thuật rsa. Kết quả thu được gọi là digital signature của mesage ban đầu. 3. Gộp digital signature vào message ban đầu, công việc này gọi là ‘’ ký nhận ’’ vào message. Sau khi đã ký nhận vào message, mọi sự thay đổi trên message sẽ bị phát hiện trong giai đoạn kiểm tra. Ngoài ra, việc ký nhận này đảm bảo người nhận tin tưởng message này xuất phát từ người gửi chứ không phải là ai khác. Các bước kiểm tra : 1. Dùng public key của người gửi (khóa này được thông báo đến mọi người) để giải mã chữ ký số của message. 2. Dùng giải thuật (md5 hoặc sha) hàm băm message đính kèm. 3. So sánh kết quả thu được ở bước 1 và 2. Nếu trùng nhau, ta kết luận message này không bị thay đổi trong quá trình truyền và message này là của người gửi. Mỗi cá nhân khi tham gia vào hệ thống chữ ký điện tử cần phải được cung cấp một bộ khóa (Public key, Private key) dùng để định danh cá nhân đó bởi một tổ chức cơ quan có thẩm quyền và được công nhận trong phạm vi sự dụng. 3.4.2. SSL (Secure Socket Layer) SSL là giao thức đa mục đích được thiết kế nhằm mã hóa toàn bộ thông tin đến/ đi giữa hai chương trình ứng dụng một cổng định trước (socket 443). Giao thức SSL được hình thành và phát triển đầu tiên năm 1994 bởi nhóm nghiên cứu Netscape và ngay nay trở thành chuẩn bảo mật thực hành trên mạng Internet. Phiên bản hiện nay là SSL 3.0 và đang tiếp tục được bổ xung hoàn thiện. CHƯƠNG VI: GIAO THỨC THỎA THUẬN KHÓA DIFFIE HELLMAN 4.1. Giới thiệu. Hình 4.1. Giáo sư Martin Hellman (giữa) cùng đồng nghiệp là Whitfield Diffie (phải) đã khám phá ra mật mã khóa công khai Diffie-Hellman. Năm 1976, một sự đột phá đã thay đổi nền tảng cơ bản trong cách làm việc của các hệ thống mật mã hóa. Đó chính là việc công bố của bài viết phương hướng mới trong mật mã học (New Directions in Cryptography) của Whitfield Diffie và Martin Hellman. Bài viết giới thiệu một phương pháp hoàn toàn mới về cách thức phân phối các khóa mật mã. Là hệ thống đầu tiên sử dụng "public-key" hoặc các khóa mật mã "không đối xứng", và nó được gọi là trao đổi khóa Diffie-Hellman (Diffie-Hellman key exchange). Bài viết còn kích thích sự phát triển gần nhất tức thời của một lớp các thuật toán mật mã hóa mới, các thuật toán chìa khóa bất đối xứng (asymmetric key algorithms). Trao đổi khóa Diffie-Hellman bị cáo buộc rằng nó đã đưuc phát minh ra một cách độc lập một vài năm trước đó trong Trụ sở Truyền Thông Chính phủ Anh (GCHQ) bởi Malcolm J .Williamson). Vào năm 2002, Hellman đã đưa ra thuật toán được gọi chung là trao đổi khóa Diffie–Hellman–Merkle công nhận sự đóng góp của cả Ralph Merkle, người đã phát minh ra thuật toán mã hóa công khai. Trước thời kỳ này, hầu hết các thuật toán mật mã hóa hiện đại đều là những thuật toán khó đối xứng (symmetric key gorithms), trong đó cả người gửi và người nhận phải dùng chung một khóa, tức khóa dùng trong thuật toán mật mã, và cả hai người đều phải giữ bí mật về khóa này. Tất cả các máy điện cơ dùng trong thế chiến II, kể cả mã Caesar và mã Atbash, và về bản chất mà nói, kể cả hầu hết các hệ thống mã được dùng trong suốt quá trình lịch sử nữa đều thuộc về loại này. Đương nhiên, khóa của một mã chính là sách mã (codebook), và là cái cũng phải được phân phối và giữ gìn một cách bí mật tương tự. Do nhu cầu an ninh, khóa cho mỗi một hệ thống như vậy nhất thiết phải đựợc trao đổi giữa các bên giao thông liên lạc bằng một phương thức an toàn nào đấy, trước khi họ sử dụng hệ thống (thuật ngữ thường được dùng là 'thông qua một kênh an toàn'), ví dụ như bằng việc sử dụng một người đưa thư đáng tin cậy với một cặp tài liệu được khóa vào cổ tay bằng một cặp khóa tay, hoặc bằng cuộc gặp gỡ mặt đối mặt, hay bằng một con chim bồ câu đưa thư trung thành …Vấn đề này chưa bao giờ được xem là dễ thực hiện, và nó nhanh chóng trở nên một việc gần như không thể quản lý được khi số lượng người tham gia tăng lên, hay khi người ta không còn các kênh an toàn để trao đổi khóa nữa, hoặc lúc họ phải liên tục thay đổi các chìa khóa-một thói quen nên thực hiện trong khi làm việc với mật mã. Cụ thể là mỗi một cặp truyền thông cần phải có một khóa riêng nếu, theo như thiết kế của hệ thống mật mã, không một người thứ ba nào, kể cả khi người ấy là một người dùng, được phép giải mã các thông điệp. Một hệ thống thuộc loại này được gọi là một hệ thống dùng chìa khóa mật, hoặc một hệ thống mật mã hóa dùng khóa đối xứng. Hệ thống trao đổi khóa Diffie-Hellman (cùng những phiên bản được nâng cấp kế tiếp hay các biến thể của nó) tạo điều kiện cho các hoạt động này trong các hệ thống trở nên dễ dàng hơn rất nhiều, đồng thời cũng an toàn hơn, hơn tất cả những gì có thể làm trước đây. Mặc dù, bản thân thuật toán là một giao thức chọn khóa nặc danh (không cần thông qua xác thực) nhưng nó đã cung cấp ra một cơ sở cho các giao thức xác thực khác nhau khá hoàn hảo. Phương thức tiếp nối ngay sau Diffie – Hellman là RSA, một thể hiện của mã khóa công khai sử dụng thuật toán bất đối xứng. 4.2. Giao thức thỏa thuận khóa Diffie – Hellman 4.2.1. Khái niệm thỏa thuận khóa. Thoả thuận khoá: việc trao đổi khoá giữa các chủ thể trong một cộng đồng nào đó có thể được thiết lập một cách tự do giữa bất cứ hai người nào khi có nhu cầu trao đổi thông tin. 4.2.2. Giao thức thỏa thuận khóa Diffie - Hellman. - Trao đổi khóa Diffie – Hellman là thiết lập một khóa chia sẻ bí mật được sử dụng cho thông tin liên lạc bí mật bằng cách trao đổi dữ liệu thông qua mạng công cộng. Đây mà một trong số nhiều phương thức dùng để trao đổi khóa trong ngành mật mã học. - Phương pháp này không cần có sự can thiệp của một TA ( cơ quan ủy thác) làm nhiệm vụ điều hành hoặc phân phối khóa. - Phương pháp này cho phép những người sử dụng có thể cùng nhau tạo ra một khóa bí mật thông qua một kênh truyền thống không đảm bảo về độ bảo mật. Khóa bí mật này sẽ được dùng để ngƣời sử dụng tr o đổi thông tin với nhau. 4.2.2.1. Cách thiết lập giao thức thỏa thuận khóa Diffie - Hellman. Tình huống: + Alice và Bob muốn chia sẻ thông tin bảo mật cho nhau nhưng phương tiện truyền thông duy nhất của họ là không an toàn. Tất cả các thông tin mà họ trao đổi được quan sát bởi Eve kẻ thù của họ. + Làm thế nào để Alice và Bob chia sẻ thông tin bảo mật cho nhau mà không làm cho Eve biết được? + Thoạt nhìn ta thấy Alice và Bob phải đối mặt với một nhiệm vụ không thể. Giải quyết tình huống trên: + Alice và Bob đồng ý dùng chung về một nhóm cyclic hữu hạn G và một yếu tố tạo ra g trong G. (Điều này thường được thực hiện rất lâu trước khi phần còn lại của giao thức, g được giả định là được biết đến bởi tất cả các kẻ tấn công) + Khi Alice và Bob muốn truyền thông tin bảo mật cho nhau có thể cùng thực hiện theo giao thức sau để trao đổi: 1. Alice chon ngẫu nhiên số aA (0 ≤ aA ≤ p-2) bí mật, tínhvà gửi bA cho Bob 2. Tương tự, Bob chọn ngẫu nhiên số aB (0 ≤ aB ≤ p-2) bí mật, tính và gửi bB cho Alice. 3. Alice tính được khóa: 4. Bob tính được khóa: + Bây giờ Alice và Bob có cùng khóa chung là: + Mô tả giao thức Diffie – Hellman bằng bảng sau: Chú ý là chỉ có aA, aB và KA, KB là được giữ bí mật. Tất cả các giá trị còn lại như p, g, bA, bB, đều công khai. Một khi Alice và Bob tính được khóa bí mật dùng chung, họ có thể dùng nó làm khóa mã hóa chỉ họ biết để gửi các thông điệp qua cùng kênh giao tiếp mở. Đương nhiên, để đảm bảo an toàn, các giá trị aA, aB và p cần được lấy lớn, g không cần lấy giá trị quá lớn. Thực tế thì g thường lấy giá trị 2 hoặc 5. 4.2.2.2. Sơ đồ giao thức thỏa thuận khóa Diffie - Hellman. Hình 4.2: Sơ đồ giao thức thỏa thuận khóa Diffie – Hellman Sơ đồ dưới đây minh họa phần nào ý tưởng chung. Đầu tiên, Alice và Bob đã thống nhất về màu sơn chung (màu vàng), Alice và Bob trao đổi màu sắc đã đƣợc trộn của họ. Cuối cùng, điều này tạo ra một màu bí mật giống hệt nhau mà kẻ khác không có khả năng tạo được ra giống vậy. Kể từ đây, Alice và Bob sẽ trao đổi bằng cách mã hóa và giải mã sử dụng khóa bí mật đó (thể hiện bằng màu sơn bí mật cuối cùng). 4.2.2.3. Ví dụ bằng số minh họa. 1. Alice và Bob thống nhất với nhau chọn số nguyên tố p = 37 và g = 5. 2. Alice chọn một giá trị ngẫu nhiên bất kỳ aA = 7 và bí mật aA. Alice tính bA = 57 mod 37 = 18. Sau đó Alice gửi bA = 18 cho Bob. 3. Bob chọn một giá trị ngẫu nhiên bất kỳ aB = 5 và bí mật aB Bob tính bB = 55 mod 37 = 17. Sau đó Bob gửi bB = 17 cho Alice. 4. Bob nhận được bA = 18 và tính khóa chung: KB = 184 mod 37=15, và bí mật KB 5. Alice nhận được bB =17 và tính khóa chung: KA = 177 mod 37=15, và bí mật KA 4.2.3. Các đặc điểm đặc trưng của giao thức thảo thuận khóa Diffie - Hellman. 4.2.3.1. Giao thức là an toàn đối với việc tấn công thụ động. Giao thức là an toàn đối với việc t n c ng thụ động, nghĩa là một người thứ b dù biết bA và bB sẽ khó mà biết được KA,B. Xét ví dụ: 1. Alice và Bob thống nhất với nhau chọn số nguyên tố p = 17 và g = 2. 2. Alice chọn một giá trị ngẫu nhiên bất kỳ aA = 6 và bí mật aA. Alice tính bA = 26 mod 17 = 13. Sau đó A ice gửi bA = 13 cho Bob. 3. Bob chọn một giá trị ngẫu nhiên bất kỳ aB = 9 và bí mật aB Bob tính bB = 29 mod 17 = 2. Sau đó Bob gửi bB = 2 cho Alice. 4. Bob nhận được bA = 13 và tính khóa chung: KB = 139 mod 17=13, và bí mật KB 5. Alice nhận được bB = 2 và tính khóa chung: KA = 26 mod 17=13, và bí mật KA Eve là một kẻ nghe trộm – cô ta theo dõi những gì Alice và Bob gửi cho nhau nhưng không thể thay đổi nội dung các cuộc liên lạc. Eve muốn tái thiết lại những thông tin bảo mật mà Alice và Bob chia sẻ cho nhau. Eve sẽ phải đối mặt với một nhiệm vụ thực sự khó khăn. Dưới đây là các biểu đồ giúp xác định ai biết được giá trị nào. (Eve là một kẻ nghe trộm.) Ta thấy Eve rơi vào tình thế tiến thoái lưỡng nam. Cô ấy biết được giá trị của bA, bB vì vậy cô ấy biết được , . Cô ấy cũng biết những giá trị của g và p, nhưng lại không biết được các giá trị của aA, aB và KA,B Đây chính là bài toán Diffie - Hellman mà khi biết bA, bB tìm KA,B, bài toán này tương đương với bài toán phá mã ElGammal. Bây giờ ta đi chứng minh điều này. - Phép mật mã ElGammal với khoá K = (p, g, a, β), trong đó β = ga mod p cho t từ một bản rõ x và một số ngẫu nhiên k ∈ Zp-1 lập được mật mã eK(x, k) = (y1, y2) với y1 = gk mod p, y2 = xβk mod p. Và phép giải mã được cho bởi y1 = gk mod p. Giả sử ta có thuật toán A giải bài toán Diffie-Hellman. Ta sẽ dùng A để phá mã ElGammal như sau: Cho mật mã (y1, y2). Trước tiên, dùng A cho y1 = gk mod p và β = ga mod p ta được A(y1,B) = gka = βk mod p. Sau đó, ta thu được bản rõ x từ βk và y2 như sau: x = y2(βk)-1 mod p. Ngược lại, giả sử có một thuật toán khác là B dùng để phá mã EllGamml , tức là .Áp dụng B cho β = bA, y1 = bB, y2=1, ta được mod p tức giải được bài toán Diffie – Hellman. Trên thực tế các giá trị của p, aA, aB là rất lớn. Nếu p là số nguyên tố có ít nhất 300 chữ số, aA và aB có ít nhất 100 chữ số thì thậm chí ngay cả thuật toán tốt nhất được biết đến hiện nay cũng không thể giải đưuợc nếu chỉ biết g, p, bA, bB kể cả khi sử dụng tất cả khả năng tính toán của nhân loại. Bài toán này còn được biết đến với tên gọi bài toán logarit rời rạc. Bài toán logarit rời rạc vẫn còn đang gây rất nhiều tranh cãi và chưa có thuật giải cụ thể nào. 4.2.3.2. Giao thức là không an toàn đối với việc tấn công chủ động. Giao thức là không an toàn đối với việc tấn công chủ động bằng cách đánh tráo giữa đường. Nghĩa là một người thứ ba Eve có thể đánh tráo các thông tin trao đổi giữa Alice và Bob. Chẳng hạn, Eve thay mà Alice định gửi cho Bob bởi và thay mà Bob định gửi cho Alice bởi . Như vậy, sau khi thực hiện giao thức trao đổi khoá, Alice đã lập một khoá chung với Eve mà vẫn tưởng là với Bob; đồng thời Bob cũng lập một khoá chung với Eve mà vẫn tưởng là với Alice. Eve có thể giải mã mọi thông báo mà Alice tưởng nhầm là mình gửi đến Bob cũng như mọi thông báo mà Bob tưởng nhầm là mình gửi đến Alice. Một cách khắc phục kiểu tấn công này là làm sao để Alice và Bob có kiểm thử để xác nhận tính đúng đắn của các khoá công khai bA và bB. Người ta đưa vào giao thức trao đổi khoá Diffie-Hellman thêm vai trò điều phối của một TA để được một hệ phân phối khoá Diffie-Hellman như một cách khắc phục nhược điểm này. Trong hệ phân phối khoá Diffie-Hellman, sự can thiệp của TA là rất yếu, thực ra TA chỉ làm mỗi việc là cấp chứng chỉ xác nhận khoá công khai cho từng người dùng chứ không đòi hỏi biết thêm bất cứ một bí mật nào của người dùng. Tuy nhiên, nếu chưa thoả mãn với vai trò hạn chế đó của TA thì có thể cho TA một vai trò xác nhận yếu hơn, không liên quan gì đến khoá, chẳng hạn như xác nhận thuật toán kiểm thử chữ ký của người dùng, còn bản thân các thông tin về khoá (cả bí mật lẫn công khai) thì do các người dùng trao đổi trực tiếp với nhau. TÀI LIỆU THAM KHẢO Tài liệu tiếng Việt [1]. Bài giảng An ninh mạng viễn thông. TS. Nguyễn Phạm Anh Dũng – Học viện công nghệ BCVT. [2]. Cơ sở lý thuyết mật mã. PGS. TS. Nguyễn Bình, TS. Trần Đình Sự. Học viện kỹ thuật mật mã. 2006 [3]. Thuật toán mã hóa và ứng dụng. TS. Dương Anh Đức, ThS. Trần Minh Triết. Đại học Khoa học tự nhiên – Đại học Quốc gia TP. HCM. 2005 [4]. Bài giảng An ninh mạng (Network security) . Học viện kỹ thuật mật mã. Phan Đình Diệu, Giáo trình lý thuyết mật mã và an toàn thông tin, Nhà xuất bản Đại học Quốc gia Hà Nội, 1999. Tài liệu Tiếng Anh [5]. RSA Cryptography Standard, October 27, 2012. Địa chỉ trên mạng INTERNET http://aita.gov.vn http://tiasang.com.vn/ http://antoanthongtin.vn/ http://www.pcworld.com.vn/ http://123doc.vn/ http://www.wattpad.com/ 27