Giải thuật mã hóa RSA và ứng dụng trong mã hóa dữ liệu và tạo chữ ký điện tử

58 5.8K 20
Giải thuật mã hóa RSA và ứng dụng trong mã hóa dữ liệu và tạo 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

Giải thuật mã hóa RSA và ứng dụng trong mã hóa dữ liệu và tạo chữ ký điện tử giành cho các bạn có nhu cầu làm đồ án thuật toán... Lịch sử Giải thuật mã hóa RSA, Cài đặt Giải thuật mã hóa RSA, Code thuật toán mã hóa RSA,....

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KHOA TIN HỌC ĐỒ ÁN MÔN HỌC ĐỀ TÀI: GIẢI THUẬT HÓA RSA ỨNG DỤNG TRONG HÓA DỮ LIỆU TẠO CHỮ ĐIỆN TỬ Sinh viên thực hiện: Huỳnh Ngọc Nam Lớp: 11CNTT2 Giảng viên hướng dẫn: TS. Nguyễn Trần Quốc Vinh Đà Nẵng, 2013 MỤC LỤC MỞ ĐẦU Trong mật học, RSA là một thuật toán hóa khóa công khai. Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữ điện tử đồng thời với việc hóa. Nó đánh dấu sự tiến bộ vượt bậc của lĩnh vực mật 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ử được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn. 1. Lý do chọn đề tài: Thuật toán hóa công khai đã ra đời từ rất lâu đời. Nhưng trước những nhu cầu về giao dịch an toàn trên mạng Internet ngày nay, những ứng dụng của nó ngày càng tỏ rõ tầm quan trọng. trong đó, thuật toán hóa RSA là phổ biến nhất. Nó được sử dụng rộng rãi cho công nghệ VPN. Khi các ứng dụng CNTT đã đang ngày càng phổ biến rộng rãi đã ảnh hưởng rất lớn đến diện mạo của đời sống xã hội, kinh tế. Mọi công việc của chúng ta đều có thể thực hiện được từ xa với sự hỗ trợ của máy tính mạng Internet (từ học tập, giao dich,… đến việc gửi thư). Tất cả các thông tin liên quan đều được máy tính quản lý 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 có ai chú ý tới, thế 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 tổ chức thì vấn đề bảo mật giữ cho đến đúng địa chỉ cần đến. Rất nhiều phương pháp bảo mật ra đời trong số đó phương pháp hóa khóa công khai được xem là phương pháp có tính an toàn khá cao. Với thuật toán RSA chúng ta có thể hóa các dữ liệu của mình thành các dữ liệu không thể đọc nếu không có khóa bí mật. 2. Mục đích nhiệm vụ: • Mục tiêu o Về học thuật: Đề tài này tập trung vào việc phân tích thuật toán hóa RSA trong quá trình gửi nhận các văn bản. Cài đặt hoạt động của thuật toán RSA. o Về phát triển triển khai ứng dụng Ứng dụng thuật toán hóa RSA vào ứng dụng hóa dữ liệu gửi đi tiến hành giải dữ liệu ở phía nhận, thuật toán được triển khai trên ứng dụng bằng java. • Nhiệm vụ - Nghiên cứu quá trình thực hiện hóa giải của thuật toán trong hệ hóa khóa công khai. - Cài đặt thuật toán RSA. - Xây dựng ứng dụng hóa giả dữ liệu bằng thuật toán RSA trên java bằng công cụ Eclipse. 3. Đối tượng phạm vi • Đối tượng - Hệ RSA. - Thuật toán RSA ứng dụng chữ điện tử. - hóa giải dữ liệu. • Phạm vi - Thuật toán RSA thực hiện tính toán với số nguyên vừa nhỏ. - Ứng dụng thuật toán phạm vi hẹp, đủ để có thể giao tiếp một cách trực diện chứ không cần phải thông qua các file. 4. Bố cục Mở đầu 1. Lý do chọn đề tài 2. Mục đích nhiệm vụ 3. Đối tượng phạm vi Chương 1: CƠ SỞ LÝ THUYẾT 1. Lịch sử. 2. Tổng quan về hóa 3. Mật hóa khóa công khai Chương 2: TỔNG QUAN HOẠT ĐỘNG 1. Mô tả sơ lược 2. Tạo khóa 3. hóa 4. Giải 5. Các định lý cơ sở 6. Ví dụ 7. Tạo chữ số 8. Các giải thuật có sử dụng Chương 3: PHÁT BIỂU BÀI TOÁN 1. Phát biểu bài toán 2. Trình bày thuật toán Chương 4: KẾT QUẢ ỨNG DỤNG 1. Kết quả 2. Ứng dụng KẾT LUẬN PHỤ LỤC CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 1. Lịch sử phát triển Trong mật học, RSAthuật toán đầu tiên phù hợp với việc tạo ra chữ điện tử đồng thời với việc hóa. Thuật toán được Ron Rivest, Adi Shamir Len Adleman mô tả lần đầu tiên tại Học Viện Công Nghệ Massachusetts (MIT) vào năm 1977. Tên của thuật toán được lấy từ 3 chữ cái đầu tiên của tên 3 tác giả. Trước đó, vào năm 1973, Clifford Cocks một nhà toán học người Anh làm việc tại GCHQ, đã mô tả một thuật toán tương tự. Với khả năng tính toán tại thời điểm đó thì thuật toán này không khả thi chưa bao giờ được thực nghiệm. Tuy nhiên, phát minh này chỉ được công bố vào năm 1997 vì được xếp vào loại tuyệt mật. Thuật toán RSA được MIT đăng bằng sáng chế vào năm 1983 tại Hoa Kỳ (Số đăng 4.405.829). Bằng sáng chế này hết hạn vào ngày 21/09/2000. Tuy nhiên, do thuật toán đã được công bố trước khi có đăng 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ý. 2. Tổng quan về hóa Trong mật học, một ngành toán học ứng dụng cho công nghệ thông tin, hóa là phương pháp để biến thông tin (phim ảnh, văn bản, hình ảnh ) từ định dạng bình thường sang dạng thông tin không thể hiểu được nếu không có phương tiện giải mã. Giải là phương pháp để đưa từ dạng thông tin đã được hóa về dạng thông tin ban đầu, quá trình ngược của hóa. Một hệ thống hóa bao gồm các thành phần: - Thông tin trước khi hóa, kí hiệu là P - Thông tin sau khi hóa, kí hiệu là C - Chìa khóa, kí hiệu là K - Phương pháp hóa/giải mã, kí hiệu là E/D. Quá trình 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, vốn được biểu diễn dưới dạng số, để trở thành thông tin đã hóa C. Quá trình giải đượ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 P. 3. Mật hóa khóa công khai Mật hóa khóa công khai là một dạng mật hóa cho phép người sử dụng trao đổi các thông tin mật không cần phải trao đổi các khóa chung bí mật trước đó. Điều này đượ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 khóa cá nhân (hay khóa bí mật). Thuật ngữ mật hóa khóa bất đối xứng thường được dùng đồng nghĩa với mật hóa khóa công khai mặc hai khái niệm không hoàn toàn tương đương. Có những thuật toán mật khóa bất đối xứng không có tính chất khóa công khai bí mật như đề cập ở trên cả hai khóa (cho hóa giải mã) đều cần phải giữ bí mật. Trong mật 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 2 khóa, một dùng để hóa 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 hóa khóa công khai có thể sử dụng với các mục đích: hóa: giữ bí mật thông tin chỉ có người có khóa bí mật mới giải được. Tạo chữ số: cho phép kiểm tra một văn bản có phải đã được tạo với một khóa bí mật nào đó hay không. 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 2 bên. Thông thường, các kỹ thuật mật 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 hóa khóa đối xứng nhưng những lợi điểm chúng mang lại khiến cho chúng được áp dụng trong nhiều ứng dụng. • Các ứng dụng: - Ứng dụng rõ ràng nhất của mật hóa khóa công khai là bảo mật: một văn bản được hóa bằng khóa công khai của một người sử dụng thì chỉ có thể giải với khóa bí mật của người đó. - Các thuật toán tạo chữ số khóa công khai có thể dùng để nhận thực. Một người sử dụng có thể hóa văn bản với khóa bí mật của mình. Nếu một người khác có thể giải với khóa công khai của người gửi thì có thể tin rằng văn bản thực sự xuất phát từ người gắn với khóa công khai đó. - Các đặc điểm trên còn có ích cho nhiều ứng dụng khác như: tiền điện tử, thỏa thuận khóa CHƯƠNG 2 TỔNG QUAN HOẠT ĐỘNG 1. Mô tả sơ lược - Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) khóa bí mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong quá trình hóa giải mã. Khóa công khai được công bố rộng rãi cho mọi người đượ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 (bí mật) mới có thể giải được. - Ta có thể mô phỏng trực quan một hệ mật khoá công khai như sau: Bob muốn gửi cho Alice một thông tin mật 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 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 khóa lại (như loại khoá thông thường chỉ cần sập chốt lại, 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 đọc thông tin trong thư. Trongdụ 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. 2. Tạo khóa - Giả sử Alice 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 khóa bí mật theo các bước sau: B1. Chọn 2 số nguyên tố lớn p q với , lựa chọn ngẫu nhiên độc lập. B2. Tính: . B3. Tính: giá trị hàm số Ơle = (p-1)*(q-1). B4. Chọn một số tự nhiên e sao cho 1 < e < ∅(n), là số nguyên tố cùng nhau với ∅(n). B5. Tính: d sao cho d*e ∅(n)). - Một số lưu ý: Các số nguyên tố thường được chọn bằng phương pháp thử xác suất. Các bước 4 5 có thể được thực hiện bằng giải thuật Euclid mở rộng (xem thêm: số học môđun). - Khóa công khai bao gồm: n, môđun, e, số mũ công khai (cũng gọi là số mũ hóa). - Khóa bí mật bao gồm: n, môđun, xuất hiện cả trong khóa công khai khóa bí mật, 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) d mod (q-1) (thường được gọi là dmp1 dmq1). (1/q) mod p (thường được gọi là iqmp). - Dạng này cho phép thực hiện giải nhanh hơn với việc sử dụng định lý số Trung Quốc (tiếng Anh: Chinese Remainder Theorem - CRT). Ở dạng này, tất cả thành phần của khóa bí mật phải được giữ bí mật. - Alice gửi khóa công khai cho Bob, giữ bí mật khóa cá nhân của mình. Ở đây, p q giữ vai trò rất quan trọng. Chúng là các phân tố của n cho phép tính d khi biết e. Nếu không sử dụng dạng sau của khóa bí mật (dạng CRT) thì p q sẽ được xóa ngay sau khi thực hiện xong quá trình tạo khóa. 3. 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. - Lúc này Bob có m biết n cũng như e do Alice gửi. Bob sẽ tính c là bản 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ũ (theo môđun) bằng (thuật toán bình phương nhân) Cuối cùng Bob gửi c cho Alice. 4. Giải - Alice nhận c từ Bob biết 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 hoạt động vì ta có . Do e*d ≡ 1 (mod p-1) e*d ≡ 1 (mod q-1), (Theo Định lý Fermat nhỏ) nên: Do p q là hai số nguyên tố cùng nhau, áp dụng định lý số Trung Quốc, ta có: hay: . 5. Các định lý cơ sở 5.1 Định lý nhỏ của Fermat - Định lý nhỏ của Fermat (hay định lý Fermat nhỏ - phân biệt với định lý Fermat lớn) khẳng định rằng nếu p là một số nguyên tố, thì với số nguyên a bất kỳ, a p – a sẽ chia hết cho p. Nghĩa là: - Một cách phát biểu khác của định lý như sau: nếu p là số nguyên tố a là số nguyên nguyên tố cùng nhau với p, thì a p-1 - 1 sẽ chia hết cho p. Bằng hiệu đồng ta có: - Cũng có một cách phát biểu khác là: Nếu p là một số nguyên tố a là số nguyên không chia hết cho p, thì a lũy thừa bậc p-1 có số bằng 1 khi chia cho p. - Định lý Fermat nhỏ là cơ sở để kiểm tra tính nguyên tố theo xác suất. 5.2 Định lý số Trung Quốc - Bản chất của bài toán Hàn Tín điểm binh là việc giải hệ phương trình đồng bậc nhất Trong đó đôi một nguyên tố cùng nhau. Trong bài toán Hàn Tín . - Định lý: Hệ phương trình đồng nói trên có nghiệm duy nhất theo mođun là trong đó , , , Trong đó là nghịch đảo theo modulo của với - Áp dụng trong trường hợp đặc biệt: Cho p va q là 2 số nguyên tố cùng nhau. Nếu a = b mod p a = b mod q Thì a = b mod (pq). 6. Ví dụ - Ở đâ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 hóa là: encrypt(m) = mod n = mod 3233 với m là văn bản rõ. Hàm giải là: decrypt(c) = = mod 3233 với c là văn bản mã. - Để hóa văn bản có giá trị 123, ta thực hiện phép tính: encrypt(123) = mod 3233 = 855 Để giải văn bản có giá trị 855, ta thực hiện phép tính: [...]... hiện hiệu quả nhờ thuật toán bình phương nhân 7 Ứng dụng chữ số - Thuật toán RSA còn được dùng để tạo chữ số cho văn bản Giả sử Alice muốn gửi cho Bob một văn bản có chữ của mình Để làm việc này, Alice tạo ra một giá trị băm (hash value) của văn bản cần 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ữ điện tử của văn bản đang... Bob nhận được văn bản cùng với chữ điện tử, anh ta tính giá trị mũ e mod n của chữ đồ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ữ biết khóa bí mật của Alice văn bản đã không bị thay đổi sau khi 8 Các giải thuật có sử dụng 8.1 Giải thuật Euclid mở rộng - Giải thuật Euclid mở rộng sử dụng để giải phương trình vô định nguyên... liệu, họ sẽ tiến hành hóa tài liệu với public key bên nhận đã đưa cho, cùng với đó họ sẽ tiến hành văn bản của mình theo các bước: B1 Tải văn bản muốn hóa lên B2 Tải public key vừa nhận được lên B3 Tiến hành hóa đồng thời với B4 Tiến hành lưu văn bản sau hóa chữ lại - Sau khi lưu lại ta sẽ có văn bản đã được hóa, chẳng hạn: - - Các bước mã hóa dữ liệu được thực hiện như... với dữ liệu trong TextArea thứ 2, nếu giống nhau thì ta xác nhận, ngược lại thông báo sai KẾT LUẬN Sau quá trình tìm hiểu nghiên cứu thuật toán hóa RSA thì em đã tích lũy thêm được nhiều kiến thức trong hệ thống mật học đã phát triển từ rất lâu trên thế giới Biết được quá trình hoạt động xử lý dữ liệu của thuật toán từ đó tạo được ứng dụng sử dụng thuât toán để phục vụ đời sống xã... sửa đổi hay mất mát trong quá trình truyền dữ liệu hay không bằng cách tiến hành kiểm tra chữ của văn bản sau khi giải theo các bước sau: B1 Tải văn bản sau giải lên B2 Tải chữ lên B3 Tải public key đã tạo ban đầu lên B4 - Tiến hành kiểm tra Nếu văn bản sau hóa đúng bản gốc thì sẽ thông báo xác nhận B1 B2 Các bước tiến hành giải như sau: Tiến hành hóa văn bản trong TextArea đầu... chứa trong TextArea đầu tiên thành chuỗi tự rồi chuyển tiếp các tự này về dạng ACCII B2 Sau đó ta dùng giải thuật bình phương nhân để tiến hành tính k = với e n đã cho, m chính là giá trị trong bảng ACII của tự trong chuỗi B3 Chuyển k thành chuỗi tự kèm công thức cố định c[i] = k+32 B4 Xuất chuỗi lên TextArea thứ 2 Riêng đối với chữ số ta sẽ lấy bảng băm của chuỗi tự, trong. .. chức) nhận tài liệu, họ sẽ tiến hành giải văn bản đã hóa bằng secret key họ đã khởi tạo cùng với public key ban đầu theo các bước sau: B1 Tải văn bản đã hóa lên B2 Tải secret key lên B3 Tiến hành giải B4 Lưu văn bản sau khi giải - Sau khi giải ta sẽ có được văn bản như ban đầu bên gửi muốn gửi, chẳng hạn: - - Các bước tiến hành giải như sau: B1 Chuyển đổi văn bản chứa trong TextArea... liệu - - Số nguyên tố p q được khởi tạo ngẫu nhiên trong 100 số tự nhiên đầu tiên - Public key gồm e n với n = p*q e được tạo ngẫu nhiên từ trong 10000 số tự nhiên đầu tiên sao cho e>0 e . mod n = mod 32 33 với m là văn bản rõ. Hàm giải mã là: decrypt(c) = = mod 32 33 với c là văn bản mã. - Để mã hóa văn bản có giá trị 1 23, ta thực hiện phép tính: encrypt(1 23) = mod 32 33 = 855 Để. 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 = 32 33 — môđun (công bố công khai) e = 17 — số mũ công khai d = 27 53 — số mũ bí mật Khóa công. đầu 1. Lý do chọn đề tài 2. Mục đích và nhiệm vụ 3. Đối tượng và phạm vi Chương 1: CƠ SỞ LÝ THUYẾT 1. Lịch sử. 2. Tổng quan về mã hóa 3. Mật mã hóa khóa công khai Chương 2: TỔNG QUAN VÀ HOẠT

Ngày đăng: 15/06/2014, 22:58

Từ khóa liên quan

Mục lục

  • MỞ ĐẦU

    • 1. Lịch sử phát triển

    • 2. Tổng quan về mã hóa

    • 3. Mật mã hóa khóa công khai

    • 1. Mô tả sơ lược

    • 2. Tạo khóa

    • 3. Mã hóa

    • 4. Giải mã

    • 5. Các định lý cơ sở

      • 5.1 Định lý nhỏ của Fermat

      • 5.2 Định lý số dư Trung Quốc

      • 6. Ví dụ

      • 7. Ứng dụng chữ ký số

      • 8. Các giải thuật có sử dụng

        • 8.1 Giải thuật Euclid mở rộng

        • 8.2 Thuật toán bình phương và nhân

        • CHƯƠNG 3 PHÁT BIỂU VẤN ĐỀ

          • 1. Phát biểu bài toán

          • 2. Trình bày thuật toán

          • KẾT LUẬN

          • TÀI LIỆU THAM KHẢO

          • PHỤ LỤC

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

Tài liệu liên quan