You are on page 1of 60

BẢO MẬT THÔNG TIN

(Computer Security)

1
Tài liệu tham khảo
1. A. J. Menezes, P. van Oorschot, and S.
Vanstone, Handbook of Applied Cryptography.
CRC Press, 1996.
www.cacr.math.uwaterloo.ca/hac
2. B. Schneier, Applied Cryptography, Protocols,
Algorithms and Source Code in C. John Wiley and
Sons, 1995.
3. William Stallings, Cryptography and Network
Security: Principles and Practice, Prentice Hall,
2002.
4. http://math.scu.edu/~eschaefe/index.html
5. Keywords: cryptography, security

2
Mã hóa và Bảo mật
(Cryptography and Computer Security)

• Mục đích, nội dung môn học


• Tại sao cần bảo mật thông tin?
• Khoa học về mã hóa là gì?

3
Bảo mật thông tin
(Computer Security)
• Thông tin là nguồn tài nguyên chiến lược
• Bảo mật thông tin được coi như tài sản vật chất của
chính quyền
• Sự bùng nổ của CNTT đòi hỏi những phương tiện
tự động và kỹ thuật bảo mật thích hợp
• Ngân sách đáng kể đầu tư cho CNTT
• Bảo mật TT liên quan đến:
– Lưu trữ và xử lý thông tin trên 1 máy tính
– Trao đổi thông tin giữa các máy tính
• Cần xác định các yêu cầu bảo mật và thực hiện
chúng một cách nghiệm túc
4
Các thành phần của BMTT
• Các yếu tố đe dọa
• Các kiểu tấn công
• Các mô hình bảo mật
• Các dịch vụ bảo mật
• Các cơ chế bảo mật
• Mã hóa và các công cụ

5
Các yếu tố đe dọa sự bí mật
• Tỷ lệ thuận với kích thước và phạm vi của
tài nguyên cần giữ bí mật.
• Các yếu tố thống kê được:
– 55% - Lỗi do sơ ý của con người
– 10% - Sự bất bình của nhân viên
– 10% - Sự không trung thực của nhân viên
– 10% - Sự truy cập của kẻ lạ
– 15% - Nguyên nhân khách quan (hỏa hoạn, bão
lụt, động đất, …)

6
Các kiểu tấn công (1)
1. Làm gián đoạn dịch vụ (interruption): Tấn
công vào tính sẵn sàng - availability
2. Lấy trộm TT trên đường truyền
(interception): Tấn công vào tính bí mật -
confidentiality
3. Thay đổi TT (modification): Tấn công vào
tính toàn vẹn - integrity
4. Mạo danh để tạo TT (fabrication): Tấn công
vào tính xác thực - authenticity
• Tấn công bị động và chủ động (passive
and active attacks)
7
Các kiểu tấn công (2)

8
Các kiểu tấn công (3)

9
Mô hình bảo mật – Truy cập máy tính

• Chọn các chức năng thích hợp của gatekeeper để xác định users
• Thực hiện kiểm tra để chắc chắn rằng chỉ có users có quyền mới
có thể tiếp cận các thông tin hay tài nguyên tương ứng

10
Mô hình bảo mật – trao đổi TT
• Thiết kế thuật toán truyền dữ liệu an toàn
• Phát triển các phương pháp phân bổ thông tin mật
• Tạo nghi thức cho các dụng dịch vụ truyền thông an toàn

11
Các dịch vụ bảo mật
(Security services)
1. Bí mật (Confidentiality or secrecy):
• Kẻ lạ không thể hiểu được dữ liệu
2. Toàn vẹn dữ liệu (Data integrity)
• Bảo vệ sự thay đổi của dữ liệu
3. Xác thực dữ liệu (Data origin authentication)
• Xác định nguồn, nơi dữ liệu được truyền đi
4. Không thể chối cãi (Non-repudiation)
• Người đã truyền dữ liệu không thể phủ nhận
5. Kiểm tra truy cập (Access control)
• Cấm kẻ lạ truy cập đến các dữ liệu mật
12
Các cơ chế bảo mật

• Vật lý - Physical Controls (kiểm soát tiếp cận TT)


• Chính sách - Policies (giáo dục, thường xuyên
thay đổi mật khẩu)
• Phần mềm - Software Controls (hạn chế truy cập
đến CSDL, bảo vệ giữa các user với nhau)
• Phần cứng - Hardware Controls (thẻ truy cập,
biometrics)
• Mã hóa - Encryption

13
Khoa học mã hóa là gì?
• Cryptography = Crypto (secret) + Graphy
(writing)
• Liên quan đến việc phát triển các thuật toán,
được sử dụng để:
– Che dấu 1 phần thông điệp, chỉ có người gửi và
người nhận là có thể hiểu
– Kiểm tra tính toàn vẹn của thông điệp cũng như
tính hợp lệ của người gửi thông điệp
• Là cơ sở của nhiều giải pháp công nghệ
trong việc giải quyết bài toán bảo mật thông
tin.
14
Công cụ của bảo mật
1. Quy trình mã hóa (encryption schemes)
– Làm cho dữ liệu trở nên bí mật
2. Quy trình chữ ký (signature schemes)
– Để ký dữ liệu, bảo đảm sự toàn vẹn, xác thực
của dữ liệu và không thể chối cãi của người gửi
3. Các hàm băm (cryptographic hash functions)
– Cho phép thu nhỏ nhưng vẫn kiểm tra được
những thay đổi của dữ liệu
4. Qui trình nhận diện (identification schemes)
– Cho phép nhận biết các thực thể (người,
computer, …)

15
Công cụ của bảo mật (2)
5. Mã xác thực thông điệp
(message authentication codes - MAC)
– Cung cấp sự toàn vẹn dữ liệu
6. Nghi thức khóa thỏa thuận
(key agreement protocols)
– Tạo nên một khóa bí mật dùng chung giữa hai
hoặc một vài đối tượng
7. Qui trình tạo số ngẫu nhiên
(pseudorandom number generator)
– Cho phép tạo ra các số ngẫu nhiên dưới dạng
chuỗi các bits. Dùng để tạo ra các khóa.

16
Một số thuật ngữ
• Cryptography (khoa học mã hóa)
– Khoa học bao gồm các nguyên tắc và phương pháp biến
đổi 1 thông điệp dễ hiểu thành không thể hiểu được và
sau đó khôi phục lại thông điệp gốc
• Plaintext (bản nguồn)
– Là thông điệp dễ hiểu ban đầu
• Ciphertext (bản mã)
– Là thông điệp đã bị biến đổi
• Cipher (thuật toán mã)
– Thuật toán biến đổi 1 thông điệp dễ hiểu thành không thể
hiểu được sử dụng phương pháp đổi chỗ và thay thế
• Key (khóa)
– Thông tin đặc biệt được sử dụng trong Cipher và thường
chỉ có người gửi và người nhận biết
17
Một số thuật ngữ (2)
• Encipher (encode) (mã hóa)
– Quá trình biến đổi plaintext thành ciphertext, sử dụng
cipher và key
• Decipher (decode) (giải mã)
– Quá trình biến đổi ngược ciphertext thành plaintext,
sử dụng cipher và key
• Cryptanalisis (codebreaking) (khoa học thám mã)
– Khoa học nghiên cứu các nguyên tắc và phương pháp
biến đổi ngược ciphertext thành plaintext khi không
biết key
• Cryptology (khoa học mật mã)
– Cryptology = Cryptography + Cryptanalisis

18
Một số khái niệm
• Encryption (Hàm mã)
– Hàm toán học biến đổi plaintext thành ciphertext sử
dụng khóa K: C = EK (P)
• Decryption (Hàm giải mã)
– Hàm toán học biến đổi ciphertext thành plaintext sử
dụng khóa K: P = EK-1(C)
• Cryptographic system (Hệ thống mã hóa)
– Họ các phép biến đổi trong đó hàm mã hóa EK đã
được chọn
• Key (khóa)
– Các thông số xác định 1 phép biến đổi cụ thể đã
được chọn. Khóa được chọn từ keyspace K
• Ta thường cho rằng Cryptographic system là công
khai chỉ có khóa là bí mật
19
Các thuật toán (TT)
• TT mã hóa dùng khóa bí mật (private-key)
• TT mã hóa dùng khóa công khai (public-key)
• TT chữ ký số (digital signature)
• Các hàm băm (hash functions)
• Các TT mã hóa khóa bí mật được chia làm 2
loại:
– Mã hóa theo luồng (stream ciphers)
– Mã hóa theo khối (block ciphers)

20
Mã hóa và Bảo mật thông tin

Khoa học về mật mã

Mã hóa Thám mã

Khóa bí mật Khóa công khai Các nghi thức

Mã hóa theo khối

Mã hóa theo luồng

Khóa bí mật: Qui trình mã hóa và giải mã có từ hơn 3000 năm nay
Khóa công khai : Bắt đầu từ năm 1976 (Diffie-Hellman)
Hỗn hợp: Các nghi thức ngày nay sử dụng cả 2 loại thuật toán mã hóa
21
Mã hóa truyền thống
• Người gửi và người nhận:
- dùng chung 1 khóa hoặc
- dùng 2 khóa có thể suy ra lẫn nhau
• Tất cả các TT truyền thống đều là private-key

22
Hệ thống mã hóa truyền thống
(Conventional Cryptosystem)
• Các tên gọi khác: Đối xứng (symmetric), khóa đơn (single-
key), khóa bí mật (secret-key), cá nhân (private-key)
• Bài toán: Nam và Mai muốn viết thư cho nhau và không
muốn Dũng có thể hiểu các bức thư của họ.
• Giải quyết: N & M sẽ mã hóa thư của mình – bằng khóa bí
mật K : p Æc.

Dũng

p Mã hóa c Giải mã p
Nam Mai
e() d()

k Kênh an toàn

Tạo khóa
23
Các định nghĩa
• p gọi là văn bản chưa mã hóa (plaintext - PT)
• P = {p1, p2,…, pm} – tập các PT (plaintext space)
• c gọi là văn bản đã mã hóa (ciphertext - CT)
• C= {c1, c2,…, cn} – tập các CT (ciphertext space)
• k gọi là khóa (key)
• K= {k1, k2,…, kl} – tập các khóa (key space)
• l hàm mã hóa eki : P →C (hoặc eki(p) = c)
• l hàm giải mã dki : C → P (hoặc dki(c) = p)
• eki và dki là các hàm nghịch đảo:
dki (c) = dki (eki (p) ) = p ∀ ki ∈ K
24
Hệ thống mã hóa
(Cryptosystem)

• Định nghĩa: Hệ thống mã hóa là bộ gồm 5


thành phần (P, C, K, E, D) thỏa các đ/k sau:
– P là tập hữu hạn các plaintexts có thể có
– C là tập hữu hạn các ciphertexts có thể có
– K là tập hữu hạn các khóa có thể có
– Với mỗi k ∈ K ta có :
• qui tắc mã hóa ek : P →C ( ek ∈ E)
• qui tắc giải mã dk : C → P (dk ∈ D)
• Sao cho: dk (ek (p) ) = p ∀ p ∈ P
25
Khái niệm thám mã
(Cryptanalysis)

• Định nghĩa : Thám mã là khoa học phục hồi


lại plaintext p từ ciphertext c khi không biết
khóa k. (Chính là công việc của Dũng)
• Qui tắc Kerckhoff :
– Dũng biết hệ thống mã hóa (Cryptosystem), các
thuật toán mã hóa và giải mã
– Dũng không biết khóa k

26
Các kiểu tấn công
1. Chỉ biết văn bản mã hóa (Ciphertext-only attack)
– D biết một vài c1=ek(p1), c2=ek(p2), …
– D cần phục hồi p1, p2, … hoặc khóa k
2. Biết vài văn bản gốc (Known plaintext attack)
– D biết một vài cặp (p1, c1=ek(p1)), (p2, c2=ek(p2)), …
– D cần phục hồi khóa k
3. Được chọn văn bản gốc (mã) (Chosen plaintext
(ciphertext) attack)
– D biết một vài cặp (p1, c1=ek(p1)), (p2, c2=ek(p2)), … và có
thể chọn p1, p2, … (c1, c2, …) để thử
– D cần phục hồi khóa k
4. Được chọn văn bản gốc và mã (Chosen plaintext -
ciphertext attack)
– D biết một vài cặp (p1, c1=ek(p1)), (p2, c2=ek(p2)), … và có
thể chọn p1, p2, … cũng như c1, c2, …để thử
– D cần phục hồi khóa k 27
Vét cạn các khóa
• Về lý thuyết luôn có thể tìm được khóa bằng vét cạn
• Hầu hết TT dò khóa có độ phức tạp tỷ lệ thuận với độ lớn
của khóa
• Giả sử rằng ta có thể biết hoặc nhận ra khi tìm thấy đúng
plaintext
• Bảng sau cho ta thấy sự phụ thuộc thời gian tìm kiếm vào
độ dài khóa và tốc độ xử lý của H/W và S/W

Key Size (bits) Time (1µs/test) Time (1µs/106 test)


32 35.8 mins 2.15 msec
40 6.4 days 550 msec
56 1140 years 10.0 hours
64 ~500000 years 107 days
128 5 * 1024 years 5 * 1018 years
28
Khái niệm về an toàn

• An toàn tuyệt đối (unconditional security)


– Không phụ thuộc vào khả năng tính toán của
computer, TT mã hóa không thể bị bẻ khóa vì
ciphertext không cung cấp đủ thông tin để có thể
xác định được plaintext một cách duy nhất
• An toàn tính toán (computational security)
– Với tài nguyên tính toán hạn chế, TT mã hóa
không thể bị bẻ khóa (VD: thời gian cần thiết để
tính toán lớn hơn tuổi của vũ trụ)

29
Mã hóa cổ điển

¾ Các kỹ thuật mã hóa cổ điển


ƒ Thay thế
ƒ Đổi chỗ
¾ Các TT mã hóa cổ điển
¾ Lịch sử và kinh nghiệm

30
Lịch sử mã hóa
• Mã hóa cổ điển
– Lịch sử mã hóa bắt nguồn cách đây khoảng trên
3000 năm
– Chủ yếu dựa trên việc thay đổi các ký tự của bản gốc
bằng các ký tự khác
– Thực hiện việc mã hóa thủ công bằng tay hoặc sử
dụng các nguyên lý cơ học
– Ứng dụng phổ biến trong quân sự
• Mã hóa hiện đại (Từ 1970)
– Xuất hiện cùng với sự ra đời và phát triển của MTĐT
và CNTT
– Xử lý bằng MTĐT với đơn vị là các bit
– Được ứng dụng rộng rãi trên hầu hết các công cụ
trên mạng internet và trong thương mại điện tử
31
Kỹ thuật mã hóa cổ điển
• Dựa trên việc thay đổi (shift) các ký tự:
– Thay thế (substitution)
– Đổi chỗ (transposition)
• Các thuật toán mã hóa:
– Thuật toán thay thế đơn từ
(monoalphabetic ciphers)
– Thuật toán thay thế đa từ
(polyalphabetic ciphers)
• Một vài thuật toán có thể liên kết với nhau để
tạo ra thuật toán tổng hợp (product cipher)

32
TT mã hóa Caesar
(Caesar Cipher)
• 2000 năm trước Julius Caesar sử dụng TT
mã hóa bằng phép thay thế đơn giản
• Mã hóa: Thay mỗi chữ cái bởi chữ thứ 3 sau
nó:
ª I CAME I SAW I CONQUERED -> L FDPH L
VDZ L FRQTXHUHG
• Có thể biểu diễn như sau:
– Plain: ABCDE FGHIJ KLMNO PQRST UVWXY Z
– Cipher: DEFGH IJKLM NOPQR STUVW XYZAB C
• Ví dụ: giải mã “QJDB PDL QJKL KRF"
33
TT mã hóa Caesar mở rộng
• Mỗi chữ cái sẽ được thay bởi 1 chữ khác ở
một khoảng cách cố định
• Khoảng cách cố định này có thể từ 1 đến 25
• Có thể ký hiệu ký tự khóa (key letter) là ký
tự mà plaintext A dịch đến
VD: ký tự khóa F có nghĩa là:
– A dịch đến F, B đến G, ... Y đến D, Z đến E
– Tức là dịch chuyển các ký tự 5 vị trí
• Do đó ta có 26 (25 có nghĩa) cách mã hóa
khác nhau!
34
TT Caesar mở rộng

A B C D E F G H I J K L M
0 1 2 3 4 5 6 7 8 9 10 11 12
N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25

Giả sử P = C = K = Z26; x ∈P , y ∈ C , k ∈ K
Mã hóa : ek(x) = (x + k) mod 26
Giải mã : dk (y) = (y - k) mod 26
Với k = 3 có tên là “ Caesar Cipher ”

35
Thám mã Caesar
• Phương pháp vét cạn khóa (exhaustive key
search)
– Chỉ có 25 khóa
– Thử từng khóa để tìm plaintext có nghĩa
– Ví dụ: Phá khóa “ GCUA VQ DTGCM”
• Phương pháp phân tích tần số chữ cái
– Các chữ cái mức độ sử dụng khác nhau
– Trong tiếng Anh chữ E xuất hiện nhiều nhất sau
đó đến các chữ cái: T, R, N, I, O, A, S
– Các chữ ít xuất hiện nhất: Z, J, K, Q, X
– Lập bảng tần số các chữ và các cụm chữ.
36
Bảng tần số
A B C D E F G H I J K L M
7.25 1.25 3.5 4.25 12.75 3 2 3.5 7.75 0.25 0.5 3.75 2.75
N O P Q R S T U V W X Y Z
7.75 7.5 2.75 0.5 8.5 6 9.25 3 1.5 1.5 0.5 2.25 0.25

Ta sẽ chú ý đến các đỉnh: A-E-I, NO, RST


Các chỗ lõm: JK, X-Z
Trong việc dự đoán các từ

Single Letter E T R N I O A S
Double Letter TH HE IN ER RE ON AN EN
Triple Letter THE AND TIO ATI FOR THA TER RES
37
Bảng tần số chữ cái tiếng ANH
14
E

12

10
T
R
I
8 O
A

S
6

D
L
4 C H
F U
M P
Y
G
2 V W
B
K N Q X
J Z
0
TẦN SỐ CÁC CHỮ CÁI CỦA TIẾNG ANH
38
Ví dụ
• Ta có thể thám mã Caesar sử dụng việc
phân tích tần số
• VD: thám mã: "JXU WHUQJUIJ TYISELUHO
EV CO WUDUHQJYED YI JXQJ Q XKCQD
RUYDW SQD QBJUH XYI BYVU RO
QBJUHYDW XYI QJJYJKTUI"
• Ta có thể thống kê và biểu diễn các chữ cái
theo biểu đồ sau: (trang sau)
– Có thể thấy 3 đỉnh Q-U-Y ứng với A-E-I, và HIJ
ứng với RST
– Dự đoán: Khóa là Q ( A ÆQ)
39
Biểu đồ tần số các chữ cái của VD
12
J U

10
Q Y

D I
6
H X

W
4
B E O

C K R S T V
2
L

A F G M N P Z
0
TẦN SỐ CÁC CHỮ CÁI CỦA VÍ DỤ
40
TT Thay thế đơn hỗn hợp
(Mixed Monoalphabetic Substitution Cipher)

• Có thể xáo trộn các ký tự một cách tùy ý


• Mỗi ký tự nguồn sẽ thành 1 ký tự đích một
cách ngẫu nhiên
• Khóa có độ dài 26 ký tự
• VD:
– Plain: ABCDE FGHIJ KLMNO PQRST UVWXY Z
– Key: DKVQF IBJWP ESCXH TMYAU OLRGZ N
– Plaintext: IFWEWISHTOREPLACELETTERS
– Ciphertext: WIRFRWAJUHYFTSDVFSFUUFYA

41
TT Thay thế đơn chung
(General monoalphabetic cipher)

• Khóa có độ dài 26 ký tự → Khó nhớ


• TT Thay thế đơn chung chỉ ra phương pháp
xác định khóa đơn giản !
• Đó là sử dụng từ khóa (keyword) với những
chữ cái khác nhau, các chữ cái còn lại sẽ xếp
theo thứ tự:
• VD: Với từ khóa: "JULIUSCAESAR“ ta có:
– Plain: ABCDEFGHI JKLMN OPQRS TUVWX YZ
– Key: JULISCAER TVWXY ZBDFG HKMNO PQ

42
TT Thay thế đơn chung (2)
STARW
• VD: Từ khóa “STARWARS”
BCDEF
• Lọc đi các từ lặp lại và viết ra bảng: GHIJK
• Đọc theo cột ta được key: LMNOP
QUVXY
Z
Plain : ABCDE FGHIJ KLMNO PQRST UVWXY Z
Key : SBGLQ ZTCHM UADIN VREJO XWFKP Y

Dùng key này để mã hóa:

•Plaintext : I KNOW ONLY THAT I KNOW NOTHING


•Ciphertext: H UINF NIAP OCSO H UINF INOCHIT
43
TT Thay thế đơn chung (3)

• Ta có tổng cộng 26! ~ 4 x 1026 khóa


• Với số lượng khóa lớn như vậy phương pháp
này tồn tại khá lâu. Các phiên bản của nó
được dùng trong các chính phủ và quân đội
cho đến thời kỳ trung đại
• Phương pháp bẻ khóa sử dụng phân tích
tần số (frequency analysis) của các nhà
khoa học Ả rập
• Có thể làm cho phương pháp này mạnh hơn
bằng việc thay thế mỗi ký tự nhiều lần
bằng cách sử dụng nhiều khóa khác nhau.
44
Thám mã TT thay thế đơn
• Có thể dùng phân tích tần số
• Các chữ cái không phải dịch chuyển mà nhảy cóc do đó
phải tìm khóa cho từng chữ cái
• Có thể sử dụng biên giới: Các từ đứng 1 mình có thể là
A, I; các cụm 3 từ có thể là THE, AND, FOR…
• Nói chung cần vài ciphertexts để xác định khóa
• Nếu xác định được khóa có thể xác định được
keyword
VD:
– Plain : ABCDEF GHI JK LMNOP QRSTU VWXYZ
– Cipher: SBGLQZ TCHMU AD I NV REJOX WFKPY
– Dựa vào mẫu “BCDEF” và “LMNOP” có thể khôi phục được
bảng (5) và tính được keyword: “STARW”
45
TT thay thế đa từ
(polyalphabetic cipher)

Đại diện: Vigenère Cipher


• Sử dụng từ khóa (keyword) để dịch chuyển các chữ cái
của plaintext với các khoảng cách khác nhau:
• Viết ra dãy plaintext
• Dưới plaintext viết từ khóa lặp lại nhiều lần
• Sử dụng mỗi chữ cái của từ khóa như là khóa của
Caesar Cipher
• Plaintext: THI S PROCESSCANALSOBE EXPRES
SED Key : C I PHERC I PHERC I PHERC I
PHERC I PHE Ciphertext: VPXZ T I
QKTZWTCVPSWFDM TET I GAHLH
46
Plaintext ABCDEFGHIJKLMNOPQRSTUVWXYZ
+----------------------------------------------------+
A | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
B | BCDEFGHIJKLMNOPQRSTUVWXYZA |
C | CDEFGHIJKLMNOPQRSTUVWXYZAB |
D | DEFGHIJKLMNOPQRSTUVWXYZABC |
E | EFGHIJKLMNOPQRSTUVWXYZABCD |
F | FGHIJKLMNOPQRSTUVWXYZABCDE |
G | GHIJKLMNOPQRSTUVWXYZABCDEF |
H | HIJKLMNOPQRSTUVWXYZABCDEFG |
I | IJKLMNOPQRSTUVWXYZABCDEFGH |
C J | JKLMNOPQRSTUVWXYZABCDEFGHI |
á K | KLMNOPQRSTUVWXYZABCDEFGHIJ |
c L | LMNOPQRSTUVWXYZABCDEFGHIJK |
M | MNOPQRSTUVWXYZABCDEFGHIJKL |
N | NOPQRSTUVWXYZABCDEFGHIJKLM |
K O | OPQRSTUVWXYZABCDEFGHIJKLMN |
h P | PQRSTUVWXYZABCDEFGHIJKLMNO |
ó Q | QRSTUVWXYZABCDEFGHIJKLMNOP |
a R | RSTUVWXYZABCDEFGHIJKLMNOPQ |
S | STUVWXYZABCDEFGHIJKLMNOPQR |
T | TUVWXYZABCDEFGHIJKLMNOPQRS |
U | UVWXYZABCDEFGHIJKLMNOPQRST |
V | VWXYZABCDEFGHIJKLMNOPQRSTU |
W | WXYZABCDEFGHIJKLMNOPQRSTUV |
X | XYZABCDEFGHIJKLMNOPQRSTUVW |
Y | YZABCDEFGHIJKLMNOPQRSTUVWX |
Z | ZABCDEFGHIJKLMNOPQRSTUVWXY |
47
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
A 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
B 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 A
Plaintext
C C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
E E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
F F G H I J K L M N O P Q R S T U V W X Y Z A B C D E

Ciphertext G G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
H H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
I I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
J J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N

Khóa P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
X X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z Z 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
48
Thuật toán khóa tự động
(Autokey Cipher)
• Ta thấy càng dùng nhiều từ làm khóa thì độ an toàn của
thuật toán càng lớn
• Nhưng lúc đó làm sao mà truyền được 1 khóa dài ?
• Vigenère đề nghị dùng khóa tự động (autokey)
• Sử dụng keyword ghép vào phần đầu của thông điệp
và sử dụng như là khóa cho thông điệp
• Biết keyword có thể khôi phục được các ký tự đầu của
thông điệp và dùng chúng để tìm các ký tự còn lại
• VD: cho keyword "DECEPTIVE" và thông điệp "WE
ARE DISCOVERED SAVE YOURSELF"
Plaintext: WEARED I SCOVE REDSAVEY OURSE LF
Key: DECEP T I VEWEARED I SCOVERE DSAV
Ciphertext: Z I CVTWQNGKZE I IGA SXST S LVVWLA
49
TTMH sử dụng sách
(Book Cipher)
• Có thể tạo khóa bằng cách lấy các ký tự bắt đầu từ 1 vị trí
(trang, dòng) nào đó trong 1 cuốn sách.
• Có thể phá khóa Autokey và Book ciphers bằng cách phân tích
tần số các cặp chữ cái do khóa và plaintext viết trên cùng 1 ngôn
ngữ
• VD: khóa với ký tự 'E' được sử dụng nhiều hơn so với ký tự 'T'
• Do đó 'E' được mã hóa bằng khóa với ký tự 'E' sẽ có xác suất
(0.1275)2 = 0.01663, gấp đôi xác suất 'T' được mã hóa bởi 'T'
• Ta sẽ lập được bảng tần số 26*26
• Với ciphertext đủ lớn (hoặc đủ nhiều) có thể phá được khóa
• Với khóa thực sự ngẫu nhiên có độ dài bằng plaintext, TTMH sẽ
thực sự an toàn
• TTMH với khóa dùng 1 lần được gọi là TT Vernam (Vernam
Cipher) hoặc (One-Time pad)
50
Các TT đổi chỗ
(Transposition Ciphers)
• Các thuật toán mã hóa đổi chỗ thực hiện việc sắp
xếp lại thứ tự của các từ trong plaintext mà không
thay đổi chúng
• Đảo ngược từ (Mirror cipher): Viết các từ theo thứ
tự ngược lại
– TOI AN COM Æ MOC NA IOT
• Hình học (Geometric Figure)
– Viết thông điệp theo 1 mẫu và đọc theo mãu khác

51
Scytale cipher

• Phương pháp mã hóa Hilạp cổ


• Quấn băng giấy quanh 1 cái ống (gậy)
• Viết thông điệp theo chiều dài ống, sau đó tháo
băng ra
• Các chữ ở trên băng sẽ là ciphertext
• Khóa ở đây là ống và băng giấy 52
TTMH đổi chỗ theo hàng
(Row Transposition ciphers)
• Viết thông điệp theo dòng, hoán vị các cột theo khóa
và sau đó đọc lại theo dòng
– Plaintext: ACONVENI ENTWAY
ENT TO EXPRESST
HEPERMUT
HE ATION
– Key (W): COMPUTER
– Key (W): 1 4 3 5 8726
A NOV INCE
E W T A OT N Y
ER PE TSXS
HE PR TUEM
AO I N Z ZTZ
– Cipher: ANOVINCEEWTAOTNYERPETSXSHEPRTU
EMAOINZZTZ 53
TT đổi chỗ khối
• Thông điệp được viết theo dòng nhưng đọc theo cột
theo thứ tự của khóa
– Key(R): sor ce ry sorcer y
– Key(R): 634 1257 6341257
l a s erbe l a serbe
amscanb amscanb
emodul a emodula
t e d toca t e d toca
r r ymore r r ymore
i n t e l l i i n t e l l i
gen ce th gen ce th
anr a d io anr a d io
waves wave sqr
– matrix incomplete complete
• Cho ta ciphertext (đọc theo cột, theo key):
• ecdtm ecaer auool edsam merne nasso dytnr vbnlc
rltiq laetr igawe baaei hor 54
Một số TT khác

• Đổi chỗ lộn xộn (Nihilist cipher)


– Đổi chỗ cả dòng và cột
– Viết thông điệp theo hàng theo khóa
– Đọc từ trái sang phải từng hàng, thứ tự hàng
được xác định bằng khóa viết theo cột
• Đổi chỗ đường chéo (Diagonal cipher)
– Viết thông điệp giống như trên
– Đọc thông điệp theo đường zig-zag

55
Ví dụ
• Plaintext: NOWISTHETIMEFORALLGOODMEN
• Key (W): L E M O N
2 1 3 5 4
L 2 ON W S I
E 1 H T E I T
M 3 EM F R O
O 5 L A L O G
N 4 DO M N E

Nihilist Cipher: HTEIT ONWSI EMFRO DOMNE LALOG


Diagonal Cipher: ONHET WSEML DAFII TRLOM OOGNE
56
TT kết hợp
(product cipher)
• Kết hợp 2 phép đổi chỗ và thay thế
• TT ADFGVX nổi tiếng trong ĐCTG lần 1
– Chỉ có sáu chữ cái này được sử dụng
– Mã MORSE của các chữ này phân biệt rất rõ
– Quân Đức sử dụng, quân Anh thám mã trong WW1
– Mỗi chữ cái của plaintext được thay bởi 1 cặp chữ
cái khác (chỉ số hàng – cột)
– Sử dụng TT đổi chỗ khối cùng với khóa để tách và
đổi chỗ các chữ cái
– Ciphertext được viết liền nhau.

57
Ví dụ TT ADFGVX
A D F G V X
A K Z W R 1 F
D 9 B 6 C L 5
F Q 7 J P G X
G E V Y 3 A N
V 8 O D H 0 2
X U 4 I S T M

• Plaintext: PRODUCTCIPHERS
• Thông điệp trung gian:
FG AG VD VF XA DG XV DG XF FG VG GA AG XG
58
Ví dụ TT ADFGVX (2)
Ma trận đổi chỗ theo khóa:

D E U T S C H
2 3 7 6 5 1 4
F G A G V D V
F X A D G X V
D G X F F G V
G G A A G X G
Ciphertext:
DXGX FFDG GXGG VVVG VGFG CDFA AAXA
59
Bài tập
Apple iPods are small devices that copy
save and play music and written material

Mã hóa và giải mã đoạn văn trên bằng tay sử


dụng:
1. TT thay thế đơn từ chung với khóa là “NIFTY”
2. TT Vigenère với khóa “DOG”
3. TT đổi chỗ hàng với khóa “SNEAKY”
4. TT đổi chỗ khối với khóa “SNEAKY”
5. TT ADFGVX với khóa “SNEAKY”
Viết chương trình mã hóa 1 văn bản bất kỳ
với từ khóa được nhập từ bàn phím, sử dụng
thuật toán mã hóa Autokey
60

You might also like