1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo lập trình C# mã hóa và bảo mật thông tin

34 2,6K 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 713,5 KB

Nội dung

LỜI NÓI ĐẦU Như các bạn đã biết ngay từ xa xưa con người chúng ta đã biết truyền thông .Trong một thời đại không có điện thoại cũng chẳng có thư điện tử , bất kỳ ai muốn truyền thông tin riêng của mình đến một người nào khác ở nơi xa chỉ có một cách là viết nó lên mặt giấy rồi giao phó cho một người mang thư đi .Nếu chẳng may người mang thư đó ngờ là trong thư có những thông tin quý giá ,anh ta có thể bán đứng cho kẻ thù để kiếm được nhiều tiền hơn là đưa nó đến đúng địa chỉ .Nhiều bộ óc trong lịch sử đã phát minh ra các phương pháp sử dụng mật mã để giải quyết những thách thức trong việc bảo vệ dữ liệu . Jujius Caesar phát minh ra cách viết mật mã được gọi là hộp Caesar ; Mary , Nữ hoàng Scotland đã tạo ra mật mã thay thế và gởi đi những thông báo bí mật từ nhà tù ; nhà khoa học xuất sắc người Arập Abu Yusuf Ismail al-Kindi đã bảo vệ được những bí mật của mình bằng một mật mã thay thế tài tình sử dụng nhiều chữ cái khác nhau … Ngày nay , khi khoa học phát triển , mật mã cũng được sử dụng trong những hệ thống cần độ bảo mật cao như : Ngân hàng , bưu chính ,…. Những thuật toán mã hóa được phát triển ngày nhiều và có độ bảo mật cao hơn. Giới thiệu Mã hóa với mục đích làm cho dữ liệu không thể đọc được bởi bất cứ ai, ngoại trừ những ai được cho chép đọc. Mã hóa sử dụng thuật toán và khóa để biến đổi dữ liệu từ hình thức đơn giản rõ ràng (plain hay cleartext), làm biến dữ liệu sang hình tức mật mã vô nghĩa (code hay ciphertext). Chỉ có những ai có thông tin giải mã thì mới giải mã được và đọc được dữ liệu. I. Một số khái niệm : 1) Khái niệm về mã hóa 1.1.Khái niệm: Cryptography , được dịch là "mật mã học", là một ngành có nhiều thuật ngữ có thể làm cho nhiều người "ngơ ngác": như "hash function", "one-time pad" hay Rijndael Cryptography (hay crypto) - mật mã học – ngành khoa học nghiên cứu về việc giấu thông tin. Cụ thể hơn, mật mã học là ngành học nghiên cứu về những cách chuyển đổi thông tin từ dạng "có thể hiểu được" thành dạng "không thể hiểu được" và ngược lại. 1.2.Đặc điểm: Cryptography giúp đảm bảo những tính chất sau cho thông tin:  Tính bí mật (confidentiality): thông tin chỉ được tiết lộ cho những ai được phép.  Tính toàn vẹn (integrity): thông tin không thể bị thay đổi mà không bị phát hiện .  Tính xác thực (authentication): người gửi (hoặc người nhận) có thể chứng minh đúng họ.  Tính không chối bỏ (non-repudiation): người gửi hoặc nhận sau này không thể chối bỏ việc đã gửi hoặc nhận thông tin. Mật mã có rất nhiều ứng dụng trong thực tế như bảo vệ giao dịch tài chính (rút tiền ngân hàng, mua bán qua mạng), bảo vệ bí mật cá nhân Nếu kẻ tấn công đã vượt qua tường lửa và các hệ thống bảo vệ khác thì mật mã chính là hàng phòng thủ cuối cùng cho dữ liệu của bạn. Cần phân biệt khái niệm cryptography với khái niệm steganography (tạm dịch là giấu thông tin). Điểm khác nhau căn bản nhất giữa hai khái niệm này là: cryptography là việc giấu nội dung của thông tin, trong khi steganography là việc giấu sự tồn tại của thông tin đó. 1.3.Các thuật ngữ cần biết khi nghiên cứu mã hóa thông tin:  Cryptosystem (viết tắt của cryptographic system): hệ thống mã hóa thông tin, có thể là phần mềm như PGP, Ax-Crypt, Truecrypt giao thức như SSL, IPsec hay đơn giản là một thuật toán như DES.  Encrypt (encipher): mã hóa – quá trình biến đổi thông tin từ dạng ban đầu - có thể hiểu được thành dạng không thể hiểu được, với mục đích giữ bí mật thông tin đó.  Decrypt (decipher): giải mã – quá trình ngược lại với mã hóa, khôi phục lại thông tin ban đầu từ thông tin đã được mã hóa.  Plaintext (cleartext): dữ liệu gốc (chưa được mã hóa).  Ciphertext: dữ liệu đã được mã hóa. Lưu ý: Từ text (hay message) ở đây được dùng theo quy ước, được hiểu là tất cả những dữ liệu được mã hóa (hay giải mã) chứ không chỉ là văn bản chữ như nghĩa thông thường. Khi dịch ra tiếng Việt, từ "văn bản" và từ "thông điệp" cũng tuân theo quy ước tương tự.  Cipher (hay cypher): thuật toán dùng để thực hiện quá trình mã hóa hay giải mã. Trong bài này gọi tắt là thuật toán  Key: chìa khóa – thông tin dùng cho qui trình mã hóa và giải mã.  Code: cần phân biệt code trong mật mã học với code trong lập trình hay code trong Zip code Trong cryptography, code (mã) có ý nghĩa gần như là cipher (thuật toán). Chúng chỉ khác nhau ở chỗ: code biến đổi thông tin ở tầng nghĩa (từ, cụm từ) còn cipher biến đổi thông tin ở tầng thấp hơn, ví dụ chữ cái (hoặc cụm chữ cái) đối với các thuật toán cổ điển hay từng bit (hoặc nhóm bit) đối với các thuật toán hiện đại.  Cryptanalysis: nếu coi mật mã học là việc cất dữ liệu của bạn vào một cái hộp sau đó dùng chìa khóa khóa lại, thì cryptanalysis là ngành nghiên cứu những phương pháp mở hộp để xem dữ liệu khi không có chìa khóa. 2) Khái niệm về chìa khóa : 2.1. Password: mật khẩu, là một hay nhiều từ mà người dùng phải biết để được cấp quyền truy cập. Trong thực tế, mật khẩu do người dùng tạo ra thường không đủ độ an toàn để được dùng trực tiếp trong thuật toán. Vì vậy, trong bất cứ hệ thống mã hóa dữ liệu nghiêm túc nào cũng phải có bước chuyển đổi mật khẩu ban đầu thành chìa khóa có độ an toàn thích hợp. Bước tạo chìa khóa này thường được gọi là key derivation, key stretching hay key initialization . 2.2. Key Derivation Function: là một hàm hash được thiết kế sao cho chìa an toàn hơn đối với tấn công kiểu brute-force hay cổ điển. Hàm này được thực hiện lại nhiều lần trên mật khẩu ban đầu cùng với một số ngẫu nhiên để tạo ra một chìa khóa có độ an toàn cao hơn. Số ngẫu nhiên này gọi là salt, còn số lần lặp lại là iteration. Ví dụ : Một mật khẩu là "pandoras B0x", cùng với salt là "230391827", đi qua hàm hash SHA-1 1000 lần cho kết quả là một chìa khóa có độ dài 160 bit như sau: 3BD454A72E0E7CD6959DE0580E3C19F51601C359 (thể hiện dưới dạng số thập lục phân). 2.3. Keylength (Keysize): Độ dài (hay độ lớn) của chìa khóa. Nói một chìa khóa có độ dài 128 bit có nghĩa chìa đó là một số nhị phân có độ dài 128 chữ số. Một thuật toán có chìa khóa càng dài thì càng có nhiều khả năng chống lại tấn công kiểu brute-force. II. THUẬT TOÁN MÃ HÓA Ở đây ta dùng hai đối tượng Alice và Bod để mô tả cho các đối tượng gởi và nhận 1) Cổ điển : 1.1. Substitution: thay thế – phương pháp mã hóa trong đó từng kí tự (hoặc từng nhóm kí tự) của văn bản ban đầu được thay thế bằng một (hay một nhóm) kí tự khác. Tuy không còn được sử dụng nhưng ý tưởng của phương pháp này vẫn được tiếp tục trong những thuật toán hiện đại. 1.2 Transposition: hoán vị – phương pháp mã hóa trong đó các kí tự trong văn bản ban đầu chỉ thay đổi vị trí cho nhau còn bản thân các kí tự không hề bị biến đổi. 2) Hiện đại : 2.1. Symmetric cryptography: Mã hóa đối xứng ,tức là cả hai quá trình mã hóa và giải mã đều dùng một chìa khóa. Để đảm bảo tính an toàn, chìa khóa này phải được giữ bí mật. Vì thế các thuật toán loại này còn có tên gọi khác là secret key cryptography (hay private key cryptography), tức là thuật toán mã hóa dùng chìa khóa riêng (hay bí mật). Các thuật toán loại này lý tưởng cho mục đích mã hóa dữ liệu của cá nhân hay tổ chức đơn lẻ nhưng bộc lộ hạn chế khi thông tin đó phải được chia sẻ với một bên thứ hai. Ví dụ: Giả sử nếu Alice chỉ gửi thông điệp đã mã hóa cho Bob mà không hề báo trước về thuật toán sử dụng, Bob sẽ chẳng hiểu Alice muốn nói gì. Vì thế bắt buộc Alice phải thông báo cho Bob về chìa khóa và thuật toán sử dụng tại một thời điểm nào đó trước đấy. Alice có thể làm điều này một cách trực tiếp (mặt đối mặt) hay gián tiếp (gửi qua email, tin nhắn ). Điều này dẫn tới khả năng bị người thứ ba xem trộm chìa khóa và có thể giải mã được thông điệp Alice mã hóa gửi cho Bob. Mã hóa đối xứng có thể phân thành hai nhóm phụ: - Block ciphers: thuật toán khối – trong đó từng khối dữ liệu trong văn bản ban đầu được thay thế bằng một khối dữ liệu khác có cùng độ dài. Độ dài mỗi khối gọi là block size, thường được tính bằng đơn vị bit. Ví dụ thuật toán 3-Way có kích thước khối bằng 96 bit. Ví dụ: 3DES, RC5, RC6, 3-Way, CAST, Camelia, Blowfish, MARS, Serpent, Twofish, GOST - Stream ciphers: thuật toán dòng – trong đó dữ liệu đầu vào được mã hóa từng bit một. Các thuật toán dòng có tốc độ nhanh hơn các thuật toán khối, được dùng khi khối lượng dữ liệu cần mã hóa chưa được biết trước ( ví dụ trong kết nối không dây). Có thể coi thuật toán dòng là thuật toán khối với kích thước mỗi khối là 1 bit. Ví dụ: RC4, A5/1, A5/2, Chameleon 2.2. Asymmetric cryptography: Mã hóa bất đối xứng, sử dụng một cặp chìa khóa có liên quan với nhau về mặt toán học, một chìa công khai dùng để mã hoá (public key) và một chìa bí mật dùng để giải mã (private key). Một thông điệp sau khi được mã hóa bởi chìa công khai sẽ chỉ có thể được giải mã với chìa bí mật tương ứng. Do các thuật toán loại này sử dụng một chìa khóa công khai (không bí mật) nên còn có tên gọi khác là public-key cryptography (thuật toán mã hóa dùng chìa khóa công khai). Quay lại với Alice và Bob, nếu Alice muốn gửi một thông điệp bí mật tới Bob, cô ta sẽ tìm chìa công khai của Bob. Sau khi kiểm tra chắc chắn chìa khóa đó chính là của Bob chứ không của ai khác (thông qua chứng chỉ điện tử – digital certificate), Alice dùng nó để mã hóa thông điệp của mình và gửi tới Bob. Khi Bob nhận được bức thông điệp đã mã hóa anh ta sẽ dùng chìa bí mật của mình để giải mã nó. Nếu giải mã thành công thì bức thông điệp đó đúng là dành cho Bob. Alice và Bob trong trường hợp này có thể là hai người chưa từng quen biết. Một hệ thống như vậy cho phép hai người thực hiện được giao dịch trong khi không chia sẻ trước một thông tin bí mật nào cả. Một trong những hạn chế của các thuật toán mã hóa bất đối xứng là tốc độ chậm, do đó trong thực tế người ta thường sử dụng một hệ thống lai tạp trong đó dữ liệu được mã hóa bởi một thuật toán đối xứng, chỉ có chìa dùng để thực hiện việc mã hóa này mới được mã hóa bằng thuật toán bất đối xứng. 3) So sánh đối xứng và bất đối xứng: Mã hóa đối xứng Khóa: Mã hóa bất đối xứng Giải mã và mã hóa với cùng một chìa hoặc có quan hệ rõ ràng với nhau (có thể suy ra một chìa nếu biết chìa còn lại) Mã hóa bằng một chìa công khai (Public key), giải mã bằng chìa bí mật (Private key) Tốc độ: Các thuật toán đối xứng nói chung đòi hỏi công suất tính toán ít hơn các thuật toán khóa bất đối xứng (asymmetric key algorithms). Một thuật toán khóa bất đối xứng có khối lượng tính toán nhiều hơn gấp hằng trăm, hằng ngàn lần một thuật toán khóa đối xứng có độ an toàn tương đương. An toàn: Cả hai thuật toán đều đảm bảo an toàn dữ liệu. Tuy nhiên khi cần truyền dữ liệu trên diện rộng ( qua mạng internet) thì thuật toán mã hóa bất đối xứng khó bị lộ chìa khóa hơn. Tuy nhiên khi mã hóa thông tin người ta thường sử dụng phương pháp lai tạp, nghĩa là kết hợp giữa đối xứng và bất đối xứng ( dùng đối xứng để mã hóa dữ liệu và dùng bất đối xứng để mã hóa key của phép đối xứng và gởi kèm theo dữ liệu) 4) Hàm hash : Hashing là một phương thức mật mã nhưng nó không phải là một thuật toán mã hoá .Đúng như vậy, hashing chỉ sử dụng một chứng chỉ số duy nhất được biết đến với tên như “hash value – giá trị hash”, “hash – băm”, Message Authentication Code (MAC), fingerprint – vân tay, hay một đoạn message. Hàm hash (hash function) là hàm một chiều mà nếu đưa một lượng dữ liệu bất kì qua hàm này sẽ cho ra một chuỗi có độ dài cố định ở đầu ra. Ví dụ: từ "Illuminatus" đi qua hàm SHA-1 cho kết quả E783A3AE2ACDD7DBA5E1FA0269CBC58D. Ta chỉ cần đổi "Illuminatus" thành "Illuminati" (chuyển "us" thành "i") kết quả sẽ trở nên hoàn toàn khác (nhưng vẫn có độ dài cố định là 160 bit) A766F44DDEA5CACC3323CE3E7D73AE82. Dữ liệu đầu vào của bạn có thể là một file, một ổ đĩa một quá trình truyền thông tin trên mạng, hay một bức thư điện tử. Thông số hash value được sử dụng để phát hiện khi có sự thay đổi của dữ liệu đầu vào. Nói cách khác, hashing sử dụng nó để phát hiện ra dữ liệu có toàn vẹn trong quá trình lưu trữ hay trong khi truyền hay không. Không như các phương thức mật mã khác (chúng sẽ làm thay đổi dữ liệu thành một dạng mật mã), quá trình hashing chỉ tính toán và đưa ra thông số hash value của dữ liệu và không thay đổi dữ liệu ban đầu. Hai tính chất quan trọng của hàm này là: o Tính một chiều: không thể suy ra dữ liệu ban đầu từ kết quả, điều này tương tự như việc bạn không thể chỉ dựa vào một dấu vân tay lạ mà suy ra ai là chủ của nó được. o Tính duy nhất: xác suất để có một vụ va chạm (hash collision), tức là hai thông điệp khác nhau có cùng một kết quả hash, là cực kì nhỏ. Một số ứng dụng của hàm hash: • Chống và phát hiện xâm nhập: chương trình chống xâm nhập so sánh giá trị hash của một file với giá trị trước đó để kiểm tra xem file đó có bị ai đó thay đổi hay không. • Bảo vệ tính toàn vẹn của thông điệp được gửi qua mạng bằng cách kiểm tra giá trị hash của thông điệp trước và sau khi gửi nhằm phát hiện những thay đổi cho dù là nhỏ nhất. Ví dụ: thông số hash value được tính toán để so sánh với thông số hash value được tạo ra trước đó một tuần. Nếu hai thông số giống nhau thì dữ liệu chưa có sự thay đổi. Nếu hai thông số có sự khác nhau, thì dữ liệu đã bị thay đổi. Trong hình dưới đây thể hiện cơ bản về hash hay thông số MAC. Thông số MAC value được tính toán bởi người gửi (sender) và người nhận (receive) với cùng một thuật toán. • Tạo chìa khóa từ mật khẩu. • Tạo chữ kí điện tử. Thuật toán hashing thường được sử dụng:  Secure Hash Algorithm (SHA-1) với – 160-bit hash value  Message Digest 5 (MD5) với —128-bit hash value  Message Digest 4 (MD4) với —128-bit hash value  Message Digest 2 (MD2) với —128-bit hash value SHA-1 và MD5 là hai hàm hash thông dụng nhất và được sử dụng trong rất nhiều hệ thống bảo mật. Vào tháng 8 năm 2004, tại hội nghị Crypto 2004, người ta đã tìm thấy va chạm đối với MD5 và SHA-0, một phiên bản yếu hơn của hàm hash SHA-1. Không bao lâu sau đó, vào khoảng giữa tháng 2 năm 2005, một nhóm ba nhà mật mã học người Trung Quốc đã phát hiện ra một phương pháp có thể tìm thấy va chạm đối với SHA-1 chỉ trong vòng 269 bước tính toán (tức là có thể nhanh hơn brute-force vài nghìn lần). Người dùng bình thường cũng không cần phải hoảng sợ trước những phát hiện này bởi vì ít nhất phải một vài năm nữa người ta mới có khả năng mang những kết quả đó vào trong thực tế. Tuy vậy, các chuyên gia vẫn khuyên nên bắt đầu chuyển sang các hàm hash an toàn hơn như SHA-256, SHA-384 hay SHA- 512. III. MỘT SỐ PHƯƠNG PHÁP TẤN CÔNG HỆ THỐNG THÔNG TIN MÃ HÓA Bất cứ ai cũng có thể tạo ra một hệ thống thông tin mã hóa cho riêng mình. Nhưng để có một hệ thống an toàn và hiệu quả đòi hỏi người thiết kế phải có kiến thức toán học sâu sắc, có kinh nghiệm về bảo mật và am hiểu các phương pháp tấn công. 1) Brute-force attack (exhaustive key search): phương pháp tấn công bằng cách thử tất cả những chìa khóa có thể có. Đây là phương pháp tấn công thô sơ nhất và cũng khó khăn nhất. Theo lý thuyết, tất cả các thuật toán hiện đại đều có thể bị đánh bại bởi brute-force nhưng trong thực tiễn việc này chỉ có thể thực hiện được trong thời gian hàng triệu, thậm chí hàng tỉ năm. Vì thế có thể coi một thuật toán là an toàn nếu như không còn cách nào khác để tấn công nó dễ hơn là brute-force. Ví dụ: Thuật toán DES có độ dài chìa khóa là 56 bit . Nếu ai đó muốn "bẻ khoá” DES bằng cách thử hàng loạt chìa (brute-force attack) thì sẽ phải thử khoảng hơn 70 triệu tỉ lần . 2) Frequency analysis: thống kê tần suất, chỉ có thể áp dụng được đối với các thuật toán cổ điển dùng phương pháp thay thế, ví dụ phương pháp Caesar. Để thực hiện phương pháp này ta cần một lượng văn bản đã mã hóa đủ lớn để phép thống kê được chính xác. Ngoài ra còn phải biết ngôn ngữ sử dụng trong văn bản ban đầu, nếu văn bản ban đầu là tiếng Anh thì nhiều khả năng kí tự xuất hiện nhiều nhất trong văn bản đã mã hóa là do chữ e mã hóa thành, kí tự nhiều thứ nhì bắt nguồn từ chữ a 3) Differential cryptanalysis: Eli Biham và Adi Shamir tìm ra phương pháp này vào khoảng cuối những năm 1980; nó thường được sử dụng để tấn công các thuật toán khối (block cipher - sẽ nói rõ hơn ở phần sau). Phương pháp này dựa trên việc phân tích những biến đổi của hai văn bản gốc có liên quan khi được mã hóa bởi cùng một chìa. Còn rất nhiều phương pháp khác như Mod-n cryptanalysis, Linear cryptanalysis, Birthday attack, Algebraic attack mà bất cứ ai thiết kế hệ thống mã hóa cũng phải chú ý tới. [...]... hai khóa :khóa công khai ( hau khóa công cộng ) và khóa bí mật ( hay khóa cá nhân ) Mỗi khóa là những khoá 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 Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa... lại) IP và EP không có vai trò xét về mật mã học và việc sử dụng chúng chỉ có ý nghĩa đáp ứng cho quá trình đưa thông tin vào và lấy thông tin ra từ các khối phần cứng có từ thập niên 1970 Trước khi đi vào 16 chu trình chính, khối thông tin 64 bit được tách làm hai phần 32 bit và mỗi phần sẽ được xử lý tuần tự (quá trình này còn được gọi là mạng Feistel) Cấu trúc của thuật toán (mạng Feistel) đảm bảo rằng... sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại được-không đọc lại hay sửa thông tin trong thư được nữa) Sau đó Bob gửi chiếc hộp lại cho Alice Alice mở hộp với chìa khóa của mình và đọc thông tin trong thư Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mật  Tạo khóa : Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh... PKCS#1 v2.1 sử dụng • Khóa công khai bao gồm: n, môđun, và e, số mũ công khai (cũng gọi là số mũ mã hóa) thay cho • Khóa bí mật bao gồm: n, môđun, xuất hiện cả trong khóa công khai và khóa bí mật, và d, số mũ bí mật (cũng gọi là số mũ giải mã) Một dạng khác của khóa bí mật bao gồm: p and q, hai số nguyên tố chọn ban đầu, d mod (p-1) và d mod (q-1) (thường được gọi là dmp1 và dmq1), (1/q) mod p (thường... và các thuật toán mã hóa đối xứng khác Trên thực tế, Bob sử dụng một thuật toán mã hóa đối xứng nào đó để mã hóa văn bản cần gửi và chỉ sử dụng RSA để mã hóa khóa để giải mã (thông thường khóa ngắn hơn nhiều so với văn bản) Phương thức này cũng tạo ra những vấn đề an ninh mới Một ví dụ là cần phải tạo ra khóa đối xứng thật sự ngẫu nhiên Nếu không, kẻ tấn công (thường ký hiệu là Eve) sẽ bỏ qua RSA và. .. ngược lại Ngoài ra sau mỗi chu trình, khóa sẽ được dịch phải thay vì dịch trái như khi mã hóa c) An toàn và sự giải mã : Mặc dù đã có nhiều nghiên cứu về phá mã DES hơn bất kỳ phương pháp mã hóa khối nào khác nhưng phương pháp phá mã thực tế nhất hiện nay vẫn là tấn công kiểu duyệt toàn bộ Nhiều đặc tính mật mã hóa của DES đã được xác định và từ đó ba phương pháp phá mã khác được xác định với mức độ... Alice Đồng thời Eve có khả năng đọc được thông tin trao đổi giữa Bob và Alice Khi đó, Eve sẽ gửi cho Bob khóa công khai của chính mình (mà Bob nghĩ rằng đó là khóa của Alice) Sau đó, Eve đọc tất cả văn bản mã hóa do Bob gửi, giải mã với khóa bí mật của mình, giữ 1 bản copy đồng thời mã hóa bằng khóa công khai của Alice và gửi cho Alice Về nguyên tắc, cả Bob và Alice đều không phát hiện ra sự can thiệp... (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 = — môđun (công bố công khai) 3233 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... giải mã : DES có tính chất bù: trong đó là phần bù của x theo từng bít (1 thay bằng 0 và ngược lại) EK là bản mã hóa của E với khóa K P và C là văn bản rõ (trước khi mã hóa) và văn bản mã (sau khi mã hóa) Do tính bù, ta có thể giảm độ phức tạp của tấn công duyệt toàn bộ xuống 2 lần (tương ứng với 1 bít) với điều kiện là ta có thể lựa chọn bản rõ Ngoài ra DES còn có 4 khóa yếu (weak keys) Khi sử dụng khóa... biết khóa cá nhân (bí mật) mới có thể giải mã được Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau : Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất Alice có thể đọc được Để làm được điều này, Alice gửi cho Bob một chiếc hộp có khóa đã mở sẵn và giữ lại chìa khóa Bob nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại (như loại khoá thông thường chỉ cần . được, với mục đích giữ bí mật thông tin đó.  Decrypt (decipher): giải mã – quá trình ngược lại với mã hóa, khôi phục lại thông tin ban đầu từ thông tin đã được mã hóa.  Plaintext (cleartext):. hóa hay giải mã. Trong bài này gọi tắt là thuật toán  Key: chìa khóa – thông tin dùng cho qui trình mã hóa và giải mã.  Code: cần phân biệt code trong mật mã học với code trong lập trình hay code. mã hóa bởi một thuật toán đối xứng, chỉ có chìa dùng để thực hiện việc mã hóa này mới được mã hóa bằng thuật toán bất đối xứng. 3) So sánh đối xứng và bất đối xứng: Mã hóa đối xứng Khóa: Mã hóa

Ngày đăng: 03/04/2015, 11:01

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w