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

Nghiên cứu giải thuật mã hóa công khai và cài đặt trên EPGA

176 15 0

Đ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 176
Dung lượng 2,7 MB

Nội dung

Đại Học Quốc Gia Tp Hồ Chí Minh TRƯỜNG ĐẠI HỌC BÁCH KHOA - TÁC GIẢ Đinh Ngọc Bảo Toàn Nghiên cứu giải thuật mã hóa công khai cài đặt FPGA Chuyên ngành : Kỹ thuật vô tuyến điện tử Mã số ngành : 2.07.1 2.07.07 LUẬN VĂN THẠC SĨ TP HỒ CHÍ MINH, tháng 05 năm 2003 Đại Học Quốc Gia Tp.Hồ Chí Minh TRƯỜNG ĐẠI HỌC BÁCH KHOA - CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc Lập – Tự Do – Hạnh Phúc NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên : Đinh Ngọc Bảo Toàn Phái : Nam Ngày, tháng , năm sinh : 14 – 05 – 1975 Nơi sinh : TPHCM Chuyên Ngành : Kỹ Thuật Vô Tuyến Và Điện Tử TÊN ĐỀ TÀI : Nghiên cứu giải thuật mã hoá công khai cài đặt FPGA II- NHIỆM VỤ VÀ NỘI DUNG : …………………………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………………………… …………………………………… III- NGÀY GIAO NHIỆM VỤ ( Ngày bảo vệ đề cương ) : …………………………………………………… IV- NGÀY HOÀN THÀNH NHIỆM VỤ ( Ngày bảo vệ luận án tốt nghiệp) :……………… V - HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN ( Ghi đủ học hàm học vi) : TS Phạm Tường Hải Ths Hồ Trung Mỹ VI- HỌ VÀ TÊN CÁN BỘ CHẤM NHẬN XÉT (Ghi đầy đủ học hàm học vi) : …………………………………………………………………………………………………………………………………………………………………………… VII- HỌ VÀ TÊN CÁN BỘ CHẤM NHẬN XÉT (Ghi đầy đủ học hàm học vi) : …………………………………………………………………………………………………………………………………………………………………………… CÁN BỘ HỨƠNG DẪN CÁN BỘ NHẬN XÉT CÁN BỘ NHẬN XÉT Nội dung đề cương luận văn thạc só Hội Đồng Chuyên Ngành thông qua Ngày………… tháng………… năm…………… TRƯỞNG PHÒNG ĐÀO TẠO SĐH CHỦ NHIỆM NGÀNH (Ghi : Trước chuyển tới cán chấm nhận xét, học viên phải trình Phòng Đào tạo SĐH tập thuyết minh luận văn đóng kèm tờ nhiệm vụ có đủ chữ ký cán hướng dẫn , chủ nhiệm chuyên ngaønh) ABSTRACT From ancient times to the present, human beings usually have some private problems that are needed to be kept secrect For that reason, protecting data (also called protecting information) is derived to prevent unexpected entering into sensitive informations not only in military secrects, politics affairs but also in economy field as well as in private informations Nowadays, the secrect data (or secrect information) on computers and information systems have to be protected from illegal invations and ought not to be changed or generalized by them There are various methods of protecting information Among them, cryptography is always the most popular valuable method The main purpose of cryptography is to bring out a method that can change the information from one form to another to hide the true meaning of information Also, the information can be recovered secrectly whenever it is needed As time passed by, the cryptography have been becoming to a science subject indeed In the future, it will be a very exciting field full of understanding, especially when the code system is being broken and there will be a request for replacing the old code system by the other progessive ones This thesis reseachs about the popular encryption algorithm, concretely RSA encryption The RSA encryption can be analized in the way of hardware approach and performed on Altera’s FPGA Through out my process of doing the thesis, the whole-hearted help of PhD Hai and M.Sc My with their providing rich materials encouraged me very much So, completing the thesis is the most sincere thanks to my dear professors Ho Chi Minh City, May 2003 Dinh Ngoc Bao Toan TÓM TẮT Con người từ xưa đến có vấn đề mang tính riêng tư cần giữ bí mật Bảo mật liệu hay bảo mật thông tin đời từ đó, nhằm ngăn cản xâm nhập ý muốn đến thông tin nhạy cảm lónh vực quân , trị mà kinh tế, vấn đề cá nhân Ngày nay, thông tin, liệu mật máy tính hay hệ thống thông tin cần đựơc bảo vệ không cho phép sửa đổi, phổ biến xâm nhập bất hợp pháp Có nhiều phương pháp bảo mât thông tin, mật mã học ứng cử viên sáng giá sử dụng phổ biến Mục đích mật mã học đưa phương pháp làm biến đổi thông tin thành dạng khác nhằm giấu ý nghóa thật thông tin cần thiết khôi phục lại cách bí mật Theo thời gian, mật mã học phát triển thành môt môn khoa học thật sự, tương lai, lónh vực vô hấp dẫn mang đầy tính trí tuệ, hệ thống mật mã dần bị phá vỡ đòi hỏi phải thay hệ mật mã tiến Luận văn nghiên cứu giải thuật mã hóa công khai mà cụ thể giải thuật RSA, phân tích giải thuật theo hướng tiếp cận phần cứng thực FPGA Altera Trong trình làm luận văn này, hướng dẫn tận tình Ts Hải Ths Mỹ thông qua nguồn tài liệu phong phú Việc hoàn thành luận văn lời cảm ơn chân thành dành cho quý Thầy Thành phố Hồ Chí Minh, tháng 05 năm 2003 Đinh Ngọc Bảo Toàn MỤC LỤC Bảng nhận xét Abstract Tóm tắt Mục lục Tổng quan mật mã học 1.1 Các hệ thống mật mã 1.2 Các giải thuật mã hoá đối xứng 1.3 Các giải thuật mã hoá không đối xứng Cơ sở toán học 2.1 Phép toán modulo định lý liên quan 2.2 Các giải thuật cổ điển 2.3 Chương trình tính phép toán modulo giải thuật Euclide Hệ thống mã hoá công khai 3.1 Hệ thống phân bố khoá công khai 3.2 Hệ thống mã hoá Knapsack Merkle-Hellman 3.3 Hệ thống mã hoá mã số học McElice 3.4 Hệ thống mã hoá công khai RSA 3.5 Chương trình tính tham số giải thuật RSA Phân tích giải thuật hệ thống RSA 4.1 Giải thuật RSA 4.2 Tính lũy thừa modulo 4.3 Các phép toán tham số giải thuật RSA 4.4 Phép toán luỹ thừa modulo 4.5 Phép cộng 4.6 Phép cộng modulo 4.7 Phép nhân modulo Thiết kế số với VHDL 5.1 Sơ lược thiết kế số 5.2 Công nghệ logic số 5.3 Công nghệ CPLD 5.4 Công nghệ FPGA 5.5 Ngôn ngữ VHDL 5.6 Họ FPGA FLEX10K Hiện thực giải thuật RSA FPGA 6.1 Phân tích toán học 6.2 Thiết kế logic 6.3 Đánh giá 1 6 10 14 16 16 17 18 18 22 24 24 25 26 26 29 38 40 51 51 55 68 70 73 86 108 109 111 116 Phụ lục A Chương trình C++ thực tính toán tham số thuật giải RSA B Chương trình VHDL thực giải thuật RSA Tài liệu tham khảo A-1 B-1 Chương Tổng quan mã hoá liệu Chương Tổng Quan Về Mã Hoá Dữ Liệu Từ mạng máy tính phát triển cách rộng rãi, bắt đầu mạng cục sau mang diện rộng mạng toàn cầu, mang đến cho người môi trường truyền thông tiện ích Môi trường mạng cho phép kết nối nhiều máy tính với theo quy định định Cùng với phát triển phần cứng đời hàng loạt phần mềm khai thác dịch vụ mạng Chúng cho phép ta trao đổi, truy xuất tìm kiếm từ xa thông tin từ văn hình ảnh đồ hoạ nhiều dạng khác Thử hình dung có nhiều kết nối nhiều thư viện, kho liệu ta cần vào lấy Như rõ ràng thực tế kho phải kiểm soát người định vào lấy thông tin Ngoài ta thấy việc trao đổi thông tin mạng thực kênh truyền dùng chung Muốn thông tin truyền không bị người khác biết, ta làm cách làm biến dạng theo quy luật sau phục hồi lại theo chiều ngược lại quy luật Việc làm biến dạng phục hồi thông tin tác vụ trình mật mã hoá liệu bao gồm mã hoá giải mã 1.1 Các hệ thống mật mã Một hệ thống mật mã bao gồm tất thông tin truyền, thông tin nhận quy luật biến đổi thông tin truyền thành thông tin nhận môi trường Môi trường bao gồm hệ thống trao đổi thông tin có người gửi người nhận Trong người gửi mã hoá thông tin người nhận giải mã thông tin nhận Trình tự giao tiếp người gửi người nhận Cả hai đồng ý thuật toán mã hóa Cả hai chọn trao đổi khoá Cuối chuyển thông tin cần gửi Từ lớp hệ thống mã hoá đơn giản nhất, ta rút hai ý niệm quan trọng: Thuật toán mã hoá: cho biết thông tin truyền biến đổi Khoá: nói lên làm thuật toán tiến hành Hệ thống mã hoá công khai-Giải thuật RSA Trang Chương Tổng quan mã hoá liệu Phân loại hệ thống mã hoá Hệ thống mã hoá đối xứng: hệ thống mã hoá mà người gửi người nhận chia sẻ khoá, loại thường phổ biến với hệ mã hoá cổ điển Hệ thống mã hóa phiù đối xứng: hệ thống mã hoá mà người gởi người nhận sử dụng khoá khác nhau, khoá người nhận giữ bí mật khoá người gửi dạng công khai nên gọi hệ mã hóa công khai Ngoài có khái niệm hệ thống mã hoá đơn giản, kí tự mã hoá kí tự, hệ thống loại không an toàn thường gặp hệ mã hoá cổ điển Nguyên lý hoạt động Nguyên lý hoạt động hệ thống mật mã xoay quanh ba yếu tố Đó liệu gốc chưa mã hoá (plaintext), liệu mã hoá (ciphertext) khoá mã(key) Khoá bí mật công khai phụ thuộc vào đặc điểm hệ thống mật mã Vấn đề sử dụng chìa khoá quy luật (một hàm) để làm biến dạng khối liệu gọi giải thuật mật mã Như an toàn hệ thống mật mã dựa hai yếu tố : Giải thuật khoá Ngày xưa, ứng dụng mật mã xoay vòng ứng dụng đơn giản có quy mô nhỏ, người ta giữ bí mật hai yếu tố Nhưng mật mã dùng để bảo vệ cho hệ thống lớn vấn đề bảo mật giải thuật phải xem xét lại Nếu việc bảo mật lại dựa tính bí mật giải thuật giải thuật bị phá vỡ dẫn đến cần thiết phải thiết kế lại giải thuật để sử dụng Điều dẫn đến lãng phí thời gian tiền thay đổi hệ thống lớn thật chẳng dễ dàng Còn đối vói khoá thật đơn giản: cần thay đổi khoá bị lộ khoá xong Từ phân tích ta thấy hiệu an toàn hệ thống mật mã định từ khâu thiết kế giải thuật Các trình mã hoá giải mã biểu diễn sau: M → C hay EK(M) = C Mã hoá EK : Giải mã DK: C → M hay DK (C) = M M liệu trước mã hoá C liệu mã hoá E phép mã hoá kK khoá với chiều dài hữu hạn thuộc không gian khoá K Hệ thống mã hoá công khai-Giải thuật RSA Trang Chương Tổng quan mã hoá liệu Nếu xem phép mã hoá giải mã hàm hàm giải mã DK hàm nghịch đảo hàm mã hoá EK Ta có : DK=EK-1 hay DK(C) = DK (EK (M)) = M Thông thường, để công hệ thống mật mã, ta thường phải có tay đoạn liệu gốc (M) đoạn mã tương ứng (C) Từ ta tìm khoá K mật mã nhờ vào việc nghiên cứu quan hệ tìm quy luật liên quan hai đoạn liệu M C Nếu quy luật phức tạo hệ thống an toàn nhiêu Chính hệ thống mật mã ngày có giải thuật công khai vô phức tạp với việc áp dụng nhiều phép toán phép hoán vị Yêu cầu hệ thống mã hoá Chỉ người liên quan biết thông tin truyền Những người không can dự có thể: • • • • 1.2 Biết thông tin truyền mã hoá (một phần lớn toàn bộ) Biết phần nhỏ thông tin gửi (chưa mã hoá) tương ứng với thông tin nhận mã hoá Biết thuật toán mã hoá Không biết khoá giải mã Các giải thuật mã hoá đối xứng Hầu hết loại mật mã cổ điển thuộc loại Đó hệ thống mật mã mà trình mã hoá giải mã sử dụng giải thuật thích hợp hay giải thuật giải mã suy từ giải thuật mã hoá cách đơn giản điều quan trọng sử dụng khoá để mã hoá giải mã M Người gửi Người nhận EK M DK Kênh không an toàn Khóa bí mật Ka Kênh an toàn Hình 1.1 Mật mã đối xứng Hệ thống mã hoá công khai-Giải thuật RSA Trang Chương Tổng quan mã hoá liệu Bất lợi lớn hệ thống loại việc truyên khoá kênh truyền an toàn bảo mật trước muốn truyền liệu (hình 1.1) Điều thật khó khăn bên gởi bên nhận cách xa Vì an toàn hệ thống, khoá bí mật thường phải thay đổi liên tục tốt liệu cần trao đổi có khoá riêng 1.3 Các giải thuật mã hoá không đối xứng Chính từ điểm yếu giải thuật đối xứng mà người ta nghó đến giải pháp vẹn toàn Đó việc phát minh hệ thống mật mã không đối xứng hay gọi hệ thống mật mã khoá công khai Ý tưởng xuất phát từ chỗ xác định phép giải mã DK với phép mã hoá biết EK Và ta truyền liệu mã hoá công khai K (xác định phép mã hoá EK ) Tại nơi nhận, người ta dùng khoá bí mật xác lập phép giải mã bí mật DK nhờ vào kết hợp với khoá công khai Kết có người nhận người giải mã Như khác với hệ mật mã đối xứng , hệ mật mã không đối xứng sử dụng hai khoá khác Theo phân tích khoá bí mật sinh khoá phải đặt bên nhận khoá công khai truyền với liệu mã hoá kênh truyền hình không an toàn (hình 1.2) M Người gửi C Ek Người nhận M Dk Kênh không an toàn Khóa bí mật KB Khóa công khai KB Bộ sinh khóa Kênh không an toàn Bộ điều kiện ban đầu Hình 1.2 Mật mã không đối xứng Hệ thống mã hoá công khai-Giải thuật RSA Trang Phụ lục Mã nguồn chương trình C++ { tmp = ((n&1) + '0'); str = tmp + str; n >>= 1; } while(n); return str; } // Miller-Rabin Algorithm for n BOOL miller(long n) { int l=0; long m, x, x0, n1 = n - 1; long ntemp = n1, temp = 1; while (ntemp % == 0) { ntemp /= 2; l++; temp *= 2; } m = n1 / temp; srand((unsigned)time(NULL)); x = 1+(int) ((double) n*rand()/(RAND_MAX+1.0)); x0 = modexp(x,m,n); if ((x0 == 1) || (x0 == n1)) { return TRUE; } long xneu, xalt = x0; for (int i=0; i 0) first ; A-37 Phuï luïc Mã nguồn chương trình C++ z = (z*z) % n; // maybe multiply if (bi == '1') { z = (z*x) % n; if (first > 0) first = 0; } } return z; } BOOL isProbablePrime(int w, int p) { if (w % == 0) return FALSE; for (long i = 3; i < 51 { if (w == i) return else if (w % i return } p*2; i += 2) TRUE; == 0) FALSE; return TRUE; } // sieve of Eratosthenes BOOL erat(long num, CString& out) { CString szTmp; out.Format(_T("%d = "), num); BOOL isPrime = TRUE, notfirst = FALSE; long temp = num; while (temp % == 0) { temp /= 2; if (notfirst) { out += _T(" *"); } else { notfirst = true; } out += _T(" 2"); isPrime = false; } int check = 3; while (check

Ngày đăng: 16/04/2021, 04:27