Tải bản đầy đủ (.docx) (33 trang)

Tiểu luận ứng dụng truyền thông và an toàn thông tin Mã hóa và bảo mật dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.29 MB, 33 trang )

ĐẠI HỌC QUỐC GIA TP.HCM
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
UDTT & ANTT
Mã hóa dữ liệu
và bảo mật
Giáo viên hướng dẫn: Thầy Tô Nguyễn Nhật Quang
Sinh viên thực hiện: Nhóm 9
08520004 Lê Đỗ Trường An
08520011 Lý Tuấn Anh
08520036 Lê Hoàng Chánh
08520088 Vũ Trọng Đắc
08520100 Nguyễn Chí Duy Đức
Mã hóa và bảo mật dữ liệu
Contents
2
Mã hóa và bảo mật dữ liệu
MÃ HÓA VÀ BẢO MẬT DỮ LIỆU
1 A. LỊCH SỬ MẬT MÃ
Khóa và chìa khóa
Trong thế giới hiện đại, không đơn giản chỉ sử dụng một bức tranh và hi vọng một vài người có thể tìm ra
được nghĩa tiềm ẩn của nó. Thay vì đó, chúng ta cần một phương pháp phức tạp của việc khóa và mở
khóa dữ liệu với những chìa khóa mà chỉ có người ủy quyền được giữ. Những khóa và chìa khóa này thì
giữ thông tin bí mật.
Hai người đang gởi thông điệp cho nhau là Alice và Bob (giả sử là A và B). Người thứ ba đang cố gắng
để đánh chặn dữ liệu được biết như là Eve.
Nếu Alice và Bob quyết định trao đổi thông điệp bằng cách sử dụng các khóa và chìa khóa bảo mật, câu
hỏi là: các khóa và chìa khóa đó đến từ đâu?
Hãy tưởng tượng có một thợ làm khóa thiên tài đã phát triển ra một hệ thống khóa bảo mật mới, và ông ta
rất tự tin trong thiết kế rằng những người trong nghề khóa đều được phổ biến. Thợ làm khóa tuyên bố
rằng chức năng của khóa thì rất bảo mật đến nổi không có nguy cơ của bất cứ việc giải mã nào, ngay cả
khi mọi chi tiết được mô tả.


Alice hỏi thợ làm khóa mức độ bảo mật được đưa ra như thế nào và được đáp lại rằng việc bảo mật không
nằm trong việc ổ khóa làm việc như thế nào, mà là trong chìa khóa được chọn. Thợ làm khóa tiếp tục giải
thích rằng bí mật nằm trong chìa khóa, cái giữ cho ổ khóa được đóng lại. Alice được bảo rằng nếu cô ta
đánh mất hoặc quên chìa khóa, ổ khóa sẽ không thể được mở với bất kì phương pháp nào khác ngoài việc
thử với mọi chìa khóa hoặc cố gắng bẻ ổ khóa.
Bị thuyết phục, Alice mua ổ khóa đó. Cô ấy nói với Bob về ổ khóa mới mua đó ,và Bob cũng mua một cái
khóa. Cả hai bây giờ đều giữ một ổ khóa với cùng bản thiết kế và với cơ cấu như nhau, nhưng với các
chìa khóa khác nhau. Alice không biết khóa của Bob và Bob không biết khóa của Alice.
Khi Alice và Bob tạo ra khóa cho họ; khi ổ khóa cho phép làm điểu này, họ phải quyết định độ phức tạp
của chìa khóa. Nếu họ cho rằng các bí mật không thật sự cần bảo mật, họ sẽ chọn một con số từ 1 đến 4,
nếu các bí mật thì rất có giá trị và cần sự bảo mật, họ sẽ chọn một con số từ 1 đến 48.
Chìa khóa quyết định chiều dài của ổ khóa. Không phải chỉ ổ khóa bảo mật thông tin. Trong mật mã,
chúng ta sử dụng cả ổ khóa và khóa.
Các thuật ngữ
Mật mã là sử dụng ổ khóa và khóa để bảo mật dữ liệu khỏi việc nghe lén, hoặc từ bất kì người nào không
biết chìa khóa.
Người tạo ra phương pháp xáo trộn, ngụy trang thông điệp được gọi là người viết mật mã Ngược lại,
những người cố gắng để bẻ gãy hoặc giải mã thông điệp khi không có khóa mà phải sử dụng những
phương pháp giải mã khác, những người này được gọi là người giải mật mã.
3
Mã hóa và bảo mật dữ liệu
Một thông điệp chưa được thay đổi và có thể được đọc mà không gặp bất kì khó khăn nào được gọi là
plaintext (cũng được gọi là clear text). Khi nó được mã hóa thì gọi là ciphertext.
Quá trình lấy plaintext và ngụy trang nó thành ciphertext được gọi là mã hóa. Quá trình ngược lại được
gọi là giải mã.
Cipher Caesar
Phương pháp này còn được gọi là Caesar Shift, phương pháp này đơn giản chỉ là quá trình thay thế một kí
tự này bằng một kí tự khác. Phương pháp này thay thế một kí tự dựa trên một con số các kí tự được định
nghĩa trước đó gọi là shift.
Ví dụ:

Plaintext: CRYPTOGRAPHY
Ciphertext: HWDUYTLWFUMD (Shift 5)
Plaintext: ENCRYPTION
Ciphertext: HQFUBSWLRQ(Shift 3)
Ta có thể đặt phương pháp mã hóa này trong một biểu thức toán học:
4
Mã hóa và bảo mật dữ liệu
Ta gán gán một số đến mỗi chữ cái của bảng chữ cái tiếng Anh. Ví dụ: a = 1, b = 2, c = 3, … Ta gọi
ciphertext là C, và gọi plaintext là p. Ta có:
C = (p + 4) mod (26)
Biểu thức trên có nghĩa là ciphertext bằng chữ cái plaintext cộng với một giá trị shift, và mod 26.
Mặc dù phương pháp thay thế đơn giản này đã được dùng trong vài năm, nhưng cuối cùng nó cũng trở
thành không bảo mật. Một vài kỹ thuật của người giải mã đã có thể giải mã được mật mã Caesar cipher.
Breaking the Caesar Cipher
Vấn đề đối với mật mã Caesar là nó chỉ dùng 26 ký tự và người ta có thể biết vị trí sắp xếp của 26 ký tự
đó.
Giả sữ một thông điệp được nhận và người phân tích nghi ngờ mật mã Caesar đã được sử dụng. Người
phần tích có thể nhận biết được mật mã bằng kinh nghiệm, hoặc thử tấn công bằng phương pháp thủ
công. Phương pháp tấn công thủ công thì không mất nhiều thời gian và người phân tích biết được mật mã
chỉ là một Caesar Shift đơn lẽ. Khi chỉ có 26 chữ cái, và một trong các cách shift đã được sử dụng để mã
hóa thông điệp, người phân tích có 25 khóa để thử trước khi bẻ khóa mật mã.
Ví dụ, ciphertext là BKZOVMQFLK với khóa thì không được biết trước, bằng phương pháp thủ công ta
liệt kê được các plaintext như sau:

Dựa vào bảng trên ta đoán được plaintext là: ENCRYPTION. Qua đó ta thấy mật mã Caesar thì không
bảo mật. Sự không bảo mật này là do người phân tích đã biết được một vài vấn đề sau:
1. Thuật toán mã hóa và giải mã đã được biết đến một cách phổ biến.
2. Ngôn ngữ trong plaintext được ẩn thì được biết và có thể dễ dàng để nhận ra.
3. Chỉ có 25 khóa có thể dùng được để thử tấn công bằng phương pháp thủ công.
Biết được những điều này, người phân tích có thể dễ dàng giải mã được ciphertext và lấy được plaintext.

Linguistic Parterns
Như ta đã thấy trước đó, Caesar Cipher chỉ có 25 khóa có thể dùng được, nó rất không bảo mật. Vì thế
chúng ta cần sắp xếp lại các chữ cái để làm tăng số lượng khóa. Khi chúng ta có 26 chữ cái để thực hiện,
5
Mã hóa và bảo mật dữ liệu
nếu ta đặt những chữ cái này ở mọi vị trí sắp xếp, chúng ta sẽ có một giá trị là 26!, đây cũng là số khóa
mà chúng ta có được.
Dễ dàng thấy rằng kiểu mật mã này sẽ khó để bẻ gãy, tuy nhiên, ngay cả với tất cả những khóa có thể
dùng được, một người phân tích mật mã giỏi cũng có thể giãi mã chỉ trong vào phút. Đó là nhờ cách phân
tích tần số xuất hiện của những chữ cái thông qua thống kê từ nhiều nguồn văn bản khác nhau.
Ví dụ với ciphertext là:
XEJIQYSIFSKECVKXECVPSOXCKIXSXTS
XTSEFCSOIVJAEVASNXOEBAFQNXEKFINTQ
IVJXTSMSXTEJOEBSVAFQNXCEVIVJJSAFQNXCEV
Ta có: A=5, B=2, C=4, D=0, E=11, F=6, G=0, H=0, I=7, J=6 ,K=4, L=0, M=1, N=5, O=4, P=1, Q=4,
R=0, S=11, T=4, U=0, V=9, W=0, X=12, Y=1, Z=0.
=>Thứ tự: X, E, S, V, I, F, J, A, N, C, K, Q, T, B, M, P, Y, D, G, H, L, R, U, W, Z.
Giả sử các kí tự X, E, S, V, I, F, J tương đương với E, T, R, N, I, O, A, sau khi thay thế ta được:
XEJIQYSIFSKECVKXECVPSOXCKIXSXTS
XTSEFCSOIVJAEVASNXOEBAFQNXEKFINTQ
IVJXTSMSXTEJOEBSVAFQNXCEVIVJJSAFQNXCEV
6
Mã hóa và bảo mật dữ liệu
Ta biết rằng trong tiếng Anh thường xuất hiện các digram và các trigram, digram hay gặp nhất là “th” và
trigram hay gặp nhất là “the”.
Giả sử: X=T, T=H, S=E, thì ta có:
XEJIQYSIFSKECVKXECVPSOXCKIXSXTS
T E E T E T ETHE
XTSEFCSOIVJAEVASNXOEBAFQNXEKFINTQ
THE E E T T H

IVJXTSMSXTEJOEBSVAFQNXCEVIVJJSAFQNXCEV
THE ETH E T E T
Bây giờ chỉ còn lại 4 kí tự E, V, I, F, J tương đương với R, N, I, O, A
Giả sử: E = R, V = N, ta được như sau:
XEJIQYSIFSKECVKXECVPSOXCKIXSXTS
TR E E R N TR N E T TETHE
XTSEFCSOIVJAEVASNXOEBAFQNXEKFINTQ
THER E N R E T R TR H
IVJXTSMSXTEJOEBSVAFQNXCEVIVJJSAFQNXCEV
N E ETH R E T R E T RN
Giả sử: C = I, E = O:
XEJIQYSIFSKECVKXECVPSOXCKIXSXTS
TO E E OIN TOIN E TI TETHE
XTSEFCSOIVJAEVASNXOEBAFQNXEKFINTQ
THEO IE N ON E T O TO H
IVJXTSMSXTEJOEBSVAFQNXCEVIVJJSAFQNXCEV
N THE ETHO OEN TION N E TION
Còn lại 3 kí tự I, F, J tương đương R, A, S. S là kí tự được lấy them từ biểu đồ
Giả sử: I = R
XEJIQYSIFSKECVKXECVPSOXCKIXSXTS
7
Mã hóa và bảo mật dữ liệu
TO E E OIN TOIN E TI RTETHE
XTSEFCSOIVJAEVASNXOEBAFQNXEKFINTQ
THEO IE N ON E T O TO H
IVJXTSMSXTEJOEBSVAFQNXCEVIVJJSAFQNXCEV
RN THE ETHO OEN TION N E TION
Ta thấy RTE và RN là những digram và trigram không thấy trong tiếng Anh. Vì vậy ta giả sử:
I = A
XEJIQYSIFSKECVKXECVPSOXCKIXSXTS

TO E E OIN TOIN E TI ATETHE
XTSEFCSOIVJAEVASNXOEBAFQNXEKFINTQ
THEO IE AN ON E T O TO H
IVJXTSMSXTEJOEBSVAFQNXCEVIVJJSAFQNXCEV
AN THE ETHO OEN TION N E TION
Ta thấyAN và ATE là những digram và trigram thường thấy trong tiếng Anh.
Giả sử J = D:
XEJIQYSIFSKECVKXECVPSOXCKIXS XTS
TODA EA E OIN TO N E TI ATE THE
XTS EFCSO IVJ AEVASNXOEBAFQNXEKFINTQ
THE O IE AND ON E T O TO A H
IVJ XTSMSXTEJOEBSVAFQNXCEV IVJ JSAFQNXCEV
AND THE ETHOD O EN R TION AND DE TION
Giả sử F = R
XEJIQYS IFS KECVKXECVPSOXCKIXS XTS
TODA E ARE OIN O N E TI ATE THE
XTS EFCSO IVJ AEVASNXOEBAFQNXEKFINTQ
THE ORIE AND ON E T O R TO RA H
8
Mã hóa và bảo mật dữ liệu
IVJ XTSMSXTEJOEBSVAFQNXCEV IVJ JSAFQNXCEV
AND THE ETHOD O EN R TION AND DE R TION
Đến đây ta đã có thể hoàn thiện đoạn plaintext:
=> Plaintext:
XEJIQ YS IFS KECVK XE CVPSOXCKIXS XTS
TODAY WE ARE GOING TO INVESTIGATE THE
XTSEFCSO IVJ AEVASNXO EB AFQNXEKFINTQ
THEORIES AND CONCEPTS OF CRYPTOGRAPHY
IVJ XTS MSXTEJO EB SVAFQNXCEV IVJ JSAFQNXCEV
AND THE METHODS OF ENCRYPTION AND DECRYPTION

Polyalphabetic Ciphers
Điển hình là mật mã Vigenere
Plaintext: TODAY WE MOVE BE PREPARED
9
Mã hóa và bảo mật dữ liệu
Ta chọn keyword là MOVE. Keyword được đặt phía trên plaintext và lặp lại cho đến khi hết đoạn
plaintext:
Key: MOVEM OV EMOV EM OVEMOVEM
Plaintext: TODAY WE MOVE BE PREPARED
=> Ciphertext: FCYEK KZ QAJZ FQ DMIBOMIP
Transposition Ciphers
Giữ lại nguyên bản các chữ cái và dịch chuyển vị trí của chúng.
Ví dụ: caesar shift -> sarshi ftcae (dịch trái 3 bước)
Đơn giản hơn:
caesar shift -> saesat chifr (chữ cái đầu và cuối của mỗi từ sẽ hoán đổi vị trí cho nhau )
The Split Rail Cipher
Còn gọi là Rail Fence Cipher, là một hình thức của mã chuyển vị.
Ví dụ với thông điệp: So far there has been little math, which makes me happy!
Ta có đoạn Plaintext như sau:
SOFARTHEREHASBEENLITTLEMATHWHICHMAKESMEHAPPY
Chia đôi đoạn Plaintext này ra làm 2 dòng, một dòng chứa kí tự ở vị trí chẵn, một dòng chứa kí tự ở vị trí
lẽ:
Line 1: SFRHRHSENITEAHHCMKSEAP
Line 2: OATEEABELTLMTWIHAEMHPY
Kết hợp lại ta được đoạn ciphertext:
SFRHRHSENITEAHHCMKSEAPOATEEABELTLMTWIHAEMHPY
Transposition Table
Nhằm tăng độ phức tạp cho Split Rail Cipher.
Ví dụ ta dung lại đoạn Plaintext cũ:
SOFARTHEREHASBEENLITTLEMATHWHICHMAKESMEHAPPY

10
Mã hóa và bảo mật dữ liệu
 Ciphertext:
SEELHEPOREEISYFENMCMAHLAHERAITMHTSTHAAHBTWKP
Chú ý: chỉ cần biết đây là mật mã thuộc kiểu dịch chuyển thì cryptanalyst có thể giải mã được
bằng cách liệt kê ra các bảng gồm các cột có ba, bốn, năm, … chữ cái và tìm ra được plaintext => làm
tăng thêm độ phức tạp của mã hóa.
Sử dụng số để xác định thứ tự viết các cột:
=> Ciphertext:
OREEISYHBTWKPAHLAHESEELHEPTSTHAAFENMCMRAITMH
Tuy nhiên nó vẫn chưa đủ mạnh cho các bí mật cao cấp hơn.
Tiếp tục làm tăng độ phức tạp của mật mã :
11
Mã hóa và bảo mật dữ liệu
=>Ciphertext:
RBLLHCHYAESNTEWHEAROHHETMMSPSTEIETAHAMIKEPFA
=> keyword: 4163752
Chú ý: Để làm tăng tính bảo mật có thể kết hợp cả hai phương pháp thay thế và chuyển vị.
Polybius Cipher
Ví dụ đoạn Plaintext: CIPHER
 Ciphertext: 13 24 35 23 15 42
Do sử dụng tiêu chuẩn của bảng chữ cái tiếng Anh nên độ mã hóa sẽ không mạnh => làm tăng độ mã hóa
Bằng cách tạo ra một cụm từ khóa: “When in the course of human events,”
Sắp xếp các chữ cái này vào bảng chữ cái 5x5, các chữ cái sẽ được thêm vào cho đến hết, đến chữ cái
cuối cùng, các ô còn trống sẽ được đưa các chữ cái còn lại trong bảng chữ cái vào.
12
Mã hóa và bảo mật dữ liệu
Plaintext: CIPHER
=> Ciphertext: 22 15 52 12 13 25
Ta có thể tiếp tục mã hóa bằng phương pháp chuyển vị như sau:

Plaintext: 22 15 52 12 13 25
Line 1: 2 1 5 1 1 2
Line 2: 2 5 2 2 3 5
=> Ciphertext: 21 51 12 25 22 35
The one-time pad
Sử dụng một khóa có cùng chiều dài với thông điệp plaintext và sử dụng khóa này chỉ một lần. Khóa
được tạo một cách random. Với phương pháp này mật mã sẽ rất khó bị giải vì mỗi khóa chỉ được dung 1
lần.
13
Mã hóa và bảo mật dữ liệu
Rotor Machines
Cấu tạo: gồm 3 rotor mỗi rotor có cấu tạo như hình vẽ, mỗi rotor gồm 2 dãy số, dãy thứ nhất được sắp xếp
theo trình tự, dãy thứ 2 được sắp xếp một cách random.
Hoạt động: ví dụ khi ta ấn chữ A, đầu ra sẽ cho chữ B, nhấn chữ A một lần nữa thì đầu ra sẽ cho chữ Y.
Khi đầu vào được nhấn 1 lần thì fast rotor sẽ dịch chuyển 1 vị trị, khi fast rotor dịch chuyển được 24 vị trí
thì medium rotor sẽ dịch chuyển 1 vị trí, khi medium rotor dịch chuyển được 24 vị trí thì slow rotor sẽ
dich chuyển 1 vị trí… cứ như vậy.
1B. CHỨC NĂNG CỦA TOÁN HỌC TRONG MÃ HÓA
Toán học, toán học, toán học. chính điều nãy cũng đủ làm cho người ta phải rùng mình. Nhiều người nói
rằng: “chúng tôi biết, chúng tôi sử dụng khóa, những khóa ấy phải mạnh, chúng tôi biết sử dụng khóa để
mã hóa và giải mã dữ liệu ”. Tuy nhiên, để đưa toán học vào mật mã, thì câu hỏi đặt ra ở đây là: “Làm
thế nào thuật toán làm việc? làm thế nào mã hóa khóa thật sự?”
Câu trả lời đó là toán học và thuật toán. Chúng ta hãy cùng nhìn vào các kỹ thuật mã hóa cổ điển. chẳng
hạn như Caesar, Transpotions, Enigma and Polybius. Tuy nhiên, các kỹ thuật mã hóa hiện đại nó phức tạp
hơn nhiều so với việc chỉ đơn giản là chuyển đổi ký tự thành các ký tự khác. Thuật toán mã hóa hiện đại
sử dụng toán học.
Bên trong, máy tính xủ lý mọi thứ bằng các chỗi nhị phân 1 và 0.
14
Mã hóa và bảo mật dữ liệu
Gần như tất cả các công thức toán học trong mã hóa bao gồm chữ và số. Nó ko phải là chữ giống như các

chữ trong các thông điệp rõ ràng. Mà là nó đại diện cho 1 giá trị cụ thể.
Ví dụ, quá trình mã hóa là E, quá trình giải mã là D, chuỗi Ciphertext là C, và plaintext là P.
Chẳng hạn như: từ math có giá trị số là 13, 1, 20, 8. Nó là các ký tự đầu tiên, 8, 13 và 20 trong bảng chữ
cái. Nếu ta lấy các giá trị số và ghép chúng lại thành chuỗi thì ta được 1 số 13012008. (thêm giá trị số 0
vào số có 1 chữ số.)
Inverse operations:
Khi mã hóa 1 cái gì đó, để chắc chắn rằng nó được sử dụng thì nó phải được giải mã Trong quan điểm
toán học, điều này được gọi là nghịch đảo. Có 2 thuật ngữ được sử dụng trong phần này là inverse
functions và inverse numbers
Chức năng nghịch đảo, bạn đã từng sử dụng nhiều trong cuộc sống của bạn. bạn nên suy nghĩ nó với 1 cái
tên mới. Như cộng, trừ, nhân và chia là inverse functions.theo sau đây là những ví dụ về inverse
functions:
15
Mã hóa và bảo mật dữ liệu
Bạn đã nhìn thấy 3 ví dụ thường thấy trong toán học, ví dụ đầu tiên là cộng và trừ, ví dụ thứ 2 là nhân và
chia. Đó là những inverse functions khác nhau
Trong 2 ví dụ đầu tiên, có 2 hoạt động được thực hiện. Một là “mã hóa” số và 1 là “giải mã” số.
Ví dụ thứ 3, sử dụng inverse number.
Công thức toán học của inverse functions và number functions có thể giống như ví dụ sau đây: Nếuchúng
ta có 2 số nguyên tố x và y. Các thao tác inverse là: x + y = 10 và 10 –y = x, x*y = 10 và 10/y = x
Prime numbers:
Khi chúng ta có 1 số, chẳng hạn là 10, ta lấy nó chia cho 1 số và không có sự chỉ dẫn nào (ko có dữ kiện
nào). Thì chúng ta sẽ ko có kết quả. Tại sao? Đơn giản là ta không có đủ thông tin để thực hiện phép chia
này, và tất nhiên câu hỏi đặt ra là: lấy 10 chia cho cái gì? 1, 2, 5 hay 10? Hoặc có thể tao lấy 10 chia cho 1
số và kết quả số dư khác 0, chẳng hạn như 3, 6.
Khi ta chia 10, và kết quả của chúng ta có số dư khác 0, phải chia cho ước của nó. Chẳng hạng ở ví dụ
này, ước của 10 là 1,2,5 hoặc 10.
Trong ví dụ của chúng ta (số 10). Chúng ta có 4 ước.
Số nguyên tố là 1 số chỉ có 2 ước số là 1 và chính nó. Chẳng hạn như: 11,13,17, 19
Relatively prime: (số nguyên tố cùng nhau)

Sau đây là ví dụ về số nguyên tố cùng nhau:
Số 17 là số nguyên tố. vì nó có 2 ước số là 1 và 17
16
Mã hóa và bảo mật dữ liệu
Số 24 không phải là số nguyên tố, vì nó có ước khác ngoài 1 và 24
Cặp số 39 và 21 ko phải là cặp số nguyên tố cùng nhau vì nó có chung 2 ước là 1 và 3
Cặp số 39 và 25 là cặp số nguyên tố cùng nhau, vì chúng chỉ có 1 ước là 1, và số 25 là số nguyên tố.và 1
là ước chung lớn nhất của nó.
Vậy cặp số nguyên tố cùng nhau là 1 số là số nguyên, nó với số còn lại có ước chúng lớn nhất là 1.
Math Called Mod: (chia lấy dư)
Một vài ví dụ:
9 mod 3 = 0
40 mod 10 = 0
40 mod 9 = 4
(2+4) mod 3 = 0
(2 +4) mod 5 = 1
Modular operations:
Trong mã hóa, phép chia lấy dư được sử dụng rất thường xuyên. Không đơn giản đơn giản là x mod y. mà
là một chỗi phức tạp:
 [(a mod n) + (b mod n)] mod n = (a + b) mod n
 [(a mod n) - (b mod n)] mod n = (a - b) mod n
 [(a mod n) * (b mod n)] mod n = (a * b) mod n
Binary and hex values:
17
Mã hóa và bảo mật dữ liệu
XOR operations:
OR operations:
Phép tính OR được sử dụng trong mã hóa:
XOR operations:
Phép tính XOR được sử dụng trong mã hóa:

18
Mã hóa và bảo mật dữ liệu
1C. PRIVATE KEY EXCHANGE
1. Khái niệm
- Là loại mã hóa khi việc mã hóa và giải mã đều sử dụng chung một khóa bí mật (symmetric key )
hay còn được gọi là mã hóa khóa đối xứng
- Private key exchange( hay symmetric key exchange) cũng có thể được coi như một sự chia sẻ bí
mật, nghĩa là có nhiều hơn 1 bên biết được khóa của giải thuật mã hóa .
What’s in a key ?
- Khóa rất quan trọng trong việc mã hóa và bảo mật dữ liệu. Từ xưa đến nay, các giải thuật mã hóa
dù là phức tạp nhất vẫn được giải mã chỉ vì bị lộ khóa. Chính vì thế, khóa cần phải được bảo mật.
- Dưới đây là sơ đồ mã hóa và giải mã với khóa K1
Number Generator
- Trong một thuật toán mã hóa khóa đối xứng đơn giản thì Khóa là một số ngẫu nhiên, có thể được
chọn bởi người sử dụng thuật toán (người mã hóa). Vấn đề ở đây là làm sao có thể chọn một số
ngẫu nhiên và thế nào là số ngẫu nhiên thực sự.
19
Mã hóa và bảo mật dữ liệu
- Với việc chọn ra một số trong một dãy số đủ lớn và chọn nhiều lần thì hầu hết các nhà toán học
đều có thể tìm ra mẫu chung cho các số đó. Nhà phân tích sẽ tìm kiếm các mẫu và công thức
chung cho các con số từ dạng thập phân và cả nhị phân của chúng. Một số không có mẫu và công
thức rõ ràng thì nó gần như là một số ngẫu nhiên.
- Để chọn ra các con số ngẫu nhiên làm khóa đối xứng, ta sử dụng thiết bị gọi là Random Number
Generator (RNG). RNG thu thập tất cả các số liệu thống kê từ nhiều nguồn khác nhau làm đầu
vào để kiểm tra độ ngẫu nhiên. Các số liệu này có thể là thông số của dòng điện hoặc các số liệu
thời tiết … Sau khi chọn ra được một số ngẫu nhiên, RNG sẽ đưa số này vào nơi cần. Khi một
yêu cầu tạo số ngẫu nhiên khác được đưa đến RNG, thì RNG sẽ tạo ra một hệ dữ liệu mới để sử
dụng cho việc tạo số ngẫu nhiên, nên các con số được tạo ra ở lần thứ 2 này sẽ không bao giờ
trùng với lần đầu tiên
- Để tránh trường hợp người sử dụng thuật toán mã hóa không có RNG, mỗi thuật toán mã hóa đều

phải tự tạo ra được số ngẫu nhiên để sử dụng Pseudo-Random Number Generator (PRNG).
- PRNG là phần mềm tạo ra các số ngẫu nhiên giả. Gọi là ngẫu nhiên giả bởi vì nó luôn tạo ra các
số giống nhau ở mỗi lần chạy. Vì thế cần một chức năng để cho các số được tạo ra là duy nhât.
Cách giải quyết ở đây là việc tạo số từ các giá trị nhập vào khác nhau gọi là seed. Seed có thể là
mọi con số trong máy tính ví dụ như ngày giờ được tính đến mili giây, hoặc tọa độ con trỏ chuột

- Các seed trước khi trở thành giá trị đầu vào của PRNG sẽ được kết hợp với nhau để tăng độ phức
tạp. Việc này sẽ giúp PRNG tránh việc tạo ra các con số giống nhau.
The Block, the Stream and the Feistel
1. The Block Cipher
- Là thuật toán mã hóa khóa đối xứng mã hóa từng block dữ liệu thay vì từng bit. Các block thường
là bội số của 8 hoặc 64 bit.
- Nếu từng block giống nhau thì sẽ cho ra các kết quả mã hóa giống nhau. Việc này làm giảm độ
bảo mật của thuật toán. Để giải quyết việc giống nhau của các block ta sử dụng feedback mode
gọi là Cipher Block Channing (CBC).
- CBC thực hiện phép toán XOR giữ plaintext và cipher text. Ví dụ như một plaintext được đưa
vào mã hóa thì đã được XOR với kết quả của block trước đó. Đối với block đầu tiên, kết quả sẽ
được XOR với giá trị Initial Value (IV).
- IV cũng là một giá trị seed và người mã hóa lẫn giải mã đều biết giá trị này. IV được bảo mật và
gởi từ người mã hóa đến người giải mã cùng với khóa.
- Dưới đây là sơ đồ của CBC
20
Mã hóa và bảo mật dữ liệu
The Stream Cipher
- Mã hóa từng bit dữ liệu.
- Ưu điểm là mã hóa nhanh nhưng khóa không có giá trị sử dụng lại.
Feistel Cipher
- Sửa đổi nhiều lần một đoạn dữ liệu đơn giản có thể làm cho nó trở nên phức tạp hơn. Dựa trên
nguyên tắc thay thế nhiều lần, làm rối những đoạn văn bản mã hóa đơn giản tạo nên thuật toán mã
hóa Feistel.

- Các bước thay thế và sửa đổi được thực hiện qua nhiều bước và một loạt các bước lặp lại được
gọi là 1 round.
- Dưới đây là ví dụ cho Feistel Cipher
21
Mã hóa và bảo mật dữ liệu
- Trong ví dụ trên, plaintext được chia làm 2 : nửa trái và nửa phải. Nửa phải được nhân làm 2. 1
nửa phải được mã hóa với key phụ k1 và thực hiện XOR với nửa trái rồi trở thành nửa phải mới
cho round tiếp theo. Bản sao nửa phải ban đầu được sử dụng làm nửa trái cho round tiếp theo.
- Mỗi round sử dụng một khóa phụ khác nhau. Và khóa phụ này được sinh ra từ khóa chính.
- Các tham số ảnh hưởng đến thuật toán
+ Key size
+ Số round
+ block size
22
Mã hóa và bảo mật dữ liệu
+ Round function
+ Giải thuật tạo khóa phụ
2. Các thuật toán mã hóa khóa đối xứng phổ biến
1. DES
2. Double DES
3. Triple DES
Là DES cải tiến nhằm giải quyết việc khóa có độ dài ngắn (56 bit).
DES-3 thực hiện 3 bước với 2 bước mã hóa và 1 bước giải mã. Vd với DES-3 sử dụng 2
khóa k1,k2
4. AES: Rijndael
Được thiết kế để sử dụng 3 khóa có độ dài khác nhau 128bit, 192 bit và 256 bit
1D. Hệ mã hóa công khai
- Quá trình mã hoá sử dụng một khoá có thể công khai và khi giải mã thì sử dụng một khoá khác.
Vì sử sụng 1 cặp khoá trong đó có một khoá có thể được công bố nên gọi là hệ khoá công khai,
hay còn gọi là hệ phi đối xứng.Thực chất hệ mã khoá công khai sử dụng 2 khoá có liên quan với

nhau:
- Khoá công khai (Public key) được sử dụng để mã hoá những thông tin mà bạn muốn chia sẽ với
bất cứ ai. Chính vì vậy bạn có thể tự do phân phát nó cho bất cứ ai mà bạn cần chia sẻ thông tin ở
dạng mã hoá.
- Khoá riêng (Private key) khoá này thuộc sở hữu riêng tư của người được cấp và nó được sử dụng
để giải mã thông tin.
- Nguyên lý hoạt động của hệ mã hoá công cộng do các ông Whitfield Diffie và Martin Hellman
nghĩ vào ra năm 1977. Khi hai bên trao đổi thông tin phải biết khoá công khai (e
k
) của nhau. Việc
biết khoá công khai (e
k
) không cho phép tính ra được khoá riêng (d
k
). Như vậy trong hệ thống mỗi
23
Mã hóa và bảo mật dữ liệu
cá thể k khi đăng ký vào hệ thống được cấp 1 cặp khóa (e
k
,d
k
). Trong đó e
k
là chìa khóa lập mã,
d
k
là chìa khoá giải mã .
- Mô hình hoạt động khi bên A muốn gửi cho bên B một văn bản m thì Bên A phải dùng khoá
công khai của bên B để mã hoá thông tin, văn bản đã mã hóa được ký hiệu là T= e
k

(m). Khi bên
B nhận được thì dùng khoá riêng d
k
(của cặp e
k
, d
k
) để giải mã khi đó: d
k
(T)= d
k
(e
k
(m))= m. Như
vậy có thể nhiều cá nhân C, D cùng thực hiện giao dịch và có khoá công khai của B, nhưng
C,D không thể giải mã được m vì không có khoá d
k
dù cho đã chặn bắt được các gói thông tin
gửi đi trên mạng.
- Thực ra mô hình này đã sử dụng trong thực tế giao dịch là sử dụng chứng minh nhân dân để nhận
quà, tiền hoặc hàng qua bưu điện, khoá công khai đóng vai trò như: Tên trên giấy chứng minh
thư, còn khoá cá nhân là ảnh và dấu vân tay. Nếu xem bưu phẩm là thông tin truyền đi, được "mã
hoá" bởi tên người nhận, dù có dùng chứng minh thư nhặt được vẫn không được nhân viên bưu
cục giao bưu kiện vì ảnh mặt và dấu vân tay không giống.
Hệ trao đổi khóa Diffie – Hellman :
- Giải thuật mã hóa công khai đầu tiên.
- Đề xuất bởi Whitfield Diffie và Martin Hellman vào năm 1976.
- Chỉ dùng để trai đổi khóa bí mật một cách an ning trên cách kênh thộng tin không an ninh.
- Khóa bí mật được tính toán bởi cả hai bên.
- An ninh phụ thuộc vào độ phức tạp của việc tính toán log rời rạc.

Thiết lập Diffie-Hellman
- Các bên thống nhất với nhau các tham số chung :
• q là một số nguyên tố đủ lớn.
• α là một số nguyên căn của q
• α mod q, α
2
mod q, …, α
q-1
mod q là các số nguyên giao hoán của các số từ 1 đến q -1.
- Bên A
o Chọn ngẫu nhiên làm khóa riêng X
A
<q`
o Tính khóa công khai Y
A
= α
XA
mod q
- Bên B
o Chọn ngẫu nhiên làm khóa riêng X
B
<q
o Tính khóa công khai Y
B
= α
XB
mod q
Trao đổi khóa Diffie-Hellman
- Bên A biết khóa riêng X
A

và khóa công khai Y
B
K = Y
B
^X
A
mod q
- Bên B biết khóa riêng X
B
và khóa công khai Y
A
K = Y
A
^X
B
mod q
- Chứng minh :
Y
A
^X
B
mod q = (α
XA
mod q)
XB
mod q
= α
XAXB
mod q
= α

XBXA
mod q
24
Mã hóa và bảo mật dữ liệu
= (α
XB
mod q)
XA
mod q
= Y
B
XA
mod q
Ví dụ :
Ví dụ: Giả sử A và B chọn p = 11 và α = 2
Nhóm nhân xyclic sinh bởi α:
{ αi , i=0, ,9}={1,2,4,8,5,10,9,7,3,6}
(Các phần tử sinh của nhóm này bao gồm các phần tử sau: α =2, α^3 = 8, α^7 =7, α^9 = 6)
Giả sử A chọn giá trị ngẫu nhiên x = 4 và gửi cho B giá trị 2^4mod 11 = 5.
Giả sử B chọn giá trị ngẫu nhiên y = 7 và gửi cho A giá trị 2^7mod 11 = 7
B nhận được 5 và tính khoá chung k = 5^7 mod 11 =3
A nhận được 7 và tính khoá chung k = 7^4 mod 11 =3
RSA :
Khái niệm

RSA được Rivest, Shamir và Adleman phát triển, là một thuận toán mật mã hóa khóa công khai. Đây là
thuật toán đầu tiền phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa. Nó đánh dấu một sự
tiến hóa vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa công khai. RSA đang được sử dụng
phổ biến trong thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn.
Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại Học viện

Công nghệ Massachusetts (MIT). Tên của thuật toán lấy từ 3 chữ cái đầu của tên 3 tác giả.
Trước đó, vào năm 1973, Clifford Cocks, một nhà toán học người Anh làm việc tại GCHQ, đã mô tả một
thuật toán tương tự. Với khả năng tính toán tại thời điểm đó thì thuật toán này không khả thi và chưa bao
giờ được thực nghiệm. Tuy nhiên, phát minh này chỉ được công bố vào năm 1997 vì được xếp vào loại
tuyệt mật.
25

×