Tải bản đầy đủ (.pdf) (67 trang)

Nghiên cứu thuật toán mã hóa DNA và ứng dụng

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.41 MB, 67 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC HUẾ
TRƯỜNG ĐẠI HỌC KHOA HỌC

PHẠM NGỌC HẢI

Nghiªn cøu thuËt to¸n
m· hãa DNA vµ øng dông

CHUYÊN NGÀNH: KHOA HỌC MÁY TÍNH
MÃ SỐ: 60.48.01.01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Huế, 2015


MỤC LỤC
Lời cam đoan
Lời cảm ơn
Mục lục
Danh mục chữ viết tắt
Danh mục hình vẽ
Danh mục bảng
MỞ ĐẦU .......................................................................................................... 1
1. Lý do chọn đề tài ........................................................................................... 1
2. Mục đính nghiên cứu..................................................................................... 2
3. Đối tượng nghiên cứu.................................................................................... 2
4. Phương pháp nghiên cứu ............................................................................... 2
5. Cấu trúc của luận văn .................................................................................... 3
Chương 1. TỔNG QUAN VỀ MÃ HÓA THÔNG TIN ............................... 4


1.1 Giới thiệu về mã hóa thông tin .................................................................. 4
1.1.1. Khái Niệm: .............................................................................................. 4
1.1.2. Vai trò của mã hóa thông tin .................................................................. 4
1.1.3. Các thành phần của hệ mã hóa ............................................................... 5
1.1.4. Mục tiêu và nguyên tắc chung của an toàn bảo mật thông tin ................ 6
1.1.5. Tiêu chuẩn để đánh giá hệ mã hóa .......................................................... 6
1.2. Một số phương pháp mã hóa ...................................................................... 7
1.2.1. Phương pháp mã hoá cổ điển .................................................................. 7
1.2.2. Mã hóa đối xứng ................................................................................... 11
1.2.3. Mã hóa bất đối xứng............................................................................. 17
1.2.4. Mã hóa hàm băm .................................................................................. 20
1.3. Một số ứng dụng của mã hóa trong thương mại điện tử ......................... 22


1.3.1 Xác thực người dùng sử dụng giao thức SSL ........................................ 23
1.3.2 Ứng dụng mã hóa trong chữ ký điện tử ................................................ 24
1.4 Tiểu kết chương 1 ................................................................................... 26
Chương 2. MỘT SỐ THUẬT TOÁN MÃ HÓA TRÊN DNA .................. 27
2.1 Cấu trúc của DNA ..................................................................................... 27
2.1.1 Cấu tạo hóa học : .................................................................................... 27
2.1.2 Cấu tạo không gian của DNA ................................................................ 28
2.1.3 Tính chất của DNA ................................................................................ 29
2.1.4 Chức năng của DNA .............................................................................. 30
2.2 Thuật toán mã hóa DNA dựa trên dữ liệu nhị phân .................................. 30
2.2.1 Ý tưởng của thuật toán .......................................................................... 30
2.2.2 Thuật toán. .............................................................................................. 32
2.2.3 Vấn đề về an ninh ................................................................................... 38
2.3 Thuật toán YAEA...................................................................................... 39
2.3.1 Cơ sở lý luận và ý tưởng thuật toán ....................................................... 39
2.3.2 Thuật toán .............................................................................................. 40

2.3.3 Phân tích An ninh các thuật toán ........................................................... 43
2.3.4 Kiểm tra bảo mật của thuật toán ............................................................ 44
2.4 Tiểu kết chương 2...................................................................................... 46
Chương 3. CÀI ĐẶT CHƯƠNG TRÌNH.................................................... 47
3.1 Cài đặt thuật toán...................................................................................... 47
3.2 Kết quả thực nghiệm: ................................................................................ 54
3.3 Tiểu kết chương 3...................................................................................... 58
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ................................................... 59
TÀI LIỆU THAM KHẢO ............................................................................ 60


DANH MỤC CHỮ VIẾT TẮT
A:

Ađênin

DNA:

Axit đêôxiribonucleic

AES:

Advaced Encryption Standard

C:

Cytosine

CA:


Cetificate Authority

DES:

Data Encryption Standard

G:

Guanine

MD5:

Message-Digest 5

T:

Thymine


DANH MỤC HÌNH VẼ
SỐ

TÊN HÌNH VẼ

TRANG

1.1

Mô hình mã hóa


5

1.2

Hình vuông Vigenere

10

1.3

Cấu tạo một vòng của DES

12

1.4

Qúa trình sinh khóa con trong DES

13

1.5

Biểu diễn dãy 64bit thành 2 thành phần L và R

14

1.6

Qui trình phát sinh dãy LiRi từ dãy Li-1Ri-1và khóa Ki


15

1.7

Sơ đồ thuật toán mã hóa Data Encryption Standard

16

1.8

Sơ đồ thuật toán mã hóa RSA

19

1.9

Sơ đồ thuật toán giải mã RSA

20

1.10

Mô hình một vòng

22

2.1

Cấu tạo hóa học của DNA


28

2.2

Cấu tạo không gian của DNA

29

2.3

Thuật toán mã hóa dựa trên dữ liệu nhị phân

33

2.4

Thuật toán giải mã dựa trên dữ liệu nhị phân

36

2.5

Sơ đồ thuật toán YAEA thực hiện một vòng lặp

42

2.6

Số kí tự xuất hiện văn bản rõ trong chuỗi DNA


44

2.7

Hệ số tương quan Pearson

45


DANH MỤC BẢNG
SỐ

TÊN BẢNG

TRANG

3.1

Mã hóa kí tự về mã nhị phân thành 4 nucleotic

48

3.2

Chuyển đổi các kí tự về trình tự DNA mới

51

3.3


Mã hóa các kí tự đưa về vị trí trên trình tự DNA tham khảo

53


1

MỞ ĐẦU
1. Lý do chọn đề tài
Ngày nay, với sự xuất hiện của máy tính, các tài liệu văn bản giấy tờ và
các thông tin quan trọng đều được lưu trữ, xử lí trên máy tính và chúng được
truyền đi trên một môi trường mặc định là không an toàn. Đồng thời dữ liệu trên
toàn thế giới ngày càng tăng với một khối lượng lớn và người ta ước tính rằng
đến một ngày không xa sẽ không còn ổ cứng nào có thể lưu trữ hết thông tin dữ
liệu [5][9]. Do đó, yêu cầu cần có một cơ chế, giải pháp để lưu trữ, bảo vệ sự an
toàn và bí mật của các thông tin nhạy cảm, quan trọng càng trở nên cấp thiết. Dữ
liệu của mọi mỗi người dùng có thể khác nhau từ các tập tin văn bản đến các
chương trình máy tính hoặc các dữ liệu rất quan trọng như tài khoản trong ngân
hàng, bí mật quốc gia. Tùy theo tầm quan trọng của tài liệu mà người dùng lựa
chọn các phương pháp khác nhau. Trong đó, đảm bảo tính bảo mật nội dung của
tập tin là cần thiết. Vì vậy, các tập tin sau khi tạo cần được mã hóa nhằm tăng
tính bảo mật và độ an toàn của dữ liệu. Mã hóa được xem là mức bảo vệ tối ưu
nhất đối với dữ liệu giúp thông tin không bị tiết lộ và nâng cao độ an toàn trong
các giao dịch truyền tải thông tin.
Mật mã học – Cryptography – là ngành khoa học nghiên cứu về việc giấu
thông tin. Cụ thể hơn, mật mã học là ngành học nghiên cứu về những cách
chuyển đổi thông tin từ dạng “Có thể hiểu rõ” (bản rõ) thành dạng “không thể
hiểu được” (bản mã) và ngược lại. Mật mã học giúp đảm bảo tính bí mật của
thông tin – thông tin chỉ tiết lộ cho những ai được phép; tính toàn vẹn – thông
tin không thể bị thay đổi mà không phát hiện; tính xác thực – người gửi hoặc

người nhận có thể chứng minh đúng họ; đảm bảo tính không chối bỏ, tức là
người gửi hoặc người nhận không thể chối bỏ việc đã gửi hoặc nhận thông tin.


2
Trên thực tế đã có rất nhiều phương pháp mã hóa và các thuật toán tương
ứng với mỗi phương pháp được ứng dụng để mã hóa thông tin như phương pháp
mã hóa đối xứng với các thuật toán Data Encryption Standard – DES, Triple
DES, Advaced Encryption Standard – AES; Phương pháp mã hóa bất đối xứng
với khóa công khai gồm các thuật toán nổi tiếng: Diffle – Hellman, RSA…
Xuất phát từ cơ sở phân tích trên, tôi chọn đề tài “ Nghiên cứu thuật toán
mã hóa DNA và ứng dụng”. Đây là phương pháp mã hóa hoàn toàn mới và
đảm bảo sự an toàn cho dữ liệu.
2. Mục đính nghiên cứu
Đề tài nhằm nghiên cứu những vấn đề sau:
Tìm hiểu về các thuật toán mã hóa.
Tìm hiểu về cấu trúc của DNA
Nghiên cứu một số thuật toán mã hóa trên DNA
Nghiên cứu một số ứng dụng dựa trên thuật toán
Phân tích, đánh giá và mô phỏng một thuật toán mã hóa DNA.
3. Đối tượng nghiên cứu
Cấu trúc của DNA. Các thuật toán mã hóa trên DNA và ứng dụng
4. Phương pháp nghiên cứu
Phương pháp nghiên cứu lý thuyết: Tham khảo các nguồn tài liệu từ các
luận văn thạc sĩ, luận án tiến sĩ, các bài báo, tạp chí trong và ngoài nước…
Mô hình thực nghiệm: Trên cơ sở tìm hiểu và nghiên cứu lý thuyết thuật toán
mã hóa trên DNA lập trình mô phỏng đưa ra kết quả.


3

5. Cấu trúc của luận văn
Cấu trúc luận văn gồm:
Phần mở đầu: Nêu ra được lí do chọn đề tài này, mục đích của việc nghiên
cứu, phương pháp nghiên cứu và đối tượng để nghiên cứu.
Phần nội dung: Gồm có 3 chương.
Chương 1 của luận văn trình bày khái niệm về mã hóa thông tin, đưa ra
khái quát được mô hình mã hóa và các thành phần của mã hóa. Nêu lên được ba
mục tiêu của bảo mật thông tin. Tìm hiểu một số thuật toán mã hóa từ cổ điển đến
hiện đại. Nêu ra được một số ứng dụng của mã hóa trong thương mại điện tử.
Chương 2 của luận văn trình bày khái quát cấu trúc sinh học của DNA, tính
chất của DNA và chức năng cơ bản của DNA. Tìm hiểu hai thuật toán mã hóa
dựa trên cấu trúc của DNA là mã hóa dựa trên dữ liệu nhị phân và thuật toán
YAEA.
Chương 3 của luận văn tác giả cài đặt được thuật toán mã hóa DNA trên dữ
liệu nhị phân đồng thời thực hiện chương trình đưa ra một số ví dụ cho quá trình
mã hóa và giải mã.
Phần kết luận: Nêu ra kết luận và đưa ra hướng phát triển tiếp theo cho
luận văn sau này.


4

Chương 1
TỔNG QUAN VỀ MÃ HÓA THÔNG TIN
1.1. Giới thiệu về mã hóa thông tin
1.1.1. Khái Niệm
Mã hóa thông tin là chuyển đổi thông tin từ dạng rõ (dạng đọc được) sang
dạng mã (dạng không thể đọc được) và ngược lại. Nhằm mục đích ngăn chặn
nguy cơ truy cập thông tin truyền đi trên mạng một cách bất hợp pháp. Thông
tin sẽ được truyền đi trên mạng dưới dạng mã và không thể đọc được với bất kỳ

ai cố tình muốn lấy thông tin đó [2].
Khi chúng ta có nhu cầu trao đổi thông tin, thì Internet là môi trường không
an toàn, đầy rủi ro và nguy hiểm, không có gì đảm bảo rằng thông tin mà chúng
ta truyền đi không bị đọc trộm trên đường truyền. Vì vậy mã hóa là biện pháp
giúp ta bảo vệ chính mình cũng như thông tin mà ta gửi đi ngoài ra mã hóa còn
đảm bảo tính toàn vẹn của dữ liệu[4][8][9].
1.1.2. Vai trò của mã hóa thông tin
Các hệ mã hóa phải thực hiện được các vai trò sau:
- Che dấu được nội dung của văn bản rõ (PlainText) để đảm bảo sao cho
chỉ người chủ hợp pháp của thông tin mới có quyền truy cập thông tin,
hay nói cách khác là chống truy cập không đúng quyền hạn.
- Tạo các yếu tố xác thực thông tin, đảm bảo thông tin lưu hành trên hệ
thống đến người nhận hợp pháp xác thực.
- Tổ chức các sơ đồ chữ ký điện tử, đảm bảo không có hiện tượng giả mạo,
mạo danh để gửi thông tin trên mạng.
Ưu điểm lớn nhất của các hệ mã hóa là có thể đánh giá được độ phức tạp của
tính toán mà “kẻ địch” phải giải quyết bài toán để có thể lấy được thông tin của


5
dữ liệu. Tuy nhiên mỗi hệ mã hóa đều có một số ưu và nhược điểm khác nhau,
nhưng nhờ đánh giá được độ phức tạp tính toán, mức độ an toàn của mỗi hệ mã
hóa mà ta có thể ứng dụng cụ thể tùy theo yêu cầu về độ an toàn [2].
1.1.3. Các thành phần của hệ mã hóa
Một hệ mã hóa là một bộ 5: (P, C, D, K, E) thõa mã các điều kiện sau:
- P là một tập hợp hữu hạn các bản rõ (PlainText), nó còn được gọi là không
gian bản rõ.
- C là tập hợp hữu hạn các bản mã (CipherText), nó còn được gọi là không
gian bản mã. Mỗi phần tử của C có thể nhận được bằng cách áp dụng phép mã
hóa Ek lên một phần tử của P.

- K là tập hợp hữu hạn các khóa hay còn gọi là không gian khóa. Đối với
mỗi phần tử k của K được gọi là một khóa (Key). Số lượng của không gian khóa
phải đủ lớn để “kẻ địch” không đủ thời gian để thử mọi khóa (phương pháp vét
cạn).
- E và D lần lượt là tập luật mã hóa và giải mã. Với mỗi k của K có một quy
tắc mã hóa ek: PC và một quy tắc giải mã tương ứng dk ∈ D. Mỗi ek: PC
và dk: CP là những hàm mà: dk(ek(x))=x với mọi bản rõ x ∈ P.

p

Encryption

C

Decryption

ciphertext

plaintext

key

p
plaintext

key
Hình 1.1. Mô hình mã hóa


6

1.1.4. Mục tiêu và nguyên tắc chung của an toàn bảo mật thông tin
* Ba mục tiêu của an toàn bảo mật thông tin:
i) Tính bí mật: Tài nguyên của hệ thống chỉ đươc truy cập bởi những người
có thẩm quyền. Các loại truy cập gồm có: đọc (reading), xem (viewing), in ấn
(printing), sử dụng chương trình, hoặc hiểu biết về sự tồn tại của một đối tựong
trong tổ chức. Tính bí mật có thể được bảo vệ nhờ việc kiểm soát truy cập (theo
nhiều kiểu khác nhau) hoặc nhờ các thuật toán mã hóa dữ liệu. Kiểm soát truy
cập chỉ có thể đựợc thực hiện với các hệ thống phần cứng vật lý. Còn đối với các
dữ liệu công cộng thì thường phương pháp hiệu quả là các phương pháp của mật
mã học.
ii) Tính toàn vẹn dữ liệu: tài nguyên của hệ thống chỉ được thay đổi bởi
những người có thẩm quyền.
iii) Tính sẵn dùng: tài nguyên luôn sẵn sàng được sử dụng bởi những người
có thẩm quyền.
* Hai nguyên tắc của an toàn bảo mật thông tin:
i) Việc thẩm định về bảo mật phải là khó và cần tính tới tất cả các tình
huống, khả năng tấn công có thể được thực hiện.
ii) Tài nguyên được bảo vệ cho tới khi hết giá trị sử dụng hoặc hết ý nghĩa
bí mật.
1.1.5. Tiêu chuẩn để đánh giá hệ mã hóa
* Độ an toàn của thuật toán
Điều cảnh báo trong mã hoá là “Thuật toán nào cũng có thể bị phá vỡ”. Các
thuật toán khác nhau cung cấp mức độ an toàn khác nhau, phụ thuộc vào độ
phức tạp để phá vỡ chúng [2]. Tại một thời điểm, độ an toàn của một thuật toán
phụ thuộc vào như sau:


7
Nếu chi phí hay phí tổn cần thiết để phá vỡ một thuật toán lớn hơn giá trị của
thông tin đã mã hóa thuật toán thì thuật toán đó tạm thời được coi là an toàn.

Nếu thời gian cần thiết dùng để phá vỡ một thuật toán là quá lâu thì thuật
toán đó tạm thời được coi là an toàn.
Nếu lượng dữ liệu cần thiết để phá vỡ một thuật toán quá lớn so với lượng
dữ liệu đã được mã hoá thì thuật toán đó tạm thời được coi là an toàn.
* Độ phức tạp tính toán
Khi đánh giá hệ mã hóa phải chú ý đến tốc độ mã hóa và giải mã. Hệ mã
hóa tốt thì thời gian mã hóa và giải mã nhanh.
Một hệ mã hóa phụ thuộc vào khóa, khóa này được truyền công khai hay
truyền bí mật. Phân phối khóa bí mật thì chi phí sẽ cao hơn so với các thuật toán
mã hóa khóa công khai. Vì vậy đây cũng là một tiêu chí khi lựa chọn hệ mã hóa.
1.2. Một số phương pháp mã hóa
1.2.1. Phương pháp mã hoá cổ điển
Xuất hiện trong lịch sử, thuật toán sử dụng khóa đơn giản, dễ hiểu. Là
phương pháp mà từng ký tự (hay từng nhóm ký tự) trong bản rõ được thay thế
bằng một ký tự (hay nhóm ký tự) khác tạo nên bản mã. Bên nhận chỉ cần đảo
ngược lại trình tự thay thế trên thì sẽ nhận được bản rõ ban đầu.
Mã hóa cổ điển có hai phương pháp nổi bật là: Mã hóa thay thế và mã hóa
hoán vị. Các hệ mã hóa thường được sử dụng trong lịch sử là: Hệ mã hóa
Ceasar, Vigenere, Hill…
1.2.1.1. Hệ mã hóa CEASAR
Hệ mã hóa CEASAR là một ví dụ điển hình cho hệ mã hóa thay thế. Nó làm
việc trong bảng chữ cái tiếng Anh 26 ký tự. Ceasar sử dụng các số nguyên thay
cho các ký tự, đánh số các ký tự trong bảng chữ cái theo thứ tự như sau:


8

Các phép toán số học được thực hiên trên Modul 26 (có nghĩa là 26 tương
ứng với 0, 27 tương ứng với 1, 28 tương ứng với 2,…, 79 = 26x3 + 1 tức 79
tương ứng với 1).

Hệ CAESAR sử dụng thuật toán mã hóa Ek, trong đó mỗi ký tự được thay
thế bởi một ký tự khác được xác định bằng cách dịch ký tự cần mã hóa sang phải
k bước theo modul 26 [2].
Ek() = ( + k) MOD 26.
Với  là một ký tự, 0  k  26, MOD là phép chia lấy phần dư.
Thuật toán giải mã tương ứng Dk là lùi lại k bước trong bảng chữ cái theo
modul 26.
Dk() = ( - k) MOD 26
Không gian khóa của hệ CEASAR bao gồm 26 số: 0, 1, 2, …, 25.
Ví dụ 1.1. Với k = 3, A được thay bằng D, B được thay bằng E,…, W được
thay bằng Z,…, Y được thay bằng B và Z được thay bằng C. Ta có:
Bảng chữ cái gốc.

Bảng chữ cái dùng để mã hóa.

Trong trường hợp này bản rõ “DAI HOC PHU YEN” được mã hóa thành
“GDL KRF SKX BHQ”, (Chú ý: Các ký tự trống trong bảng mã được bỏ đi để
đảm bảo tính an toàn).


9
Tương tự
E25(IBM) = HAL, E6(MUPiD) = SAVOJ.
E3(HELP) = KHOS, E1(HOME) = IPNF.
Hệ CEASAR là hệ mã hóa ra đời quá lâu và hiện nay không còn vì không
gian khóa của nó rất nhỏ, do đó có thể thám mã theo phương pháp vét cạn. Khóa
giải mã có thể tính ngay ra được từ khóa mã hóa. Do chỉ có 26 khóa nên ta có
thể thử lần lượt các khóa cho đến khi tìm được khóa đúng.
1.2.1.2. Hệ mã hóa VIGENERE
Hệ mã hóa này được đặt theo tên của một nhà mật mã người Pháp Blaise

De Vigenere (1523 – 1596).
Vinegere cũng giống như Caesar, nhưng ở đây khóa được thay đổi theo
từng bước. Hình vuông VIGENERE được sử dụng để mã hóa và giải mã
A B C D E

F

B C D E

F

G H I

C D E

F

G H I

D E

F

G H I

E

F

G H I


F

G H I

J

G H I

J

H I

J

K L

I

J

K L

J

K L

K L
L


Q R S

T

T

M N O P

M N O P

M N O P

T

T

T

T

T

Q R

T

S

T


U V W X Y Z

U V W X Y Z

Q R S

T

U V W X Y Z

T

T

T

U V W X Y Z

U V W X Y Z

U V W X Y Z

U V W X Y Z

U V W X Y Z

U V W X Y Z

U V W X Y Z


U V W X Y Z

U V W X Y Z

U V W X Y Z

T

U V W X Y Z

U V W X Y Z

S

S

Q R S

Q R S

Q R

Q R

Q R S

Q R S

Q R S


Q R S

M N O P

M N O P

Q R S

Q R S

T

K L

M N O P

Q R S

K L

M N O P

M N O P

Q R S

J

K L


K L

K L

M N O P

M N O P

J

J

M N O P

M N O P

N O P

J

K L

K L

M N O P

O P

J


G H I

A B

A B

A B

A B C

A B

C

C

F

C

F

C

F

C

F


C

F

F

F

J

J

C
D

D E

D E
F

F
G

G H

G H I

G H I

G H I


C

G H I

G H I

G H I

C

D E

D E

D E

D E

D E

D E

D E

A B C D E

C

A B


A B

A B

A B

A B

A B

A B

A

J

J

K

K L

K L

K L

J

M


M N


10

P

Q R S

T

U V W X Y Z

Q R S

T

U V W X Y Z

R S

T

U V W X Y Z

S

T


U V W X Y Z

T

U V W X Y Z

U V W X Y Z
V W X Y Z
W X Y Z
X Y Z
Y Z
Z

A B C D E

A B C D E

A B C D E

A B C D E

A B C D E

A B C D E

A B C D E

A B C D E

A B C D E


A B C D E
F

A B C D E

F

F

F

F

F

G H I

G H I
J

J

J

J

K L

J


J

J

J

J

J

K L

S

S
T

S

T

U

S

T

U V


S

T

U V W

S

T

U V W X

T

U V W X Y

Q R

Q R

Hình 1.2. Hình vuông Vigenere
Mỗi cột của hình vuông Vigenere có thể xem như là một hệ CEASAR, với
các khóa: 0, 1, 2,...., 25. Để mã hóa thì bản rõ được đọc từ các hàng và khóa
được đọc từ các cột.
Ví dụ 1.2. Mã hóa bản “DAI HOC HUE” với từ khóa “ KHOA CO BAN”.
Đầu tiên ta tìm điểm giao của hàng D cột K ta được N, tiếp tục ta tìm điểm giao
của hàng A cột H ta được H. Cứ như vậy ta được bản mã là “ NHW HCQ IUR” .
Ta sẽ thu được bản mã tưng tự nếu ta đọc bản rõ tưng ứng với cột và khóa đọc
tưng ứng với hàng. Muốn giải mã thông tin vừa mã hóa trên ta thực hiện bằng
cách, ta nhìn vào hàng nào chứa N trong cột K, ta tìm được chữ D, tương tự nhìn

vào hàng nào chứa H trong cột H, ta tìm được chữ A. Cứ như vậy ta sẽ tìm được
bản rõ là “DAI HOC HUE”.
Trong ví dụ trên thì độ dài bản rõ bằng độ dài khóa. Nhưng trong thực tế độ
dài bản rõ thường dài hơn rất nhiều so với khóa. Như vậy để mã hóa hay giải mã
thì ta phải áp dụng từ khóa một cách tuần hoàn. Nghĩa là từ khóa được lặp đi lặp
lại nhiều lần sao cho các ký hiệu trong bản rõ phải được đọc hết.

Q R

Q R

Q R

Q

S

Q R

Q R

Q R

M N O P

M N O P

M N O P

M N O P


M N O

M N O P

M N O P

M N O P

K L

M N O P

M N O P

M N O P

J

K L

K L

K L

K L

K L

K L


K L

K L

G H I

G H I

G H I

G H I

G H I

G H I

G H I

G H I

G H I

F

F

F

F


F


11
Ta thấy rằng trong hệ mã hóa VIGENERE, với khóa có độ dài d thì sẽ có 26 d
khóa hợp lệ. Vì vậy chỉ cần với giá trị d nhỏ thì phương pháp thám mã vét cạn
cũng đòi hỏi khá nhiều thời gian.
1.2.2. Mã hóa đối xứng
Mã hóa đối xứng hay mã hóa chia sẽ khóa là mô hình mã hóa hai chiều, có
nghĩa là tiến trình mã hóa và giải mã từ khóa lập mã có thể suy ra khóa giải mã.
Khóa này được chuyển giao bí mật giữa hai đối tượng tham gia giao tiếp. Khóa
này có thể được cấu hình trong phần mềm hoặc được mã hóa trong phần cứng.
Mã hóa đối xứng thực hiện nhanh nhưng có thể gặp rủi ro nếu khóa bị đánh cắp.
Một số thuật toán mã hóa đối xứng nổi tiếng như: DES, AES, RC2, RC4, RC5,
RC6…
1.2.2.1 Thuật toán mã hóa DES
Khoảng những năm 1970, tiến sĩ Horst Feistel đã đặt nền móng đầu tiên
cho chuẩn mã hóa DES với phương pháp mã hóa Feistel Cipher. Vào năm 1976
Cơ quan bảo mật quốc gia Hoa Kỳ (NSA) đã công nhận DES dựa trên phương
pháp Feistel là chuẩn mã hóa dữ liệu. Kích thức khóa của DES ban đầu là 128
nhưng tại bản công bố FIPS kích thước được rút xuống 56 bit để tăng tốc độ xử
lý và đưa ra các tiêu chuẩn thiết kế một chuẩn mã hóa dữ liệu.
DES thực hiện mã hóa dữ liệu qua 16 vòng lặp mã hóa, mỗi vòng sử dụng
một khóa con chiều dài 48bit được tạo ra từ khóa ban đầu có độ dài 56bit. DES
sử dụng 8 bảng hằng số S-box để thao tác.
*Cấu tạo một vòng của DES
Sử dụng hai nửa 32 bít trái và 32 bít phải. Nửa phải của vòng trước được chuyển
qua nửa trái của bước sau và lấy đầu ra của hàm vòng trên nửa phải và khoá con
cộng cơ số 2 với nửa trái. Có thể biểu diễn bằng công thức như sau:

Li= Ri-1
Ri = Li-1 xor F(Ri-1, Ki)


12
Ở đây F lấy 32 bít nửa phải R, mở rộng thành 48 bít nhờ hoán vị E, rồi cộng vào
với khoá con 48 bít. Sau đó chia thành 8 cụm 6 bít và cho qua 8 S-box để nhận
được kết quả 32 bít. Đảo lần cuối sử dụng hoán vị 32 bít P nhận được 32 bít đầu
ra, rồi cộng với nửa trái để chuyển thành nửa phải của bước sau.

Hình 1.3. Cấu tạo một vòng của DES
*Các hộp thế S-box
Có 8 hộp S khác nhau ánh xạ 6 bít vào 4 bít. Các hộp S-box thực hiện các
phép thế, chúng được cấu tạo không có qui luật và cố định. Mỗi S-box là hộp 4
x 16 bít, mỗi hàng là một hoán vị của 16 phần tử. Giả sử ta có 6 bít đầu vào. Ta
lấy hai bít ngoài 1-6 ghép lại được số nhị phân xác định chọn hàng từ 0 đến 3
trong S-box. Bốn bít từ 2 đến 5 là một số nhị phân xác định cột từ 0 đến 15 trong
S-box. Lấy phần tử tương ứng trên hàng và cột mới được xác định, đây là một số
từ 0 đến 15, chuyển sang số nhị phân ta được 4 bít đầu ra. Như vậy 48 bít chia
thành có 8 cụm 6 bít, qua 8 S-box được chuyển thành 8 cụm 4 bít, tổng cộng là
32 bít. Việc chọn hàng trong các S-box phụ thuộc cả dữ liệu và khoá - đặc trưng
này được gọi là khoá tự xác định


13
Ví dụ 1.3. S(18 09 12 3d 11 17 38 39) = 5fd25e03
* Sinh khoá con của DES
Tạo 16 khoá con sử dụng cho 16 vòng của DES. 56 bit khoá đầu vào
được sử dụng như bảng 8 x 8, trong đó cột thứ 8 không sử dụng.
Hoán vị ban đầu của khoá PC1 và tách 56 bít thành hai nửa 28 bít.

*16 giai đoạn bao gồm:
Ở mỗi vòng nửa trái và nửa phải được dịch trái vòng quanh tương ứng 1
và 2 bít. Hai nửa này được dùng tiếp cho vòng sau.
Đồng thời hai nửa cũng cho qua hoán vị PC2 và chọn mỗi nửa 24 bít gộp
lại thành 48 bít để sinh khoá con.
Ứng dụng thực tế trên cả phần cứng và phần mềm đều hiệu quả

Hình 1.4. Qúa trình sinh khóa con trong DES


14
*Quy trình mã hóa DES
Qúa trình mã hóa của DES có thể tóm tắt như sau: Biểu diễn thông tin
nguồn x ∈ P bằng dãy 64 bit, khóa k có 56 bit.Thực hiện mã hóa theo 3 giai
đoạn:
- Bước 1 : Tạo dãy 64 bit xo bằng cách hoán vị x theo hoán vị IP (Initial
Permutation). Biểu diễn xo = IP(x) = LoRo, Lo gồm 32 bit bên trái xo, Ro
gồm 32 bit bên phải của xo

Hình 1.5: Biểu diễn dãy 64bit x thành 2 thành phần L và R
Ví dụ 1.4. IP(675a6967 5e5a6b5a) = (ffb2194d 004df6fb)
Bước 2 : Thực hiện 16 vòng lặp từ 64 bit thu được và 56 bit của khóa k
(chỉ sử dụng 48 bit của khóa k trong mỗi vòng lặp ). 64 bit kết quả thu được qua
mỗi vòng lặp sẽ là đầu vào cho vòng lặp sau. Các cặp từ 32 bit L i, Ri với (1 ≤ i ≤
16) được xác định theo qui tắc sau :
Li= Ri-1
Ri = Li-1 f (Ri-1 ,Ki)
với biểu diễn phép XOR trên dãy 2 bít, K1, K2, ......., K16 là các dãy 48bit phát
sinh từ khóa K cho trước ( Trên thực tế, mỗi khóa Ki được phát sinh bằng cách
hoán vị các bit trong khóa K cho trước).

Bước 3. Áp dụng hoán vị ngược IP-1 với dãy bit R16L16 , thu được từ y
gồm 64 bit. Như vậy, y = IP-1 ( R16L16 )
Hàm f được sử dụng ở bước 2 là hàm gồm hai tham số: Tham số thứ nhất
A là một dãy 32 bit, tham số thứ hai J là một dãy 48 bit. Kết quả của hàm f là
một dãy 32 bit. Các bước xử lý của hàm f (A,J) như sau:


15
Tham số thứ nhất A (32 bit) được mở rộng thành dãy 48 bit bằng hàm mở
rộng E.
E(A) là một dãy 48 bit được phát sinh từ A bằng cách hoán vị theo một
thứ tự nhất định 32 bit của A, trong đó 16 bit của A được lặp lại hai lần trong E
(A)

Hình 1.6. Qui trình phát sinh dãy LiRi từ dãy Li-1Ri-1và khóa Ki

Thực hiện phép XOR cho hai dãy 48 bit E(A) và J, ta thu được một dãy
48bit B. Biểu diễn B thành từng nhóm 8 bit như sau: B=B1B2B3B4B5B6B7B8
Sử dụng 8 ma trận S1,S2,....S8, với mỗi ma trận Si có kích thước 4x16 và mỗi
dòng của ma trận nhận đu 16 giá trị từ 0 đến 15. Xét dãy gồm 6 bit Bj =
b1b2b3b4b5b6 , Sj (Bj) được xác định bằng giá trị của phần tử tại dòng r cột c của Sj
trong đó, chỉ số dòng r có biểu diễn nhị phân b1b6 chỉ số cột c có biểu diễn nhị
phân b2b3b4b5. Bằng cách này, ta xác định được các dãy 4 bít Cj = Sj(Bj), 1 ≤ j ≤ 8.
Tập hợp các dãy 4 bit Cj lại, ta có được dãy 32 bit C= C1C2C3C4C5C6C7C8
. Dãy 32 bit thu được bằng cách hoán vị C theo một qui luật P nhất định chính là
kết quả của hàm F(A,J)


16
Plaintext

IP
L0

R0


K1
R1=L0(R0,K1)

L1=R0


K2

L2=R1

R2=L1(R1,K2)

L15=R14

R15=L14(R14,K15)


R16=L15(R15,K16)

K16
L16=R15

IP -1
Ciphertext


Hình 1.7. Sơ đồ thuật toán mã hóa Data Encryption Standard (DES)


17
1.2.3 Mã hóa bất đối xứng
Mã hóa bất đối xứng là mô hình mã hóa hai chiều sử dụng một cặp khóa
là khóa công khai (Public Key) và khóa bí mật (Private Key). Trong đó khóa
công khai có thể được công bố rộng rải. Thông thường thông tin được người gửi
sử dụng khóa công khai để mã hóa và gửi đi. Người nhận thông tin sẽ dùng khóa
bí mật để giải mã. Khóa bí mật chỉ do một người giữ do đó các phương pháp mã
hóa bất đối xứng đảm bảo tính bí mật hơn. Một điều quan trọng của phương
pháp mã hóa này là cặp khóa Public Key và Private Key phải tương đồng nhau.
Có nghĩa là chỉ có khóa bí mật trong cùng một cặp khóa mới có thể giải mã
được dữ liệu đã mã hóa bởi khóa công khai tương ứng.
Thuật toán mã hóa bất đối xứng nổi tiếng và được sử dụng nhiều nhất
hiện nay là RSA.
Thuật toán mã hóa RSA
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).
Trước đó, vào năm 1973, Clifford Cocks, một nhà toán học người Anh, đã
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.
Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm
1983. Bằng sáng chế này hết hạn vào ngày 21 tháng 9 năm 2000. Tuy nhiên,
do thuật toán đã được công bố trước khi có đăng ký bảo hộ nên sự bảo hộ hầu
như không có giá trị bên ngoài Hoa Kỳ. Ngoài ra, nếu như công trình của
Clifford Cocks đã được công bố trước đó thì bằng sáng chế RSA đã không thể
được đăng ký .

Thuật toán RSA có hai khóa: Khóa công khai (hay khóa công cộng) và khóa
bí mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong quá trình
mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi người và được


18
dùng để mã hóa. Những thông tin được mã hóa bằng khóa công khai chỉ có thể
được giải mã bằng khóa bí mật tương ứng. Nói cách khác, mọi người đều có thể
mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được.
Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau:
Nam muốn gửi cho Nga một thông tin mật mà Nam muốn duy nhất Nga có thể
đọc được. Để làm được điều này, Nga gửi cho Nam một chiếc hộp có khóa đã
mở sẵn và giữ lại chìa khóa. Nam nhận chiếc hộp, cho vào đó một tờ giấy viết
thư bình thường và khóa lại (như loại khoá thông thường chỉ cần sập chốt lại,
sau khi sập chốt khóa ngay cả Nam cũng không thể mở lại được. Không đọc lại
hay sửa thông tin trong thư được nữa). Sau đó Nam gửi chiếc hộp lại cho Nga.
Nga mở hộp với chìa khóa của mình và đọc thông tin trong thư. Trong ví dụ này,
chiếc hộp với khóa mở đóng vai trò khóa công khai, chiếc chìa khóa chính là
khóa bí mật.
 Tạo khóa
Giả sử Nga và Nam cần trao đổi thông tin bí mật thông qua một kênh không
an toàn (ví dụ như Internet). Với thuật toán RSA, Nga đầu tiên cần tạo ra cho
mình cặp khóa gồm khóa công khai và khóa bí mật theo các bước sau:
1. Chọn 2 số nguyên tố lớn p và q với p≠q, lựa chọn ngẫu nhiên và độc lập.
2. Tính: n= p*q.
3. Tính: giá trị hàm số Ơle Ф(n)= (p-1)*(q-1).
4. Chọn một số tự nhiên e sao cho 1< e< Ф(n) và là số nguyên tố cùng nhau
với Ф(n) .
5. Tính: d sao cho (d*e-1 )*k = Ф(n), k là số nguyên dương. Hay d = e-1 mod
Ф(n) (hoặc tìm số tự nhiên x sao cho d= cũng là số tự nhiên).


Khóa công khai bao gồm:
• n.


19
• e, số mũ công khai (cũng gọi là số mũ mã hóa).
Khóa bí mật bao gồm:
• p, q.
• d, số mũ bí mật (cũng gọi là số mũ giải mã).
Nga gửi khóa công khai cho Nam, và giữ bí mật khóa cá nhân của mình. Ở
đây, p và q giữ vai trò rất quan trọng. Chúng là các phân tố của n và cho phép
tính d khi biết e.
 Mã hóa
Giả sử Nam muốn gửi đoạn thông tin M cho Nga. Lúc này Nam có M và biết
n cũng như e do Nga gửi. Nam sẽ tính C là bản mã hóa của M theo công thức: C
= Me mod n
Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ (theo
môđun) bằng thuật toán bình phương và nhân. Cuối cùng Nam gửi C cho Nga.
Sơ đồ mã hóa
Bắt đầu

n, e, M

C = Me mod n

Bản mã

Kết thúc
Hình 1.8. Sơ đồ mã hóa RSA



×