1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(Tiểu luận) nghiên cứu về cách mở rộng caesarcipher và thảo luận về mức độ hiệu quảvà độ an toàn của caesar cipher

21 4 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 21
Dung lượng 2,16 MB

Nội dung

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CUỐI KỲ NHẬP MÔN BẢO MẬT THÔNG TIN NGHIÊN CỨU VỀ CÁCH MỞ RỘNG CAESAR CIPHER VÀ THẢO LUẬN VỀ MỨC ĐỘ HIỆU QUẢ VÀ ĐỘ AN TOÀN CỦA CAESAR CIPHER Người hướng dẫn: TS BÙI QUY ANH Người thực hiện: LÊ HỒNG PHÚC THỊNH – 52200253 Khố: 26 THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023 TỔNG LIÊN ĐỒN LAO ĐỘNG VIỆT NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CUỐI KỲ NHẬP MÔN BẢO MẬT THÔNG TIN NGHIÊN CỨU VỀ CÁCH MỞ RỘNG CAESAR CIPHER VÀ THẢO LUẬN VỀ MỨC ĐỘ HIỆU QUẢ VÀ ĐỘ AN TOÀN CỦA CAESAR CIPHER Người hướng dẫn: TS BÙI QUY ANH Người thực hiện: LÊ HOÀNG PHÚC THỊNH – 52200253 Khố: 26 THÀNH PHỐ HỒ CHÍ MINH, NĂM 202 LỜI CẢM ƠN Sau hoàn thành báo cáo học kì hè, em xin chân thành cảm ơn thầy Bùi Quy Anh hỗ trợ dạy nhiệt tình suốt khóa học kỳ hè suốt khoảng thời gian em làm báo cáo 2 BÁO CÁO ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC TƠN ĐỨC THẮNG Tơi xin cam đoan sản phẩm đồ án riêng hướng dẫn TS BÙI QUY ANH Các nội dung nghiên cứu, kết đề tài trung thực chưa công bố hình thức trước Những số liệu bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá tác giả thu thập từ nguồn khác có ghi rõ phần tài liệu tham khảo Ngồi ra, đồ án cịn sử dụng số nhận xét, đánh số liệu tác giả khác, quan tổ chức khác có trích dẫn thích nguồn gốc Nếu phát có gian lận chúng tơi xin hồn tồn chịu trách nhiệm nội dung đồ án Trường đại học Tơn Đức Thắng không liên quan đến vi phạm tác quyền, quyền chúng tơi gây q trình thực (nếu có) TP Hồ Chí Minh, ngày 13 tháng năm 2023 Tác giả (ký tên ghi rõ họ tên) Lê Hoàng Phúc Thịnh PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN Phần xác nhận GV hướng dẫn _ Tp Hồ Chí Minh, ngày tháng năm (kí ghi họ tên) Phần đánh giá GV chấm _ Tp Hồ Chí Minh, ngày tháng năm (kí ghi họ tên) TĨM TẮT - Với phát triển cơng nghệ, thuật tốn mã hóa cỗ điển dần tính bảo mật vốn có Ví dụ thuật tốn Caesar, Vigènere Playfair khơng cịn đảm bảo tính bảo mật với thuật tốn đơn giản Vì vậy, báo cáo thực nhằm nghiên cứu thuật toán Caesar Cipher mở rộng, nghĩa nâng cấp thuật toán Caesar Cipher truyền thống thảo luận mức độ an toàn Caesar Cipher mở rộng Document continues below Discover more from:mật thông Bảo tin 502049 Đại học Tôn Đức… 4 documents Go to course 52000 685 Hoang 26 Tuan Long Bảo mật thông tin None Giao tiếp qua đt work from home Bảo mật thông tin None Bmtt - referencee Bảo mật thông tin None Exercise - Chapter 1-4 10 Business research… 100% (1) Correctional Administration Criminology 96% (113) English - huhu 10 Led hiển thị 100% (3) MỤC LỤC LỜI CẢM ƠN PHẦẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN TÓM TẮẮT MỤC LỤC DANH M CỤCÁC B NG Ả BI U,ỂHÌNH VẼẼ, ĐỒẦ THỊ 1.1 Thuật toán Caesar Cipher 1.2 Kếết mở rộng khơng gian khóa 1.3 Bảng mã ASCII 1.4 Hình ảnh thuật tốn Affine 1.5 Hình ảnh thuật tốn Columnar ƯƠ NG PHẦẦN LÝ THUYÊẮT CH 1.1 T i l i cầần phải bảo mật thông tin? 1.2 Mật mã Caesar cổ điển 1.2.1 Mật mã Caesar gì? 1.2.3 Thuật tốn mã hóa 1.3 Mật mã Caesar mở rộng 1.3.1 Vì cầần phải mở rộng thu ật toán Caesar? 1.3.2 M ởr ộ ng Caesar Cipher bằầng cách thay đổi khơng gian khóa 1.3.3 M ởr ộ ng Caesar Cipher bằầng cách thay đổi không gian mã 1.3.4 M rở ng ộ thu tậtoán Caesar bằầng cách kếết hợp kyỹ thuật mã hóa cổ điển Affine 1.4 Thảo luận mức độ an toàn thuật toán Caesar mở rộng CH ƯƠ NG THIÊT KÊẮ DẼMO 2.1 Giới thiệu nội dung chương trình demo 2.2 Thiếết kếế chương trình mã hóa CHƯƠNG CHƯƠNG TRÌNH DẼMO 10 3.1 Thuật tốn chương trình demo 10 3.2 Chương trình demo 12 TÀI LIỆU THAM KHẢO 13 DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ 1.1 Thuật tốn Caesar Cipher Kếết thuật toán: 1.2 Kếết mở rộng khơng gian khóa - Kếết thuật tốn mở rộng khơng gian khóa v ới khóa K 1.3Bảng mã ASCII 1.4 Hình ảnh thuật tốn Affine 1.5 Hình ảnh thuật toán Columnar CHƯƠNG PHẦN LÝ THUYẾT 1.1 T i l i cầần phải bảo mật thông tin? - Ngày v i s ựphát tri ể nc ủ a công ngh ệ , vấến đếề vếề bảo m ật thông tin trọng Việc trao đổi thông tin công ty hay giữ lãnh đạo bảo vệ nghiếm ngặt Vì bảo mật thơng tin đời v ới mục đích đ ảm b ả o thơng tin trao đ ổ i đ ượ c nguyến v ẹ n không b phát ị tán ho ặ c b đánh ị cắếp - Bến c nh đó, v i xu thếế hội nhập cơng nghệ hóa Con người ngày đắếm vào trang mạng xã hội, việc để lộ thông tin cá nhấn m ột việc không th tránh ể kh i.ỏVà thếế b ả om ậ tm ộ t lấền n ữ a đ ược s ửd ụ ng đếến Hiện thông tin ng ườ i dùng đ ượ c mã hóa m t ộcách chắếc chắến khó có th ể đánh cắếp 1.2 Mật mã Caesar cổ điển 1.2.1 Mật mã Caesar gì? - Mật mã Caesar hay gọi mật mã dịch chuy ển, sôế mật mã cổ điển Ceasar Ciper Julius Ceasar s d ụng để trao đổi thông tin với quấn đội vào khoảng 2000 nắm trước - Ceasar cipher m ộ t nh ữ ng m ậ t mã đ n gi ả n, dếễ hi ể u nhấết đ ượ c tiếếp cận rộng rãi - Chính s ựdếễ dàng tiếếp cận mà mật mã Caesar ngày khơng cịn an tồn nữa, chúng bị phá mã cách nhanh chóng - Mật mã Caesar cipher cịn tiếền đếề cho mật mã hi ện đại 1.2.2 Nguyến tằếc hoạt động - Ở Caesar cipher cổ điển, mã seễ dịch chuyển vếề bến trái b ả o rõ v ịtrí Sau t ừb ả n rõ ta ánh x ạđếến b ản mã đ ể tìm mã Có nghĩa sau dịch chuyển vếề bến trái vị trí, Ở v ị trí A rõ ta thu đ ượ c kí t Dự c aủb nảmã, t ươ ng t Bựta thu đ ượ c E… Cho đếến hếết bảng ch ữ ta quay vếề thu kí tự A v ị trí Y B vị trí Z 1.2.3 Thuật tốn mã hóa 5 1.2.3.1 Thu t toán ậ lý thuyếết c aủCaesar truyếần thơếng - Khởi tạo giá trị khóa K mặc định - T ừb ả n rõ ta ánh xa đếến mã để thu kí tự mã hóa ta có cơng thức: C = ( X + K)%26 Trong đó: C kí tự thu sau ánh xạ(bản mã) X kí tự từ rõ K giá trị khóa - Theo b ả n mã ASCCI giá tr th ị ậ p phấn c ủ a kí t ựA 65 kếết thúc với kí tự Z 90 Và không gian ch ữ 26 kí v ậy ta có cơng thức: C = ( N + K – 65)%26 + 65 Trong đó: C kí tự thu sau ánh xạ(bản mã) N giá trị kí tự bảng mã ASCII K giá trị khóa 1.2.3.2 Thu ật toán th ự c chiếến - Nhập rõ - Ta khởi tạo giá trị mặc định K = - Kh it om ộ t sấu kí t ựrơễng đ ểch ứ a kếết mã hóa - Sử dụng vịng lập duyệt phấền tử mã th ực hi ện công thức C = ( N + K – 65)%26 + 65 để tìm giá tr ị kí t ự sau mã hóa Và cộng kí tự sau mã hóa vào sấu kí tự ban đấều Hình ảnh minh họa thuật tốn: 1.1 Thuật tốn Caesar Cipher (trang 3) 1.3 Mật mã Caesar mở rộng 1.3.1 Vì cầần phải mở rộng thuật tốn Caesar? - Do phát triển cơng nghệ với tính bảo m ật c thông tin nến thu ậ t toán c ổđi ể n dấền mấết v ị trí lĩnh vực đ ảm bảo thơng tin nguyến v ẹ n không b đánh ị cắếp Vì với nếền t ản sở Caesar Cipher có th ểkếết hợp với phép d ịch, m r ộng khơng gian khóa ho cặkếết h ợ p thu ậ t toán Caesar truyếền thơếng với thuật tốn cổ điển khác nhắềm tọa thuật tốn Caesar mở rộng đảm bảo tính bảo mật 6 1.3.2 M ởr ộ ng Caesar Cipher bằầng cách thay đổi không gian khóa - Nếếu mật mã Ceasar thuấền người ta sử d ụng khóa K ba để d ịch chuyển mã vếề bến trái vị trí Thì Caesar mở rộng ta nấng khơng gian khóa K t ừ0 đếến 25 để đảm bảo vi ệc an toàn cho mật mã Caesar - Với thay đổi khóa K, thuật tốn yếu cấều người dùng nhập sơế t ựnhiến bấết kì để thực dịch chuyển Ví dụ khóa K ta kếết mã hóa cho vắn “CONGNGHETHONGTIN” sau: “HTSLSLMJYMTSLYNS” (Hình minh họa 1.2 Kếết mở rộng khơng gian khóa, trang 3) 1.3.3 M ởr ộ ng Caesar Cipher bằầng cách thay đổi không gian mã - Thay s ửd ụ ng b ản ch ữcái tiếếng anh 26 kí t ự th ường lệ thuật tốn seễ sử dụng đa dang kí tự h ơn: ch ữ hoa, chữ th ường, kí t sơế ự kí t ựđ ặ c bi ệ t t ừ49 đếến 126 (1.3 Sôế thập phần bảng mã ASCII, trang 3) Như mở rộng thuật tốn Caesar Cipher 1.3.4 M rở ng ộ thu tậtoán Caesar bằầng cách kếết hợp kyỹ thuật mã hóa cổ điển Affine 1.3.4.1 Mã hóa Affine gì? - Là m ậ t mã thay thếế, từ b ản rõ ban đấều sử dụng cơng thức tốn học đ ể tìm mã thức phép ánh xạ để tìm kí tự mã hóa Nguyến trắếc hoạt động: - Từ rõ sử dụng công thức: ax + b mod 26 (a khả nghịch) để tìm mã - Sau ánh x ạt ừb ả n rõ đếến mã để tìm kí tự mã hóa (Hình ảnh minh họa 1.4, trang 3) 1.3.4.2 Thuật toán Modified Caesar - Là s ựkếết hợp thuật toán Ceasar, Affine cipher Được m rộng thuật toán phức tạp hơn, yếu cấều người dùng nh ập m ột Key bắềng kí tự chữ Nguyến tắếc hoạt động: - Từ Key người dùng nhập, sử dụng công thức Ai = A + Bi Và giá tr Ai ị cếi giá trị c A Trong đó: A temp(biếến tạm) khởi tạo bắềng B vị trí kí tự bảng chữ - Như vậy, ta tìm (a,b) cho thuật tốn Affine Trong đó: a t ổ ng v trí ị c ủ a khóa b ả ng ch ữcái (nếếu a > 26 th ự c hi ệ n a = a mod 26 nếếu a không khả nghịch th ực a = a+1) b t ổ ng sôế hạng temp chia dư cho 3(temp mod 3) 1.4 Thảo luận mức độ an tồn thuật tốn Caesar mở rộng - Với mức độ bảo mật cao ngày thuật tốn cho dù đ iạ hay c ổ nệđếều có th bể phá ị v ỡ H thôếng ệ b ả om ậ tc ủ a quôếc gia, sấn bay hay t pậđồn đếều có kh nắng ả b k ị xấếu ẻ xấm ph m đ ểđánh cắếp thông tin Đ h ển chếế s xấm ự nh pậbấết h ợ p pháp c ủ a tin tắếc thuật toán ngày yếu cấều ng ườ i dùng cung cấếp mật để làm khóa đ ể thu ật toán Ceasar m ởr ộng b ịtấến cơng đốn m ật kh ẩu ng ười dùng ng ười dùng đ ểl ộthơngg tin cung cấếp để làm khóa cho thu ật tốn Bến c ạnh đó, v i đ dài ộ c aủkhóa mà ng ườ i dùng cung cấếp l n kh ảnắng b tấến ị cơng hẹp - Với thuật tốn mở rộng khơng gian mã khơng gian khóa Thuật toán vấễn đ ả mb ả o an tồn h n Caesar Cipher truyếền thơếng mà Julius Caesar t ngừs d ửng.ụĐ tấến ể công đ ượ c thu t ậtoán m rở ng ộ tin tắếc ph ả i tôến nhiếều thời gian công sức 8 - Tuy nhiến, v i thu t ậtoán m rở ng ộ tin tắếc vấễn cịn kh ảnắng tấến cơng vào lơễ hỏng thuật tốn Dựa trến thói quen thơng tin cá nhấn ng ười dùng mà tin t ặ c có th ểđốn đ ượ c khóa mà ng ườ i dùng cung cấếp Vì v ậy, khơng ệ t đôếi bảo mật thông tin CHƯƠNG THIÊT KẾ DEMO 2.1 Giới thiệu nội dung chương trình demo - Chương trình demo bao gơềm hai phấền Phấền một, chuyển từ vắn thuấền sang vắn mã hóa Phấền hai, giả mã vắn mã hóa đ ể tìm đo n vắn b ả n ban đấều Ch ươ ng trình đ ượ c viếết bắềng ngôn ngữ Java sử dụng thư viện phù hợp với nội dung chương trình - Cửa sổ chương trình bao gơềm khung để nhập liệu khung để nhập vắn khung cịn lại dùng để nh ập khóa, nút (button) dùng đ ểấến có chức nắng mã hóa, khung hiển thị nội dung mã hóa 2.2 Thiếết kếế chương trình mã hóa - Đ nh ị nghĩa th ưvi ệ c cấền thiếết cho chương trình bao gơềm: import import import import javax.swing.*; java.awt.*; java.awt.event.ActionEvent; java.awt.event.ActionListener; - Viếết phương thức khởi t ạo: public view() { this.init();// gọi đến hàm init this.setVisible(true);// setVisible có chức hiển th ị cửa s ổ } - Viếết hàm thiếết kếế giao diện: - Viếết hàm thực mã hóa: public String encyption(String plainText, String key){ String encyp = ""; //Khởi tạo giá trị cho biến encyp null int a = 0;// Khởi tạo giá trị mặc định cho a b int b = 0; for(int i = 0; i < key.length(); i++){// sử dụng vòng lặp để duyệt phần tử key a = a + index(key.charAt(i));// gọi đến hàm index để tìm vị trí kí tự bảng chữ cộng giá trị lại ta đ ược a } int temp = a; while(temp > 0){ b = b + temp%10; temp = temp/10; }// tìm b cách cộng số hạng temp if(a > 26){ a = a % 26; } // a lớn 26 thực chia dư a cho 26 if(a % == 0){ a = a + 1; }// a khơng khả nghịch thực hi ện a + // phạm vi từ đến 26 số khả nghịch nhìn chung s ố l ẻ encyp= affine(a, b%3 , plainText.toUpperCase()); // gọi đến hàm affine với tham số a , b , plaintext b = b%3 return encyp; } - Viếết hàm thuật toán Affine: public String affine(int a, int b, String plainText){ String encryp = "";// khởi tạo giá trị mặc định // duyệt ph ần tử plainText for(int i = 0; i < plainText.length(); i++){ // kí tự khơng có chữ gi ữ ngun kí tự if( index(plainText.charAt(i)) == -1){ encryp = encryp + plainText.charAt(i); } else { // kí tự có bảng chữ tiến hành mã hóa kí t ự theo công thức (a*x + b)%26 encryp = encryp + arr[((a*index(plainText.charAt(i)) + b) % 26)]; } } return encryp; } - Viếết hàm trả vếề vị trí kí tự bảng chữ cái: 10 public int index(char character){ //duyệt phần tử mảng for(int i = 0; i < arr.length; i++){ if(character == arr[i]){ // kí tự truyền vào kí tự bảng ch ữ trả v ề v ị trí kí tự bảng chữ vị trí bắt đầu đ ược tính từ return i; } } // kí tự khơng có bảng chữ tr ả v ề -1 return -1; } CHƯƠNG CHƯƠNG TRÌNH DEMO 3.1 Thuật tốn chương trình demo import import import import javax.swing.*; java.awt.*; java.awt.event.ActionEvent; java.awt.event.ActionListener; public class view extends JFrame{ private char[] arr = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S ','T','U','V','W','X','Y','Z'}; public view() { this.init(); this.setVisible(true); } public void init(){ this.setTitle("Modified Caesar Cipher"); this.setSize(1200, 600); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel jPanel = new JPanel(); JPanel jPanel2 = new JPanel(new GridLayout(2,1)); JPanel jPanel3 = new JPanel(); 11 JTextArea jt = new JTextArea("TYPE HERE"); jPanel.add(jt, BorderLayout.NORTH); jPanel.setBorder(BorderFactory.createLineBorder(Color.black));; JTextArea jt2 = new JTextArea("Enter key"); jPanel2.add(jt2); JButton jbt = new JButton("Translate"); jPanel2.add(jbt); jPanel2.setSize(25, 25); JLabel jlb = new JLabel("hi"); jlb.setSize(10, 10); jPanel3.add(jlb); JPanel jPanel4 = new JPanel(new GridLayout(1,2)); jPanel4.add(jPanel); jPanel4.add(jPanel2); jPanel4.setSize(100, 50); this.setLayout(new GridLayout(2, 1)); this.add(jPanel4, BorderLayout.NORTH); this.add(jPanel3, BorderLayout.CENTER); jbt.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jlb.setText(encyption(jt.getText(),jt2.getText().toUpperCase())); } }); } public String encyption(String plainText, String key){ String encyp = ""; System.out.println("length " + key.length()); int a = 0; int b = 0; for(int i = 0; i < key.length(); i++){ a = a + index(key.charAt(i)); } int temp = a; while(temp > 0){ 12 b = b + temp%10; temp = temp/10; } if(a > 26){ a = a % 26; } if(a % == 0){ a = a + 1; } encyp= affine(a, b%3 , plainText.toUpperCase()); return encyp; } public String affine(int a, int b, String plainText){ String encryp = ""; for(int i = 0; i < plainText.length(); i++){ if( index(plainText.charAt(i)) == -1){ encryp = encryp + plainText.charAt(i); } else { encryp = encryp + arr[((a*index(plainText.charAt(i)) + b) % 26)]; } } return encryp; } public int index(char character){ for(int i = 0; i < arr.length; i++){ if(character == arr[i]){ return i; } } return -1; } public static void main(String[] args) { new view(); } } 3.2 Chương trình demo Giao diện chương trình demo: 13 - Chạy thử chương trình: TÀI LIỆU THAM KHẢO 14 The Caesar cipher Affine cipher Tham khảo mở rộng Caesar cipher Tài liệu tham khảo trến lớp, slide giảng

Ngày đăng: 19/12/2023, 15:17

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

TÀI LIỆU LIÊN QUAN

w