Download as pdf or txt
Download as pdf or txt
You are on page 1of 45

AN TOÀN HTTT

3. Mật mã học
Nội dung

 Mật mã học
 Các hệ mã cổ điển
Mật mã học
Thuật ngữ

 Cryptology/Mật mã học  Nghệ thuật và khoa học tạo và phá “mã


bí mật”
 Cryptography/Mật mã  tạo “mã bí mật”
 Cryptanalysis/Thám mã  phá “mã bí mật”
 Crypto/Khoa học mật mã

4
Khái niệm

 Bản rõ/plaintext – thông điệp nguyên gốc


 Bản mã/ciphertext – thông điệp mã
 Mã/cipher – thuật toán chuyển từ bản rõ => bản mã
 Giải mã

 Khóa/key – thông tin bổ sung dùng trong mã để các bên sử dụng



Khái niệm

 Mã hóa/encipher (encrypt) – quá trình biến đổi bản rõ => bản mã


 Giải mã/decipher (decrypt) – biến đổi bản mã => bản rõ
 Mật mã học/cryptography – lĩnh vực nghiên cứu về các thuật toán,
phương pháp mã hóa
 Thám mã/cryptanalysis (codebreaking) – nghiên cứu phương pháp
phá mã, giải mã mà không cần biết về khóa
Khoa học mật mã

 Các giả thiết cơ bản


• Hệ thống được biết rõ (hoàn toàn) bởi kẻ tấn công
• Chỉ có khóa là bí mật
• Nghĩa là, các giải thuật mật mã không được giữ bí mật
 Giả thiết này được gọi là Kerckhoffs’ Principle/nguyên tắc Kerckhoff
 Tại sao chúng ta thiết đặt giả thiết này?
• Kinh nghiệm chứng tỏ các giải thuật mật mã khó giữ bí mật sau khi được công
bố
• Các giải thuật mật mã không bao giờ được giữ bí mật
• Tốt hơn là tìm ra các điểm yếu trước

7
Một số phân loại

 Dựa vào số lượng khóa


• Hàm băm/hash: không có khóa
• Mã khóa bí mật/secret key: một khóa
• Mã khóa công khai/Public key : hai khóa
 Kiểu thao tác mã hóa
• Thay thế / biến đổi / tích
 Cách xử lý bản rõ
• Mã khối / mã dòng
Khóa mã bí mật & thuật toán

 Khó giữ bí mật nếu dùng phổ biến:


• Lần ngược
 Thương mại: được công bố công khai
• Xem xét bởi nhiều tổ chức/cá nhân, tin cậy
 Quân sự: tránh lộ các thông tin, ý tưởng cho đối phương
Sơ đồ thám mã

 Chỉ biết bản mã / Ciphertext only:


• Tìm đến khi được bản giải có nghĩa
• Nói chung cần bản mã tương đối dài
 Biết bản rõ / Known plaintext:
• Có thể truy cập bộ mã hóa, từ đó có các cặp <bản mã, bản rõ> tương ứng
• Khá hiệu quả với hệ mã đơn ký tự
Bảo mật tính toán & vô điều kiện

 Bảo mật vô điều kiện


• Với năng lực tính toán vô hạn, hệ mã không bị phá vỡ
• Từ bản mã, không trích rút được thông tin về bản rõ tương ứng
• Vd sơ đồ một lần
 Bảo mật tính toán
• Chi phí để phá mã lớn hơn giá trị của thông tin
• Số lượng phép toán để phá mã rất lớn
• Thời gian cần để phá mã vượt quá thời hạn hiệu lực/có ý nghĩa của thông tin
Brute Force

 Luôn có phương án phá mã: thử tất cả các khóa có thể


 Phương án tấn công cơ bản, tỷ lệ với kích thước khóa
 Giả định nhận biết được bản rõ
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)
32 232 = 4,3 x 109 231 μs = 35,8 phút 2,15 ms
56 256 = 7,2 x 1016 255 μs = 1142 năm 10,01 giờ
128 2128 = 3,4 x 1038 2127 μs = 5,4 x 1024 năm 5,4 x 1018 năm
168 2168 = 3,7 x 1050 2167 μs = 5,9 x 1036 năm 5,9 x 1030 năm
26 ký tự 26! = 4 x 1026 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

An ninh Mạng 13
Một số hệ mã cổ điển
Mật mã thời cổ đại

 Scytale (~487 Tr. CN.)


 ~ 200 Tr.CN. Polybius square
Mật mã khóa bí mật

 Bên gửi Alice cần gửi thông điệp x tới Bob


 Thông tin gửi qua kênh truyền không an toàn => kẻ thứ 3: xem lén..

 Bên gửi A:
• mã hóa x thành bản mã y: khóa mã k
 Truyền bản mã y
 Bên nhận B:
• giải mã y thành thông điệp gốc x
 Mã hóa và giải mã:
• tham số khóa mã, khóa giải k
 Định nghĩa hình thức
Hệ mã: bộ S=(P,C,K,E,D)
• P: không gian từ hiện - tập hữu hạn từ hiện ~ plaintext
• C: không gian từ mã - tập hữu hạn từ mã ~ ciphertext
• K: không gian khóa - tập hữu hạn các khóa mã
• Với khóa k  K, có quy tắc/hàm mã hóa ek  E, giải mã dk  D
thỏa
 Ánh xạ ký tự –> số
Mã chuyển dịch (Shift cipher) - mã cộng

 Xuất hiện từ sớm - mã Ceasar


• Mô tả

• Quy ước mã hóa ký tự :

 Ví dụ: từ hiện "khoatoan", khóa k=11


• mã hóa:
Mã chuyển dịch (Shift cipher)

 Mã J. Caesar:
• khoảng thế kỷ 1 Tr.CN.
• Khóa: dịch 3 ký tự

Key
Plaintext ab c d e f g h i j k l mn o p q r s t u v w x y z
Ciphertext D E F G H I J K L MN O P Q R S T U VWX Y Z A B C

Plaintext: Ciphertext:
fourscoreandsevenyearsago IRXUVFRUHDQGVHYHQBHDUVDJR
Mã chuyển dịch (Shift cipher)

 Tổng quát: Mật mã một bảng thế


• khóa là bảng hoán vị: ánh xạ bảng chữ bản rõ => bảng chữ bản mã

• Bảng chữ (bản rõ, bản mã): không nhất thiết trùng, không nhất thiết là bảng
chữ cái - mà có thể là bất kỳ bảng ký hiệu (symbol) nào
Thám mã I: Thử tất cả

 Thay thế đơn giản (dịch n) được sử dụng


• Không biết khóa (n)
 Cho bản mã: CSYEVIXIVQMREXIH
 Làm sao để tìm được khóa?
 Có tất cả 26 khóa có thể thử toàn bộ!
(Exhaustive key search/Vét cạn tất cả các khóa)
 Kết quả: khóa n = 4

23
Thám mã II: Thông minh hơn

 Biết mật mã thay thế đơn giản được dùng


 Không nhất thiết là phép dịch n
 Tìm khóa tạo ra bản mã sau:
 PBFPVYFBQXZTYFPBFEQJHDXXQVAPTPQJKTOYQWIPBVWLXTOXBTF
XQWAXBVCXQWAXFQJVWLEQNTOZQGGQLFXQWAKVWLXQWAEBIPBFX
FQVXGTVJVWLBTPQWAEBFPBFHCVLXBQUFEVWLXGDPEQVPQGVPPBF
TIXPFHXZHVFAGFOTHFEFBQUFTDHZBQPOTHXTYFTODXQHFTDPTOGH
FQPBQWAQJJTODXQHFOQPWTBDHHIXQVAPBFZQHCFWPFHPBFIPBQW
KFABVYYDZBOTHPBQPQJTQOTOGHFQAPBFEQJHDXXQVAVXEBQPEFZB
VFOJIWFFACFCCFHQWAUVWFLQHGFXVAFXQHFUFHILTTAVWAFFAWTE
VOITDHFHFQAITIXPFHXAFQHEFZQWGFLVWPTOFFA

24
Thám mã II

 Không thể thử hết khóa có thể


 Có thể thông minh hơn không?
 Thống kê tần suất xuất hiện của các chữ cái (trong văn bản tiếng
anh) 0.14

0.12

0.10

0.08

0.06

0.04

0.02

0.00
A C E G I K M O Q S U W Y
25
Thám mã II

 Bản mã:
PBFPVYFBQXZTYFPBFEQJHDXXQVAPTPQJKTOYQWIPBVWLXTOXBTFXQWAXBVCXQWAXFQJVWLE
QNTOZQGGQLFXQWAKVWLXQWAEBIPBFXFQVXGTVJVWLBTPQWAEBFPBFHCVLXBQUFEVWLXGDP
EQVPQGVPPBFTIXPFHXZHVFAGFOTHFEFBQUFTDHZBQPOTHXTYFTODXQHFTDPTOGHFQPBQWAQ
JJTODXQHFOQPWTBDHHIXQVAPBFZQHCFWPFHPBFIPBQWKFABVYYDZBOTHPBQPQJTQOTOGHFQ
APBFEQJHDXXQVAVXEBQPEFZBVFOJIWFFACFCCFHQWAUVWFLQHGFXVAFXQHFUFHILTTAVWAFFA
WTEVOITDHFHFQAITIXPFHXAFQHEFZQWGFLVWPTOFFA

 Phân tích bản mã này sẽ có kết quả thống kê sau

Số tần suất xuất hiện:


A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
21 26 6 10 12 51 10 25 10 9 3 10 0 1 15 28 42 0 0 27 4 24 22 28 6 8

26
Mã đơn ký tự >< đa ký tự

 Các hệ mã một bảng thế ở trên gọi là mã đơn ký tự -


monoalphabetic
• Khi đã xác định khóa k (xđ hoán vị) thì mọi ký tự x trongbản rõ được mã hóa
thành ký tự mã y duy nhất
• => Thống kê trên bảng rõ sẽ thể hiện trên bảng mã
• => Có thể thám mã bằng phương pháp thống kê
 Cần hệ mật để các quy luật thống kê trên bản rõ không bảo toàn
trên bản mã
• Bảng thế đồng âm - homophonic substitution ciphers
• Đa bảng thế - polyalphabetic
Mã bảng thế đồng âm

 Ý tưởng: "bằng phẳng hóa" đồ thị tần suất trên bản mã


 Mã với bảng thế đồng âm (homophonic substitution ciphers)
• Mỗi từ bản rõ - ánh xạ với tập con các từ bản mã
mã hóa: từ bản rõ được mã thành 1 trong tập từ đó
• vd: A  {17,11,25,64,219,4,31},...
xâu bản rõ: PLAIN
xâu bản mã: 53,71,11,13
Mã nhiều bảng thế, mã Vigenere

 Mã đa ký tự/đa bảng thế - polyalphabetic


• Một ký tự bản rõ có thể được ánh xạ tới nhiều ký tự mã
 Mã Vigenere
• Ý tưởng: Alberti - 2 bảng thế
• Khóa: khóa k là từ độ dài m
• mã hóa:
• chia khối m ký tự
• "cộng" khối với từ khóa
• giải mã:
• chia khối m ký tự
• "trừ" khối với từ khóa
 Mã vigenere
• ví dụ
• khóa k: từ cipher
• xâu bản rõ: khoatoanbkhn
• key block: , 2 , 8 , 15 , 7 , 4 , 17
• xâu bản rõ:, 10 , 7 , 14 , 0 , 19 , 14 , 0 , 13 , 1 , 10 , 7 , 13
 2 , 8 , 15 , 7 , 4 , 17 2 , 8 , 15 , 7 , 4 , 17
• cipher (int) 12, 15 , 3 , 7 , 23 , 5 , 2 , 21 ,16 , 17 , 11 , 4
• CIPHER TEXT : MPDHXF CVQRLE
Mã chuyển vị Rail Fence cipher

 Cơ chế: viết các ký tự của thông điệp theo đường chéo trên n dòng
 Sau đó đọc/ghép theo dòng để được bản mã
 Ví dụ viết như sau:
m e m a t r h t g p r y
e t e f e t e o a a t
 Được bản mã
MEMATRHTGPRYETEFETEOAAT
Mã chuyển vị kép - Double Transposition

 Plaintext: attackxatxdawn

Permute rows
and columns


 Ciphertext: xtawxnattxadakc
 Key is matrix size and permutations:
(3,5,1,4,2) and (1,3,2)

32
One-time-pad

 Đề xuất bởi Vernam (1917)


 Mô tả
• Khóa:
• là xâu/từ độ dài bằng >= xâu bản rõ, sinh ngẫu nhiên
• mỗi khóa chỉ dùng 1 lần
• Mã hóa: dịch theo bảng thế, hoặc phép tính + modulo

• ~ mã Vigenere với khóa mã là xâu ngẫu nhiên dài bằng xâu bản rõ
One-Time Pad: Mật mã một lần

e=000 h=001 i=010 k=011 l=100 r=101 s=110 t=111

Encryption: Plaintext  Key = Ciphertext

h e i l h i t l e r
Plaintext: 001 000 010 100 001 010 111 100 000 101
Key: 111 101 110 101 111 100 000 101 110 000
Ciphertext: 110 101 100 001 110 110 111 001 110 101

s r l h s s t h s r

34
One-Time Pad: Giải mã

e=000 h=001 i=010 k=011 l=100 r=101 s=110 t=111

Decryption: Ciphertext  Key = Plaintext

s r l h s s t h s r
Ciphertext: 110 101 100 001 110 110 111 001 110 101
Key: 111 101 110 101 111 100 000 101 110 000
Plaintext: 001 000 010 100 001 010 111 100 000 101

h e i l h i t l e r

35
One-Time Pad

Sử dụng khóa khác để giải mã:


s r l h s s t h s r
Ciphertext: 110 101 100 001 110 110 111 001 110 101
“key”: 101 111 000 101 111 100 000 101 110 000
“Plaintext”: 011 010 100 100 001 010 111 100 000 101

k i l l h i t l e r
e=000 h=001 i=010 k=011 l=100 r=101 s=110 t=111

36
One-Time Pad

Hay khóa là…


s r l h s s t h s r
Ciphertext: 110 101 100 001 110 110 111 001 110 101
“key”: 111 101 000 011 101 110 001 011 101 101
“Plaintext”: 001 000 100 010 011 000 110 010 011 000

h e l i k e s i k e
e=000 h=001 i=010 k=011 l=100 r=101 s=110 t=111

37
One-Time Pad Summary

 Provably secure/An toàn có thể chứng minh


• Bản mã không đưa thông tin gì về bản hiện
• Tất cả các bản hiện là equally likely/tương đương
nhau
 Nhưng, chỉ khi sử dụng một cách chính xác
• Pad phải là ngẫu nhiên và chỉ sử dụng 1 lần
• Chỉ có người gửi và người nhận biết Pad
 Lưu ý: pad (key) có cùng kích thước với
thông tin
 Nhưng, tại sao không trao đổi thông tin trực
tiếp thay vì phải trao đổi pad? 38
Tích các hệ mã

 Tăng tính mật của hệ mã


• tăng độ lớn không gian khóa
• chèn thêm đoạn văn bản ngẫu nhiên
S2
ek2()
ek1()
 Kết hợp nhiều hệ mã qua tích
 Giả sử các hệ mã có P= C x
y
z

 Tích hai hệ mã
S1
• Xét 2 hệ mã và
Hệ mã tích: được xác định
• Khóa k là cặp
• Hàm mã hóa là hàm hợp ,
• Hàm giải mã ,
Tích các hệ mã

 Nhận xét
• Phân bố xác suất của khóa

• Nếu S1 = S2: mã lặp
• Nếu thì S gọi là lũy đẳng
• Tránh lũy đẳng: có thể tích của các hệ mã khác nhau
• Nếu tích không lũy đẳng: độ bảo mật của mã tích tăng
• Không gian khóa
Mã Huffman

 Mã Huffman
• Là một mã độ dài biến đổi, thường dùng để nén không mất thông tin
• Dựa trên phân bố xác suất

• Biến ngẫu nhiên X, có thể lấy hữu hạn giá trị xi , có phân bố xác suất p(X)
• Gọi sự tạo mã (encoding) là ánh xạ phần tử x tương ứng xâu nhị phân
 : X  {0, 1}*
• Cho từ x1x2..xn , mở rộng ánh xạ 
 (x1 .. xn) =  (x1) ..  (xn)
là phép nối các chuỗi ký tự. Theo đó ta có ánh xạ:
: X*  { 0, 1}*
• Để giải mã không nhập nhằng => ánh xạ  là đơn ánh.
Mã Huffman

 Ví dụ: Giả sử X = {a, b, c, d}, xem xét các mã hoá sau


 (a) = 1  (b) = 10  (c) = 100 (d) = 1000
g(a) = 0 g(b) = 10 g(c) = 110 g(d) = 111
h(a) = 1 h(b) = 01 h(c) = 10 h(d) = 11
• hàm h: không là đơn ánh
• hàm f , g là đơn ánh
• hàm g : giải mã tức thời, f: không tức thời
Thuật toán xây dựng ánh xạ mã Huffman

 Gán nhãn cho phần tử


 Lặp
• chọn 2 phần tử xác xuất nhỏ nhất
• Gộp thành 1 phần tử mới
• Gán nhãn cho 2 phần ban đầu
• 0: phần tử xác xuất nhỏ hơn
• 1: phần tử xác xuất lớn hơn
Thuật toán xây dựng ánh xạ mã Huffman

 Ví dụ:
• Bảng chữ có phân bố xác suất bên:
• Xây dựng ánh xạ mã Huffman

• e = 1, d=011, c=010, b=001 và a=000

You might also like