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

(Luận văn thạc sĩ) bảo mật thông tin

88 49 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 88
Dung lượng 0,96 MB

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN VINH SƠN BẢO MẬT THÔNG TIN LUẬN VĂN THẠC SĨ Hà Nội - 2009 MỤC LỤC MỞ ĐẦU CHƯƠNG BẢO MẬT THÔNG TIN 1.1 Khái niệm 1.2 Đánh giá hệ mật 1.3 Cơ sở toán học CHƯƠNG HỆ THỐNG MẬT MÃ 12 2.1 Hệ mật DES 12 2.1.1 Sơ ñồ 13 2.1.2 Hoạt ñộng 16 2.1.3 Chế ñộ làm việc 22 2.1.4 2DES 3DES 29 2.2 Hệ mật RC 31 2.2.1 RC5 .31 2.2.2 RC6 .36 2.3 Hệ mật Gost 28147−89 .40 2.3.1 Chế ñộ mã thay ñơn giản 41 2.3.2 Chế ñộ mã dòng 44 2.3.3 Chế độ mã dịng hồi tiếp 45 2.3.4 Thủ tục kiểm tra toàn vẹn 45 2.4 Hệ mật IDEA 46 2.5 Hệ mật AES 49 2.5.1 Biểu diễn khối tin 50 2.5.2 Các phép toán 52 2.5.3 Giải thuật 56 2.6 Hệ mật khóa công khai RSA .70 CHƯƠNG TRIỂN KHAI .74 3.1 Phần mềm mật mã .74 3.2 Bảo vệ mật 77 3.2.1 Nguy chặn bắt 77 3.2.2 Giải pháp bảo vệ 79 KẾT LUẬN .83 KÝ HIỆU AES Advanced Encryption Standard DES Data Encryption Standard IDEA International Data Encryption Algorithm RC Rivest’s Cipher RSA Rivest, Shamir, Adleman MỞ ĐẦU Bảo mật thông tin nhu cầu tồn giới tự nhiên Các lồi động vật phải tìm cách cất giấu thông tin chúng trước kẻ thù, thông tin nguồn thức ăn, nước uống, nơi cư trú… Trong lịch sử loài người, xã hội phát triển cao, nhu cầu bảo mật thông tin lớn hình thức bảo mật thơng tin ñại Từ thời Hy Lạp cổ ñại, người ta cuộn kín vịng giấy papyrus lên “gậy mã hóa” viết thơng tin bí mật lên ñó Với cách làm này, người khác phải biết cuộn lại vịng giấy lên “gậy giải mã” có đường kính “gậy mã hóa” muốn ñọc Đến nửa ñầu kỷ 20, số thiết bị khí phát minh để mật mã tài liệu qn sự, điển hình máy Enigma người Đức Kỹ thuật máy tính đời, lĩnh vực số hóa bước sang trang sử Khơng giống mơ hình mật mã cổ điển học trước đó, hệ thống mật mã máy tính hoạt động với phép tính phức tạp chuỗi nhị phân nên hiệu giữ bí mật tăng lên nhiều Bảo mật thông tin thường gắn với q trình “mã hóa” “giải mã”, cách chuyển đổi thơng tin từ dạng hiểu ñược sang dạng hiểu ñược ngược lại Việc mật mã giúp đảm bảo tính bí mật thơng tin quan trọng, chẳng hạn thơng tin tình báo, quân sự, ngoại giao, hay liệu tài chính, thương mại Nhưng bước tới kỷ nguyên công nghệ cao phục vụ cho giản tiện sinh hoạt hàng ngày, lĩnh vực bảo mật thơng tin khơng nằm ngồi mục đích Giờ đây, hệ mật mã khơng dùng để cất giấu thông tin cá nhân/ tổ chức/ quốc gia với cá nhân/ tổ chức/ quốc gia khác, mà cịn sở cho việc phát triển nhiều ứng dụng mạng truyền thông công cộng Kiến thức bảo mật ứng dụng rộng rãi chứng thực ñiện tử, chữ ký số, bầu cử ñiện tử, giao dịch ngân hàng, thương mại ñiện tử, phát hành mua bán tiền điện tử… Ngồi ra, người khơng có nhu cầu đặc biệt tính bí mật thường xuyên sử dụng công nghệ mật mã tích hợp thiết bị điện tử tính tốn, hay hệ thống viễn thông Như vậy, phải quan tâm ñến bảo mật? Câu trả lời tất người! Thế nhưng, không dễ ta phân tách lĩnh vực thuộc phạm vi nghiên cứu ngành khoa học – Tốn học, Cơng nghệ Thơng tin, hay Công nghệ Điện tử Viễn thông? Chúng ta biết rằng, bảo mật ln nóng thời kỳ, đến ngành Thơng tin – Truyền thơng (ICT) bùng nổ, thực có động lực phát triển mạnh mẽ, nhu cầu bảo mật ứng dụng bảo mật ICT Mặc dù vậy, bảo mật tồn thủa ban ñầu, khơng có sở Tốn học mẻ, vững hậu thuẫn (cụ thể lý thuyết số, lý thuyết thơng tin, xác suất, độ phức tạp tính tốn, ñại số trừu tượng, trường hữu hạn, hàm chiều…) Một số nước, người ta tách biệt ñây ngành khoa học riêng, số nước khác khơng Và dù quan ñiểm nào, việc nghiên cứu bảo mật thu hút ý nhiều người làm ICT, nhiều nhà Toán học Bởi lẽ khoa học, thường bắt gặp “giao thoa” Tại Việt Nam, biết có sở chun đào tạo kỹ sư mật mã học, Học viện Kỹ thuật Mật mã Tuy nhiên việc nghiên cứu bảo mật Trường Đại học ñào tạo ICT lại thiếu yếu Đặc biệt, tài liệu bảo mật viết tiếng Việt khan Trên thực tế vậy, học viên viết luận văn với mong muốn sử dụng hiểu biết, nghiên cứu để xây dựng tài liệu bảo mật có chất lượng Các kỹ sư/ cử nhân Công nghệ Thông tin, Điện tử Viễn thông, hay làm/ nghiên cứu bảo mật tìm thấy khái niệm xúc tích mật mã, hệ mật phổ biến nay, phần mềm mã hóa, giải mã học viên thiết kế theo Chuẩn mật mã Quốc gia Hoa Kỳ − AES Ngoài ra, học viên xin ñề xuất giải pháp giúp bảo vệ mật mơ hình server/ client mà khơng sử dụng giao thức bảo mật Hà Nội, 2009 Nguyễn Vinh Sơn CHƯƠNG BẢO MẬT THÔNG TIN 1.1 Khái niệm Trước tìm hiểu nội dung bảo mật thơng tin đề cập luận văn này, cần hiểu số khái niệm sau - Mã hóa: việc biến đổi thơng tin từ dạng hiểu sang dạng khơng thể hiểu - Giải mã: việc biến đổi thơng tin từ dạng khơng thể hiểu trở dạng hiểu cách sử dụng khóa biết - Thám mã: việc biến đổi thơng tin từ dạng khơng thể hiểu trở dạng hiểu mà khơng biết khóa - Khóa: đại lượng thơng tin sử dụng để thực mã hóa, giải mã - Mã khối: phương thức mật mã khối tin - Mã dòng: phương thức mật mã bit tin - Hệ mật đối xứng (hệ mật khóa bí mật): hệ mật có khóa giải mã suy dễ dàng từ khóa mã hóa ngược lại (các khóa giữ bí mật) - Hệ mật khóa cơng khai (hệ mật bất đối xứng): hệ mật có khóa mã hóa cơng khai, cịn khóa giải mã giữ bí mật (rất khó để tìm khóa giải mã từ khóa mã hóa) - Chữ ký số (chữ ký ñiện tử): thông tin ñi kèm liệu ñiện tử nhằm mục đích xác định người chủ liệu - Chứng thực số (chứng thực khóa cơng khai): chứng thực sử dụng chữ ký số ñể gắn khóa cơng khai với thực thể - Hạ tầng khóa cơng khai: tập hợp thành phần tạo, quản lý, phân phối, sử dụng, lưu trữ, hủy chứng thực số - Hàm hash: hàm tính giá trị có kích thước xác định, từ tin 1.2 Đánh giá hệ mật Các hệ thống mật mã (hệ mật) khác có ưu, nhược điểm khác Nhưng nhìn chung, chúng đánh giá tốt hay khơng, vào độ phức tạp thuật tốn thám chúng Người ta chia độ phức tạp thuật tốn thành: - Độ phức tạp tuyến tính - Độ phức tạp lũy thừa - Độ phức tạp tựa hàm mũ - Độ phức tạp hàm mũ Thuật tốn có độ phức tạp khơng vượt q độ phức tạp lũy thừa coi “dễ” (giải được) Thuật tốn có độ phức tạp khơng nhỏ độ phức tạp hàm mũ coi “khó” (khơng giải được) Thuật tốn có độ phức tạp nằm mức “khó” “dễ” giải được, khơng giải Hệ mật tốt thuộc loại sau: - Hệ mật an tồn tuyệt đối: hiểu biết mã khơng thu hẹp ñộ bất ñịnh rõ ñối với người thám mã, nói cách khác, hệ mật khơng thể thám ñược lý thuyết - Hệ mật an toàn thực sự: phương pháp thám mã ñã biết ñều cần đến thời gian tính tốn, lực tính tốn vơ lớn - Hệ mật an tồn chứng minh: việc thám mã ñược chứng minh tương ñương việc giải tốn khó biết Hệ mật an tồn thực sự, hay an tồn chứng minh khơng có nghĩa bị thám, lẽ lực tính tốn ngày cải thiện, cịn lời giải tốt cho tốn khó tương đương sinh Trong viết tạp chí “Khoa học Quân sự” Pháp năm 1883, Auguste Kerckhoffs (1835 – 1903) ñề xuất quy tắc triển khai hệ mật mã qn thời điểm là: - Hệ mật chưa thám ñược thực tế - Hoạt ñộng hệ mật, thiết bị mật mã khơng cần giữ bí mật - Khóa thành phần bí mật nhất, tạo mới, truyền đi, ghi nhớ dễ dàng - Hệ mật tương thích với cơng nghệ điện tín - Thiết bị mật mã gọn nhẹ, người sử dụng - Cách sử dụng dễ dàng Đến ngoại trừ quy tắc thứ ñã trở nên lạc hậu, phải hướng đến quy tắc cịn lại 1.3 Cơ sở tốn học Lĩnh vực bảo mật thơng tin liên quan đến lý thuyết số, lý thuyết thơng tin, xác suất, độ phức tạp tính tốn, đại số trừu tượng, trường hữu hạn, hàm chiều Nhưng với khuôn khổ luận văn thạc sỹ ngành Điện tử Viễn thông, học viên không giới thiệu chi tiết lý thuyết mà trình bày ký hiệu, khái niệm, định lý, giải thuật tốn học sử dụng tài liệu Ký hiệu gcd(a, b), lcm(a, b) ước chung lớn nhất, bội chung nhỏ số nguyên a, b; x, x số nguyên lớn không lớn x, số nguyên nhỏ khơng nhỏ x; cịn Zn tập số nguyên {0, 1, 2, , n−1} Nhóm (G, *) cấu trúc đại số gồm tập G phép tốn * G, thỏa mãn: - Phép * có tính kết hợp: a * (b * c) = (a * b) * c (∀ a, b, c ∈ G) - Tồn phần tử trung hòa θG ∈ G: a * θG = θG * a = a (∀ a ∈ G) - Tồn phần tử ñối lập xG ∈ G: a * xG = xG * a = θG (với a ∈ G) Nhóm (G, *) gọi nhóm giao hốn phép * cịn có tính giao hốn: a * b = b * a Vành (R, +, •) cấu trúc ñại số gồm tập R phép toán ngơi +, • R, thỏa mãn: - (R, +) nhóm giáo hốn - Phép • có tính kết hợp: a • (b • c) = (a • b) • c (∀ a, b, c ∈ R) - Tồn phần tử trung hịa θR ∈ R: a • θR = θR • a = a (∀ a ∈ R) - Phép • có tính phân phối với phép +: a • (b + c) = (a • b) + (a • c) (b + c) • a = (b • a) + (c • a) (∀ a, b, c ∈ R) Vành (R, +, •) gọi vành giao hốn phép • cịn có tính giao hốn: a • b = b • a Phần tử trung hịa θR vành (R, +, •) cịn gọi phần tử trung hịa phép • Phần tử trung hịa nhóm giao hốn (R, +) cịn gọi phần tử trung hòa phép +, ký hiệu θr Trong vành giao hoán, phần tử khác θr có phần tử đối lập phép •, xR ∈ R thỏa mãn a • xR = xR • a = θR, ta nói vành “trường” Trường hữu hạn trường có số phần tử hữu hạn Tập đa thức có hệ số thuộc vành (trường) R, phép tốn cộng, nhân đa thức thực phép cộng, nhân hệ số R, tạo nên vành (trường) ña thức R[x] Định lý Fermat: [5] Cho số nguyên tố p, gcd(a, p) = a(p−1) ≡ (mod p) Giải thuật Euclide mở rộng: [5] Input: số nguyên không âm a, b (a ≥ b) Output: d = gcd(a, b) số nguyên x, y thỏa mãn: ax + by = d 70 2.6 Hệ mật khóa cơng khai RSA Ký hiệu Ee Dd phép mã hóa với khóa e phép giải mã với khóa d Xét cặp (Ee, Dd) thỏa mãn e d tồn quan hệ, lại khó để tìm d từ e Giả sử A muốn gửi cho B tin m Ban ñầu, B chọn cặp khóa (e, d), gửi e (khóa cơng khai) cho A, đồng thời giữ bí mật d (khóa riêng) A mã hóa m khóa e nhận được, Ee(m) = c, sau gửi c cho B B thực phép giải mã Dd(c) = m ñể thu ñược rõ Hệ mật hoạt ñộng theo nguyên lý gọi hệ mật khóa cơng khai, hay hệ mật bất đối xứng e Sinh khóa Kênh truyền cơng cộng d Mã hóa Ee(m) = c c Kênh truyền công cộng Giải mã Dd(c) = m m m A B Hình 2.30 Hệ mật khóa cơng khai Hệ mật loại xây dựng sở vấn đề tốn học phức tạp, nên nhìn chung, địi hỏi u cầu tính tốn nhiều so với hệ mật đối xứng Do đó, chúng khơng sử dụng việc mật mã tài liệu lớn, mà thường ứng dụng nhận thực, toàn vẹn liệu, mật mã liệu nhỏ số thẻ tín dụng, số Pin, hay khóa hệ mật đối xứng Năm 1976, ý tưởng hệ mật khóa cơng khai W Diffie M Hellman trình bày qua báo cáo mang tên “New Directions in Cryptography” hội nghị thường niên Hiệp hội xử lý thông tin Hoa Kỳ (American Federation of Information Processing Societies – AFIPS) Phương thức mật mã mẻ 71 W Diffie M Hellman trình bày thu hút quan tâm lớn học giả Một năm sau, R.L Rivest, A Shamir, L Adleman công bố hệ mật RSA dựa độ khó tốn phân tích số nguyên thành thừa số nguyên tố Giả sử A cần gửi tin đến B cách bí mật Đầu tiên, B sinh khóa cơng khai (n, e) khóa riêng d tương ứng bước: - Chọn ngẫu nhiên số nguyên tố lớn p q khác - Tính n = pq φ = (p – 1)(q – 1) - Chọn ngẫu nhiên số nguyên e thỏa mãn < e < φ gcd(e, φ) = - Tìm số nguyên d thỏa mãn < d < φ ed ≡ (mod φ) (sử dụng thuật toán Euclide mở rộng) Chú ý rằng, λ = lcm(p – 1, q – 1) ñược sử dụng thay cho φ = (p – 1)(q – 1) để khóa riêng d nhỏ hơn, giúp giải mã nhanh Ngoài ra, thành phần p, q, φ, λ phải ñược hủy thực xong q trình sinh khóa, lẽ chúng cho phép tính khóa riêng d biết e Sau nhận khóa cơng khai (n, e), A biểu diễn tin số nguyên m thuộc ñoạn [0, n – 1] theo quy tắc khả nghịch Bản mã c kết phép tính c = me mod n ñược gửi ñến B B sử dụng khóa riêng d tính m qua cơng thức giải mã m = cd mod n ñể suy tin ban đầu Ví dụ: B chọn số ngun tố p = 2357, q = 2551, n = pq = 6012707, φ = (p – 1)(q – 1) = 6007800, chọn e = 3674911, sử dụng thuật toán Euclide mở rộng tìm d = 422191 thỏa mãn ed ≡ (mod φ) Khóa cơng khai (n, e) = (6012707, 3674911), khóa riêng d = 422191 A thực mã hóa tin biểu diễn m = 5234673: [5] c = me mod n = 52346733674911 mod 6012707 = 3650502 Nhận ñược mã c, B tính m khóa riêng d: 72 m = cd mod n = 3650502422191 mod 6012707 = 5234673 Công thức giải mã m = cd mod n ñược chứng minh sau Trong thuật tốn sinh khóa, ed ≡ (mod φ) nên tồn số nguyên k thỏa mãn ed = + kφ Nếu gcd(m, p) = 1, theo ñịnh lý Fermat: mp−1 ≡ (mod p) Biến ñổi vế, nâng lũy thừa k(q – 1) nhân với m, thu ñược: m1+ k(p−1)(q−1) ≡ m (mod p) Nếu gcd(m, p) = p, hay m bội p, quan hệ ñúng Vậy trường hợp, ta có: med ≡ m (mod p) med ≡ m (mod q) Hoàn toàn tương tự: Lại có gcd(p, q) = 1, nên suy ra: med ≡ m (mod n) m = med mod n (do m ∈ [0, n – 1]) m = cd mod n Ở ñây, phương thức chuyển ñổi tin số ngun m ngược lại phải giữ bí mật ngẫu nhiên hóa để tránh việc thám từ ñiển Giá trị m cần thỏa mãn ñiều kiện: 73 - m ≠ m ≠ (vì m = ⇔ c = 0, m = ⇔ c = 1) - m đủ lớn (vì m nhỏ, me ≤ n, phép module tác dụng, m tìm cách khai bậc e c) Việc thám mã việc giải hai vấn đề tốn học có độ khó tương đương: - Phân tích số nguyên n thừa số nguyên tố (tìm p, q thỏa mãn n = p.q) - Tìm m thỏa mãn me ≡ c (mod n) Vào năm 1999, máy tính kết nối mạng phân tích số n có độ dài 512 bits thừa số ngun tố Hiện máy tính cá nhân phân tích số n dài 256 bits sau vài giờ, tương lai, máy tính lượng tử cịn mang đến tốc độ tính tốn nhanh Vì vậy, hệ mật RSA ñược khuyến cáo sử dụng ñộ dài khóa tối thiểu 2048 bits, cặp p, q cần chọn không gần p – 1, q – khơng có thừa số ngun tố nhỏ, để hạn chế khả phân tích n Bên cạnh phương pháp phân tích n, tìm d, hay dị m, RSA phải ñối mặt với vài cách cơng khác Ví dụ cách cơng mà hệ mật khóa cơng khai nói chung phải đối mặt công mạo danh Ở cách công này, C chặn bắt thông tin A, B gửi cho C gửi cho A khóa cơng khai mình, A lại tin khóa cơng khai B Như vậy, tin A mã hóa ñược C giải mã dễ dàng Sau ñó, C lại mã hóa với khóa cơng khai B, gửi cho B Cả A, B khơng biết can thiệp C Để đối phó với cách cơng vậy, hệ mật khóa cơng khai cần đến chứng thực số hạ tầng khóa cơng khai (Public key Infrastructure – PKI) Ngoài ra, RSA bị thám phương pháp phức tạp dựa thơng tin phần cứng, thời gian giải mã số mã lựa chọn Ứng dụng thường gặp RSA tạo chữ ký số cho văn Giả sử B muốn gửi A văn có chữ ký B tạo giá trị “hash” văn cần ký tính giá trị mũ d mod n nó, giống thực giải mã Giá trị cuối chữ ký điện tử B văn Khi nhận ñược văn với chữ ký ñiện tử B, A tính giá trị mũ e mod n chữ ký giá trị “hash” văn Kết giống chứng tỏ người tạo chữ ký phải biết khóa bí mật B, văn khơng bị thay đổi sau ký 74 CHƯƠNG TRIỂN KHAI Trên môi trường Borland C++ Builder 6.0, học viên triển khai thành công phần mềm mật mã theo chuẩn AES Ngoài ra, học viên xin ñề xuất giải pháp bảo vệ mật mô hình máy chủ/ máy khách (server/ client) khơng sử dụng giao thức bảo mật 3.1 Phần mềm mật mã Thuật tốn sinh khóa, mã hóa, giải mã theo hệ mật AES nói đến chương trước Dưới đoạn code chương trình học viên triển khai: void _fastcall TfrmMain::cmdInputFileClick(TObject *Sender) { if(dlgOpen->Execute()) {txtInputFile->Text = dlgOpen->FileName;} } void _fastcall TfrmMain::cmdOutputFileClick(TObject *Sender) { if(dlgSave->Execute()) {txtOutputFile->Text = dlgSave->FileName;} } void _fastcall TfrmMain::cmdKeyFileClick(TObject *Sender) { if(dlgOpen->Execute()) {txtKeyFile->Text = dlgOpen->FileName;} } 75 void _fastcall TfrmMain::radNK4Click(TObject *Sender) {NK=4;} void _fastcall TfrmMain::radNK6Click(TObject *Sender) {NK=6;} void _fastcall TfrmMain::radNK8Click(TObject *Sender) {NK=8;} void _fastcall TfrmMain::radEncryptClick(TObject *Sender) {operation=OP_ENCRYPT;} void _fastcall TfrmMain::radDecryptClick(TObject *Sender) {peration=OP_DECRYPT;} void _fastcall TfrmMain::cmdDoClick(TObject *Sender) { TKey Key; TState State; NB=4; BYTE BlockSize = 4*NB; BYTE *buff = new BYTE[BlockSize]; int count; Key.LoadFromTextFile(txtKeyFile->Text.c_str()); Key.Expand(); FILE *fi = fopen(txtInputFile->Text.c_str(), "rb"); FILE *fo = fopen(txtOutputFile->Text.c_str(),"wb"); while(!feof(fi)) { memset(buff,0,BlockSize); count = fread(buff,1,BlockSize,fi); if(count

Ngày đăng: 05/12/2020, 10:34

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w