TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT
KHOA CÔNG NGHỆ THÔNG TIN
*******
BÀI TIỂU LUẬN
CƠ SỞ AN NINH MẠNG
Tên đề tài: Tìm hiểu về hệ mã hóa khóa bí mật: Vigenere
Họ tên: Lê Tuấn Anh
Nhóm mơn học: 08
Giảng viên: Nguyễn Tuấn Anh
Năm học: 2021-2022
MỤC LỤC
HÀ NỘI - 2021
LỜI MỞ ĐẦU
Sự phát triển nhanh chóng của internet đã tác động đến cả công việc kinh doanh và
tiêu dùng với sự hứa hẹn về việc thay đổi cách mà con người sống và làm việc. Nhưng mối lo
ngại lớn nhất được đề cập đến là việc bảo mật trên Internet, đặc biệt là khi các thơng tin mang
tính nhạy cảm được gửi đi trên mạng xã hội.
Quá trính mã hóa trong máy tính dựa vào khoa học mật mã (Cyptography) đã được
con người sử dụng từ lâu đời. Trước thời đại số hóa, người sử dụng mật mã nhiều nhất vẫn là
chính phủ, chủ yếu là trong mục đích quân sự. Hầu hết các phương pháp mã hóa hiện nay là
dựa vào các máy tính, đơn giản là do các mã do con người sinh ra rất dễ bị phá hủy bởi các
cơng cụ máy tính.
Ngày nay thì việc mã hóa trở nên phổ cập. Các cơng ty phần mềm lớn trên thế giới
đều có nghiên cứu và xây dựng các cơng cụ, thuật tốn mã hóa để áp dụng cho thực tế. Mỗi
quốc gia hay tổ chức đều có những cơ chế mã hóa riêng để bảo vệ hệ thống thơng tin của
mình.
Ứng dụng của khoa học mật mã khơng chỉ đơn thuần là mã hóa và giả mã những
thông tin mà con bao gồm nhiều vấn đề khác cần được nghiên cứu và giải quyết như chứng
thực nguồn gốc nội dung thông tin (kỹ thuật chữ ký số), chứng nhận xác thực về người sở
hữu mã hóa (chứng nhận khóa cơng cộng), các quy trình trao đổi thông tin và thực hiện giao
dịch điện tử trên an toàn trên mạng.
Trong phần nghiên cứu này, chúng ta sẽ nghiên cứu về mật mã cổ điện và đặc biệt là
mật mã vingenere, là một trong những phương pháp mã hóa điển hình. Hệ mã hóa vingenere
là một phương pháp mã hóa văn bản chữ cái bằng cách sử dụng một loạt các thuật tốn của
hệ mã hóa ceasar khác nhau dựa trên các ký tự của từ khóa. Nó là một hình thức đơn giản của
phương pháp mã hóa thay thế.
Khi chọn đề tài này, nhóm em mong muốn được tìm hiểu những kiến thức cơ bản và
nâng cao, tổng quan về mã hóa đồng thời chỉ ra những ưu và nhược điểm nhất định mà nó
mang lại và nhóm em cũng mong muốn thực hành những điều cơ bản nhất, trình bày, phân
tích một số thuật tốn về mã hóa và ứng dụng của mã hóa vào thực tiễn đời sống để giúp một
phần chút ít kiến thức của chúng em về bảo vệ thơng tin an tồn mạng.
Bài của nhóm em được làm với tất cả những kiến thức và nỗ lực của chúng em nhưng
chắc chắn vẫn cịn những điều thiếu sót mong thầy và các bạn góp ý để chúng em có một bài
làm thật hoàn chỉnh.
Em xin chân thành cảm ơn!
2
PHẦN 1: MỞ ĐẦU
1. Lý do chọn đề tài.
Trong tình hình xã hội hiện nay việc lưu trữ và bảo vệ thông tin là một vấn đề
vô cùng quan trọng. Trong đó vấn đề bảo vệ thơng tin và bản quyền đang được rất
nhiều người coi trọng. Trong xã hội hiện nay có rất nhiều người ăn cắp bản quyền,
chính vì thế nên việc thực hiện mã hóa những tin nhắn, nội dung hay những dữ liệu
quan trọng là vô cùng cần thiết.
Có khá nhiều những phương pháp và hệ mã hóa khác nhau, tuy nhiên nhóm
em lựa chọn hệ mã hóa vingenere để trình bày trong bài viết này.
2. Mục đích và nhiệm vụ tìm hiểu đề tài.
•
•
Mục đích tìm hiểu
- Hiểu thêm về hệ mã hóa vigenere.
- Hiểu thêm về cách mã hóa và giải mã của các thuật toán.
- Hiểu rõ hơn về mục tiêu và hướng phát triển của hệ mã hóa.
- Biết được tầm quan trọng của các thuật toán đối với cuộc sống ngày
nay.
Nhiệm vụ tìm hiểu
- Tìm hiểu về cách thức hoạt động của các hệ mã hóa.
- Viết được code, lập trình và chạy chương trình thành cơng.
- Đưa ra một số ví dụ cho đề tài thêm sinh động.
3. Một số phương pháp.
- Lặp khóa
- Sinh khóa tự động
Trong bài viết này nhóm em sẽ lựa chọn phương pháp lặp khóa để thực hành mã hóa
và giải mã một bản rõ cơ bản.
PHẦN 2: NỘI DUNG
CHƯƠNG 1: TỔNG QUAN CHUNG VỀ HỆ MÃ HĨA VÀ HỆ MÃ HĨA
VINGENERE
1. Mã hóa và các đối tượng mã hóa.
Mã hóa thơng tin là q trình chuyển đổi thơng tin dạng rõ có thể đọc được (dữ liệu
gốc) sang dạng không thể đọc trực tiếp được (dữ liệu mã hóa) và ngược lại là giải mã.
3
Trong mã hóa dữ liệu gồm 3 loại đối tượng dữ liệu chính:
- Bản rõ của dữ liệu(plaintext)
- Bản mã hay bản mã hóa(ciphertext)
- Khóa là một phần thơng tin đặc biệt để kết hợp với một thuật toán để thục hiện
mã hóa và giải mã, khóa có thể là khóa đối xứng hoặc khơng và cơng khai
hoặc bí mật.
2. Các thành phần trong hệ mã hóa.
Một hệ thống mã hóa là một bộ phận gồm 5 thành phần (P, C, D, K, E) thỏa mãn các
điều kiện:
- P là một tập hợp hữu hạn các kí tự của bản rõ.
- C là một tập hơp hữu hạn các kí tự của bản mã.
- K là một tập hơp hữu hạn các khóa.
- E là phép lập mã hay giải thuật mã hóa, với mỗi kK và e E, ta có ánh xạ ek:
PC
- D là phép lập mã hay giải thuật mã hóa, với mỗi k K và d D, ta có ánh xạ ek:
PC
Với các hàm lập mã và giải mã phải thỏa mãn hệ thức dk (ek (x)) = x, với x được xem
là mỗi phần tử trong không gian P
3. Tiêu chuẩn đánh giá hệ mã hóa tốt.
Để biết hệ mã hóa có tốt khơng ta xét trên 3 yếu tố:
- Về độ an toàn: Gần như mọi thuật tốn mã hóa đều có thể bị phá vỡ, vì thế độ
an tồn của thuật tốn dựa vào 3 yếu tố sau:
• Nếu chi phí để giải thuật tốn lớn hơn giá trị của thơng tin thì tạm thời
được coi như là an tồn
• Nếu thời gian giải mã quá lâu
• Nếu lượng dữ liệu cần thiết cho giải thuật lớn hơn lượng dữ liệu giải
mã được
- Về tốc độ thực hiện.
- Về vấn đề phối khóa.
4. Phân loại phương pháp mã hóa.
Ta có thể phân loại mã hóa theo 2 nhóm:
- Nhóm theo phương pháp mã hóa
• Mã hóa cổ điển
• Mã hóa đối xứng
• Mã hóa bất đối xứng
• Hàm băm
- Nhóm theo khóa
• Khóa bí mật: Mã Ceasar, Mã Vigenere, …
• Khóa cơng khai: Hệ mã hóa RSA, hệ mã hóa đường cong elliptic, ….
5. Sơ đồ mã hóa và giải mã
4
6. Giới thiệu về hệ mã hóa vingenere.
Phương pháp trong mã hóa Vigenère được phát biểu lần đầu bởi Giovan Battista
Bellaso trong cuốn La cifra del. Sig. Giovan Battista Bellaso từ thế kỷ 16. Sau này Blaise
de Vigenère vào thế kỷ 19 công bố một phương pháp tương tự, nhưng mạnh hơn, người
ta đã lấy tên Vigenere đặt cho tên mã hóa này. Nhiều người cho rằng điều đó là khơng
cơng bằng cho người đã phát minh ra nó trước.
Mật mã Vigenère là một phương pháp mã hóa chữ văn bản tiếng Anh, lần đầu tiên
được mô tả bởi Giovan Battista Bellaso vào năm 1553. Phương pháp mã hóa mật mã
Vigenère dễ hiểu và dễ thực hiện, nhưng chỉ đến năm 1863 với nhiều nỗ lực suốt ba thế
kỷ, Friedrich Kasiski mới xuất bản một phương pháp chung để giải mã mật mã Vigenère
Mật mã Vigenère là tập hợp các quy tắc thay thế chữ cái đơn trong bảng chữ cái tiếng
Anh qua việc sử dụng 26 mật mã Caesar với các bước dịch chuyển từ 0 đến 25 tương
ứng từ chữ ‘a’ đến chữ ‘z’. Cụ thể, bản mã Vigenère được lập theo công thức sau:
ci = (pi + ki) mod 26, i=1, …, l
trong đó, C = {c1…cl} là bản mã, P= {p1…pl} là bản gốc, K = {k1…kl} là dãy khóa và
l là độ dài bản rõ. Tương tự, bản gốc P có thể được tính nếu biết khóa và bản mã theo
cơng thức:
pj = (cj – kj) mod 26, j = 1, …, l
Mật mã Vigenère không thể phá vỡ trong trường hợp sử dụng các khóa đủ dài. Nhưng
với các khóa ngắn hoặc nếu nhà thám mã có đủ nhiều bản mã so với độ dài khóa thì khá
dễ để phá vỡ. Việc thám mật mã Vigenère thường tiến hành theo hai bước là: xác định độ
dài chu kỳ của khóa trước, sau đó tìm khóa cụ thể.
CHƯƠNG 2: TÍNH CHẤT VÀ CÁC PHƯƠNG PHÁP CỦA HỆ MÃ HĨA
VINGENERE
1. Tính chất chung
-
Tính bí mật (confidentiality/privacy): tính chất này đảm bảo thơng tin chỉ
được hiểu bởi những ai biết chìa khóa bí mật.
Tính tồn vẹn (integrity): tính chất này đảm bảo thơng tin khơng thể bị thay
đổi mà khơng bị phát hiện. Tính chất này khơng đảm bảo thông tin không bị
thay đổi, nhưng một khi nó bị nghe lén hoặc thay đổi thì người nhận được
thơng tin có thể biết được là thơng tin đã bị nghe lén hoặc thay đổi. Các hàm
5
-
-
-
một chiều (one-way function) như MD5, SHA-1, MAC...được dùng để đảm
bảo tính tồn vẹn cho thơng tin.
Tính xác thực (authentication): người gửi (hoặc người nhận) có thể chứng
minh đúng họ. Người ta có thể dụng một password, một challenge dựa trên
một thuật tốn mã hóa hoặc một bí mật chia sẻ giữa hai người để xác thực. Sự
xác thực này có thể thực hiện một chiều (one-way) hoặc hai chiều (Multual
authentication).
Tính khơng chối bỏ (non-repudiation): người gửi hoặc nhận sau này không
thể chối bỏ việc đã gửi hoặc nhận thông tin. Thông thường điều này được thực
hiện thông qua một chữ ký điện tử (electronic signature).
Tính nhận dạng (identification): người dùng của một hệ thống, một tài
nguyên sở hữu một chứng minh thư (identity) như là một chìa khóa ban đầu
(primary key). identity này sẽ xác định những chức năng của người dùng, giới
hạn cho phép của người dùng cũng như các thuộc tính liên quan (thường gọi
chung là credential). Identity có thể là login, dấu vân tay, ADN, giản đồ võng
mạc mắt…
2. Phương pháp
1.1.1 Mã hóa
Mã hóa Vigenère là sự kết hợp xem kẽ nhiều phép mã hóa Caesar với
các bước dịch khác nhau.
Nhắc lại một chút về mã hóa Caesar, đây là phương pháp mã hóa mà
ta chọn ra một giá trị khóa key K, và dịch các chữ cái theo vịng trịn
K bước. Ví dụ thơng thường nhất là K=13 thì:
Trong mã hóa Vigenère thì ra sẽ sử dụng một bảng để làm phép dịch,
và một chuỗi khóa gọi là key, thay vì một số như trong mã hóa Caesar.
1.1.2 Giải mã
6
Để giải mã, ta sẽ lần ngược lại bảng mã. Bắt đầu từ trái qua phải, với
mỗi ký tự của key làm dịng, ta tìm cột mà khi dóng xuống ta có gía trị
là ký tự trong chuỗi đã mã hóa. Ký tự trong cột đó chính là ký tự của
chuỗi ban đầu.
3. Phương pháp lặp khóa
1.4.1 Mã hóa
Ví dụ ta có một chuỗi cần mã hóa như sau:
TOIYEUHUMG
Và key dùng để mã hóa là “TEST”. Trước hết ta sẽ nhân chuỗi TEST này lên
để nó có cùng độ dài với chuỗi cần mã hóa:
TESTTESTTE
Khi này ta sẽ sử dụng bảng mã hóa như sau: bắt đầu từ trái qua phải, lấy ký tự
của key làm dòng, ký tự của chuỗi cần mã hóa là cột và dóng vào trong bảng
mã ta được một ký tự, ký tự đó chính là ký tự đã được mã hóa.
Áp dụng với key TESTTESTTE và bản rõ TOIYEUHUMG bên trên:
7
ta được bản mã như sau: MSARXYZNFK
1.4.2 Giải mã
8
Để giải mã, ta sẽ lần ngược lại bảng mã. Bắt đầu từ trái qua phải, với mỗi ký
tự của key làm dịng, ta tìm cột mà khi dóng xuống ta có giá trị là ký tự trong
chuỗi đã mã hóa. Ký tự trong cột đó chính là ký tự của chuỗi ban đầu.
TESTTESTTE
MSARXYZNFK
Ta được bản rõ ban đầu: TOIYEUHUMG
CHƯƠNG 3: XÂY DỰNG THUẬT TOÁN VÀ CÀI ĐẶT CODE
1. Các mối đe dọa và cách phòng chống
1.1 Các mối đe dọa
9
Có 3 hình thức chủ yếu đe dọa đối với hệ thống:
- Phá hoại: kẻ thù phá hỏng thiết bị phần cứng hoặc phần mềm hoạt động trên
hệ thống.
- Sửa đổi: Tài sản của hệ thống bị sửa đổi trái phép. Điều này thường làm cho
hệ thống không làm đúng chức năng của nó. Chẳng hạn như thay đổi mật
khẩu, quyền ngƣời dùng trong hệ thống làm họ không thể truy cập vào hệ
thống để làm việc.
- Can thiệp: Tài sản bị truy cập bởi những người khơng có thẩm quyền. Các
truyền thông thực hiện trên hệ thống bị ngăn chặn, sửa đổi.
Các đe dọa đối với một hệ thống thơng tin có thể đến từ ba loại đối tượng như
sau:
- Các đối tượng từ ngay bên trong hệ thống (insider), đây là những người có
quyền truy cập hợp pháp đối với hệ thống.
- Những đối tượng bên ngoài hệ thống (hacker, cracker), thường các đối tượng
này tấn công qua những đường kết nối với hệ thống như Internet chẳng hạn.
- Các phần mềm (chẳng hạn như spyware, adware …) chạy trên hệ thống.
1.2 Các phương pháp phòng chống
- Điều khiển thông tin qua phần mềm: dựa vào các cơ chế an toàn của hệ
thống nền (hệ điều hành), các thuật tốn mật mã học.
- Điều khiển thơng qua phần cứng: các cơ chế bảo mật, các thuật tốn mật mã
học được cứng hóa để sử dụng.
- Điều khiển thơng qua các chính sách của tổ chức: ban hành các qui định của
tổ chức nhằm đảm bảo tính an toàn bảo mật của hệ thống.
2. Xây dựng thuật tốn
Giả sử ta cần mã hóa câu: divert troops to east ridge (chuyển qn sang bờ phía đơng).
Đầu tiên chọn ra một cụm từ làm khóa. Ví dụ WHITE. Ta sẽ viết cụm WHITE này lặp
lại đến khi bằng độ dài bản rõ. Rồi lập sơ đồ sau:
10
Theo sơ đồ, kí tự đầu tiên của bản rõ, chữ d được mã hóa theo mã Caesar với key là a
-> W, hay nói cách khác k = 22, vậy d mã hóa thành Z. Tiếp tục, kí tự thứ 2, chữ i mã
hóa theo mã Caesar với key là a -> H, hay k = 7, vậy i -> P. Tương tự đến hết. Bản
rõ divert troops to east ridge sẽ được mã hóa thành ZPDXVP AZHSLZ BH IWZB
KMZNM.
Hoặc có thể thực hiện mã Vigenere bằng hình vng Vigenere:
Các dịng được tơ đậm tương ứng với các chữ cái của khóa, W: dịng 22, H: dịng 7, I:
dịng 8, T: dòng 19, E dòng 4. Vậy ta mã hóa từng chữ cái trong bản rõ theo thứ tự
dịng 22 (a -> W) -> 7 (a -> H) -> 8 -> 19 -> 4 rồi lặp lại -> 22 -> 7 -> …
Và đây là định nghĩa sơ đồ mã hóa Vigenere một cách tốn học như sau:
11
S = (P, C, K, E, D)
Trong đó P = C = K = Zm26 , các hàm lập mã và giải mã được cho bởi:
E(p1, ..., pm) = (p1 + k1, ..., pm + km) mod 26
D(c1, ..., cm) = (c1 + k1, ..., cm + km) mod 26
với mọi p =(p1,..., pm) ∈ P, c =(c1,..., cm) ∈ C , K = (k1,..., km) ∈ K, m là chiều dài
khóa.
le chiffre indéchiffrable ( tiếng pháp nghĩa là “Mật mã không thể phá”)
Với key = WHITE gồm 5 chữ cái như trên, khơng gian khóa là 265 = 11.881.376. Vậy
nếu biết trước key có 5 kí tự, với một máy tính tầm trung, thuật tốn Brute-force sẽ phá
mã trong vịng vài giờ. Nhưng nếu chiều dài khóa tăng lên, khơng gian khóa sẽ tăng
theo hàm số mũ. Bảng sau cho ta thấy khơng gian khóa ứng với chiều dài khóa:
Nếu key gồm 14 kí tự thì khơng gian khóa là > 6.1019. Con số quá lớn cho thuật toán
Brute-force có thể làm việc được. Và điều quan trọng nữa là ta khơng biết key gồm bao
nhiêu kí tự. Thực tế thì người mã hóa thường chọn key là một cụm từ có nghĩa để
thuận tiện cho trao đổi khóa, điều này làm hạn chế khơng gian khóa rất nhiều, tuy
nhiên nó vẫn đủ để làm bạn bó tay nếu giải mã bằng Brute-force.
Nhưng, điều đáng nói của mã Vigenere khơng phải ở khơng gian khóa lớn của nó, nên
nhớ mã thay thế đơn giản có khơng gian khóa là 26! > 4 x 1026. Điểm đáng bàn là ở
chỗ: mỗi kí tự của bản rõ có thể được mã hóa thành nhiều kí tự khác nhau nên bản mã
sẽ mất đi tính chất mẫu từ và tính chất phân bố tần suất của văn bản gốc.
12
3. Cài đặt code và chạy thử
1.1 Cài đặt code
1.2 Kết quả
13
PHẦN 3: KẾT LUẬN
1. Nhận xét
Sau quá trình tìm hiểu về hệ mã hóa Vingenere, thực hành mã hóa và giải mã những
chuỗi cơ bản. Nhóm em đã phát hiện ra những kiến thức mới và thực sự thú vị. Qua
bài tiểu luận nhỏ này nhóm em đã có thể hiểu thêm và có thêm nhiều kiến thức hơn về
hệ mã hóa, đặc biệt là hệ mã hóa Vingenere.
2. Đánh giá
2.1 Ưu điểm
-
Đây là một phương pháp khá đơn giản, thời gian giải mã và mã hóa tương đối
nhanh, được ứng dụng trong việc kết hợp tăng tính bảo mật ở các hệ mã hóa
-
khác như một bước mã hóa
Mật mã Vigenère đã kéo dài hàng trăm năm mà không thể phá vỡ với khóa đủ
dài
2.2 Nhược điểm
- Nếu khóa mật mã vigenere khơng đủ dài thì các nhà thám mã có thể thám mã
-
một cách dễ dàng.
Bị hạn chế số lượng ký tự mã hóa.
Khóa trong phương pháp này là khóa đối xứng nếu việc lộ khóa xảy ra mà
khơng có bất kỳ một mã hóa khóa nào khác sẽ bị giải mã dễ dàng, việc chuyển
giao khóa sẽ rất khó khăn.
3.
Tài liệu tham khảo
Đỗ Văn Đức - ĐHGTVT /> /> />g/2018/07/22/series-mat-ma-06-ma-vigenere/
PHẦN 4: PHỤ LỤC
•
Sơ đồ tư duy
14
15