Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 25 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
25
Dung lượng
910,5 KB
Nội dung
TỔNG CÔNG TY BƯU CHÍNH VIỄN THÔNG VIỆT NAM HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG Báo cáo bài tập lớn GIẢI THUẬT RSA Nhóm biên soạn: Bùi Minh Tuấn Lê Việt Dương Nguyễn Thị Thu Huyền Phan Văn Quân Hà nội tháng 5 năm 2007 i LỜI NÓI ĐẦU Thuật toán mã hóa công khai đã ra đời từ lâu. 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. Một trong những thuật toán mã hóa công khai phổ biến đó là RSA. Thuật toán được ứng dụng rộng rãi cho công nghệ VPN. Cuốn tài liệu này được viết ra với mong muốn giúp các bạn hiểu được một cách tổng quát cách hoạt động của RSA. Tài liệu được chia làm 2 phần bao gồm 2 chương, trong đó phần I (chương I) trình bày về tổng quan về thuật toán RSA; phần II tập truy trình bày về những thực tế khi triển khai RSA. ii MỤC LỤC LỜI NÓI ĐẦU ii MỤC LỤC iii DANH MỤC HÌNH VẼ iv CHƯƠNG 1: RSA HOẠT ĐỘNG NHƯ THẾ NÀO 5 1.1 Giới thiệu về RSA 5 1.2 Thuật toán RSA 5 1.3 Tạo chữ ký số 10 1.4 Chuyển đổi văn bản rõ 13 CHƯƠNG 2: TRIỂN KHAI THỰC TẾ 15 2.1 Quá trình tạo khóa 15 2.2 Tốc độ 17 2.3 Phân phối khóa 17 2.4 Bảo mật 18 2.5 Tấn công 23 KẾT LUẬN 24 TÀI LIỆU THAM KHẢO 25 iii DANH MỤC HÌNH VẼ Hình 1.1 Mã hóa và giải mã 5 Hình 1.2 Trao đổi khóa bất đối xứng 7 Hình 2.1 Cố gắng phá hoại cặp khóa bất đối xứng 14 iv CHƯƠNG 1: RSA HOẠT ĐỘNG NHƯ THẾ NÀO 1.1 Giới thiệu về RSA Trong mật mã học, RSA là một thuật toán mật mã 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ữ 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. Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT). Tên của thuật toán lấy từ 3 chữ cái đầu 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 và 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 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ý. 1.2 Thuật toán RSA Thuật toán Giả sử A và B 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, đầu tiên A 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 các bước sau: • Bước 1: Chọn 2 số nguyên tố lớn và với , được lựa chọn ngẫu nhiên và độc lập. • Bước 2: Tính: . • Bước 3: Tính: giá trị hàm số Ơle . • Bước 4: Chọn một số tự nhiên e sao cho và là số nguyên tố cùng nhau với . • Bước 5: Tính: d sao cho . 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 và 5 có thể được thực hiện bằng giải thuật Euclid mở rộng. 5 • Bước 5 có thể viết cách khác: Tìm số tự nhiên sao cho cũng là số tự nhiên. Khi đó sử dụng giá trị . • Ở bước 3 ta có thể sử dụng thay cho . 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). 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 được gọi là iqmp) Dạng này cho phép thực hiện giải mã và ký nhanh hơn với việc sử dụng định lý số dư Trung Quốc. Ở 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. A gửi khóa công khai cho B và giữ bí mật khóa cá nhân của mình. Ở đây, p và q giữ vai trò rất quan trọng. Chúng là các phân tố của n và 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 và q sẽ được xóa ngay sau khi thực hiện xong quá trình tạo khóa. M e 6 Hình 1.1 Mã hóa và giải mã Mã hóa Giả sử B muốn gửi đoạn thông tin M cho A. Đầu tiên B 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 B có m và biết n cũng như e do A gửi, B 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ũ (theo môđun) bằng thuật toán bình phương và nhân. Cuối cùng B gửi c cho A. Giải mã A nhận c từ B và biết khóa bí mật d. A có thể tìm được m từ c theo công thức sau: Biết m, A 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ý Số dư Trung Quốc, ta có: . hay: . 7 Các định lý cơ sở Thuật toán RSA dựa trên các định lý sau: Đinh lý 1 (Đị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 Đinh lý 2(Định lý Số dư Trung Quốc): Cho hệ phương trình đồng dư bậc nhất trong đó m 1 ,m 2 , ,m k đôi một nguyên tố cùng nhau. Định lý Hệ phương trình đồng dư nói trên có nghiệm duy nhất theo mođun M = m 1 .m 2 m k là trong đó M 1 = M / m 1 ,M 2 = M / m 2 , ,M k = M / m k y 1 = (M 1 ) − 1 (mod m 1 ), y 2 = (M 2 ) − 1 (mod m 2 ), , y k = (M k ) − 1 (mod m k ) Áp dụng trường hợp đặc biệt: Cho p và q là 2 số nguyên tố cùng nhau. Nếu a= b (mod p) và a = b (mod q) thì a= b (mod pq) 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 2 số nguyên tố khác nhau p, q: 8 p = 11 q = 13 Ta tính được số module N là: N= pq = 11 * 13 = 143 Giá trị hàm số Ơ le là: = (p-1) * (q-1) = 10 * 12 = 120 e là số nguyên tố cùng nhau với e = 17 Tìm d sao cho ed = 1 (mod ) <=> 17 * d = 1 (mod 120) => d = 113 vì 7 * 113 = 1921 = 16 * 120 + 1 = 1 (mod 120) Khóa công khai là cặp (e, n). Khóa bí mật là d. Hàm mã hóa là: c = encrypt(m) = m e mod n = m 17 mod 143 với m là văn bản rõ. Hàm giải mã là: m = decrypt(c) = c d mod n = c 113 mod 143 với c là văn bản mã. Để mã hóa văn bản có giá trị m = 50 và có cặp khóa công khai (e,n) là (17,143) ta thực hiện phép tính: encrypt(50) = 50 17 mod 143 = 85 Để giải mã văn bản có giá trị c=545 và cặp khóa bí mật (d,n) là (113,1435) ta thực hiện phép tính: decrypt(85) = 85 113 mod 143 = 50 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. Hình 1.2. Trao đổi khóa bất đối xứng 9 1.3 Tạo chữ ký số Giới thiệu chung Ngày nay, có ba hệ mã hóa thông dụng được sử dụng để xây dựng các lược đồ ký điện tử, đó là hệ mã hóa RSA, hệ mã hóa dựa trên bài toán logarit rời rạc và hệ mã hóa dựa trên đường cong elliptic. Các hàm một chiều sử dụng trong các hệ mã này hiện đang được xem là an toàn theo thừa nhận (tức là không có thuật toán nào hữu hiệu để tính hàm ngược của chúng). Tuy nhiên, một vấn đề cơ bản của tính an toàn đối với một lược đồ ký điện tử lại là tính không thể giả mạo được chữ ký và điều này không suy ra được trực tiếp từ tính an toàn của hệ mã mà nó dựa vào. Trong khoảng mười năm gần đây, vấn đề này đang thu hút rất nhiều sự quan tâm của cộng đồng mật mã trên thế giới. Người ta đang cố gắng đưa ra những lược đồ ký sao cho tính không thể giả mạo được của nó có thể được đánh giá thông qua độ an toàn của các hàm một chiều mà nó sử dụng. Trong bài này chúng tôi xem xét một số lược đồ ký sử dụng hàm một chiều của hệ mã RSA (đang được xem là phổ biến nhất hiện nay). Giả sử A muốn gửi cho B một văn bản có chữ ký của mình. Để làm việc này, A tạo ra một giá trị băm (hash 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 A 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 B 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ì B biết rằng người tạo ra chữ ký biết khóa bí mật của A và văn bản đã không bị thay đổi sau khi ký. Ký điện tử và những mô hình nguyên thủy Hàm băm mật mã Người ta thường sử dụng sự hỗ trợ của các hàm băm mật mã trong quá trình Encoding của các lược đồ ký. Một hàm băm với đầu vào là văn bản (có độ dài bất kỳ), sinh ra cho ta xâu H có độ dài xác định, được gọi là mã băm của . Hàm băm mật mã h phải thỏa mãn các điều kiện sau: • Là hàm một chiều: Tức là nếu cho ta sẽ dễ dàng tính ra H=h(M) . Nhưng nếu chỉ có mã băm H thì rất khó có thể tìm được văn bản M sao cho H=h(M) (rất khó có nghĩa là hiện nay không có thuật toán hữu hiệu nào làm được). • Không tìm được xung đột: Tức là rất khó để tìm ra hai văn bản M và M’ có cùng mã băm. • Không tìm được xung đột của văn bản cho trước: Tức là cho trước văn bản M thì rất khó để tìm được văn bản M’có cùng mã băm với văn bản Mđó. Trong thực tế rất khó có thể tìm ra được một hàm băm thỏa mãn nghiêm ngặt các tính chất trên. Hiện nay, ngày càng có những kết quả thám mã mạnh tấn công vào tính chất thứ hai. Cho nên, các lược đồ ký gần đây thường cố gắng tránh việc dựa trực tiếp vào tính chất này. 10 [...]... Bảo mật Độ an toàn của hệ thống RSA dựa trên 2 vấn đề của toán học: bài toán phân tích ra thừa số nguyên tố các số nguyên lớn và bài toán RSA Nếu 2 bài toán trên là khó (không tìm được thuật toán hiệu quả để giải chúng) thì không thể thực hiện được việc phá mã toàn bộ đối với RSA Phá mã một phần phải được ngăn chặn bằng các phương pháp chuyển đổi bản rõ an toàn Bài toán RSA là bài toán tính căn bậc e... bít Năm 1993, Peter Shor công bố thuật toán Shor chỉ ra rằng: máy tính lượng tử (trên lý thuyết) có thể giải bài toán phân tích ra thừa số trong thời gian đa thức Tuy nhiên, máy tính lượng tử vẫn chưa thể phát triển được tới mức độ này trong nhiều năm nữa 18 Ứng dụng RSA bảo mật trong Internet Banking sử dụng giao thức https ssl RSA được liệt vào một trong các giải thuật mã hóa bất đối xứng được dùng... được các quy trình và cách thức làm 1 tài liệu khoa học Chúng tôi chân thành cảm ơn! 24 TÀI LIỆU THAM KHẢO [1] Cetin Kaya Koc, RSA hardware Implementation“, RSA Laboratories, RSA Data Security Inc, 1995 [2] Cetin Kaya Koc, “High-speed RSA Implementation“, RSA Laboratories, RSA Data Security Inc, 1994 [3] James Henry Carmouche, “IPsec Virtual Private Network Fundamentals’, Cisco Press, July 19 2006... hưởng tới việc thực hiện hàm mũ 16 Hình 2.1 Cố gắng phá hoại cặp khóa bất đối xứng 2.2 Tốc độ RSA có tốc độ thực hiện chậm hơn đáng kể so với DES 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à private key, tính an toàn và độ phức tạp của giải thuật chính là nhờ phép toán liên quan đến tích số của một cặp số nguyên tố rất cao, tạo ra một số rất rất cao mà hầu như không thể đoán ngược trở lại được hai số nguyên tố ban đầu Trong các kết nối VPN ipsec và ssl, RSA thường được dùng để mã hóa các "session key" (key để mã hóa data dùng cho giải thuật mã hóa đối xứng) giúp cho quá trình trao đổi... nhiều ứng dụng đã thực hiện Để chống lại tấn công dựa trên thời gian là đảm bảo quá trình giải mã luôn diễn ra trong thời gian không đổi bất kể văn bản mã Tuy nhiên, cách này có thể làm giảm hiệu suất tính toán Thay vào đó, hầu hết các ứng dụng RSA sử dụng một kỹ thuật gọi là che mắt Kỹ thuật này dựa trên tính nhân của RSA: thay vì tính cd mod n, Alice đầu tiên chọn một số ngẫu nhiên r và tính (rec)d mod... hay dùng nhất là các thuật toán ngẫu nhiên Giả sử có một mệnh đề Q(p,a) nào đó đúng với mọi số nguyên tố p và một số tự nhiên a . sáng chế RSA đã không thể được đăng ký. 1.2 Thuật toán RSA Thuật toán Giả sử A và B 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, đầu. và giải mã 5 Hình 1.2 Trao đổi khóa bất đối xứng 7 Hình 2.1 Cố gắng phá hoại cặp khóa bất đối xứng 14 iv CHƯƠNG 1: RSA HOẠT ĐỘNG NHƯ THẾ NÀO 1.1 Giới thiệu về RSA Trong mật mã học, RSA là một thuật. LỤC LỜI NÓI ĐẦU ii MỤC LỤC iii DANH MỤC HÌNH VẼ iv CHƯƠNG 1: RSA HOẠT ĐỘNG NHƯ THẾ NÀO 5 1.1 Giới thiệu về RSA 5 1.2 Thuật toán RSA 5 1.3 Tạo chữ ký số 10 1.4 Chuyển đổi văn bản rõ 13 CHƯƠNG