1. Trang chủ
  2. » Thể loại khác

BẢO VỆ DỮ LIỆU - MÃ HÓA. ThS. Trần Bá Nhiệm

20 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 20
Dung lượng 440,28 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 •

Trang 1

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

Trang 2

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ả

Trang 3

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

Trang 4

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

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

Đặ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ý

Trang 5

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

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

Các khóa công khai

Nguyên bản

đầu vào

Nguyên bản

đầu ra

Bản mã truyền đi

Giải thuật

mã hóa

Giải thuật giải mã

Khóa công khai của Alice

Khóa riêng của Alice

Ted Alice Mike

Joy

Xác thực

Các khóa công khai

Nguyên bản

đầu vào

Nguyên bản

đầu ra

Bản mã truyền đi

Giải thuật

mã hóa

Giải thuật giải mã

Khóa riêng của Bob

Khóa công khai của Bob

Ted Bob Mike

Joy

Trang 6

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

Ứ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

Mô hình đảm bảo bí mật

Nguồn

th báo

Giải thuật

mã hóa

Giải thuật giải mã

Đích

th báo

Nguồn cặp khóa

Kẻ phá mã

Trang 7

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

Mô hình xác thực

Nguồn

th báo

Giải thuật

mã hóa

Giải thuật giải mã

Đích

th báo

Nguồn cặp khóa

Kẻ phá mã

Mô hình kết hợp

Nguồn

th báo

G thuật

mã hóa

G thuật

ích

th báo

Nguồn cặp khóa

G thuật

mã hóa

G thuật giải mã

Nguồn cặp khóa

Trang 8

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

Trao đổi khóa

Khóa công khai của Bob Khóa riêng của Bob Khóa ngẫu nhiên Khóa ngẫu nhiên

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

Trang 9

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

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

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ỏ

Trang 10

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

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 = M e 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 = C d 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

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

• Có thể suy ra

– C d mod n = M ed mod n = M kΦ(n) + 1 mod n = M mod n = M

Trang 11

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

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

Ví dụ thực hiện RSA

Nguyên bản

Nguyên bản Bản

Trang 12

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

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

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) = 2 128 / ln(2 128 ) ≈ 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

Trang 13

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

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

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)

Trang 14

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

}

Trang 15

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;

Trang 16

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

}

Trang 17

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

Trang 18

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

Khóa bí mật dùng chung bởi bên gửi và bên nhận

Khóa bí mật dùng chung bởi bên gửi và bên nhận

Giải thuật mã hóa Giải thuật giải mã

Nguyên bản

đầu vào

Nguyên bản

đầu ra

Bản mã truyền đi

Mã hóa

Y = EK(X)

Giải mã

X = DK(Y)

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

Trang 19

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

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

• 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

Phương pháp phá mã vét cạn

Trang 20

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

Thời gian tìm kiếm trung bình

Kích thước khóa (bit) Số lượng khóa Thời gian cần thiết(1 giải mã/µs) Thời gian cần thiết(106 giải mã/µs) 32

56 128 168

26 ký tự (hoán vị)

2 32 = 4,3 x 10 9

2 56 = 7,2 x 10 16

2 128 = 3,4 x 10 38

2 168 = 3,7 x 10 50

26! = 4 x 10 26

2 31 µs = 35,8 phút

2 55 µs = 1142 năm

2 127 µs = 5,4 x 10 24 năm

2 167 µs = 5,9 x 10 36 năm

2 x 10 26 µs =

6,4 x 10 12 năm

2,15 ms 10,01 giờ 5,4 x 10 18 năm 5,9 x 10 30 năm 6,4 x 10 6 năm

Tuổi vũ trụ: ~ 10 10 năm Khóa DES dài 56 bit

Khóa AES dài 128+ bit Khóa 3DES dài 168 bit

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ã

Ngày đăng: 08/04/2022, 10:12

🧩 Sản phẩm bạn có thể quan tâm