Tải bản đầy đủ (.pdf) (52 trang)

Bài giảng lập trình mạng chương 8 ths trần bá nhiệm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (828.97 KB, 52 trang )

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:

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

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

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 tố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ó q 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

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


6/29/2011

Mã hóa khóa công khai

Các khóa cơng khai

Joy Ted
Mike
Alice
Khóa riêng
Khóa cơng khai của Alice
của Alice

Bản mã
truyền đi

Nguyên bản Giải thuật Giải thuật Nguyên bản
đầu vào mã hóa giải mã đầu ra

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

Joy Ted

Mike Bob
Khóa công khai

Khóa riêng của Bob
của Bob

Bản mã
truyền đi

Nguyên bản Giải thuật Giải thuật Nguyên bản
đầu vào mã hóa giải mã đầu ra

29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 10

5

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

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

6/29/2011


Trao đổi khóa

Khóa ngẫu nhiên Khóa ngẫu nhiên

Alice Bob
Giải mã
Mã hóa

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

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

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
• Có thể suy ra

– Cd mod n = Med mod n = MkΦ(n) + 1 mod n = M mod n = M

29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 20

10

6/29/2011


Ví dụ tạo khóa RSA

• Chọn 2 số ngun 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ã

Nguyên Bản Nguyên

bản mã bản

29/06/2011 Chương 8: Bảo vệ dữ liệu - Mã hóa 22

11

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ó đố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

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 tố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

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

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);
}

}
• Tồ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

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

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

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 Giải thuật mã hóa Giải thuật giải mã Nguyên bản
đầu vào đầu ra


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

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 ngun 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

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)
232 = 4,3 x 109
32 256 = 7,2 x 1016 231 µs = 35,8 phút 2,15 ms
56 2128 = 3,4 x 1038 255 µs = 1142 năm 10,01 giờ
128 2168 = 3,7 x 1050 2127 µs = 5,4 x 1024 năm 5,4 x 1018 năm
168 26! = 4 x 1026 2167 µs = 5,9 x 1036 năm 5,9 x 1030 năm
26 ký tự 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


×