intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình mạng: Chương 8 - ThS. Trần Bá Nhiệm

Chia sẻ: Kiếp Này Bình Yên | Ngày: | Loại File: PDF | Số trang:52

59
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Nội dung trình bày của chương 8 được chia làm 3 phần: Mô tả các phương pháp bẻ khóa bảo mật và chỉ ra bảo mật như thế nào là yếu; mã hóa bất đối xứng: phương pháp được ứng dụng nhiều nhất; mã hóa đối xứng: phương pháp bổ sung, kết hợp với các kiểu khác để tăng cường hiệu quả. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình mạng: Chương 8 - ThS. Trần Bá Nhiệm

  1. 6/29/2011 CHƯƠNG 8 BẢO VỆ DỮ LIỆU - MÃ HÓA ThS. Trần Bá Nhiệm Website: sites.google.com/site/tranbanhiem Email: tranbanhiem@gmail.com Nội dung • Giới thiệu • Phân tích mã • Các thuật ngữ • Mã hóa bất đối xứng – khóa công khai • RSA • Mã hóa đối xứng • Chống tấn công 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 2 1
  2. 6/29/2011 Giới thiệu • Nếu không có mã hóa thì bất kỳ ai cũng có thể dễ dàng truy cập vào đường truyền dữ liệu giữa các máy tính để xem, sửa chữa,… • Bảo mật là vấn đề hết sức quan trọng trong giao dịch thương mại và nhiều kiểu trao đổi thông tin khác 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 3 Giới thiệu • Nội dung trình bày của chương được chia làm 3 phần: – Mô tả các phương pháp bẻ khóa bảo mật và chỉ ra bảo mật như thế nào là yếu – Mã hóa bất đối xứng: phương pháp được ứng dụng nhiều nhất – Mã hóa đối xứng: phương pháp bổ sung, kết hợp với các kiểu khác để tăng cường hiệu quả 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 4 2
  3. 6/29/2011 Các thuật ngữ • Plain text: thông tin số chưa được mã hóa • Cipher text: thông tin số đã được mã hóa • Key: một mảnh dữ liệu số được dùng bởi chương trình máy tính để mã hóa hoặc giải mã • Cryptographic algorithm hoặc Cipher: giải thuật để mã hóa hoặc giải mã • Strength: đo độ khó khi bẻ khóa 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 5 An ninh hệ mã hóa • An ninh vô điều kiện – Bản mã không chứa đủ thông tin để xác định duy nhất nguyên bản tương ứng, bất kể với số lượng bao nhiêu và tốc độ máy tính thế nào • An ninh tính toán – Thỏa mãn một trong hai điều kiện • Chi phí phá mã vượt quá giá trị thông tin • Thời gian phá mã vượt quá tuổi thọ thông tin – Thực tế thỏa mãn hai điều kiện • Không có nhược điểm • Khóa có quá nhiều giá trị không thể thử hết 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 6 3
  4. 6/29/2011 Mã hóa bất đối xứng • Những hạn chế của mật mã đối xứng – Vấn đề phân phối khóa • Khó đảm bảo chia sẻ mà không làm lộ khóa bí mật • Trung tâm phân phối khóa có thể bị tấn công – Không thích hợp cho chữ ký số • Bên nhận có thể làm giả thông báo nói nhận được từ bên gửi • Mật mã khóa công khai đề xuất bởi Whitfield Diffie và Martin Hellman vào năm 1976 – Khắc phục những hạn chế của mật mã đối xứng – Có thể coi là bước đột phá quan trọng nhất trong lịch sử của ngành mật mã – Bổ sung chứ không thay thế mật mã đối xứng 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 7 Đặc điểm mật mã khóa công khai • Còn gọi là mật mã hai khóa hay bất đối xứng • Các giải thuật khóa công khai sử dụng 2 khóa – Một khóa công khai • Ai cũng có thể biết • Dùng để mã hóa thông báo và thẩm tra chữ ký – Một khóa riêng • Chỉ nơi giữ được biết • Dùng để giải mã thông báo và ký (tạo ra) chữ ký • Có tính bất đối xứng – Bên mã hóa không thể giải mã thông báo – Bên thẩm tra không thể tạo chữ ký 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 8 4
  5. 6/29/2011 Mã hóa khóa công khai Các khóa công khai Ted Joy Mike Alice Khóa công khai Khóa riêng của Alice của Alice Bản mã truyền đi Nguyên bản Nguyên bản đầu vào Giải thuật Giải thuật đầu ra mã hóa giải mã 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 9 Xác thực Các khóa công khai Ted Joy Mike Bob Khóa riêng Khóa công khai của Bob của Bob Bản mã truyền đi Nguyên bản Nguyên bản đầu vào Giải thuật Giải thuật đầu ra mã hóa giải mã 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 10 5
  6. 6/29/2011 Ứng dụng mật mã khóa công khai • Có thể phân ra 3 loại ứng dụng – Mã hóa/giải mã • Đảm bảo sự bí mật của thông tin – Chữ ký số • Hỗ trợ xác thực văn bản – Trao đổi khóa • Cho phép chia sẻ khóa phiên trong mã hóa đối xứng • Một số giải thuật khóa công khai thích hợp cho cả 3 loại ứng dụng; một số khác chỉ có thể dùng cho 1 hay 2 loại 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 11 Mô hình đảm bảo bí mật Kẻ phá mã Nguồn A Đích B Nguồn Giải thuật Giải thuật Đích th. báo mã hóa giải mã th. báo Nguồn cặp khóa 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 12 6
  7. 6/29/2011 Mô hình xác thực Kẻ phá mã Nguồn A Đích B Nguồn Giải thuật Giải thuật Đích th. báo mã hóa giải mã th. báo Nguồn cặp khóa 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 13 Mô hình kết hợp Nguồn A Đích B Nguồn G. thuật G. thuật G. thuật G. thuật Đích th. báo mã hóa mã hóa giải mã giải mã th. báo Nguồn cặp khóa Nguồn cặp khóa 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 14 7
  8. 6/29/2011 Trao đổi khóa Khóa ngẫu nhiên Khóa ngẫu nhiên Alice Bob Mã hóa Giải mã Khóa công khai của Bob Khóa riêng của Bob 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 15 Các điều kiện cần thiết • Bên B dễ dàng tạo ra được cặp (KUb, KRb) • Bên A dễ dàng tạo ra được C = EKUb(M) • Bên B dễ dàng giải mã M = DKRb(C) • Đối thủ không thể xác định được KRb khi biết KUb • Đối thủ không thể xác định được M khi biết KUb và C • Một trong hai khóa có thể dùng mã hóa trong khi khóa kia có thể dùng giải mã – M = DKRb(EKUb(M)) = DKUb(EKRb(M)) – Không thực sự cần thiết 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 16 8
  9. 6/29/2011 Hệ mã hóa RSA • Đề xuất bởi Ron Rivest, Adi Shamir và Len Adleman (MIT) vào năm 1977 • Hệ mã hóa khóa công khai phổ dụng nhất • Mã hóa khối với mỗi khối là một số nguyên < n – Thường kích cỡ n là 1024 bit ≈ 309 chữ số thập phân • Đăng ký bản quyền năm 1983, hết hạn năm 2000 • An ninh vì chi phí phân tích thừa số của một số nguyên lớn là rất lớn 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 17 Tạo khóa RSA • Mỗi bên tự tạo ra một cặp khóa công khai - khóa riêng theo các bước sau: – Chọn ngẫu nhiên 2 số nguyên tố đủ lớn p ≠ q – Tính n = pq – Tính Φ(n) = (p-1)(q-1) – Chọn ngẫu nhiên khóa mã hóa e sao cho 1 < e < Φ(n) và gcd(e, Φ(n)) = 1 – Tìm khóa giải mã d ≤ n thỏa mãn e.d ≡ 1 mod Φ(n) • Công bố khóa mã hóa công khai KU = {e, n} • Giữ bí mật khóa giải mã riêng KR = {d, n} – Các giá trị bí mật p và q bị hủy bỏ 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 18 9
  10. 6/29/2011 Thực hiện RSA • Để mã hóa 1 thông báo nguyên bản M, bên gửi thực hiện – Lấy khóa công khai của bên nhận KU = {e, n} – Tính C = Me mod n • Để giải mã bản mã C nhận được, bên nhận thực hiện – Sử dụng khóa riêng KR = {d, n} – Tính M = Cd mod n • Lưu ý là thông báo M phải nhỏ hơn n – Phân thành nhiều khối nếu cần 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 19 Vì sao RSA khả thi • Theo định lý Euler – ∀ a, n: gcd(a, n) = 1 ⇒ aΦ(n) mod n = 1 – Φ(n) là số các số nguyên dương nhỏ hơn n và nguyên tố cùng nhau với n • Đối với RSA có – n = pq với p và q là các số nguyên tố – Φ(n) = (p - 1)(q - 1) – ed ≡ 1 mod Φ(n) ⇒ ∃ số nguyên k: ed = kΦ(n) + 1 – M
  11. 6/29/2011 Ví dụ tạo khóa RSA • Chọn 2 số nguyên tố p = 17 và q = 11 • Tính n = pq = 17 × 11 = 187 • Tính Φ(n) = (p - 1)(q - 1) = 16 × 10 = 160 • Chọn e: gcd(e, 160) = 1 và 1 < e < 160; lấy e = 7 • Xác định d: de ≡ 1 mod 160 và d ≤ 187 Giá trị d = 23 vì 23 × 7 = 161 = 1 × 160 + 1 • Công bố khóa công khai KU = {7, 187} • Giữ bí mật khóa riêng KR = {23, 187} – Hủy bỏ các giá trị bí mật p = 17 và q = 11 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 21 Ví dụ thực hiện RSA Mã hóa Giải mã Bản Nguyên mã Nguyên bản bản 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 22 11
  12. 6/29/2011 Chọn tham số RSA • Cần chọn p và q đủ lớn • Thường chọn e nhỏ • Thường có thể chọn cùng giá trị của e cho tất cả người dùng • Trước đây khuyến nghị giá trị của e là 3, nhưng hiện nay được coi là quá nhỏ • Thường chọn e = 216 - 1 = 65535 • Giá trị của d sẽ lớn và khó đoán 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 23 An ninh của RSA • Khóa 128 bit là một số giữa 1 và một số rất lớn 340.282.366.920.938.000.000.000.000.000.000.000.000 • Có bao nhiêu số nguyên tố giữa 1 và số này ≈ n / ln(n) = 2128 / ln(2128) ≈ 3.835.341.275.459.350.000.000.000.000.000.000.000 • Cần bao nhiêu thời gian nếu mỗi giây có thể tính được 1012 số Hơn 121.617.874.031.562.000 năm (khoảng 10 triệu lần tuổi của vũ trụ) • An ninh nhưng cần đề phòng những điểm yếu 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 24 12
  13. 6/29/2011 Phá mã RSA • Phương pháp vét cạn – Thử tất cả các khóa riêng có thể • Phụ thuộc vào độ dài khóa • Phương pháp phân tích toán học – Phân n thành tích 2 số nguyên tố p và q – Xác định trực tiếp Φ(n) không thông qua p và q – Xác định trực tiếp d không thông qua Φ(n) • Phương pháp phân tích thời gian – Dựa trên việc đo thời gian giải mã – Có thể ngăn ngừa bằng cách làm nhiễu 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 25 Phân tích thừa số RSA • An ninh của RSA dựa trên độ phức tạp của việc phân tích thừa số n • Thời gian cần thiết để phân tích thừa số một số lớn tăng theo hàm mũ với số bit của số đó – Mất nhiều năm khi số chữ số thập phân của n vượt quá 100 (giả sử làm 1 phép tính nhị phân mất 1 ηs) • Kích thước khóa lớn đảm bảo an ninh cho RSA – Từ 1024 bit trở lên – Gần đây nhất năm 1999 đã phá mã được 512 bit (155 chữ số thập phân) 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 26 13
  14. 6/29/2011 Minh họa RSA • Với .NET thì RSA được hiện thực trong lớp RSACryptoServiceProvider, nó có thể sinh ra khóa riêng và khóa chung, mã hóa và giải mã bằng các phương thức Encrypt và Decrypt. Các khóa được lưu trữ dưới dạng thức XML • Khai báo thư viện: – using System; – using System.Security.Cryptography; 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 27 Minh họa RSA public class clsCryptography { private RSACryptoServiceProvider RSA; public string PublicKey; public string PrivateKey; public byte[] Encrypt(byte[] Data, string PublicKeyIn) { RSA.FromXmlString(PublicKeyIn); return RSA.Encrypt(Data, false); } public byte[] Decrypt(byte[] Data, string PrivateKeyIn) { RSA.FromXmlString(PrivateKeyIn); return RSA.Decrypt(Data, false); } 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 28 14
  15. 6/29/2011 Minh họa RSA public clsCryptography() { CspParameters cspParams = new CspParameters(); cspParams.Flags = CspProviderFlags.UseMachineKeyStore; RSA = new RSACryptoServiceProvider(cspParams); PublicKey = RSA.ToXmlString(false); PrivateKey = RSA.ToXmlString(true); } } • Toàn bộ công việc mã hóa và giải mã được đóng gói trong lớp này 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 29 Minh họa RSA • Thiết kế form minh họa có 2 textbox và 2 button. • Khai báo biến form: private rsa.clsCryptography clsRSA = new rsa.clsCryptography(); private byte[] Decrypted; private byte[] Encrypted; 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 30 15
  16. 6/29/2011 Minh họa RSA private void Form1_Load(object sender, EventArgs e) { tbStatus.Text += "Private key is:\r\n" + clsRSA.PrivateKey + "\r\n"; tbStatus.Text += "Public key is:\r\n" + clsRSA.PublicKey + "\r\n"; } 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 31 Minh họa RSA private void btnEncrypt_Click(object sender, EventArgs e) { byte[] PlainText = System.Text.Encoding.ASCII.GetBytes(tbWorking.Te xt); Encrypted = clsRSA.Encrypt(PlainText, clsRSA.PublicKey); tbWorking.Text = System.Text.Encoding.ASCII.GetString(Encrypted); } 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 32 16
  17. 6/29/2011 Minh họa RSA private void btnDecrypt_Click(object sender, EventArgs e) { Decrypted = clsRSA.Decrypt(Encrypted, clsRSA.PrivateKey); tbWorking.Text = System.Text.Encoding.ASCII.GetString(Decrypt ed); } 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 33 Minh họa RSA 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 34 17
  18. 6/29/2011 Mô hình hệ mã hóa đối xứng Khóa bí mật dùng chung Khóa bí mật dùng chung bởi bên gửi và bên nhận bởi bên gửi và bên nhận Bản mã truyền đi Nguyên bản Nguyên bản đầu vào đầu ra Giải thuật mã hóa Giải thuật giải mã Mã hóa Giải mã Y = EK(X) X = DK(Y) 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 35 Mô hình hệ mã hóa đối xứng • Gồm có 5 thành phần – Nguyên bản – Giải thuật mã hóa – Khóa bí mật – Bản mã – Giải thuật giải mã • An ninh phụ thuộc vào sự bí mật của khóa, không phụ thuộc vào sự bí mật của giải thuật 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 36 18
  19. 6/29/2011 Phá mã • Là nỗ lực giải mã văn bản đã được mã hóa không biết trước khóa bí mật • Có hai phương pháp phá mã – Vét cạn • Thử tất cả các khóa có thể – Thám mã • Khai thác những nhược điểm của giải thuật • Dựa trên những đặc trưng chung của nguyên bản hoặc một số cặp nguyên bản - bản mã mẫu 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 37 Phương pháp phá mã vét cạn • Về lý thuyết có thể thử tất cả các giá trị khóa cho đến khi tìm thấy nguyên bản từ bản mã • Dựa trên giả thiết có thể nhận biết được nguyên bản cần tìm • Tính trung bình cần thử một nửa tổng số các trường hợp có thể • Thực tế không khả khi nếu độ dài khóa lớn 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 38 19
  20. 6/29/2011 Thời gian tìm kiếm trung bình Kích thước Số lượng khóa Thời gian cần thiết Thời gian cần thiết khóa (bit) (1 giải mã/µs) (106 giải mã/µs) 32 232 = 4,3 x 109 231 µs = 35,8 phút 2,15 ms 56 256 = 7,2 x 1016 255 µs = 1142 năm 10,01 giờ 128 2128 = 3,4 x 1038 2127 µs = 5,4 x 1024 năm 5,4 x 1018 năm 168 2168 = 3,7 x 1050 2167 µs = 5,9 x 1036 năm 5,9 x 1030 năm 26 ký tự 26! = 4 x 1026 2 x 1026 µs = 6,4 x 106 năm (hoán vị) 6,4 x 1012 năm Khóa DES dài 56 bit Tuổi vũ trụ: ~ 1010 năm Khóa AES dài 128+ bit Khóa 3DES dài 168 bit 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 39 Các kỹ thuật thám mã • Chỉ có bản mã – Chỉ biết giải thuật mã hóa và bản mã hiện có • Biết nguyên bản – Biết thêm một số cặp nguyên bản - bản mã • Chọn nguyên bản – Chọn 1 nguyên bản, biết bản mã tương ứng • Chọn bản mã – Chọn 1 bản mã, biết nguyên bản tương ứng • Chọn văn bản – Kết hợp chọn nguyên bản và chọn bản mã 29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 40 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2