nghiên cứu lược đồ chia sẻ bí mật và ứng dụng của chúng vào việc thi tuyển sinh đại học
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN BÁ THÁI
NGHIÊN CỨU LƯỢC ĐỒ CHIA SẺ BÍ MẬT VÀ
ỨNG DỤNG CỦA CHÚNG VÀO VIỆC
THI TUYỂN SINH ĐẠI HỌC
Nghành : Công nghệ Điện tử - Viễn thông
Chuyên nghành : Kỹ thuật Điện tử
LUẬN VĂN THẠC SỸ
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS Hồ Văn Canh
Hà Nội - 2011
Trang 2Tôi xin cam đoan: Luận văn “ Nghiên Cứu Lược Đồ Chia Sẻ Bí Mật Và Ứng Dụng Của Chúng Vào Việc Thi Tuyển Sinh Đại Học” là công trình nghiên cứu khoa học độc lập của tôi
Kết quả nghiên cứu được trình bầy trong luận văn chưa được công bố dưới bất kỳ hình thức nào
Hà nội, ngày 20 tháng 05 năm 2011
Tác giả luận văn
Nguyễn Bá Thái
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 5
CHƯƠNG 1 MẬT MÃ CỔ ĐIỂN 7
1.1 KHÁI NIỆM VÀ ĐỊNH NGHĨA VỀ MẬT MÃ 7
1.1.1 Khái niệm: 7
1.1.2 Định nghĩa 7
1.2 MỘT SỐ MÃ HÓA ĐƠN GIẢN: 9
1.2.1 Mã dịch vòng ( shift cipher) 9
1.2.1.1 Định nghĩa (modulo): 9
1.2.1.2 Định nghĩa mã dịch vòng: 10
1.2.2 Mã thay thế (MTT) 12
1.2.3 Mã Affine 14
1.2.3.1 Định lý (đồng dư thức): 14
1.2.3.2 Định nghĩa (hàm Euler): 14
1.2.3.3 Định nghĩa (phần tử nghich đảo trong phép nhân): 16
1.2.4 Mật mã Hill 19
1.2.4.1 Khái niệm: 19
1.2.4.2 Định nghĩa ( ma trận đơn vị) 20
1.2.4.3 Định nghĩa (Định thức của ma trận): 20
1.2.4.4 Định lý (ma trận ngịch đảo): 20
1.2.4.5 Định nghĩa Mật mã Hill 21
1.2.5 Mã chuyển vị (Transposition): 22
CHƯƠNG 2 CHUẨN MÃ DỮ LIỆU (DES) 24
2.1 MÔ TẢ DES (Data Encryption Standard) 24
2.2 Các bước thực hiện: 25
2.2.1 Cách tính biến x0 25
2.2.2 Cách tính LiRi: 26
2 2.2.1 Các biến trong hàm f: 26
2.2.2.2 Cách tính hàm f: 30
2.2.3 Xác định bản mã y: 35
2.3 Giải mã DES 43
2.3.1 Thuật toán 43
2.3.2 Chứng minh thuật toán 43
2.4 Các vấn xung quanh DES 46
2.4.1 Những ý kiến phản hồi 46
2.4.2 DES trong thực tế 47
2.4.3 Một vài kết luận về mã DES 48
CHƯƠNG 3 CÁC SƠ ĐỒ CHIA SẺ BÍ MẬT 49
3.1 Khái niệm về chia sẻ bí mật: 49
3.2 Sơ đồ chia sẻ bí mật 50
3.2.1 Khái niệm “Sơ đồ chia sẻ bí mật”: 50
3.2.2 Định nghĩa: 50
3.3 Cấu trúc truy nhập và sơ đồ chia sẻ bí mật 55
3.3.1 Định nghĩa sơ đồ chia sẻ bí mật hoàn thiện 55
Trang 43.4 Mạch đơn điệu: 56
3.4.1 Định nghĩa( mạch đơn điệu): 56
3.4.2 Chia sẻ Khóa bí mật dựa vào “ mạch đơn điệu” 57
CHƯƠNG 4 ỨNG DỤNG THUẬT TOÁN DES VÀ LƯỢC ĐỒ CHIA SẺ BÍ MẬT VÀO THI TUYỂN SINH 61
4.1 Các ứng dụng: 61
4.2 Quy trình thực hiện giải bài toán: 61
4.2.1 Sơ đồ: 61
4.2.2 Các bước thực hiện: 62
4.2.3 Mô phỏng lược đồ chia sẻ bí mật bằng ngôn ngữ C: 63
4.2.3.1 Chia sẻ khoá bí mật theo giao thức “chia sẻ bí mật” Shamir 63
4.2.3.2 Khôi phục khoá bí mật bằng phương pháp giải hệ phương trình tuyến tính 64
4.2.3.3 Khôi phục khoá bí mật bằng phương pháp dùng công thức nội suy Lagrange 68
4.2.3.4 Chia sẻ khoá bí mật theo phương pháp bằng mạch đơn điệu 69
4.2.3.4 Khôi phục khoá bí mật theo phương pháp mạch đơn điệu 71
4.3 Mã nguồn mở của chương trình 72
KẾT LUẬN 79
TÀI LIỆU THAM KHẢO 80
Trang 5LỜI NÓI ĐẦU
Ngày nay, mạng máy tính ngày càng trở nên phổ biến Mỗi quốc gia đều có mạng riêng với rất nhiều mạng mang tính bộ phận Trên pham vi toàn cầu, người
ta đã dùng mạng Internet một cách thông dụng Nhiều dịch vụ điện tử như: thư điện tử, chuyển tiền, thương mại điện tử, chính phủ điện tử đã được áp dụng rộng rãi
Các ứng dụng trên mạng máy tính ngày càng trở nên phổ biến, thuận lợi và quan trọng thì yêu cầu về an toàn mạng, về an ninh dữ liệu càng trở nên cấp bách và cần thiết
Trên thế giới có rất nhiều quốc gia, nhiều nhà khoa học nghiên cứu về vấn đề bảo mật, đưa ra nhiều thuật toán với mục đích thông tin truyền đi không bị lấy cắp hoặc nếu bị lấy cắp thì cũng không sử dụng được.Trong đề tài của em đưa ra một thuật toán đó là thuật toán DES (Data encryption standar) đây là thuật toán chuẩn của mỹ, được mỹ và nhiều nước trên thế giới sử dụng, thuật toán này đã được đưa vào sử dụng nhiều năm nhưng vẫn giữ được tính bảo mật của nó Tuy nhiên với công nghệ phát triển như hiện nay thì thuật toán DES trở lên không được an toàn tuyệt đối nữa, người ta đã đưa ra thuật toán 3DES về nguyên tắc thuật toán 3DES dựa trên nền tảng của thuật toán DES nhưng số bít được mã hóa tăng lên
Mã hóa và các lược đồ chia sẻ bí mật có thể được ứng dung trong rất nhiều lĩnh vực ví dụ: phát hành thẻ ATM trong ngân hàng, đấu thầu từ xa, trong thi tuyển sinh, trong lĩnh vực quân sự….Trong đề tài của em đề cập tới một lĩnh vực đó là ứng dụng trong thi tuyển sinh đại học
Vấn đề thi tuyển sinh đại học ở nước ta trở thành gánh nặng cho nghành Giáo Dục và các ban nghành khác liên quan Nó làm tổn hại về kinh tế và công sức không chỉ đối các ban nghành tham gia tổ chức kỳ thi mà ngay cả đối với các thí sinh dự thi, nhưng đó là điều bắt buộc phải được tổ chức hàng năm Do vậy làm sao để giảm thiểu các khâu trong thi tuyển sinh mà vẫn đảm bảo tính công bằng
và chính xác là điều cần thiết, theo tôi để làm được điều đó ta nên ứng dụng công nghệ thông tin vào việc thi tuyển sinh đại học, một trong các ứng dụng đó
là ứng dụng LƯỢC ĐỒ CHIA SẺ BÍ MẬT vì nó đảm bảo được tính bí mật và chính xác mà trong thi tuyển sinh hai điều đó là quan trọng nhất
Phạm vi luận văn đề cập đến vấn đề mật mã, thuật toán DES, lược đồ chia sẻ bí mật và ứng dụng của chúng trong thi tuyển sinh
Luận văn gồm 4 chương:
Trang 6Chương 1: Mật mã cổ điển: chương này nói về khái niệm và định nghĩa một số mật mã cổ điển
Chương 2: Thuật toán DES: chương này nói về mã hóa và giải mã trong thuật toán DES, các vấn đề xung quanh DES
Chương 3: Chia sẻ bí mật: Chương này nói về khái niệm chia sẻ bí mật, phương thức chia sẻ và khôi phục khóa bí mật
Chương 4: Ứng dụng thuật toán DES và Lược đồ chia sẻ bí mật vào thi tuyển sinh: chương này nói về phần ứng dụng và mô phỏng lược đồ chia se bí mật bằng ngôn ngữ C
Để hoàn thành luận văn này, trước hết em xin chân thành cảm ơn TS Hồ Văn Canh – người đã trực tiếp hướng dẫn, cung cấp tài liệu và đóng góp nhiều ý kiến cho luận văn Em cũng xin chân thành cảm ơn các thầy cô giáo, các cán bộ khoa Điện tử , phòng Sau đại học, Trường Đại học công nghệ - ĐHQG Hà nội
đã tận tình giảng dậy, giúp đỡ em trong suốt khóa học
Trang 7CHƯƠNG 1 MẬT MÃ CỔ ĐIỂN 1.1 KHÁI NIỆM VÀ ĐỊNH NGHĨA VỀ MẬT MÃ
1.1.1 Khái niệm:
- Chức năng cơ bản của mật mã là tạo ra khả năng liên lạc trên một kênh không mật cho hai người sử dụng (tạm gọi là A và B) sao cho đối phương (C) không thể hiểu được thông tin được truyền đi
- Kênh liên lạc có thể là một đường dây điện thoại hoặc một mạng máy tính Thông tin mà Al muốn gửi cho B bản rõ có thể là một văn bản tiếng Anh, các dữ liệu bằng số hoặc bất cứ tài liệu nào có cấu trúc tuỳ ý
- A sẽ mã hoá bản rõ bằng một khóa đã được xác định trước và gửi bản mã kết quả trên kênh C có bản mã thu trộm được trên kênh song không thể xác định nội dung của bản rõ, nhưng B (người đã biết khoá mã) có thể giải mã và thu được bản rõ
Ta sẽ mô tả hình thức hoá nội dung bằng cách dung khái niệm toán học như sau:
1.1.2 Định nghĩa
sao cho:
Trong đó, chúng ta cần lưu ý tính chất 4: Nội dung của nó là nếu một bản
rõ x được mã hoá bằng e k và bản mã nhận được sau đó được giải mã bằng d k thì
ta phải thu được bản rõ ban đầu x
Giả sử ta có bản rõ cần truyền đi là:
x = x1,x2 , .,xn
Trang 8với số nguyên n 1 nào đó Ở đây mỗi ký hiệu của mỗi bản rõ xi P , 1 i
n Mỗi xi sẽ được mã hoá bằng quy tắc mã ek với khoá K xác định trước đó Bản mã thu được là:
y = y1,y2 , .,yn Trong đó yk=ek(xi) i=1,2,…,n còn kєK
Khi Bob nhận đươc y1,y2 , .,yn anh ta sẽ giải mã bằng hàm giải mã dk và thu được bản rõ gốc x1,x2 , .,xn
Hình 1.1 là một ví dụ về một kênh liên lạc
`
Rõ ràng là trong trường hợp này hàm mã hoá phải là hàm đơn ánh ( tức là ánh
xạ 1-1), nếu không việc giải mã sẽ không thực hiện được một cách tường minh
Ví dụ
y = ek(x1) = ek(x2) trong đó x1 x2 , thì B sẽ không có cách nào để biết liệu bản rõ là x1 hay x2
Trang 91.2 MỘT SỐ MÃ HÓA ĐƠN GIẢN:
1.2.1 Mã dịch vòng ( shift cipher)
1.2.1.1 Định nghĩa (modulo): Định nghĩa về đồng dư
Giả sử a và b là các số nguyên và m là một số nguyên dương Khi đó ta
a đồng dư với b theo modulo m" Số nguyên m được gọi là mudulus
Bây giờ ta có thể định nghĩa số học modulo m: Zm được coi là tập hợp {0,1, .,m-1} có trang bị hai phép toán cộng và nhân Việc cộng và nhân trong
Zm được thực hiện giống như cộng và nhân các số thực ngoài trừ một điểm là các kết quả được rút gọn theo modulo m
Ví dụ tính 11 13 trong Z16 Tương tự như với các số nguyên ta có 11
13 = 143 Để rút gọn 143 theo modulo 16, ta thực hiện phép chia bình thường:
143 = 8 16 + 15, bởi vậy 143 mod 16 = 15 trong Z16
Các định nghĩa trên phép cộng và phép nhân Zm thảo mãn hầu hết các quy tắc quen thuộc trong số học Sau đây ta sẽ liệt kê mà không chứng minh các tính chất này:
5 Phép nhân là đóng , tức là với a,b bất kì Zm , ab Zm
6 Phép nhân là giao hoán , nghĩa là với a,b bất kì Zm , ab = ba
7 Phép nhân là kết hợp, nghĩa là với a,b,c Zm , (ab)c = a(cb)
8 1 là phần tử đơn vị của phép nhân, tức là với bất kỳ a Zm
Trang 10của phần tử bất kì (a Zm ) là m-a, nghĩa là a+(m-a) = (m-a)+a = 0 với bất kì a Zm
10 Phép nhân có tính chất phân phối đối với phép cộng, tức là đối với a,b,c Zm , (a+b)c = (ac)+(bc) và a(b+c) = (ab) + (ac)
Vì phần tử ngược của phép cộng tồn tại trong Zm nên cũng có thể trừ các phần tử trong Zm Ta định nghĩa a-b trong Zm là a+m-b mod m Một cách tương tự có thể tính số nguyên a-b rồi rút gọn theo modulo m
Ví dụ : Để tính 11-18 trong Z31, ta tính 11+13 mod 31 = 24 Ngược lại, có thể lấy 11-18 được -7 rồi sau đó tính -7 mod 31 = 24
1.2.1.2 Định nghĩa mã dịch vòng:
Mã dịch vòng được xác định trên Z26 (do có 26 chữ cái trên bảng chữ cái tiếng Anh) mặc dù có thể xác định nó trên Zm với modulus m tuỳ ý Dễ dàng thấy rằng, mã dịch vọng (MDV) sẽ tạo nên một hệ mật như đã xác định ở trên, tức là dK (eK(x)) = x với mọi x Z26
Hình 1.2: Mã dịch vòng
Ta sẽ sử dụng MDV (với modulo 26) để mã hoá một văn bản tiếng Anh thông thường bằng cách thiết lập sự tương ứng giữa các kí tự và các thặng dư theo modulo 26 như sau: A 0,B 1, , Z 25 Vì phép tương ứng này còn dùng trong một vài ví dụ nên ta sẽ ghi lại để còn tiện dùng sau này:
Trang 1113 14 15 16 17 18 19 20 21 22 23 24 25
Trang 12Giả sử khoá cho MDV là K = 11 và bản rõ là:
Nhận xét rằng, MDV (theo modulo 26) là không an toàn vì nó có thể bị thám theo phương pháp vét cạn Do chỉ có 26 khoá nên dễ dàng thử mọi khoá dK
có thể cho tới khi nhận được bản rõ có nghĩa
1.2.2 Mã thay thế (MTT)
Trên thực tế MTT có thể lấy cả P và C đều là bộ chữ cái tiếng anh, gồm
26 chữ cái Ta dùng Z26 trong MDV vì các phép mã và giải mã đều là các phép toán đại số Tuy nhiên, trong MTT, thích hợp hơn là xem phép mã và giải mã như các hoán vị của các kí tự
Trang 13Sau đây là một ví dụ về phép hoán vị ngẫu nhiên tạo nên một hàm mã hoá (cũng như trước, các kí hiệu của bản rõ được viết bằng chữ thường còn các kí hiệu của bản mã là chữ in hoa)
Mỗi khoá của MTT là một phép hoán vị của 26 kí tự Số các hoán vị này
là 26!, lớn hơn 4 10 26 là một số rất lớn Bởi vậy, phép tìm khoá vét cạn không thể thực hiện được, thậm chí bằng máy tính Tuy nhiên, sau này sẽ thấy rằng MTT có thể dễ dàng bị thám bằng các phương pháp khác
Trang 14MDV là một trường hợp đặc biệt của MTT chỉ gồm 26 trong số 26! các hoán vị có thể của 26 phần tử Một trường hợp đặc biệt khác của MTT là mã Affine được mô tả dưới đây trong mã Affine, ta giới hạn chỉ xét các hàm mã có dạng:
e(x) = ax + b mod 26, a,b Z26 Các hàm này được gọi là các hàm Affine (chú ý rằng khi a = 1, ta có MDV)
Để việc giải mã có thể thực hiện được, yêu cầu cần thiết là hàm Affine phải là đơn ánh Nói cách khác, với bất kỳ y Z26, ta muốn có đồng nhất thức sau:
ax + b y (mod 26) phải có nghiệm x duy nhất Đồng dư thức này tương đương với:
Vì 26 = 2 13 nên các giá trị a Z26 thoả mãn UCLN(a,26) = 1 là a = 1,
Trang 15Một kết quả quan trọng trong lý thuyết số cho ta giá trị của (m) theo các thừa
số trong phép phân tích theo luỹ thừa các số nguyên tố của m ( Một số nguyên p
1 là số nguyên tố nếu nó không có ước dương nào khác ngoài 1 và p Mọi số nguyên m 1 có thể phân tích được thành tích của các luỹ thừa các số nguyên tố theo cách duy nhất Ví dụ 60 = 2 3 3 5 và 98 = 2 7 2 )
Ta sẽ ghi lại công thức cho (m) trong định lí sau:
i p
i p
1
i
p
Định lý này cho thấy rằng, số khoá trong mã Affine trên Zm bằng m x
(m), trong đó (m) được cho theo công thức trên ( Số các phép chọn của b là
m và số các phép chọn của a là (m) với hàm mã hoá là e(x) = ax + b)
Ví dụ, khi m = 60, m=2×2×3×5=22×31×51=>(60) = (22-21)( 31-30)(51-50) = 16
và số các khoá trong mã Affine là:
16 x 60=960
Một vài tính chất đáng lưu ý của hàm Erler()
(a) Nếu p là số nguyên tố thì
Trang 161.2.3.3 Định nghĩa (phần tử nghich đảo trong phép nhân):
Bằng các lý luận tương tự như trên, có thể chứng tỏ rằng a có nghịch đảo theo modulo m khi và chỉ khi UCLN(a,m) =1, và nếu nghịch đảo này tồn tại thì
nó phải là duy nhất Ta cũng thấy rằng, nếu b = a-1 thì a = b-1 Nếu p là số nguyên tố thì mọi phần tử khác không của ZP đều có nghịch đảo Một vành trong
đó mọi phần tử khác 0 đều có nghịch đảo được gọi là một trường
Bằng phương pháp thử và sai ta có thể tìm được các nghịch đảo của các phần tử nguyên tố cùng nhau với 26: 1-1 = 1, 3-1 = 9, 5-1 = 21, 7-1 = 15, 11-1 =
19, 17-1 =23, 25-1 = 25 (Có thể dễ dàng kiểm chứng lại điều này, ví dụ: 7 15 =
105 1 mod 26, bởi vậy 7-1 = 15)
Xét phương trình đồng dư y ax+b (mod 26) Phương trình này tương đương với
ax y-b ( mod 26)
Vì UCLN(a,26) =1 nên a có nghịch đảo theo modulo 26 Nhân cả hai vế của đồng dư thức với a-1 ta có:
a-1(ax) a-1(y-b) (mod 26)
Áp dụng tính kết hợp của phép nhân modulo:
Sau đây là nội dung của thuật toán Euclide mở rộng:
Cho m,n là hai số nguyên dương
Ta hãy tìm x,y,k sao cho mx + ny =k
Trang 17Đầu vào (input) : m,n (giả sử m>n)
đầu ra: x,y,k
Trang 18Chú ý : số trong ô a2 chính là nghịch đảo của 8mod95 (tức số y là nghịch đảo của n theo module m) (Trong trường hợp k=1)
Thật vậy ta có 12.8≡1mod95 Do đó từ định nghĩa 12 là nghịch đảo của 8 theo module95 (vì UCLN(8,95)=1 nên tồn tại nghịch đảo của 8 theo mod95)
Hình 1.4 cho mô tả đầy đủ về mã Affine
Ở đây, tất cả các phép toán đều thực hiện trên Z26 Ta sẽ kiểm tra liệu
dK(eK(x)) = x với mọi x Z26 không? Dùng các tính toán trên Z26 , ta có
dK(eK(x)) =dK(7x+3) =15(7x+3)-19 = x +45 -19
= x
Để minh hoạ, ta hãy mã hoá bản rõ "hot" Trước tiên biến đổi các chữ h,
o, t thành các thặng du theo modulo 26 Ta được các số tương ứng là 7, 14 và
19 Bây giờ sẽ mã hoá:
Trang 19
7 19 +3 mod 26 = 136 mod 26 = 6 Bởi vậy 3 ký hiệu của bản mã là 0, 23 và 6 tương ứng với xâu ký tự AXG
1.2.4.1 Khái niệm:
Giả sử m là một số nguyên dương, đặt P = C = (Z26)m Ý tưởng ở đây là lấy m
tổ hợp tuyến tính của m ký tự trong một phần tử của bản rõ để tạo ra m ký tự ở một phần tử của bản mã
Ví dụ nếu m = 2 ta có thể viết một phần tử của bản rõ là x = (x1,x2) và một phần tử của bản mã là y = (y1,y2) Ở đây, y1cũng như y2 đều là một tổ hợp tuyến tính của x1và x2 Chẳng hạn, có thể lấy
y1 = 11x1+ 3x2
y2 = 8x1+ 7x2 Tất nhiên có thể viết gọn hơn theo ký hiệu ma trận như sau
Nói chung, có thể lấy một ma trận K kích thước m m làm khoá Nếu một phần
tử ở hàng i và cột j của K là ki,,j thì có thể viết K = (ki,,j), với x = (x1, x2, ,xm)
km,1 km,2 km,m (y1, .,ym)=(x1, ….,xm)
Trang 201.2.4.2 Định nghĩa ( ma trận đơn vị)
Ma trận đơn vị m m (ký hiệu là Im ) là ma trận cấp m m có các số 1 nằm ở
đường chéo chính và các số 0 ở vị trí còn lại Như vậy ma trận đơn vị 2 2 là:
Im được gọi là ma trận đơn vị vì AIm = A với mọi ma trận đơn vị là ma trận
làm thành 1 nhóm nhân Ma trận nghịch đảo của ma trận A cấp m m ( nếu tồn tại) là ma trận A-1 sao cho AA-1 = A-1A = Im Không phải mọi ma trận đều có nghịch đảo, nhưng nếu tồn tại thì nó duy nhất
Với các định nghĩa trên, có thể dễ dàng xây dựng công thức giải mã đã nêu: Vì y = xK, ta có thể nhân cả hai vế của đẳng thức với K-1 và nhận được:
Trang 21det K = 11x7 – 8x3 mod 26 = 77 – 24 mod 26 = 53 mod 26 = 1
Bởi vậy bản mã của July là DELW Để giải mã Bob sẽ tính :
Như vậy Bob đã nhận được bản đúng
3 7
K-1 = 7 18
23 11 (9,20) 11 8 3 7 = (99+60, 72+140) = (3,4)
eK(x) = xK
Tất cả các phép toán được thực hiện trong Z26
Trang 221.2.5 Mã chuyển vị (Transposition):
Ý tưởng của MHV là giữ các ký tự của bản rõ không thay đổi nhưng sẽ thay đổi vị trí của chúng bằng cách sắp xếp lại các ký tự này MHV (còn được gọi là mã chuyển vị) đã được dùng từ hàng trăm năm nay
Định nghĩa Mã hoán vị
Ví dụ 1.6
Giả sử m = 6 và khoá là phép hoán vị =(1 2 3 4 5 6 )
Khi đó phép hoán vị ngược -1 sẽ là: -1=(1 2 3 4 5 6 )
Bây giờ giả sử có bản rõ
EESLSH SALSES LSHBLE HSYEET HRAEOS
Để giải bản mã này ta dùng phép hoán vị -1
Thực tế mã hoán vị là trường hợp đặc biệt của mật mã Hill Khi cho phép
(3,4) 7 18 23 11 = (9,20)
Cho m là một số nguyên dương xác định nào đó Cho P = C = (Z26 )m và cho K gồm tất cả các hoán vị của {1, , m} Đối một khoá ( tức là một hoán vị) ta xác định
e(x1, , xm ) = (x(1), , x(m))
và d(x1, , xm ) = (y -1(1), , y -1(m))
trong đó -1 là hoán vị ngược của
Trang 23hoán vị của tập {1, ,m}, ta có thể xác định một ma trận hoán vị m m thích hợp K = { ki,j} theo công thức:
( ma trận hoán vị là ma trận trong đó mỗi hàng và mỗi cột chỉ có một số "1", còn tất cả các giá trị khác đều là số "0" Ta có thể thu được một ma trận hoán vị từ
ma trận đơn vị bằng cách hoán vị các hàng hoặc cột)
Dễ dàng thấy rằng, phép mã Hill dùng ma trận K trên thực tế tương đương với phép mã hoán vị dùng hoán vị Hơn nữa K-1= K -1 tức ma trận nghịch đảo của K là ma trận hoán vị xác định theo hoán vị -1 Như vậy, phép giải mã Hill tương đương với phép giải mã hoán vị
Đối với hoán vị được dùng trong ví dụ trên, các ma trận hoán vị kết hợp là:
Trang 24CHƯƠNG 2 CHUẨN MÃ DỮ LIỆU (DES)
Các hệ mật mã truyền thống được trình bày ở chương 1 có một số ưu điểm là mã hóa và giải mã bằng thủ công được thực hiện rất dễ dàng , việc trao đổi khóa mã cũng đơn giản bằng thủ công hoặc bằng qui ước Song với lượng thông tin quá phong phú như hiện nay và với mạng truyền thông như hiện nay thì mật mã thủ công vừa không đảm bảo bí mật lại việc mã hóa quá chậm khó tự động hóa mã và giải mã Mặt khác các thuật toán mã hóa thủ công đòi hỏi phải tuyệt đối dữ bí mật…Như vậy mật mã thủ công đòi hỏi bảo mật cả thuật toán mã hoa svaf cả khóa mã
Sau nhưng năm 70 của thế kỷ trước, các nhà toán học đã nghiên cứu và tạo ra nhiều phương thức mật mã với tốc độ mã hóa rất nhanh (hàng chục thậm chí hàng trăm kilo Byte trong một giây) và người ta chỉ cần giữ bí mật khóa mã
và mã hóa được mọi dữ liệu tùy ý Đó là một bước tiến vĩ đại của kỹ thuật mật
mã Trong đó mã DES (Data Encryption Standard) là một điển hình của bước tiến này Chương này, em muốn mô phỏng mã hóa và giải mã của thuật toán DES
2.1 MÔ TẢ DES (Data Encryption Standard)
DES mã hoá một xâu bít x:
Bản rõ x độ dài 64 bit
khoá k độ dài 56 bít
Bản mã y nhận được cũng là một xâu bít có độ dài 64 bit
Thuật toán tiến hành theo 3 giai đoạn:
1.Với bản rõ cho trước x, một xâu bít x0 sẽ được xây dựng bằng cách hoán
vị các bít của x theo phép hoán vị cố định ban đầu IP
Ta viết:x0= IP(X) = L0R0, trong đó L0 gồm 32 bít đầu và R0 là 32 bít cuối
2 Sau đó tính toán 16 lần lặp theo một hàm xác định Ta sẽ tính LiRi, 1 i
16 theo quy tắc sau:
Li = Ri-1
Ri = Li-1 f(Ri-1,Ki) trong đó
Trang 25 kí hiệu cộng theo modulo 2 của hai xâu bít
f là một hàm mà của Ri-1,Ki mô tả sau
Ki là các xâu bít độ dài 48 được tính như hàm của khoá K ( trên thực tế mỗi Ki là một phép chọn hoán vị bít trong K)
3 Áp dụng phép hoán vị ngược IP -1 cho xâu bít R16L16, ta thu được bản
Trang 26Theo bảng này có nghĩa là bít thứ 58 của x là bít đầu tiên của IP(x); bít thứ 50 của x là bít thứ hai của IP(x), bit ở vị trí thứ 7 là bit cuối của IP(x)
+ Biến thứ nhất A là xâu bít độ dài 32, + Biến thứ hai J là một xâu bít độ dài 48
+ Đầu ra của f là một xâu bít độ dài 32 Hàm f thực hiện theo các bước sau:
Xâu bit của Ri-1 được mở rộng thành một xâu bít có độ dài 48 theo một hàm mở rộng cố định E
Trang 27E(Ri-1) gồm 32 bít của Ri-1 (được hoán vị theo cách cố định) với 16 bít xuất hiện hai lần Theo bảng Ebit ở vị trí thứ 32 là bit đầu tiên của E(Ri-1), ở vị trí thứ 1 là bit thứ 2 và bit cuối của E(Ri-1)
Bước 2:Xác định biến thứ hai (biến J) :
Biến j thực chất là phép hoán vị và dịch vòng của xâu bit khóa k,
Trang 28Theo sơ đồ trên việc xác định Ki được thực hiện theo 03 bước sau:
Bước 1 Với khóa K 64 bit cho trước hoán vị các bít của K theo
phép hoán vị cố định PC-1 Ta viết:
PC-1(K) = C0D0
Khi thực hiện hoán vị K theo PC-1 thi chỉ còn lại 56 bit Trong đó C0 là
28 bit đầu và D0 là 28 bit cuối
LS 16 LS 16
C 16 D 16 PC-2 K 16
Trang 30Ta có sơ đó tính hoạt động của hàm f(Ri-1,Ki):
Sau đó , mỗi Bi được đưa vào hộp Si , i=1,8 và biến đổi để cho đầu ra là Ci gồm
4 bít (i= 1,8).Sự biến đổi này hoạt động như sau:
Giả sử Bi gồm 6 bít là Bi=bi1bi2…bi6.Khi đó ,bi1 và bi6 được nhập thành cặp bi1bi6
được chuyển thành số thập phân từ 0 đến 3.Ví dụ:
Trang 31Vậy đầu ra của 8 hộp S là:
C1,C2,….,C8 mỗi Ci gồm gồm 4 bít tạo thành khối C= C1 C2….C8 gồm 32 bít 32 bít này được đưa vào ma trận chuyển vi P để cho đầu ra cũng là 32 bít Đó là đầu ra của hàm f(Ri-1,Ki)
Ta có thể trình bầy cụ thể cách tính hàm f như sau:
Với xâu bít có độ dài 6bit (Kí hiệu Bi = b1b2b3b4b5b6), ta tính Sj(Bj) như sau: Hai bít b1b6 xác định biểu diễn nhị phân của hàng r của Sj ( 0 r 3) và bốn bít (b2b3b4b5) xác định biểu diễn nhị phân của cột c của Sj ( 0 c 15 ) Khi
đó Sj(Bj) sẽ xác định phần tử Sj(r,c); phần tử này viết dưới dạng nhị phân là một
Trang 32xâu bít có độ dài 4 ( Bởi vậy, mỗi Sj có thể được coi là một hàm mã mà đầu vào là một xâu bít có độ dài 2 và một xâu bít có độ dài 4, còn đầu ra là một xâu bít có độ dài 4) Bằng cách tương tự tính các Cj = Sj(Bj), 1 j 8
Thật vậy mỗi chuỗi B là một chuỗi 6 bit trong đó bit đầu và bit cuối được dùng để xác định vị trí của hàng trong phạm vi từ 0 đến 3 (hoặc từ 00 đến 11) bốn bit giữa dùng để xác định vị trí của cột trong phạm vi từ 0 đến 15 (hoặc từ
0000 đến 1111) Sau khi xác định được vị trí của hàng và cột ta đối chiếu trong bảng S được một số thập phân quy đổi số thập phân đó ra gia trị nhị thân ta được
Cj
Ví dụ: Bit đầu vào của B là B = 100110
Bit đầu và cuối là “10” cho ta thứ tự của hàng là 2 bốn bít giữa là “0011” cho ta thứ tự của cột là 4 Đối chiếu với hộp S1 xuất hiện só 14, chuyển 14 sang nhị phân 14 = 1110 Vậy S(B) = S(100110) = 1110
Trang 34Sau khi thực hiện các phép đối chiếu hộp S ta được các giá trị SiBi
Tính hàn f =P (S1(B1) = S2(B2) ………… S8(B8) thực hiện theo phép hoán vị P
Theo bảng p thì bit thứ 16 và bit thứ 7 của xâu bit Sj(Bj) là bit thứ nhất và bít thứ 2 của hàm f………
Trang 35L i R i được xác định theo công thức sau:
L i = R i-1
R i =L i-1 + f(R i-1 , K i )
bản mã y được xác định theo công thức
M = 0000.0001 0010.0011 0100.0101 0110.0111 1000.1001 1010.1011 1100.1101 1110.1111
8 16 24 32
L = 0000.0001 0010.0011 0100.0101 0110.0111
40 48 56 64
Trang 36L0 = 1100.1100 0000.0000 1100.1100 1111.1111
R0 = 1111.0000 1010.1010 1111.0000 1010.1010
Bước 2: xác định khóa Ki
K = 0001.0011 0011.0100 0101.0111 0111.1001 1001.1011 1011.1100 1101.1111 1111.1001
Hoán vị khóa K theo phép hoán vị PC-1 ta thu được PC-1(K):
Trang 37C i D i = C i-1 D i-1 dịch trái 1 lần : với i = 1, 2, 9, 16
= C i-1 D i-1 dịch trái 2 lần : với i còn lại
Trang 40Ta tính : Ki + E (Ri-1) = B1 B2 B3 B4 B5 B6 B7 B8 Tìm E (Ri-1): hoán vị Ri-1 theo phép hoán vị E