Mã hóa với chữ kí điện tử

36 656 6
Mã hóa với chữ kí điện tử

Đ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

Tai liệu Mã hóa với chữ kí điện tử

Mục lục: Lời nói đầu ………………………………………………………………….…….2 Phần 1: hóa và các vấn đề liên quan ………………………………….….…3 1.1 Khái niệm hóa dữ liệu …………………………………………….…… 3 1.2 Hàm băm ……………………………………………………………….…….4 1.2.1 Hàm băm và chữ ký…………………………………………………………4 1.2.2 MD5 ……………………………………………………………….…… 6 1.3 Thuật toán hóa khóa công khai RSA ……………………………….……13 1.3.1 Mô tả sơ lược …………………………………………………………… .13 1.3.2 Thuật toán RSA ………………………………………………….……… .16 1.3.3 Tính bảo mật của giải thuật RSA ………………………………….………19 1.3.4 Các vấn đề đặt ra trong thực tế………………………………….………….20 Phần 2: Chữđiện tử và chương trình ứng dụng ……………………….….23 2.1 Khái niệm Chữđiện tử ………………… .……………………….…… .23 2.2 Cách thức hoạt động của chữđiện tử ……………… .…………….…….26 2.2.1 Quá trình ký ………………………………………………………….…….28 2.2.2 Quá trình xác nhận chữ ký trên tài liệu ………………………….……… .29 2.3 Chương trình ứng dụng ………………………….…………………….…….32 2.3.1 Giói thiệu chương trình ………………………………………….……… .32 2.3.2 Một số hình ảnh của chương trình …………………………….………… 34 Kết luận …………………………………………………………………………36 Lời nói đầu: Hiện nay, việc đảm bảo an toàn thông tin, tránh mọi nguy cơ bị thay đổi, sao chép hoặc mất mát dữ liệu trong các ứng dụng trên mạng luôn là vấn đề bức xúc, được nhiều người quan tâm. Trong bài báo này, em trình bày những vấn đề liên quan về hóa thông tin, thuật toán băm MD5, thuật toán hóa RSA và chữđiện tử. Từ đó, ứng dụng thuật toán MD5 và RSA để phân tích quá trình hoạt động của chữđiện tử. Trên cở sở đó, em đề ra giải pháp ứng dụng chữđiện tử trên cơ sở kết hợp giữa thuật toán băm MD5 và thuật toán hóa RSA trong quá trình gửi và nhận các tệp văn bản. Trên thực tế, chữđiện tử (Digital Signature) đã được ứng dụng rộng rãi trong các ứng dụng trên mạng. Một trong những ứng dụng quan trọng của chữđiện tử là đảm bảo an toàn dữ liệu khi truyền trên mạng. Tuy nhiên, khi xây dựng một ứng dụng, các nhà phát triển thường chỉ tập trung xây dựng các chức năng của hệ thống, ít quan tâm đến vấn đề an toàn trong quá trình truyền tin. Nhằm giải quyết vấn đề xử lý các giao dịch trao đổi văn bản trên mạng, đến nay đã có nhiều giải pháp liên quan đến vấn đề hóa văn bản, nhưng em chọn và đề xuất giải pháp ứng dụng chữđiện tử trên cơ sở kết hợp giữa thuật toán băm MD5 và thuật toán hóa RSA trong quá trình gửi và nhận tệp văn bản của hệ thống phần mềm quản lý. Bảo mật thông tin là lĩnh vực rất rộng, nên đây chỉ là bước khởi đầu để em tiếp tục nghiên cứu và ứng dụng các thuật toán hóa trong việc xây dựng ứng dụng. Trong bài báo này, em trình bày những n ội dung chính như sau: Đầu tiên em giới thiệu một số vấn đề liên quan trong lĩnh vực hóa dữ liệu. Tiếp theo em tập trung trình bày giải pháp ứng dụng chữđiện tử sử dụng MD5, RSA và đề ra cách thức vận dụng, triển khai trong quá trình gửi và nhận tệp văn bản. Trong báo cáo này do em chưa có đủ thời gian nghiên cứu sâu hơn nên còn nhiều sai sót mong thày (cô) đóng góp ý kiến để chương trình của em được hoàn thiên hơn . Thái Nguyên, tháng 11 năm 2010 Sinh viên thực hiện: Nguyễn Trọng Khiêm Lớp : CNTT- K6B Phần 1: HÓA VÀ CÁC VẤN ĐỀ LIÊN QUAN 1.1 Khái niệm hóa dữ liệu hóa dữ liệu là sử dụng một phương pháp biến đổi dữ liệu từ dạng bình thường sang một dạng khác, một người không có thẩm quyền, không có phương tiện giải thì không thể đọc hiểu được. Giải dữ liệu là quá trình ngược lại, là sử dụng một phương pháp biến đổi dữ liệu đã được hóa về dạng thông tin ban đầu. Hình 1:Quy trình hóa dữ liệu Sau đây là một số khái niệm và hiệu liên quan về vấn đề hóa dữ liệu : - hóa (Encryption): Quá trình chuyển đổi dữ liệu gốc thành dữ liệu được hóa sao người khác không thể đọc hiểu được (kí hiệu E); - Giải (Decryption): Quá trình ngược lại của hóa, biến đổi dữ liệu đã được hóa thành dạng gốc ban đầu (kí hiệu D); - Thông điệp (Message), bản gốc (Plaintext): Tệp dữ liệu chưa hóa (kí hiệu M). - Bản (Ciphertext): Tệp dữ liệu đã được hóa (kí hiệu C). Theo quy ước, khi hóa thì C = E(M) và khi giải thì M = D(C) = D(E(M)) Theo phương pháp truy ền thống, người ta thường dùng cùng một khóa để hóa và giải mã. Lúc đó, khóa phải được giữ bí mật tuyệt đối. Người ta gọi đây là hệ thống hóa cổ điển (hay còn gọi là hóa đối xứng, một khóa, khóa bí mật, .). Một số phương pháp hóa theo hệ thống hóa cổ điển như : - dịch vòng - thay thế - Affine - Vigenère - Hill - Các hệ dòng Do độ phức tạp của các hệ cổ điển thấp, không đảm bảo cho dữ liệu truyền đi trên internet được an toàn nên người ta nghiên cứu và phát triển một hệ thống hóa mới an toàn hơn và vẫn được sử dụng rộng rãi là hệ DES. Phương pháp hóa theo hệ thống hóa DES tới hiện nay vẫn được sử dụng rộng rãi trong các hệ thống lớn do có độ an toàn khá cao. Phương pháp khác sử dụng khóa công khai ( còn gọi là phương pháp hóa bất đối xứng, hay hệ thống hai khóa) trong đó khóa để hóa và khóa để giải là khác nhau. Các khóa này tạo thành một cặp chuyển đổi ngược nhau và không khóa nào có thể suy ra được từ khóa kia. Phần tiếp theo của bài báo sẽ đề cập đến kỹ thuật hóa này. 1.2 Hàm băm 1.2.1 Hàm băm và chữ ký: Để kiểm tra tính toàn vẹn của một khối data lớn, người ta sử dụng chữ ký số để đại diện cho khối data đó (giống như chữ ký trên văn bản) bằng cách dùng hàm băm: với input là một message bất kỳ, output là một chuỗi bít có chiều dài xác định trước, chuỗi bít này được gọi là message_digest. 1.2. Hashing – Hàm Băm Hashing là một phương thức mật nhưng nó không phải là một thuật toán 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. 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 tài nguyên. 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. 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. Hình 1: Thể hiện cơ bản về hash hay thông số MAC Không như các phương thức mật 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 sử dụng một thông số hash value và không thay đổi dữ liệu ban đầu. Bởi vì các tính năng đặc biệt, hashing có thể sử dụng để bảo vệ và kiểm tra tính toàn vẹn của dữ liệu. Nó cũng có khả năng sử dụng để kiểm tra khi có một tiến trình copy được thực hiện và đảm bảo tính chính xác của dữ liệu khi chúng được copy. Ví dụ, khi một ổ cứng được tạo ra một bản copy, một quá trình hash được thực hiện trên ổ đĩa trước khi quá trình nhân đôi được thực hiện. Nếu hai thông số hash của ổ cứng mới được tạo ra và thông số hash của ổ đĩa ban đầu thì quá trình nhân đôi dữ liệu được thực hiện chính xác và đảm bảo dữ liệu không có sự thay đổi mất mát trong quá trình nhân bản. Việc hashing sử dụng để đảm bảo dữ liệu được nguyên bản giúp dữ liệu lưu ở dạng kỹ thuật số sẽ luôn dữ được nguyên bản sau vô số lần copy – và điều này không thể thực hiện khi lưu dữ liệu các dạng khác – ví như lưu thông tin âm thanh bằng băng từ sẽ bị biến dạng sau nhiều lần copy. Ví dụ, Message Digest 5 (MD5) là một thuật toán hash với 128-bit hash. Điều này có nghĩa không có vấn đề với dữ liệu đầu vào và dữ liệu đầu ra sau quá trình hash bởi nó luôn luôn thêm vào 128 bits. Sức mạnh của quá trình hashing là nó được thực hiện một chiều và không thể có phương thức nào có thể thực hiện ngược lại được để converts thông số hash thành dữ liệu ban đầu. Nếu một vài người có được các thông số hash của ta, họ không thể lấy được dữ liệu ban đầu. Tuy nhiên đó không phải là phương thức mật không thể tấn công. Hashing có thể bị tấn công bởi các phương thức đảo ngược hay birthday attack. Phương thức tấn công bình thường sử dụng đó là sử dụng các công cụ password-cracking. Hầu hết các hệ thống lưu trữ passwords trong dữ liệu accounts và được hashed (băm). Hashs không thể thực hiện ngược lại, bởi đó là một giải pháp bảo mật, có nghĩa không có công cụ nào có thể chuyển ngược lại một password được hash thành một password nguyên bản chưa được hash. Tuy nhiên một thuật toán nào cũng có những bất cập riêng, bằng việc sử dụng các phần mềm, password crackers chúng có thể phát hiện ra đoạn them vào dữ liệu ban đầu và chỉ cần xoá đoạn hash value đi là có thể truy cập bình thường. Dữ liệu Account thường không được hoá, và dữ liệu password thường được hash do đó hầu hết các công cụ crack password chỉ có thể xoá password đã được đặt cho user đó không thể view password đó. 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 - Các tính chất cơ bản của hàm băm: + Là hàm một chiều, không thể thực hiện phép biến đổi ngược như trong quá trình hóa và giải mã, nghĩa là với một message_digest cho trước, khó có thể tìm được một message nào có hàm băm bằng message_digest này. + Khó có thể tìm được hai message có cùng một message_digest. Các giải thuật băm được sử dụng hiện nay là: MD2, MD4, MD5, SHS. Trong đó MD5 là giải thuật băm được sử dụng phổ biến và nó sẽ được trình bày trong phần dưới. 1.2.2 MD5 - Giải thuật MD5 được phát triển bởi Ron Rivest ở MIT: nhận đầu vào là một khối data (message) có chiều dài bất kỳ, xử lý nó thành các khối 512 bít, tạo đầu ra là một message_digest 128 bít. Quá trình bao gồm các bước sau: * Bước 1: message ban đầu được thêm (padding) một số bít (bắt đầu là bít 1, kế tiếp là các bít 0, số bít thêm vào từ 1 tới 512 bít) sao cho tổng số bít sau khi thêm vào cộng với 64 (chiềi dài của message ban đầu) là bội số của 512. Hình 2: Tạo message_digest sử dụng MD5. * Bước 2: khởi tạo bộ đệm MD. Bộ đệm 128 bít được dùng để chứa kết quả trung gian và cuối cùng của hàm băm. Có thể xem bộ đệm như là 4 thanh ghi 32 bít. Các thanh ghi này được khởi tạo (dạng số hex) như sau: A = 01234567; B = 89abcdef; C = fedcba98; D = 76543210 * Bước 3: xử lý message thành từng khối 512 bít (16 từ 32 bít). Quá trình tính toán được chia thành từng giai đoạn, số giai đoạn bằng số chiều dài (tính theo bít) của message sau khi đã padding chia cho 512. Mỗi giai đoạn nhận đầu vào là khối 512 bít của message đã được padding và message_digest của giai đoạn trước, cho ra kết quả là message_digest mới (xem hình 1). Mỗi giai đoạn thực hiện trong 4 bước (vòng), bốn vòng có cấu trúc giống nhau nhưng mỗi vòng sử dụng một hàm luận lý khác nhau, được đặc tả là F, G, H, I. Trong hình 2, bốn vòng được đặt nhãn là f F , f G , f H , f I , để chỉ rằng mỗi vòng có cấu trúc hàm tổng quát như nhau nhưng tùy thuộc vào sự khác nhau của hàm thao tác (F, G, H, I). Hình 3: Xử lý MD5 của khối đơn 512 bít (HDMD5). Mỗi vòng được thực hiện 16 bước tuần tự trên các data A, B, C, D (hình 3). Biểu thức tính toán được sử dụng trong mỗi vòng có dạng: a = b + CLS s (a + g(b,c,d) + X[k] + T[i]). Trong đó: . a, b, c, d: là 4 word A, B, C, D theo thứ tự nào đó. . g: là một trong các hàm F, G, H, I. F(b,c,d) = (b & c) | (~b & d) G(b,c,d) = (b & d) | (c & ~d) H(b,c,d) = b ^ c ^ d I(b,c,d) = c ^ (b & ~d) . CLS s : dịch vòng bên trái s bít. . X[k] = M[q*16 + k] : từ 32 bít thứ k của khối 512 bít thứ q của message. . T[i] = 2 32 * abs(sin(i)) : từ 32 bít thứ i (i tính theo radian) (xem bảng). . Phép toán cộng (+) tính cho modulo 2 32 Hình 4: Tác vụ của MD5: [abcd k s i] Bảng T được xây dựng từ hàm sin T 1 = D76AA478 T 17 = F61E2562 T 33 = FFFA3942 T 49 = F4292244 T 2 = E8C7B756 T 18 = C040B340 T 34 = 8771F681 T 50 = 432AFF97 T 3 = 242070D8 T 19 = 265E5A51 T 35 = 69D96122 T 51 = AB9423A7 T 4 = C1BDCEEE T 20 = E9B6C7AA T 36 = FDE5380C T 52 = FC93A039 T 5 = F57C0FAF T 21 = D62F105D T 37 = A4BEEA44 T 53 = 655B59C3 T 6 = 4787C62A T 22 = 02441453 T 38 = 4BDECFA9 T 54 = 8F0CCC92 T 7 = A8304613 T 23 = D8A1E681 T 39 = F6BB4B60 T 55 = FFEFF47D T 8 = FD469501 T 24 = E7D3FBC8 T 40 = BEBFBC70 T 56 = 85845DD1 T 9 = 698098D8 T 25 = 21E1CDE6 T 41 = 289B7EC6 T 57 = 6FA87E4F T 10 = 8B44F7AF T 26 = C33707D6 T 42 = EAA127FA T 58 = FE2CE6E0 T 11 = FFFF5BB1 T 27 = F4D50D87 T 43 = D4EF3085 T 59 = A3014314 T 12 = 895CD7BE T 28 = 455A14ED T 44 = 04881D05 T 60 = 4E0811A1 T 13 = 6B901122 T 29 = A9E3E905 T 45 = D9D4D039 T 61 = F7537E82 T 14 = FD987193 T 30 = FCEFA3F8 T 46 = E6DB99E5 T 62 = BD3AF235 T 15 = A679438E T 31 = 676F02D9 T 47 = 1FA27CF8 T 63 = 2AD7D2BB T 16 = 49B40281 T 32 = 8D2A4C8A T 48 = C4AC5665 T 64 = EB86D391 [...]... sánh với fingerprint cũ cũng được phục hồi từ việc giải chữ ký số (xem hình 3) Chữ ký điện tử và chứng chỉ điện tử Chữđiện tử hoạt động dựa trên hệ thống mã hóa khóa công khai Hệ thống hóa này gồm hai khóa, khóa bí mật và khóa công khai (khác với hệ thống hóa khóa đối xứng, chỉ gồm một khóa cho cả quá trình hóa và giải mã) Mỗi chủ thể có một cặp khóa như vậy, chủ thể đó sẽ giữ khóa... trọng đối với quá trình hóa cũng như chữđiện tử và không được dùng khóa chung cho đồng thời cho cả hai mục đích trên Phần 2: CHỮĐIỆN TỬ VÀ CHƢƠNG TRÌNH ỨNG DỤNG 2.1 Khái niệm Chữ ký điện tử Chữđiện tử (Digital Signature) dựa trên kỹ thuật sử dụng hóa khóa công khai Trong đó, cả người gửi và người nhận, mỗi người có một cặp khóa là khóa bí mật, hay riêng (Private Key) và khóa công... muốn xác nhận tài liệu TL là của A, với chữ ký là bản TL B sẽ dùng khóa công khai của A để giải bản TL của A Sau khi giải mã, B thu được một bản giải TL, anh ta so sánh bản giải TL này mới tài liệu TL Nếu bản giải TL giống với tài liệu TL thì chữ ký là đúng của A Một số trường hợp xảy ra với chữđiện tử, cũng giống như các trường hợp xảy ra với chữ ký truyền thống Ví dụ, khi tài... còn khóa công khai của chủ thể sẽ được đưa ra công cộng để bất kỳ ai cũng có thể biết Nguyên tắc của hệ thống hóa khóa công khai đó là, nếu ta mã hóa bằng khóa bí mật thì chỉ khóa công khai mới giải thông tin được, và ngược lại, nếu ta hóa bằng khóa công khai, thì chỉ có khóa bí mật mới giải được Gửi :  Sau khi đăng ký một chứng chỉ số (với nhà cung cấp chứng chỉ số), ta được cấp một khóa... mật mã, cuộc cách mạng mang tên RSA (ghép chữ đầu tên của ba nhà khoa học trên) RSA, cuộc cách mạng của các nhà toán học Hệ RSA đã đưa đến một cuộc cách mạng thực sự Giờ đây, với hệ RSA, không cần phải gửi chìa khóa giải cho người nhận thông tin nữa Hệ RSA sử dụng 2 khóa Khóa lập của tôi được công khai với người ta (để người ta có thể gửi thông tin hóa cho tôi), còn khóa giải của... chữđiện tử cũng như các giải pháp xác thực chữ ký và ứng dụng của nó Hơn nữa, còn hiểu được các cơ chế hoạt động của các hệ hóa bí mật, hệ công khai thông dụng như CAESAR, RSA Tìm hiểu phương pháp sử lý với số lớn để xây dựng khóa Bên cạnh đó, đã vận dụng được cách thức hoạt động của hệ RSA và giải thuật băm xây dựng được chương trình hóa và giải dữ liệu, và tạo ra chữđiện tử. .. (Public Key) Chữđiện tử hoạt động khi một người gửi một thông điệp, người đó dùng khóa riêng của mình để hóa thông điệp sang một dạng khó nhận dạng Người nhận dùng khóa công khai của ngườ i gửi để hóa thông điệp Tuy nhiên, để an toàn thật sự phải có các bước bổ sung Do đó, thuật toán băm MD5 và thuật toán hóa RSA có thể được áp dụng để xây dựng ứng dụng chữđiện tử Sơ đồ chữ ký RSA được... nhân) Mỗi khóa là những số cố định sử dụng trong quá trình hóa và giải Khóa công khai được công bố rộng rãi cho mọi người và được dùng để hóa Những thông tin được hóa bằng khóa công khai chỉ có thể được giải bằng khóa bí mật tương ứng Nói cách khác, mọi người đều có thể hóa nhưng chỉ có người biết khóa cá nhân mới có thể giải được Một ví dụ trực quan: Bob muốn gửi cho Alice một thông... khóa bí mật Lịch sử cuộc cách mạng toán học RSA và chính phủ điện tử: Khi phương pháp khóa công khai chưa ra đời, người ta sử dụng hầu như cùng một 'chìa khóa' để hóa cũng như giải chung cho cả người gửi và người nhận thông tin (hệ đối xứng) Với hệ này, một trong những khó khăn lớn của ngành an ninh và hóa lúc đó là làm sao gửi an toàn chìa khóa bí mật trên các kênh truyền tin công... // hóa bằng thuật toán MD5 byte[] hash; byte[] plainBytes = Encoding.Unicode.GetBytes(document); MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); hash = md5.ComputeHash(plainBytes); md5.Clear(); //Kết thúc hóa MD5 1.3 Thuật toán hóa khóa công khai RSA: Trong mật học, RSA là một thuật toán hóa khóa công cộng Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữđiện tử . băm v ch k : Để kiểm tra t nh to n v n của m t kh i data l n, ngư i ta sử dụng ch k số để đ i di n cho kh i data đó (giống như ch k tr n v n b n) . như thế hi n đang được ti n hành ở m t số cơ quan của Vi t Nam, trong đó có Vi n To n Học (Vi n Khoa Học v Công Nghệ Vi t Nam). Cho đ n nay, ngư i ta

Ngày đăng: 17/04/2013, 20:36

Từ khóa liên quan

Trích đoạn

Tài liệu cùng người dùng

Tài liệu liên quan