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
Trang 1ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
UDTT & ANTT
Trang 2Contents
Trang 3MÃ 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âuhỏ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 tarấ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ôngnằ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ảithí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ệcthử 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áikhó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ácchì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ạpcủ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
Trang 4Mộ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 địnhnghĩa trước đó gọi là shift
Trang 5Ta 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ọiciphertext 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ườiphầ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 taliệ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ôngbả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,
Trang 6nế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ântí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
Trang 7Ta 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”.
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:
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
Trang 8TO 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ử:
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
Trang 9IVJ 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
Trang 10Ta chọn keyword là MOVE Keyword được đặt phía trên plaintext và lặp lại cho đến khi hết đoạnplaintext:
Key: MOVEM OV EMOV EM OVEMOVEMPlaintext: 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:
Nhằm tăng độ phức tạp cho Split Rail Cipher
Ví dụ ta dung lại đoạn Plaintext cũ:
SOFARTHEREHASBEENLITTLEMATHWHICHMAKESMEHAPPY
Trang 11Tuy 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ã :
Trang 12Do 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áicuố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
Trang 13The 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
Trang 141B 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ạphơ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
Trang 15Gầ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áitê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:
Trang 16Bạ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:
Trang 17Số 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ư)
[(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:
Trang 191C PRIVATE KEY EXCHANGE
- 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ự
Trang 20- 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 đềuphả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