1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu về mã hóa cổ điển

21 1,1K 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 21
Dung lượng 445,5 KB

Nội dung

Những phương pháp mã hóa cổ điển là cơ sở cho việc nghiên cứu và phát triển thuật toán mã hóa đối xứng được sử dụng ngày nay.. Mọi thuật toán mã hóa cổ điển đều là mã hóa đối xứng, vì ở

Trang 1

Trường Đại học Sư phạm Kỹ thuật Hưng Yên

Khoa Công nghệ thông tin



-Tiểu luận: An Toàn Bảo Mật thông tin

Đề tài: Nghiên cứu về mã hóa cổ điển

Giảng viên hướng dẫn : Nguyễn Duy Tân

Sinh viên thực hiện : Hoàng Trịnh Khánh Hoàn Lớp : TK6LC1

Hưng yên 1/2010

Trang 2

Mã cổ điển là phương pháp mã hóa đơn giản nhất xuất hiện đầu tiên trong lịch sử ngành mã hóa Thuật toán đơn giản và dễ hiểu Những phương pháp

mã hóa cổ điển là cơ sở cho việc nghiên cứu và phát triển thuật toán mã hóa đối xứng được sử dụng ngày nay Trong mã hóa cổ điển có hai phương pháp nổi bật đó là:

Mã thay thế

Mã hoán vị

Mọi thuật toán mã hóa cổ điển đều là mã hóa đối xứng, vì ở đó thông tin

về khóa được chia sẻ giữa người gửi và người nhận Mã đối xứng là kiểu duy nhất trước khi phát minh ra khóa công khai Hiện nay khóa công khai và mã đối xứng tiếp tục phát triển và hoàn thiện

Sau đây là một số khái niệm cơ bản về mã hóa:

1 Bản rõ: X được gọi là bản tin gốc Bản rõ có thể được chia nhỏ có kích thước phù hợp

2 Bản mã: Y là bản gốc đã được mã hóa Ở đây ta thường xét phương pháp mã hóa mà không làm thay đổi kích thước của bản rõ, tức là chúng có cùng độ dài

3 Mã là thuật toán E chuyển bản rõ thành bản mã Thông tin chúng ta cần thuật toán mã hóa mạnh, cho dù kẻ thù biết được thuật toán nhưng không biết thông tin về khóa cũng không tìm được bản rõ

4 Khóa K là thông tin tham số để mã hóa, chỉ có người gửi và người nhận biết, Khóa độc lập với bản rõ và có độ dài phù hợp với yêu cầu bảo mật

5 Mã hóa là quá trình chuyển bản rõ thành bản mã

6 Giải mã là quá trình chuyển bản mã lại bản rõ

7 Thám mã nghiên cứu các nguyên lý và phương pháp giải mã mà không biết khóa

8 Mật mã là chuyên ngành khoa học của khoa học máy tính nghiên cứu và nguyên lý và phương pháp mã hóa

Trang 3

Các phương pháp mã hóa cổ điển.

I.Mã dịch vòng (Shift cipher caesar)

Là 1 hệ mã hóa sử dụng phương pháp thay thế để mã hóa thông tin, thay thế ở đây

có nghĩa là mỗi kí tự trong bảng mã được thay thế bằng một kí tự khác trong nguyên bản và sử dụng theo công thức :

kí tự khác có khoảng cách bằng k

Thám mã ceaser

Là việc đơn giản do số khóa có thể là rất ít

Chỉ có 26 khóa có thể, vì A chỉ có thể ánh xạ được đến 26 chữ cái trong bảng chữ cái tiếng Anh Các chữ khác sẽ được xác định bằng số bước tịnh tiến tương ứng của AThuật toán

Trang 4

}printf("\n");

Trang 7

II Hệ mã hoá AFFINE

Hệ mã hoá AFFINE được xác định bởi hai số nguyên a và b, với điều kiện 0  a,b

 25 (tức a, b thuộc bảng chữ cái tiếng Anh 26 ký tự) ở đây chúng ta xét hệ làm việctrên các số tự nhiên thay cho các ký tự như đã nói ở phần trên, các phép toán số họcđược thực hiện theo modul 26

Sự thay thế mỗi ký tự  sẽ được xác định bằng công thức (hàm mã hoá AFFINE):

Ek() = (a + b) MOD 26

Lưu ý: khi a = 1 thì ta có hệ mã hoá CAESAR

Ví Dụ 1: Muốn mã hóa P= “NOTEV”

với a = 3, b=5

Ek(”N”)=(3.“N”+5 )mod 26= “S”

Trang 8

Ek(“O”)=(3.“O”+5 )mod 26= “V”

Ek(“T”)=(3.“T”+5 )mod 26= “K”

Ek(“E”)=(3.“E”+5 )mod 26= “R”

Ek(“V”)=(3.“V”+5 )mod 26= “Q” C= “SVKRQ”

Ví Dụ 2: Muốn mã hóa P= “ABACD”

Ví Dụ 3: Muốn mã hóa P= “GHIKL”

Ví Dụ 4: Muốn mã hóa P= “SAUNA”

Ví Dụ 5: Muốn mã hóa P= “GHIKL”

với a = 2, b=2

Trang 9

III Hệ mã hoá VIGENERE

Hệ mã hoá này được đặt theo tên của một nhà mật mã người Pháp Blaise deVigenère (1523-1596)

VIGENERE cũng giống như CAESAR, nhưng ở đây khoá được thay đổi theotừng bước Hình vuông VIGENERE được sử dụng để mã hoá và giải mã

Ví dụ để mã hóa bản rõ PURPLE với từ khoá CRYPTO, đầu tiên ta tìm điểm giaonhau của hàng P và cột C, ta được R Cứ như vậy ta được bản mã RLPEES Ta sẽ thuđược bản mã tương tự nếu ta thay đổi vai trò của hàng và cột trong khi mã hoá Đểgiải mã bản mã RLPEES vừa mã hoá, ta nhìn vào hàng nào có chứa R trong cột C,theo cách này ta sẽ tìm được P Và như vậy ta tìm được bản rõ là PURPLE

Khoá được áp dụng một cách tuần hoàn, tức là nếu bản rõ dài hơn khoá thì khoálại được bắt đầu lại từ đầu Ví dụ khoá CRYPTO được áp dụng với bản rõ có độ dài

15 ký tự là CRYPTOCRYPTOCRY

Trang 10

Ta thấy rằng trong hệ mã hoá VIGENERE, với khoá có độ dài d thì sẽ có 26d khoáhợp lệ Vì vậy, chỉ cần với giá trị d nhỏ thì phương pháp thám mã vét cạn cũng đòi hỏikhá nhiều thời gian.

“G” khóa G lùi lại 5: “A”

“J” khóa H lùi lại 6: “B”

“K” khóa G lùi lại 7: “C”

“L” khóa G lùi lại 8: “D”

“Z” khóa W lùi lại 23: “D”

“J” khóa E lùi lại 4: “E”

“C” khóa A lùi lại 0: “C”

“V” khóa R lùi lại 18: “E”

“T” khóa E lùi lại 4: “P”

“F” khóa W lùi lại 23: “F”

C= “DECEPI”

Ví dụ 4: P= “WEARED”, Key=”DECE”

Trang 11

“W” khóa D tịnh tiến 3: “Z”

“E” khóa E tịnh tiến 4: “I”

“A” khóa C tịnh tiến 2: “C”

“Z” khóa D lùi lại 3: “W”

“I” khóa E lùi lại 4: “E”

“C” khóa C lùi lại 2: “A”

“V” khóa E lùi lại 4: “R”

“H” khóa D lùi lại 3: “E”

“H” khóa E lùi lại 4: “D”

P= “WEARED”

Ví dụ 5: P= “AEARED”, Key=”DACE”

“A” khóa D tịnh tiến 3: “D”

“E” khóa A tịnh tiến 0: “E”

“A” khóa C tịnh tiến 2: “C”

“D” khóa D lùi lại 3: “A”

“E” khóa A lùi lại 4: “E”

“C” khóa C lùi lại 2: “A”

“V” khóa E lùi lại 4: “R”

“H” khóa D lùi lại 3: “E”

“D” khóa E lùi lại 4: “D”

P= “AEARED”

Trang 12

Ta chọn một số nguyên d  2 Xét M là ma trận vuông d phần tử Các phần tử của

M là các số nguyên từ 0 đến 25 Hơn nữa M phải là ma trận khả nghịch, tức là tồn tại

3 3

17 15

rõ được viết thành vector P với các thành phần là các số biểu diễn các ký tự Và Ccũng thể hiện khối d ký tự của bản mã

Còn khi giải mã ta phải dùng ma trận nghịch đảo M-1:

11

.theo công thức mã hoá ta có

3 3

3 3

Trang 13

17 15

17 15

3 3

3 3

17 15

17 15

3 3

3 3

‘ED’= ‘AZ’ = C2

Chúng ta thu được bản mã “XNAZ”

Trang 14

17 15

17 15

3 3

3 3

17 15

17 15

3 3

‘BC’ = ‘NV’ = C1 và

Trang 15

3 3

17 15

17 15

ở đây C và P là các vector có độ dài bằng 3 và ma trận khóa K là ma trận 3x3 Ví

dụ mã hóa bane plaintext “paymoremoney” sử dụng ma trận khóa là:

Trang 16

Để giải mã ta dùng ma trận nghịch đảo K-1 =

Và áp dụng công thức P= K-1C mod 26, ta thu được bản rõ ban đầu là:

“paymoremoney”

Ngoài ra còn một số phương pháp mã hóa cổ điển khác nhưng do thời gian

có hạn nên em chưa thể tìm hiểu kỹ được như:

 Mã Raill Fence

Đây là mã hoán vị đơn giản Viết các chữ của bản rõ theo đường chéo trên một

số dòng Sau đó đọc các chữ theo từng dòng sẽ nhận được bản mã

 Mã Playfair

Được nhà bác học Charles sáng tạo ra năm 1854 Mỗi chữ cái được mã hóa bằng 7 chữ khác

 Mã dịch vòng

Viết các chữ cái của bản tin theo dòng và số cột xác định Sau đó thay đổi thứ

tự các cột theo một dãy số khóa cho trước, rồi đọc lại chúng theo các cột để nhận đượcbản mã

 Mã tích

Kết hợp cả hai phương pháp thay thế và hoán vị sử dụng đan xen hoặc vòng lặpnhiều lần

Điểm yếu của mã hóa cổ điển:

 Phương pháp mã hóa cổ điển có thể dễ dàng bị giải mã bằng cách đoán chữdựa trên phương pháp thống kê tần xuất xuất hiện các chữ cái trên bản mã và so sánh với bản thống kê quan sát của bản rõ

 Để dùng được mã cổ điển thì bên mã hóa và bên giải mã phải thống nhất với nhau về cơ chế mã hóa cũng như giải mã Nếu không hai bên sẽ không thể làm việc được với nhau

Để khắc phục những điểm yếu đó ngày nay người ta đã sử dụng mã khóa khóa đối xứng.Dưới đây là 2 loại mã khóa đối xứng thường được sử dụng

Trang 17

Thực hiện thay thế ở nửa bên trái Li-1 bằng cách XOR nó với F(Ki, Ri-1)

F thường gọi là hàm chuyển đổi hay hàm vòng

Hoán vị hai nửa Li và Ri cho nhau

Involution (đối hợp)

Đặc biệt, hàm cơ sở vòng lặp f thông thường là một hàm có đặc tính đối hợp (involution), tức là nó bằng hàm ngược của nó: f = f-1 hay là f(f(x)) = x

Ví dụ:

x Î {tập các chuỗi nhị phân độ dài 3}

(bit thứ nhất và thứ hai đổi chỗ cho nhau, bit thứ ba giữ nguyên)

Trang 18

Để mã hóa (giải mã) một khối, sơ đồ Feistel có thể được dùng nhiều lần; con số này trong DES là 16 và trong Gost 28147-89 là 32 Khi thực hiện chu trình cuối cùng, kết quả mã hóa sẽ không phải đảo ngược (tráo vị trí nửa phải và nửa trái cho nhau) màgiữ nguyên trật tự Tức là:

RN = RN-1

LN = f(RN, KN) Å LN-1

Các đặc trưng hệ Feistel

Độ dài khối: Khối càng lớn càng an toàn (thường 64 bit)

Độ dài khóa : Khóa càng dài càng an toàn (thường 128 bit)

Số vòng : Càng nhiều vòng càng an toàn (thường 16 vòng)

Giải thuật sinh mã con : Càng phức tạp càng khó phá mã

Hàm vòng : Càng phức tạp càng khó phá mã

Ảnh hưởng đến cài đặt và phân tích

Giải mã Feistel

Giống giải thuật mã hóa, chỉ khác

Bản mã là dữ liệu đầu vào, các khóa con được dùng theo thứ tự ngược lại

Tại mỗi vòng kết quả đầu ra chính là các dữ liệu đầu vào của quá trình mã hóa Đối với quá trình mã hóa: Li = Ri-1, Ri = Li-1 Å F(Ri-1, Ki)

Đối với quá trình giải mã : Ri-1 = Li, Li-1 = Ri Å F(Li-1, Ki)

Ưu và nhược điểm của sơ đồ Feistel

Ưu điểm

Trang 19

+ Ưu điểm đầu tiên rất dễ nhận ra – đó là để giải mã không cần phải tìm hàm ngược của hàm f() Như thế chọn hàm f() với độ phức tạp bất kỳ, kể cả những hàm không dễ gì tìm được hàm ngược

+ Ưu điểm thứ hai rất quan trọng là sơ đồ giải mã trùng với sơ đồ mã hóa Từ góc nhìn của người lập trình, có thể dùng chung một đoạn chương trình cho cả mã hóa lẫn giải mã

Trang 20

Mã hóa 1 khối

Khối 64 bits bản rõ (M) chịu sự biến đổi trong khối hoán vị xuôi

Kết quả được cắt làm 2 phần L0 và R0; L0 chiếm 32 bits cao, R0 chiếm 32 bits thấp

Đối với i=1 15: khối Li nhận giá trị của Ri-1 Khối Ri-1 sau đó chịu biến đổi bởi hàm f cùng với khóa chu kỳ ki, đem giá trị thu được cộng từng bit theo module 2 với Li-1 và ghi kết quả vào Ri

Ở chu kỳ cuối cùng (i=16) việc hoán đổi vị trí không xảy ra

Kết quả thu được sau chu kỳ thứ 16 chịu sự biến đổi trong khối hóan vị ngược để

có được khối mã (C)

Giải mã 1 khối

Nhận xét rằng nếu không tính hai khối hóan vị IP và IP-1 thì sơ đồ mã hóa cơ bản của DES là tập hợp 16 mắt xích Feistel Vì thế để giải mã khối C ta chỉ cần:

Tráo đổi vị trí của hai khối IP và IP-1 cho nhau

Đảo ngược thứ tự khóa chu kỳ ki: k1, k2, , k16 → k16, k15, , k1

Cho khối mã C đi qua sơ đồ mới thu được Ở đầu ra ta sẽ nhận được khối rõ M

Phép hoán vị IP và IP-1

Phép hóan vị xuôi IP

+ Gán i=1

+ Tìm giá trị phần tử thứ i của dãy IP: k=IP[i]

+ Sao chép giá trị của bits thứ k của khối X sang bits thứ i của khối T + Tăng i lên 1

Trang 21

+ Nếu i≤64 thì quay lại bước 2

+ Kết thúc

Phép hóan vị ngược IP-1

+ Gán i=1

+ Tìm giá trị phần tử thứ i của dãy IP: k=IP[i]

+ Sao chép giá trị của bits thứ i của khối T sang bits thứ k của khối X + Tăng i lên 1

+ Nếu i≤64 thì quay lại bước 2

+ Kết thúc

Hàm mã hóa f()

Hoạt động của hàm f()

Khối Ri-1 32 bits được “nới rộng” (kéo dài) thành 48 bits bởi hàm E

+ Sau đó đem cộng từng bits theo module 2 (XOR) với khóa chu kỳ ki

+ Kết quả 48 bits được chia làm 8 phần, mỗi phần 6 bits sẽ chịu biến đổi trong khối thay thế Sj (j=1 8) để thu được khối 4 bits 8 khối 4 bits được hợp lại với nhau thành khối 32 bit và chịu biến đổi trong khối hoán vị P

+ Kết quả thu được (32 bits) chính là giá trị của hàm f(Ri-1, ki)

Ngày đăng: 10/04/2014, 15:28

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w