1. Trang chủ
  2. » Giáo án - Bài giảng

giới thiệu về mật mã hóa

5 461 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 209,76 KB

Nội dung

Trong phép này, khoá là một hoán vị π của bảng chữ cái ∑ và mỗi kí hiệu của thông báo được thay bằng ảnh của nó qua hoán vị π.. Thường thường, khoá được biểu diễn như một chuỗi 26 kí tự,

Trang 1

BÀI 14 GIỚI THIỆU VỀ MẬT MÃ HOÁ

14.1 Giới thiệu

14.2 Một số phép mật mã đơn giản

14.3 Bẻ gãy (breaking) một hệ thống mật mã

14.4 Kết hợp các phương pháp mật mã hoá

14.1 Giới thiệu

Mã hoá bảo mật đã có một lịch sử lâu đời, ở đây chúng ta không trình bày về lịch sử của nó mà chỉ trình bày các vấn đề cơ bản của nó Trước hết chúng ta trình bày ý tưởng cơ bản của mật mã hoá

Mật mã hoá

Mật mã hoá là việc biến đổi một thông báo sao cho nó không thể hiểu nổi đối với bất kỳ ai ngoại trừ người nhận được mong muốn

Để thuận tiện trình bày, chúng ta sẽ định nghĩa và kí hiệu cho các khái niệm cơ bản

Thông báo (message, plaintext)

Thông báo là một chuỗi hữu hạn kí hiệu lấy từ một bảng chữ cái ∑ và thường

được kí hiệu là m

Ở đây ∑ thường là bảng chữ cái tiếng Anh gồm 26 kí tự, thỉnh thoảng có thêm cả kí tự khoảng trắng

Phép mật mã hoá e(m)

e(m) là kí hiệu biểu diễn việc mật mã hoá m

Trong thực tế, mật mã hoá được xem như là một hàm, ánh xạ hay một giải thuật với một tập các thông số (ngoài thông số cần có là thông báo cần mã hoá) Từ đây chúng ta có khái niệm khoá

Khoá (key)

Khoá là một thông số đầu vào của phép mã hoá mà không phải là thông báo và

thường được kí hiệu là k

Một phép mật mã hoá có thể có nhiều khoá

Chuỗi mật mã (cipher, ciphertext, cryptogram)

c = e(m, k) được gọi là chuỗi mật mã

Phép giải mật mã d(c, k)

d(c, k) là kí hiệu biểu diễn việc giải mật mã hoá

Dĩ nhiên d(c, k) = m

Hệ thống mật mã (cryptosystem)

Một cách hình thức, một hệ thống mật mã được định nghĩa là một bộ ba (M, K,

C) Trong đó M là tập các thông báo m trên các bảng chữ cái 1, K là tập hữu hạn các khoá k, C là tập các chuỗi mật mã c, ngoài ra còn có thêm giả thiết rằng tồn tại các hàm hay giải thuật e và d sao cho

e: M × K → C d: C × K → M

và đối với mỗi cặp (m, k) ∈ M × K,

d(e(m, k) , k) = m

14.2 Một số phép mật mã đơn giản

Trang 2

Trong phép này, khoá là một hoán vị π của bảng chữ cái ∑ và mỗi kí hiệu của thông báo được thay bằng ảnh của nó qua hoán vị π

Thường thường, khoá được biểu diễn như một chuỗi 26 kí tự, chẳng hạn nếu khoá là UXEOS…, thì nó biểu thị rằng bất kỳ một sự xuất hiên của A trong thông báo thì được thay bằng U, B được thay bằng X, C được thay bằng E, D được thay bằng O, E được thay bằng

S, … Các khoảng trắng thường được giữ nguyên không bị thay thế

Phép thay thế n-gram

Thay vì thay thế đối với các kí tự, người ta có thể thay thế cho từng cụm 2 kí tự (gọi là

digram) hoặc cho từng cụm 3 kí tự (gọi là trigram) và tổng quát cho từng cụm n kí tự (gọi là n-gram) Nếu bảng chữ cái ∑ gồm 26 kí tự tiếng Anh thì phép thay thế n-gram sẽ có khoá là

một hoán vị của 26n n-gram khác nhau Trong trường hợp digram thì hoán vị gồm 262

digram và có thể biểu diễn tốt nhất bằng một dãy 2 chiều 26 × 26 trong đó các hàng biểu diễn kí hiệu đầu tiên, các cột biểu diễn kí hiệu thứ hai, nội dung của các ô biểu diễn chuỗi thay thế Ví dụ bảng 2 chiều sau biểu thị AA được thay bằng EG, AB được thay bằng RS,

BA được thay bằng BO, BB được thay bằng SC, …

A B …

Phép hoán vị bậc d

Đối với một số nguyên dương d bất kỳ, chia thông báo m thành từng khối có chiều dài

d Rồi lấy một hoán vị π của 1, 2, …, d và áp dụng π tới mỗi khối Chẳng hạn nếu d = 5 và π

= (4 1 3 2 5), thì có nghĩa là hoán vị (1 2 3 4 5) sẽ được thay bằng hoán vị mới (4 1 3 2 5)

Ví dụ nếu chúng ta có thông báo

m = JOHN |IS A |GOOD | ACTOR

thì qua phép mật mã này sẽ trở thành chuỗi mật mã sau

c = NJHO |AI S |DGOO | OATCR

Để giải mã ngược lại ta phải tìm hoán vị ngược π-1 Trong trường hợp này chúng ta có π-1 =

(2 4 3 1 5) Tổng quát nếu π = (a 1i1 a 2i2 … a ni n) trong đó a ji j biểu thị ở vị trí thứ j chứa giá trị i j, thì π-1 = (a j 1 a j 2 a j n) có nghĩa là ở duyệt trong π ở vị trí thứ i có chứa giá

trị j thì trong π-1 ở vị trí thứ j sẽ chứa giá trị i

Phương pháp Vigenère và Caesar

Trong phương pháp này, khoá bao gồm một chuỗi của d kí tự Chúng được viết lặp lại

bên dưới thông báo và được cộng modulo 26, với chú ý rằng bảng chữ cái được đánh số từ

A = 0 đến Z = 25 Các kí tự khoảng trắng sẽ được giữ nguyên không cộng

Chẳng hạn với d = 3, nếu khoá là chuỗi ABC thì thông báo

m = M A R Y I S G O O D với khoá

k = A B C A B C A B C A trở thành

c = M B T Y J U G P Q D Trong trường hợp d = 1, như vậy khoá chỉ là một kí tự đơn, thì được gọi là phương

pháp Caesar vì được cho là được sử dụng lần đầu bởi Julius Caesar

Phương pháp Playfair

Trang 3

Đây là một sơ đồ dựa trên sự thay thế digram trong đó khoá là một hình vuông kích thước 5 × 5 chứa một sự sắp xếp nào đó của 25 kí tự của bảng chữ cái (không tính kí tự J vì

sự xuất hiện ít của nó và có thể thay nó bằng I) Giả sử chúng ta có ma trận khoá như sau

B Y D G Z

W S F U P

L A R K X

C O I V E

Q N M H T

Sự thay thế sẽ được thực hiện như sau Chẳng hạn nếu digram cần thay thế là AV thì trong hình chữ nhật có A, V là hai đỉnh chéo nhau thay A bằng đỉnh kề của nó theo đường thẳng đứng chính là O và tương tự thay V bằng đỉnh kề của nó theo đường thẳng đứng chính là K Tương tự nếu digram cần thay thế là VN thì chuỗi thay thế là HO Nếu các kí tự của digram nằm trên hàng ngang thì chuỗi thay thế là các kí tự bên phải của chúng Chẳng hạn nếu digram là WU thì chuỗi thay thế là SP, nếu digram là FP thì chuỗi thay thế là UW, nếu digram là XR thì chuỗi thay thế là LK Tương tự nếu các kí tự của digram nằm trên hàng dọc thì chuỗi thay thế là các kí tự bên dưới của chúng Chẳng hạn nếu digram là SO thì chuỗi thay thế là AN, nếu digram là MR thì chuỗi thay thế là DI, nếu digram là GH thì chuỗi thay thế là UG Trong trường hợp digram là một cặp kí tự giống nhau chẳng hạn OO hoặc là một kí tự được đi kèm một khoảng trắng chẳng hạn B thì có nhiều cách xử lý, cách đơn giản nhất là giữ nguyên không biến đổi digram này

Phương pháp khoá tự động (autokey)

Trong phương pháp này, có một khoá “mồi” (priming key), cái mà thường là ngắn và được sử dụng để khởi đầu quá trình mật mã hoá Quá trình mã hoá được tiếp tục bằng cách

sử dụng cả bản thân thông báo lẫn chuỗi mật mã (cryptogram) đang chạy Xét ví dụ sau: Giả

sử khoá mồi là VENUS và thông báo là SEND SUPPLIES Đầu tiên sử dụng thông báo như một khoá đang chạy, chúng ta mã hoá bằng phép cộng mod 26 (Chú ý các khoảng trắng sẽ được bỏ qua)

Chuỗi mật mã N I A X K M T C O A Y H

Sử dụng chuỗi mật mã trên như là một khoá với khoá mồi như cũ chúng ta được kết quả mã hoá như sau

Phương pháp biến đổi tuyến tính

Ý tưởng cơ bản là chia thông báo thành những khối có chiều dài d và gắn khối này với một bộ-d (hay còn gọi là vectơ) x của các số nguyên, và rồi nhân vectơ x này với một ma trận không suy biến (tức có định thức khác 0) sẽ được chuỗi mật mã y = Ux Việc giải mã được thực hiện bằng cách nhân y với ma trận nghịch đảo U-1 của U, x = U-1y

Để đảm bảo các phép toán được thực hiện trên một trường, các tính toán sẽ được tính trong modulo của một số nguyên tố Chẳng hạn lấy bảng chữ cái ∑ gồm 37 kí tự như sau và được đánh số lần lượt từ 0 đến 36: 10 chữ số từ 0 đến 9, khoảng trắng, và 26 kí tự chữ cái

Với bảng chữ cái này, nếu chọn d = 2 và ma trận làm khoá là:

Trang 4

k = U =

 15 22

13 3

Thông báo m = FRIEND được biểu diễn như là

m = FR | IE | ND = 15, 27 | 18, 14 | 23, 13

Thì

=

×

35 14 32

16 14 26 13

14 27

23 18 15

15

22

13

3

Vậy chuỗi mật mã là

c = 26, 32 | 14, 14 | 16, 35 = Q, W | E, E | G, Z = QWEEGZ

14.3 Bẻ gãy (breaking) một hệ thống mật mã

Bẻ gãy một hệ thống mật mã có nghĩa là gì? Những chuyên gia mật mã hay những kẻ

tấn công thường được giả thiết biết đầy đủ thông tin về hàm mã hoá e và hàm giải mã d

Thêm vào đó, họ cũng có thể nhiều thông tin hỗ trợ như các thống kê về ngôn ngữ, kiến thức về ngữ cảnh, vân vân

Họ sẽ chắn chắn có một chuỗi mật mã nào đó, và tất cả những gì mà họ thiếu là khoá k

từ đó học có thể sử dụng d để giải mã c một cách chính xác Điều này có thể được biểu diễn

thành hình ảnh như bên dưới

Hình 14.1

Có ba khả năng tấn công cái mà chúng ta dự đoán đối phương tấn công trên hệ thống chúng ta:

(1) Tấn công chỉ dựa trên chuỗi mật mã (crytogram-only attack): Đây là trường hợp đã

được mô tả ở trên trong đó đối phương chỉ biết một vài mẫu chuỗi mật mã c

(2) Tấn công dựa trên văn bản đã biết (known-plaintext attack): Trường hợp này thực tế hơn trường hợp (1) Trong trường hợp này những người tấn công được giả thiết là đã biết một độ dài đáng kể của văn bản thông báo và chuỗi mật mã tương ứng, và từ đó

cố gắng tìm ra khoá

Đây là một sự tấn công dữ dội khó chống đỡ hơn nhiều nhưng ngày nay được xem như là một chuẩn an toàn tối thiểu phải đạt được Thật vậy vào thời điểm hiện tại, tiêu chuẩn thích hợp nhất để đánh giá một hệ thống bảo mật là rằng khả năng của nó để chống đỡ sự tấn công thậm chí còn mạnh hơn như sau

(3) Tấn công dựa trên văn bản được chọn (chosen-plaintext attack): Trong trường hợp này, những người tấn công có thể đã có được một số lượng tuỳ ý của các cặp thông

báo và chuỗi mật mã tương ứng (m, c)

Không khó để thấy rằng không có hệ thống (hay phương pháp) mật mã nào đã mô tả ở trên có thể chống đỡ một cuộc tấn công dựa trên văn bản được chọn

Bộ phát sinh khoá k

Những kẻ tấn công

m

Trang 5

Trường hợp liên quan đến khả năng bị tấn công của nó đối với sự tấn công dựa trên văn bản đã biết là phức tạp hơn Chẳng hạn, xét hệ thống đơn giản nhất – hệ thống dùng

phương pháp thay thế đơn giản – sao cho khoá k là một hoán vị của 26 chữ cái trong đó A

→ P, B → F, vân vân Bây giờ nếu thông báo m được gởi là “silly message” bao gồm chữ A được lặp lại n lần, thì trong chuỗi mật mã c tương ứng, chữ P sẽ được lặp lại n lần Không thành vấn đề n lớn bao nhiêu, cặp thông báo - chuỗi mật mã cụ thể này sẽ không sinh ra khoá k Tuy nhiên nó không khó để tin rằng, trung bình, nếu đã cho một chiều dài vừa đủ

của thông báo và chuỗi mật mã, bất kỳ hệ thống hay phương pháp mật mã ở trên đều có thể

bị bẻ gãy (crack) Ở đây chúng ta xem một ví dụ đơn giản về cách bẻ gãy

Ví dụ 14.1

Giả sử một hệ thống mật mã được biết là dựa trên phương pháp Caesar với bảng chữ cái gồm 27 kí tự được đánh số như sau

A = 0, B = 1, …, Z = 25, khoảng trắng = 26

và phép cộng thực hiện theo mod 27 Chúng ta chộp được chuỗi mật mã c sau

HWXGOQCCZOXGOXBORCST

Chúng ta đề nghị cách tấn công sau để tìm khoá chưa biết k0 Chọn các khoá dự tuyển cho k0

một cách ngẫu nhiên và đổi ngược chuỗi mật mã, theo từng kí tự, cho đến khi nào thông báo

có ý nghĩa

vậy, nếu đầu tiên chúng ta chọn k0 = E, chúng ta sẽ đổi ngược c và nhận được

DSTC …

tại ngữ cảnh này chúng ta thấy rằng E không phải là khoá k0 Lại chọn k0 = Z, cái này sẽ đổi

ngược c thành

JYZ … cái này bác bỏ Z

Sự lựa chọn kế tiếp (? theo linh cảm) của chúng ta là k0 = P và nhanh chóng thấy rằng chuỗi mật mã đã được biến đổi thành chuỗi văn bản có nghĩa

THIS BOOK IS IN CODE Tại ngữ cảnh này chúng ta không đảm bảo rằng không có cặp thông báo-khoá mà sẽ gởi ra cùng chuỗi mật mã Tuy nhiên thủ tục kiểm tra của những khoá khác cũng tương tự như vậy

14.4 Kết hợp các phương pháp mật mã hoá

Một cách tự nhiên để tăng tính bảo mật là kết hợp nhiều phương pháp mật mã hoá với nhau Hai cách như vậy, cái mà được Shannon đề nghị từ năm 1949, vẫn tạo nên cơ sở của nhiều hệ thống mật mã thực tế Đó là

(1) Cách dùng tổng trọng số: Nếu S1, S2, …, Sn là các hệ thống (hay phương pháp) mật mã

hoá có cùng không gian thông báo và 0 < p i < 1 và 1

1

=

=

n

i i

p thì tổng của chúng

i

n

i i

S

p

=1

là hệ thống mật mã dùng Si với xác suất p i

(2) Cách dùng tích: Áp dụng các hệ thống (hay phương pháp) nối tiếp nhau, đầu ra của hệ thống này là đầu vào của hệ thống kế tiếp Dĩ nhiên tập hợp đầu ra của hệ thống đi trước phải là tập con của tập hợp đầu vào của hệ thống đi sau kế tiếp

Ngày đăng: 04/06/2016, 12:50

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

TÀI LIỆU LIÊN QUAN

w