You are on page 1of 21

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT

NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC


THẮNG KHOA CÔNG NGHỆ THÔNG
TIN

THI GIỮA HỌC KÌ II

THI GIỮA HỌC KÌ II MÔN XÁC


SUẤT VÀ THÔNG KÊ ỨNG DỤNG
CHO CÔNG NGHỆ THÔNG TIN

Người hướng dẫn: MAI DUY TÂN


Người thực hiện: VÕ VĂN CHIẾN
Lớp : 20050301
Khoá : 24

THÀNH PHỐ HỒ CHÍ MINH, NĂM 2022


TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT
NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC
THẮNG KHOA CÔNG NGHỆ THÔNG
TIN

THI GIỮA HỌC KÌ II

THI GIỮA HỌC KÌ II MÔN XÁC


SUẤT VÀ THÔNG KÊ ỨNG DỤNG
CHO CÔNG NGHỆ THÔNG TIN

Người hướng dẫn: MAI DUY TÂN


Người thực hiện: VÕ VĂN CHIẾN
Lớp : 20050301
Khoá : 24

THÀNH PHỐ HỒ CHÍ MINH, NĂM 2022


i

LỜI CẢM ƠN

Cấu trúc rời rạc là một môn học nghiên cứu về các đối tượng rời rạc. Nói về các
vấn đề logic, tư duy mà các giảng viên đã giảng dạy.
Em xin cảm ơn các giảng viên đã giúp cho em hoàn thành được tất cả những
vấn đề mà em còn gặp nhiều khó khăn trong quá trình học tập và làm bài thi giữa học
kì II này. Mặc dù gặp khó khăn nhưng không tránh được những sai xót và hạn chế rất
mong được sự tham gia và đóng góp ý kiến bổ sung của giảng viên.
Xin chân thành cảm ơn!
ii

CÔNG TRÌNH ĐƯỢC HOÀN THÀNH


TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG

Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi và được sự hướng
dẫn khoa học của GV Mai Duy Tân;. Các nội dung nghiên cứu, kết quả trong đề tài này
là trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây. Những số liệu trong
các bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thu
thập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham khảo.
Ngoài ra, trong luận văn còn sử dụng một số nhận xét, đánh giá cũng như số liệu
của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thích nguồn gốc.
Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm
về nội dung luận văn của mình. Trường đại học Tôn Đức Thắng không liên quan đến
những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trình thực hiện (nếu có).
TP. Hồ Chí Minh, ngày 14 tháng 03 năm
2022 Tác giả
(ký tên và ghi rõ họ tên)

Chien

Võ Văn Chiến
1

TÓM TẮT
Tóm tắt các vấn đề nghiên cứu:
- Các khái niệm cơ bản về mật mã.
- Tìm hiểu về Monoalphabetic substitution ciphe.
- Tìm hiểu về Frequency analysis.
2

MỤC LỤC
LỜI CẢM ƠN.................................................................................................................i
TÓM TẮT...................................................................................................................... 1
MỤC LỤC...................................................................................................................... 2
DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT................................................................4
DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ.................................................5
CHƯƠNG 1 – GIỚI THIỆU..........................................................................................6
1. Các khái niệm cơ bản về mật mã.......................................................................6
1.1 Mã hóa và mã hóa.......................................................................................6
1.2 Hệ thống mật mã đối xứng..........................................................................6
1.3 Hệ thống mật mã bất đối xứng....................................................................7
CHƯƠNG 2 – MONOALPHABETIC SUBSTITUTION CIPHER...............................8
1. Khái quát...........................................................................................................8
2. Phương pháp và ví dụ........................................................................................9
3. Thuật toán..........................................................................................................9
4. Nhận xét..........................................................................................................10
CHƯƠNG 3 – FREQUENCY ANALYSIS.................................................................10
1. Khái quát.........................................................................................................10
2. Phương pháp và ví dụ......................................................................................11
3. Thuật toán........................................................................................................15
4. Nhận xét..........................................................................................................15
3

TÀI LIỆU THAM KHẢO............................................................................................16


PHỤ LỤC..................................................................................................................... 17
4

DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT


5

DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ


DANH MỤC HÌNH
Hình 1: Hệ thống mật mã đối xứng..........................................................................7

Hình 2: Hệ thống mật bất mã đối xứng....................................................................8


DANH MỤC BẢNG

Bảng 1: Phân bố tần suất của ký tự..........................................................................8


6

CHƯƠNG 1 – GIỚI THIỆU


1. Các khái niệm cơ sở.
1.1 Mã hóa và giải mã.
Mã hóa là phương pháp để biến thông tin (hình ảnh, văn bản, hình ảnh, …) từ định
dạng bình thường sang dạng thông tin không thể hiểu được nếu không có phương tiện giải
mã.
Giải mã là phương pháp đưa thông tin ở dạng mã hóa về dạng thông tin ban đầu, đây là
quy trình ngược của mã hóa quá trình giải mã được tiến hành như sau: Áp dụng các hàm
toán học Decryption lên thông tin CipherText để được thông tin đã giải mã Plaintext.

Một số hệ thống mã hóa bao gồm các thành phần:


- Thông tin trước khi mã hóa, ký hiệu là P (Plaintext)
- Thông tin sau khi mã hóa, ký hiệu là C (Ciphertext)
- Chìa khóa, ký hiệu là K (Key)
- Phương pháp mã hóa/ giải mã, ký hiệu là EID (Encryption/Decryption)
Phân loại các kiểu mã hóa:
- Mã hóa cổ điển.
- Mã hóa một chiều.
- Mã hóa đối xứng.
- Mã hóa bật đối xứng.

Mã hóa có vai trò rất quan trọng, đặc biệt là trong giao dịch điện tử bằng cacs loại tiền
mã hóa như Bitcoin chẳng hạn. Nó giúp đảm bảo bí mật, toàn vẹn của thông tin, khi thông
tin đó được truyền trên mạng. Mã hóa cũng là nền tảng của kỹ thuật chũ ký điện tử, hệ
thống PKI, …. Một cách khái quát, ta có thể thấy mật mã có các ứng dụng như sau:
- Bảo vệ truyền tin mật trong quân sự và ngoại giao, bảo vệ thông tin các lĩnh vực
tầm cỡ lợi ích quốc gia.
- Bảo vệ các thông tin nhạy cảm trong giao dịch như hồ sơ pháp lý hay y tế, các giao
dịch tài chính, …
- Bảo vệ các thông tin nhạy cảm, riêng tư trong liên lạc với thế giới qua các giao dịch
sử dụng máy tính và kết nối mạng.

1.2 Hệ thống mật mã đối xứng.


Hệ thống mật mã đối xứng là những hệ thống mật mã được sử dụng chung 1 khóa
trong quá trình mã hóa. Do đó khóa giữ bí mật tuyệt đối.
Một số hệ thống mật mã đối xứng mà hay được sử dụng là DES, AES, RC4, RC5, …
7

Hình 1: Hệ thống mật mã đối xứng

Hệ thống mật mã đối xứng gồm:


- Bản rõ (Plaintext-M): bản tin được sinh ra bởi bên gửi.
- Bản mật (Ciphertext-C): bản tin che giấu thông tin của bản rõ, được gửi tới bên
nhận qua một kênh không bí mật.
- Khóa (Ks): là giá trị ngẫu nhiên và bí mật được chia sẻ giữa các bên trao đổi thông
tin.
- Mã hóa (Encrypt-E): C = E(KS, M)
- Giải mã (decrypt): M = D(KS, C) = D(KS, E(KS, M))

Ưu điểm: tính đơn giản, vì nó sử dụng một khóa duy nhất cho cả mã hóa và giải
mã. Do đó, các thuật toán mã hóa đối xứng nhanh hơn đáng kể so với các thuật toán
không đối xứng và yêu cầu ít sức mạnh xử lý hơn.
Nhược điểm: lỗ hỏng. Việc phải chuyển khóa cho bên kia là một lỗ hổng bảo mật vì
nếu rơi vào tay kẻ xấu, thông tin sẽ được giải mã. Do đó, cần đặc biệt chú ý đến các
cách có thể để đánh chặn khóa và tăng cường bảo mật đường truyền.

1.3 Hệ thống mật mã bất đối xứng.


Mã hóa bất đối xứng là một hệ thống mật mã tương đối mới xuất hiện vào những
năm 1970. Mục tiêu chính của nó là khắc phục lỗ hổng của mã hóa đối xứng.
Một số hệ thống mật mã đối xứng mà hay được sử dụng là RSA
8
Hình 2: Hệ thống mật mã bất đối xứng

Hệ thống mật mã bất đối xứng gồm:


- Bản rõ (Plaintext-M): bản tin được sinh ra bởi bên gửi.
- Bản mật (Ciphertext-C): bản tin che giấu thông tin của bản rõ, được gửi tới bên
nhận qua một kênh không bí mật.
- Khóa: Bên nhận có 1 cặp khóa (KUB và KRB)
- Mã hóa (Encrypt-E): C = E(Kub, M)
- Giải mã (Decrypt): M = D(Krb, C) = D(Krb, E(Kub, M))

Ưu điểm: tính bảo mật của nó vì khóa riêng tư không cần phải được chuyển cho bất
kỳ ai. Điều này giúp đơn giản hóa đáng kể việc quản lý khóa trong các mạng lớn hơn.

Nhược điểm: Độ phức tạp cao hơn, tốc độ thấp hơn và nhu cầu cao hơn về tài
nguyên tính toán.

CHƯƠNG 2 – MONOALPHABETIC SUBSTITUTION CIPHER


1. Khái quát.
A monoalphabetic substitution cipher là một mật mã trong đó mỗi lần xuất hiện của
một ký hiệu bản rõ được thay thế bằng một ký hiệu bản mã tương ứng để tạo ra bản mã.
Chìa khóa cho một mật mã như vậy là một bảng tương ứng hoặc một hàm mà từ đó tính
toán tương ứng.
A monoalphabetic substitution cipher còn được gọi là a simple substitution cipher, dựa
trên một cấu trúc thay thế cố định. Đó là sự thay thế được cố định cho mỗi chữ cái của
bảng chữ cái. Ví dụ, nếu “a” được mã hóa thành “C”, thì mỗi chúng ta nhìn thấy chữ “a”
trong bản rõ, chúng ta sẽ thay thế bằng chữ “C” trong bảng mã.

Có rất nhiều monoalphabetic substitution cipher khác nhau, trên thực tế là rất nhiều, vì
mỗi chữ cái có thể được mã hóa thành bất kỳ ký hiệu nào, không chỉ là một chữ cái khác.

Lịch sử của monoalphabetic substitution cipher có thể được bắt nguồn từ những nền
văn minh sớm nhất, và trong thời gian dài.

Số lượng hoán vị của 26 chữ cái là 26! = 4x10 26 (số khóa). Phương pháp này còn
được gọi là phương pháp mã hóa an toàn trong suốt 1000 năm trước công nguyên.
9
2. Phương pháp và ví dụ.
- Viết ra bảng chữ cái A, B, C, D … theo thứ tự.
- Chọn hoán vị ngẫu nhiên được chọn của các chữ cái trong bảng chữ cái.
- Bên dưới của bảng chữ cái , viết hoán vị của các chữ cái trong bảng chữ cái. Thay
thế từng ký tự bản rõ bằng cách thay thế ký tự hoán vị nằm bên dưới nó trong bảng.

Ví dụ, hoán vị được chọn là K, D, G, F, …, U, O. Thì bản rõ được mã hóa thành


“WJBXP”.
Khi có được bản mã thì sẽ thay thế các chữ cái của bản mã ở hàng dưới cùng bằng chữ
cái rõ ràng tương ứng với hàng trên. Ta có, bản mã “WJBXP” khi đó nó được giải mã
thành “joins”
Ví dụ: cho một bảng mã như sau:

Ví dụ: FAR ABOVE CAYUGA’S WATERS được coi là OCVCA NWYIC QPBCE
LCGYE.

Để giải mã một bản rõ nhận được từ thuật toán mật mã , người có bản mã ciphertext
cần biết khóa, do đó yêu cầu một giao thức về trao khoá.

Đơn giản nhất có thể thực hiện là người gửi tin ghi khoá ra đĩa và chuyển đĩa cho
người nhận. Rõ ràng cách làm này đơn giản nhưng thực tế không an toàn. Trong thực tế
người ta sử dụng nhiều giao thức phức tạp và tinh vi hơn.

3. Thuật toán.
import random
mess_text = input("Enter the mess: ")
alpha = 'abcdefghijklmnopqrstuvwxyz'
key = 7
encrypt = ''
decrypt = ''
for i in mess_text:
    poss = alpha.find(i)
    newposs = (poss + 7)%26
    encrypt += alpha[newposs]
print(encrypt)

for i in mess_text:
    pos = alpha.find(i)
    newpos = (pos - 7)%26
    decrypt += alpha[newpos]
10
print(decrypt)

4. Nhận xét.

A monoalphabetic substitution cipher có số lượng khóa rất lớn (26!) nên việc phá mã
rất lâu và khó. Và hiện nay, các hệ thống máy tính hiện đại cũng chưa đủ mạnh để có thể
tấn công bạo lực nằm phá vỡ hệ thống .

Tuy nhiên, monoalphabetic substitution cipher có thiết kế đơn giản và nó dễ có sai xót
trong thiết kế nên hệ thống mật mã có thể dẽ bị phá vỡ.

CHƯƠNG 3 – FREQUENCY ANALYSIS


1. Khái quát.

Frequency analysis (còn được gọi là counting letters) là nghiên cứu về tần suất của các
chữ cái hoặc nhóm chữ cái trong một bản mã. Phương pháp này được sử dụng như một
biện pháp hỗ trợ để phá vỡ classical ciphers.

Vào thế kỉ 19, Al-Kindi một nhà hiền triết người Ả Rập đã tìm ra cách giải mã khả
thi khác. Dựa trên các vấn đề:

- Trong ngôn ngữ Anh, tần suất xuất hiện của các chữ cái là không đồng đều, chữ
E là chữ cái đucợ xuất hiện nhiều nhất, còn chữ Z, Q, J là những chữ cái thường
ít được sử dụng.
- Nếu chữ E được thay thế bằng chữ K thì tần suất xuất hiện của chữ K trong bản
mã là 13.05%.
11

Bảng 1: Phân bố tần suất của ký tự.

Mỗi ngôn ngữ có một chuỗi ký tự điển hình và phổ biến. Trong tiếng Anh, có các
bigrams thông dụng, như tr, er, on, an, ss, tt và ee.

Phân tích tần số được sử dụng để phá vỡ mật mã thay thế. Tìm các chữ cái phổ biến
trong bản mã và cố gắng thay thế chúng bằng các chữ cái phổ biến trong ngôn ngữ được sử
dụng.

Kẻ tấn công thường kiểm tra một số khả năng và thực hiện một số thay thế các chữ cái
trong bản mã. Tìm kiếm những từ có thể xuất hiện và dựa vào đó để thay thế nhiều hơn. Sử
dụng máy tính, có thể thử rất nhiều tổ hợp trong thời gian tương đối ngắn.

Ví dụ, nếu trong bản mã được phân tích, chữ cái phổ biến nhất là  v , người ta có thể
dự đoán rằng v thay thế e hoặc  o (một trong những chữ cái phổ biến nhất trong tiếng Anh)
từ bản rõ.

2. Phương pháp và ví dụ.

Ví dụ: Cho một bảng mã sau:

“GFS WMY OG LGDVS MF SFNKYHOSU ESLLMRS, PC WS BFGW POL DMFRQMRS, PL OG


CPFU M UPCCSKSFO HDMPFOSXO GC OIS LMES DMFRQMRS DGFR SFGQRI OG CPDD GFS
12
LISSO GK LG, MFU OISF WS NGQFO OIS GNNQKKSFNSL GC SMNI DSOOSK. WS NMDD OIS
EGLO CKSJQSFODY GNNQKKPFR DSOOSK OIS 'CPKLO', OIS FSXO EGLO GNNQKKPFR
DSOOSK OIS 'LSNGFU' OIS CGDDGWPFR EGLO GNNQKKPFR DSOOSK OIS 'OIPKU', MFU LG
GF, QFOPD WS MNNGQFO CGK MDD OIS UPCCSKSFO DSOOSKL PF OIS HDMPFOSXO
LMEHDS. OISF WS DGGB MO OIS NPHISK OSXO WS WMFO OG LGDVS MFU WS MDLG
NDMLLPCY POL LYEAGDL. WS CPFU OIS EGLO GNNQKKPFR LYEAGD MFU NIMFRS PO OG
OIS CGKE GC OIS 'CPKLO' DSOOSK GC OIS HDMPFOSXO LMEHDS, OIS FSXO EGLO NGEEGF
LYEAGD PL NIMFRSU OG OIS CGKE GC OIS 'LSNGFU' DSOOSK, MFU OIS CGDDGWPFR EGLO
NGEEGF LYEAGD PL NIMFRSU OG OIS CGKE GC OIS 'OIPKU' DSOOSK, MFU LG GF, QFOPD
WS MNNGQFO CGK MDD LYEAGDL GC OIS NKYHOGRKME WS WMFO OG LGDVS.”

- Tìm tần số của các chữ cái xuất hiện trong bảng sẽ nhận được các giá trị.

- Chúng ta có thể thấy tần số xuất hiện trong bảng mã. Ở đây có các ký tự phổ biến
nhất là “S”, tiếp theo là “O”. Chúng đại diện cho “e” và “t”. Tiếp theo chúng ta
thay thế tất cả các ký tự “S” và “O” lần lượt là “e” và “t”.

“GFe WMY tG LGDVe MF eFNKYHteU EeLLMRe, PC We BFGW PtL DMFRQMRe,


PL tG CPFU M UPCCeKeFt HDMPFteXt GC tIe LMEe DMFRQMRe DGFR eFGQRI tG
CPDD GFe LIeet GK LG, MFU tIeF We NGQFt tIe GNNQKKeFNeL GC eMNI DetteK.
We NMDD tIe EGLt CKeJQeFtDY GNNQKKPFR DetteK tIe 'CPKLt', tIe FeXt EGLt
GNNQKKPFR DetteK tIe 'LeNGFU' tIe CGDDGWPFR EGLt GNNQKKPFR DetteK tIe
'tIPKU', MFU LG GF, QFtPD We MNNGQFt CGK MDD tIe UPCCeKeFt DetteKL PF tIe
HDMPFteXt LMEHDe. tIeF We DGGB Mt tIe NPHIeK teXt We WMFt tG LGDVe MFU
We MDLG NDMLLPCY PtL LYEAGDL. We CPFU tIe EGLt GNNQKKPFR LYEAGD
MFU NIMFRe Pt tG tIe CGKE GC tIe 'CPKLt' DetteK GC tIe HDMPFteXt LMEHDe, tIe
FeXt EGLt NGEEGF LYEAGD PL NIMFReU tG tIe CGKE GC tIe 'LeNGFU' DetteK,
MFU tIe CGDDGWPFR EGLt NGEEGF LYEAGD PL NIMFReU tG tIe CGKE GC tIe
'tIPKU' DetteK, MFU LG GF, QFtPD We MNNGQFt CGK MDD LYEAGDL GC tIe
NKYHtGRKME We WMFt tG LGDVe.”

- Trong bảng mã có chuỗi ký tự “tle” xuất hiện thường xuyên. Trong tiếng Anh, 3 ký
tự phổ biến nhất là “the”. Điều này có nghĩa là, chúng ta sẽ thay thế ký tự “l” được
giải mã thành “h”.
- Trong bảng mã thấy tần số xuất hiện của ký tự “G” là có tần suất xuất hiện nhiều
nhất và có chuỗi ký tự “tG” có nghĩa duy nhất là “to”, vì vậy chọn “G” là “o”.

“oFe WMY to LoDVe MF eFNKYHteU EeLLMRe, PC We BFoW PtL DMFRQMRe, PL


to CPFU M UPCCeKeFt HDMPFteXt oC the LMEe DMFRQMRe DoFR eFoQRh to
CPDD oFe Lheet oK Lo, MFU theF We NoQFt the oNNQKKeFNeL oC eMNh DetteK.
We NMDD the EoLt CKeJQeFtDY oNNQKKPFR DetteK the 'CPKLt', the FeXt EoLt
oNNQKKPFR DetteK the 'LeNoFU' the CoDDoWPFR EoLt oNNQKKPFR DetteK the
'thPKU', MFU Lo oF, QFtPD We MNNoQFt CoK MDD the UPCCeKeFt DetteKL PF the
HDMPFteXt LMEHDe. theF We DooB Mt the NPHheK teXt We WMFt to LoDVe MFU
We MDLo NDMLLPCY PtL LYEAoDL. We CPFU the EoLt oNNQKKPFR LYEAoD
MFU NhMFRe Pt to the CoKE oC the 'CPKLt' DetteK oC the HDMPFteXt LMEHDe, the
13
FeXt EoLt NoEEoF LYEAoD PL NhMFReU to the CoKE oC the 'LeNoFU' DetteK, MFU
the CoDDoWPFR EoLt NoEEoF LYEAoD PL NhMFReU to the CoKE oC the 'thPKU'
DetteK, MFU Lo oF, QFtPD We MNNoQFt CoK MDD LYEAoDL oC the
NKYHtoRKME We WMFt to LoDVe.”

- Có chuỗi ký tự “oFe”, xét vơi sự xuất hiện của “theF”, chúng ta sẽ chọn “F” là “n”.
- Trong bảng mã chuỗi ký tự “Lheet” rất có thể là “sheet”, vì vậy chúng ta sẽ thay
thế “L” bằng “s”.

“one WMY to soDVe Mn enNKYHteU EessMRe, PC We BnoW Pts DMnRQMRe, Ps to


CPnU M UPCCeKent HDMPnteXt oC the sMEe DMnRQMRe DonR enoQRh to CPDD
one sheet oK so, MnU then We NoQnt the oNNQKKenNes oC eMNh DetteK. We NMDD
the Eost CKeJQentDY oNNQKKPnR DetteK the 'CPKst', the neXt Eost oNNQKKPnR
DetteK the 'seNonU' the CoDDoWPnR Eost oNNQKKPnR DetteK the 'thPKU', MnU so
on, QntPD We MNNoQnt CoK MDD the UPCCeKent DetteKs Pn the HDMPnteXt
sMEHDe. then We DooB Mt the NPHheK teXt We WMnt to soDVe MnU We MDso
NDMssPCY Pts sYEAoDs. We CPnU the Eost oNNQKKPnR sYEAoD MnU NhMnRe Pt
to the CoKE oC the 'CPKst' DetteK oC the HDMPnteXt sMEHDe, the neXt Eost NoEEon
sYEAoD Ps NhMnReU to the CoKE oC the 'seNonU' DetteK, MnU the CoDDoWPnR
Eost NoEEon sYEAoD Ps NhMnReU to the CoKE oC the 'thPKU' DetteK, MnU so on,
QntPD We MNNoQnt CoK MDD sYEAoDs oC the NKYHtoRKME We WMnt to
soDVe.”

- Có cụm ký tự “soDVe”, có thể chuyển thành “solve” và sẽ biến đổi “D” và “V”
thành “l” và “v”.
- Cụm từ “one sheet oK so” và biến đổi “K” thành “r”.

“one WMY to solve Mn enNrYHteU EessMRe, PC We BnoW Pts lMnRQMRe, Ps to


CPnU M UPCCerent HlMPnteXt oC the sMEe lMnRQMRe lonR enoQRh to CPll one
sheet or so, MnU then We NoQnt the oNNQrrenNes oC eMNh letter. We NMll the Eost
CreJQentlY oNNQrrPnR letter the 'CPrst', the neXt Eost oNNQrrPnR letter the 'seNonU'
the ColloWPnR Eost oNNQrrPnR letter the 'thPrU', MnU so on, QntPl We MNNoQnt Cor
Mll the UPCCerent letters Pn the HlMPnteXt sMEHle. then We looB Mt the NPHher teXt
We WMnt to solve MnU We Mlso NlMssPCY Pts sYEAols. We CPnU the Eost
oNNQrrPnR sYEAol MnU NhMnRe Pt to the CorE oC the 'CPrst' letter oC the HlMPnteXt
sMEHle, the neXt Eost NoEEon sYEAol Ps NhMnReU to the CorE oC the 'seNonU' letter,
MnU the ColloWPnR Eost NoEEon sYEAol Ps NhMnReU to the CorE oC the 'thPrU'
letter, MnU so on, QntPl We MNNoQnt Cor Mll sYEAols oC the NrYHtoRrME We
WMnt to solve.”

- Cụm từ “enoQRh” biến đổi thành “enough” và biến đổi “Q” và “R” thành “u” và
“g”.

“one WMY to solve Mn enNrYHteU EessMge, PC We BnoW Pts lMnguMge, Ps to CPnU


M UPCCerent HlMPnteXt oC the sMEe lMnguMge long enough to CPll one sheet or so,
MnU then We Nount the oNNurrenNes oC eMNh letter. We NMll the Eost CreJuentlY
oNNurrPng letter the 'CPrst', the neXt Eost oNNurrPng letter the 'seNonU' the ColloWPng
Eost oNNurrPng letter the 'thPrU', MnU so on, untPl We MNNount Cor Mll the
14
UPCCerent letters Pn the HlMPnteXt sMEHle. then We looB Mt the NPHher teXt We
WMnt to solve MnU We Mlso NlMssPCY Pts sYEAols. We CPnU the Eost oNNurrPng
sYEAol MnU NhMnge Pt to the CorE oC the 'CPrst' letter oC the HlMPnteXt sMEHle, the
neXt Eost NoEEon sYEAol Ps NhMngeU to the CorE oC the 'seNonU' letter, MnU the
ColloWPng Eost NoEEon sYEAol Ps NhMngeU to the CorE oC the 'thPrU' letter, MnU so
on, untPl We MNNount Cor Mll sYEAols oC the NrYHtogrME We WMnt to solve.”

- Chúng ta biến đổi “Nount” và “EessMge” thành “count” và “message” và biến đổi
“N”, “E” và “M” thành “c”, “m” và “a”.

“one WaY to solve an encrYHteU message, PC We BnoW Pts language, Ps to CPnU a


UPCCerent HlaPnteXt oC the same language long enough to CPll one sheet or so, anU
then We count the occurrences oC each letter. We call the most CreJuentlY occurrPng
letter the 'CPrst', the neXt most occurrPng letter the 'seconU' the ColloWPng most
occurrPng letter the 'thPrU', anU so on, untPl We account Cor all the UPCCerent letters Pn
the HlaPnteXt samHle. then We looB at the cPHher teXt We Want to solve anU We also
classPCY Pts sYmAols. We CPnU the most occurrPng sYmAol anU change Pt to the
Corm oC the 'CPrst' letter oC the HlaPnteXt samHle, the neXt most common sYmAol Ps
changeU to the Corm oC the 'seconU' letter, anU the ColloWPng most common sYmAol
Ps changeU to the Corm oC the 'thPrU' letter, anU so on, untPl We account Cor all
sYmAols oC the crYHtogram We Want to solve.”

- Biến đổi “W”, “X”, “Y” và “Z” thành “w”, “x”, “y” và “z”.
- Biến đổi cụm từ “occurrPng” và “sYmAol” thành “occurring” và “symbol”.

“one way to solve an encryHteU message, iC we Bnow its language, is to CinU a


UiCCerent Hlaintext oC the same language long enough to Cill one sheet or so, anU then
we count the occurrences oC each letter. we call the most CreJuently occurring letter the
'Cirst', the next most occurring letter the 'seconU' the Collowing most occurring letter the
'thirU', anU so on, until we account Cor all the UiCCerent letters in the Hlaintext samHle.
then we looB at the ciHher text we want to solve anU we also classiCy its symbols. we
CinU the most occurring symbol anU change it to the Corm oC the 'Cirst' letter oC the
Hlaintext samHle, the next most common symbol is changeU to the Corm oC the 'seconU'
letter, anU the Collowing most common symbol is changeU to the Corm oC the 'thirU'
letter, anU so on, until we account Cor all symbols oC the cryHtogram we want to solve.”

- Biến đổi “C” -> “f”, “B” -> “k”, “U” -> “d”, “J” -> “q” và “H” -> “p”.

“one way to solve an encrypted message, if we know its language, is to find a different
plaintext of the same language long enough to fill one sheet or so, and then we count the
occurrences of each letter. we call the most frequently occurring letter the 'first', the next
most occurring letter the 'second' the following most occurring letter the 'third', and so on,
until we account for all the different letters in the plaintext sample. then we look at the
cipher text we want to solve and we also classify its symbols. we find the most occurring
symbol and change it to the form of the 'first' letter of the plaintext sample, the next most
common symbol is changed to the form of the 'second' letter, and the following most
common symbol is changed to the form of the 'third' letter, and so on, until we account for
15
all symbols of the cryptogram we want to solve.” (Trích từ “Bản thảo về giải mã thông điệp
mật mã”, của Al-Kindi)

3. Thuật toán.
from collections import Counter
import collections
mess = 'GFS WMY OG LGDVS MF SFNKYHOSU ESLLMRS  GC SMNI OG LGDVS.'
alpha = 'abcdefghijklmnopqrstuvwxyz'
abc = mess.replace(' ','')
def fre_analysis(mess):
    mes = mess.upper()
    letter = {}
    for f in alpha:
        letter[f] = 0
    for f in mess:
        if f in alpha:
            letter[f] += 1
    return letter
def saf(mess):
    letter = fre_analysis(mess)
    print(letter)
saf(mess)
print(collections.Counter(abc).most_common(1)[0])
def decr(text, jump):
    decryption = ''
    for char in text.lower():
        ind = alpha.find(char)
        decryption += alpha[ind-jump]
    return decryption
print(decr(mess, 4))

4. Nhận xét.

Frequency analysis hoạt động cho mọi monoalphabetic substitution cipher và nó có thể
sử dụng bất kì ngôn ngữ nào bạn muốn.

Nhược điểm: đối với các đoạn mã ngắn, việc phân tích mật mã không có đủ dữ liệu để
phân tích liên quan đến các tần số của ký tự. Khi đó các tần số trong đoạn mã sẽ bị bóp
méo rất nhiều.

Sự xuất hiện của các ký tự khác nhau tùy thuộc vào ngữ cảnh của đoạn mã. Mức độ khó
tăng thêm này có thể làm cho quá trình giải đoạn mã tốn rất nhiều thời gian (cũng như loại
bỏ các dấu chấm câu.)
16

TÀI LIỆU THAM KHẢO


17

PHỤ LỤC

You might also like