Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 12 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
12
Dung lượng
1,47 MB
Nội dung
Bài tập lớn môn tin học giải mã mã hóa ceaser BỢ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG KHOA PFIEV Đề tài:viết chương trình mã hóa giải mã xâu kí tự theo sơ đồ Caesar với khóa k=3? Giáo viên hướng dẫn:ng dẫn:n: Hồ Quang Hiếu Quang Hiếuu Sinh viên thực hiện:c hiện:n: Dương Đăng Thức Nguyễn Ngọc Tín Lớng dẫn:p : 10clc 20., tháng01 năm 2011 Sv:Dương đăng Thức Nguyễn ngọc Tín page1 Bài tập lớn mơn tin học giải mã mã hóa ceaser A,MỤC LỤC I tổng quan C .4 1) Lịch sử ngôn ngữ C 2) Tại dùng C 3) Những khuyết điểm C II Giới thiệu mật mã 1) Giới thiệu Thông báo Khoá (key) ,Hệ thống mật mã (cryptosystem)Hệ thống mật mã (cryptosystem) Bẻ gãy (breaking) hệ thống mật mã 2) Phương pháp mã hóa Caesar III sơ đồ khối chương trình 1) sơ đồ thuật toán 2) chương trình IV Kết thử nghiệm chương trình,Hệ thống mật mã (cryptosystem)nhận xét,Hệ thống mật mã (cryptosystem)đánh giá hướng phát triển 11 1) Kết thử nghiệm 11 2) Nhận xét,Hệ thống mật mã (cryptosystem)hướng giải 12 XI Tài liệu tham khảo .14 Sv:Dương đăng Thức Nguyễn ngọc Tín page2 Bài tập lớn mơn tin học giải mã mã hóa ceaser B,NỢI DUNG I tổng quan C 1) Lịch sử ngôn ngữ C Ngôn ngữ C Dennis Ritchie sáng tác 1972 phịng thí nghiệm Bell Telephone với mục đích tương đối hạn chế: tạo ngôn ngữ để viết hệ điều hành UNIX.song nhờ tính ưu việt tính mềm dẻo nên giới tin học nhanh chóng chấp nhận ngơn ngữ thống nhà nghề Đến 1978,Hệ thống mật mã (cryptosystem) in ngôn ngữ C đươc in thành sách “the C programming language” Kernighan viết.C mau chóng Viện tiêu chuẩn hóa Mĩ làm thành tiêu chuẩn có tên gọi “ÁNI C” vào 1983.Tổ chức tiêu chuẩn hóa quốc tế ISO xây dựng chuẩn cho C.May mắn thay cho người dùng chuẩn giống biết đến với tên chung ANSIC 2) Tại dùng C Hiện có nhiều ngơn ngữ lập trình bậc cao PẤCL< JAVA….Các ngơn ngữ mạnh cả,Hệ thống mật mã (cryptosystem)nhưng dùng C: -C ngôn ngữ mạnh mềm dẻo Điều hạn chế C óc tưởng tượng bạn.Bản thân C không đặt nhiều điều kiện cho bạn.C sử dụng để viết hệ điều hành,Hệ thống mật mã (cryptosystem) chương trình điều khiển ,Hệ thống mật mã (cryptosystem)soạn thảo văn bản,Hệ thống mật mã (cryptosystem)đồ họa bẩn tính…và chí chương trình dịch cho ngôn ngữ khác -C ngôn ngữ nhà tin học chuyên nghiệp dùng phổ biến ,Hệ thống mật mã (cryptosystem)nhất việc viêt phần mềm hệ thống.Một lí tính hiệu chương trình dịch ra.Một chương trình dịch đạt 80% tính chương trình viết mã máy Có nhiều chương trình dịch thư viện tiện ích khác cho C khai thác -C ngơn ngữ chuyển dịch hay cịn gọi dễ thích nghi.Tính dễ thích nghi hay tính di chuyển hiểu chương trình C viết cho máy tính IBM đêm sang cho hệ thống máy khác cho dịch lại chạy sau vài chỉnh sửa nhỏ -C ngơn ngữ từ khóa,Hệ thống mật mã (cryptosystem) từ dùng riêng cho ngôn ngữ viết chương trình -C ngơn ngữ có cấu trúc modun.Đó việc sử dụng chương trình loại hàm.Các hàm sử dụng nhiều lần chương trình chương trình khác.Tuy nhiên nên nhớ C không cho phép khai báo hàm hàm 3) Những khuyết điểm C Sau 20 năm đời giới điện tử-tin học hài lịng sử dụng song khơng mà người ta nói C tuyệt vời hồn hảo.C có vài khuyết điểm Một số người thấy cú pháp thuộc loại lạ khó học.Khó khăn dễ vượt qua người học C học qua ngôn ngữ khác nên hiểu rõ chất vấn đề Một số kí hiệu C có nhiều nghĩa khác nhau.Việc sử dụng nghĩa toán tử phụ thuộc vào ngữ cảnh sử dụng Việc C mềm dẻo khơng muốn nói có phần tự chủ nghĩa song sức mạnh C,Hệ thống mật mã (cryptosystem)đó việc truy nhập tự vào liệu,Hệ thống mật mã (cryptosystem)việc trộn lẫn liệu… dẫn đến lạm dụng làm cho chương trình bất ổn II Giới thiệu mật mã 1) Giới thiệu Sv:Dương đăng Thức Nguyễn ngọc Tín page3 Bài tập lớn môn tin học giải mã mã hóa ceaser Mã hố bảo mật có lịch sử lâu đời,Hệ thống mật mã (cryptosystem) khơng trình bày lịch sử mà trình bày vấn đề Trước hết trình bày ý tưởng mật mã hoá Mật mã hoá việc biến đổi thơng báo cho khơng thể hiểu ngoại trừ người nhận mong muốn Để thuận tiện trình bày,Hệ thống mật mã (cryptosystem) định nghĩa kí hiệu cho khái niệm Thơng báo chuỗi hữu hạn kí hiệu lấy từ bảng chữ Σ thường kí hiệu m.Ở Σ thường bảng chữ tiếng Anh gồm 26 kí tự,Hệ thống mật mã (cryptosystem) có thêm kí tự khoảng trắng Phép mật mã hố e(m) :e(m) kí hiệu biểu diễn việc mật mã hoá m Trong thực tế,Hệ thống mật mã (cryptosystem) mật mã hoá xem hàm,Hệ thống mật mã (cryptosystem) ánh xạ hay giải thuật với tậpcác thơng số (ngồi thơng số cần có thơng báo cần mã hố) Từ có khái niệmkhố Khố (key) Khố thơng số đầu vào phép mã hố mà khơng phải thơng báo thường kí hiệu k.Một phép mật mã hố có nhiều khố Chuỗi mật mã (cipher,Hệ thống mật mã (cryptosystem) ciphertext,Hệ thống mật mã (cryptosystem) cryptogram) c = e(m,Hệ thống mật mã (cryptosystem) k) gọi chuỗi mật mã Phép giải mật mã d(c,Hệ thống mật mã (cryptosystem) k):d(c,Hệ thống mật mã (cryptosystem) k) kí hiệu biểu diễn việc giải mật mã hố.Dĩ nhiên d(c,Hệ thống mật mã (cryptosystem) k) = m ,Hệ thống mật mã (cryptosystem) Một cách hình thức,Hệ thống mật mã (cryptosystem) hệ thống mật mã định nghĩa ba (M,Hệ thống mật mã (cryptosystem) K,Hệ thống mật mã (cryptosystem) C) Trong M tập thông báo m bảng chữ Σ1,Hệ thống mật mã (cryptosystem) K tập hữu hạn khoá k,Hệ thống mật mã (cryptosystem) C tập chuỗi mật mã c,Hệ thống mật mã (cryptosystem) cịn có thêm giả thiết tồn hàm hay giải thuật e d cho e: M × K → C d: C × K → M cặp (m,Hệ thống mật mã (cryptosystem) k) ∈ M × K,Hệ thống mật mã (cryptosystem) d(e(m,Hệ thống mật mã (cryptosystem) k) ,Hệ thống mật mã (cryptosystem) k) = m Bẻ gãy (breaking) hệ thống mật mã Bẻ gãy hệ thống mật mã có nghĩa gì? Những chuyên gia mật mã hay kẻ công thường giả thiết biết đầy đủ thông tin hàm mã hoá e hàm giải mã d Thêm vào đó,Hệ thống mật mã (cryptosystem) họ nhiều thơng tin hỗ trợ thống kê ngôn ngữ,Hệ thống mật mã (cryptosystem) kiến thức ngữ cảnh,Hệ thống mật mã (cryptosystem) vân vân.Họ chắn chắn có chuỗi mật mã đó,Hệ thống mật mã (cryptosystem) tất mà họ thiếu khố ktừ học sử dụng d để giải mã c cách xác Có ba khả công mà dự đốn đối phương cơng hệ thống chúng ta:(1) Tấn công dựa chuỗi mật mã (crytogram-only attack): Đây trường hợp đãđược mô tả đối phương biết vài mẫu chuỗi mật mã c 2) Tấn công dựa văn biết (known-plaintext attack): Trường hợp thực tế trường hợp (1) Trong trường hợp người công giả thiết biết độ dài đáng kể văn thông báo chuỗi mật mã tương ứng,Hệ thống mật mã (cryptosystem) từ cố gắng tìm khố Đây cơng dội khó chống đỡ nhiều ngày xem chuẩn an toàn tối thiểu phải đạt Thật vào thời điểm tại,Hệ thống mật mã (cryptosystem) tiêu chuẩn thích hợp để đánh giá hệ thống bảo mật khả để chống đỡ cơng chí cịn mạnh sau (3) Tấn cơng dựa văn chọn (chosen-plaintext attack): Trong trường hợp này,Hệ thống mật mã (cryptosystem) người cơng có số lượng tuỳ ý cặp thông báo chuỗi mật mã tương ứng Sv:Dương đăng Thức Nguyễn ngọc Tín page4 Bài tập lớn mơn tin học giải mã mã hóa ceaser (m,Hệ thống mật mã (cryptosystem) c).Khơng khó để thấy khơng có hệ thống (hay phương pháp) mật mã mơ tả chống đỡ công dựa văn chọn Bộ phát sinh khoá k,Hệ thống mật mã (cryptosystem)Bộ mã hoá e ,Hệ thống mật mã (cryptosystem)Bộ giải mã d Những kẻ công m k k ,Hệ thống mật mã (cryptosystem)c = e(m,Hệ thống mật mã (cryptosystem) k) m Trường hợp liên quan đến khả bị công cơng dựa văn biết phức tạp Chẳng hạn,Hệ thống mật mã (cryptosystem) xét hệ thống đơn giản – hệ thống dùng phương pháp thay đơn giản – cho khoá k hoán vị 26 chữ A→ P,Hệ thống mật mã (cryptosystem) B → F,Hệ thống mật mã (cryptosystem) vân vân Bây thông báo m gởi “silly message” bao gồm chữ A lặp lại n lần,Hệ thống mật mã (cryptosystem) chuỗi mật mã c tương ứng,Hệ thống mật mã (cryptosystem) chữ P lặp lại n lần Không thành vấn đề n lớn bao nhiêu,Hệ thống mật mã (cryptosystem) cặp thông báo - chuỗi mật mã cụ thể khơng sinh khố k Tuy nhiên khơng khó để tin rằng,Hệ thống mật mã (cryptosystem) trung bình,Hệ thống mật mã (cryptosystem) cho chiều dài vừa đủ thông báo chuỗi mật mã,Hệ thống mật mã (cryptosystem) hệ thống hay phương pháp mật mã bị bẻ gãy (crack) Ở xem ví dụ đơn giản cách bẻ gãy 2) Phương pháp mã hóa Caesar Q trình mã hóa Caesar thực theo bước sau : · Bước Ông cho tương ứng chữ bảng mẫu tự tiếng Anh (gồm 26 chữ cái) với số nguyên từ đến 25,Hệ thống mật mã (cryptosystem) thứ tự chữ bảng mẫu tự số tự nhiên tương ứng · Bước Tiếp theo,Hệ thống mật mã (cryptosystem) ông sử dụng hàm f để biểu diễn số nguyên x thuộc tập hợp {0 ; ; ; ; 25} tương ứng với giá trị f(x) thuộc tập hợp này,Hệ thống mật mã (cryptosystem) thỏa mãn : f(x) º (x + 3) (mod 26) · Bước Ông chuyển tương ứng số f(x) thành kí tự bước Với cách làm này,Hệ thống mật mã (cryptosystem) Caesar hồn tồn mã hóa tất thư mình,Hệ thống mật mã (cryptosystem) đồng thời giải mã thư Và theo nguyên tắc thư mã hóa khơng có dấu cách ( ),Hệ thống mật mã (cryptosystem)nhằm đảm bảo tính bảo mật cho thư Song vậy,Hệ thống mật mã (cryptosystem) người giải mã dễ bị nhầm,Hệ thống mật mã (cryptosystem) ta quy ước mật thư dấu cách ( ) thư giải mã dấu cách kí tự dặc biệt : #,Hệ thống mật mã (cryptosystem) $,Hệ thống mật mã (cryptosystem) &,Hệ thống mật mã (cryptosystem) *… Sau số ví dụ Ví dụ Dùng mật mã Xê da,Hệ thống mật mã (cryptosystem) chuyển thư : “MEET YOU IN THE PARK” (gặp bạn công viên) thành thư bí mật Lời giải Xét hai tập hợp : C = {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} U = {0 ; ; ; ; 24 ; 25} Theo cách mã hóa Saesar,Hệ thống mật mã (cryptosystem) có tương ứng - chữ tập hợp C với số tập hợp U Thực theo bước 1,Hệ thống mật mã (cryptosystem) ta chuyển thư gốc thành dãy số : Sv:Dương đăng Thức Nguyễn ngọc Tín page5 Bài tập lớn mơn tin học giải mã mã hóa ceaser 12 4 19 - 24 14 20 - 13 - 19 - 15 17 10 Bây giờ,Hệ thống mật mã (cryptosystem) ta thay dãy số dãy số tương ứng theo bước : 15 7 22 - 17 23 - 11 16 - 22 10 - 18 20 13 Tiếp tục thực theo bước 3,Hệ thống mật mã (cryptosystem) ta thư mã hóa : PHHW BRX LQ WKH SDUN Để phục hồi thư gốc mã hóa theo mật mã Xê da,Hệ thống mật mã (cryptosystem) ta cần dùng hàm ngược f-1 f Nói cách khác,Hệ thống mật mã (cryptosystem) để tìm lại thư gốc từ thư mã hóa,Hệ thống mật mã (cryptosystem) chữ tương ứng với chữ cách vị trí phía đầu bảng mẫu tự,Hệ thống mật mã (cryptosystem) riêng ba chữ đầu bảng A,Hệ thống mật mã (cryptosystem) B,Hệ thống mật mã (cryptosystem) C tương ứng thứ tự với X,Hệ thống mật mã (cryptosystem) Y,Hệ thống mật mã (cryptosystem) Z III sơ đồ khối chương trình 1) sơ đồ khối thuật tốn Hàm mã hóa Begin Nhập xâu s i=0 S i< i=i +1 strlen( s) Đ In s[i] s[i]=’ ’ Đ s[i]==’ ’ end S s[i]=(s[i]-‘a’+3)%26 + ‘a’ Sv:Dương đăng Thức Nguyễn ngọc Tín page6 Bài tập lớn môn tin học giải mã mã hóa ceaser Hàm giải mã begin Nhập xâu s i=0 i=i+1 i