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

Nghiên cứu phương pháp tấn công Chuẩn mật mã khối (DES) nhờ hệ thống tính toán hiệu năng cao

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 (503.32 KB, 17 trang )

1

Nghiên cứu phương pháp tấn công
Chuẩn mật mã khối (DES) nhờ
hệ thống tính toán hiệu năng cao
Researching on cryptanalytic method of Data Encryption Standard (DES)
bases on high performance computing system
NXB H. : ĐHCN, 2012 Số trang 70 tr. +

Nguyễn Quốc Thắng


Trường Đại học Công nghệ
Luận văn ThS ngành: Hệ thống thông tin; Mã số: 60 48 05
Người hướng dẫn: PGS.TS. Hồ Văn Canh
Năm bảo vệ: 2012

Abstract: Giới thiệu về chuẩn mã hoá dữ liệu - DES (Data Encryption Standard). Trình
bày các phương pháp thám mã: thám mã đường tắt; Thám mã vi sai; Thám mã tuyến tính;
Thám mã phi tuyến; Thám mã vi sai tuyến tính và một số phương pháp thám mã đường tắt
khác huẩn mã hoá dữ liệu DES, các hệ thống chuyên dụng phục vụ thám mã DES. Nghiên
cứu, đề xuất phương pháp thám mã DES: mô tả bài toán tham mã DES; Xây dựng thuật
toán nhận dạng bản rõ tiếng Anh; Tìm hiểu thuật toán di truyền (GAs) và đề xuất phương
pháp thám mã DES

Keywords: Công nghệ thông tin; Mật mã khối; An ninh thông tin; Hệ thống thông tin; Mã
hoá dữ liệu

Content
DES (viết tắt của Data Encryption Standard, hay Chuẩn mã hóa dữ liệu) là một phương pháp
mật mã hóa do Công ty IBM thiết kế và được FIPS (Tiêu chuẩn xử lý thông tin Liên bang Hoa


Kỳ) chọn làm chuẩn chính thức vào năm 1976. Sau đó, Chuẩn này được sử dụng rộng rãi trên
phạm vi thế giới.
Ngay từ đầu, thuật toán của nó đã gây ra rất nhiều tranh luận liên quan đến các thành phần
thiết kế mật, độ dài khóa tương đối ngắn. Do đó, DES đã được giới nghiên cứu xem xét rất kỹ
lưỡng, việc này đã thúc đẩy hiểu biết hiện đại về mật mã khối (block cipher) và các phương pháp
thám mã tương ứng. Có thể nói, sự xuất hiện của DES đã tạo nên một làn sóng, một nguồn cảm
hứng nghiên cứu trong giới khoa học về lĩnh vực mật mã học, đặc biệt là các phương pháp thám
mã mã khối. Với DES, giới khoa học đã có một thuật toán mật mã để nghiên cứu.
Mặc dù, trong thời gian qua đã có rất nhiều kết quả nghiên cứu về DES đã được công bố,
DES có thể bị phá khoá bởi các hệ thống chuyên dụng trong vòng chưa đầy 24 giờ, nhưng việc
nghiên cứu thám mã DES vẫn có ý nghĩa hướng tới thám mã các hệ mật mã khối mới có độ dài
khóa mật lớn hơn, đã và đang dần thay thế DES. Phân tích mật mã hay thám mã còn đưa ra những
2

khuyến cáo, phản hồi cho các chuyên gia trong thiết kế lại các hệ mật mã để chống lại các dạng
tấn công mới. Đồng thời, nó cũng có ý nghĩa trong hỗ trợ công tác tình báo, phản gián v.v..
Với lý do trên, tác giả chọn đề tài: “Nghiên cứu phƣơng pháp thám mã Chuẩn mật mã
DES nhờ hệ thống tính toán hiệu năng cao”. Trong phạm vi nghiên cứu của đề tài này, bài toán
đặt ra là với một bản mã được mã hoá từ một thông điệp tiếng Anh bởi Thuật toán mã hoá DES,
với giả thiết người thám mã có thể truy cập đến chức năng mã hóa/giải mã của DES. Từ giả thiết
này, yêu cầu ứng dụng hệ thống tính toán hiệu năng cao, thuật toán di truyền (Genetic Algorithm)
để xây dựng thuật toán dạng thám mã “hộp đen” để tìm ra khoá mật đã sử dụng để mã hoá thông
điệp đó trong thời gian ngắn (dự kiến khoảng 8 đến 15 phút).
Tác giả đã nghiên cứu, trình bày Luận văn thành ba chương. Nội dung chính, kết quả nghiên
cứu của các chương như sau:
Chƣơng I: Giới thiệu về chuẩn mã hoá dữ liệu - DES (Data Encryption Standard).
Chƣơng II: Các phương pháp thám mã Chuẩn mã hoá dữ liệu DES, các hệ thống chuyên
dụng phục vụ thám mã DES.
Chƣơng III: Nghiên cứu, đề xuất phương pháp thám mã DES
Do mức độ phức tạp của công việc thám mã là rất lớn nên bài toán đặt ra với giả thiết người

thám mã biết được các thông tin về bản mã được mã hóa bởi DES (chế độ ECB) từ bản rõ tương
ứng là một thông điệp tiếng Anh. Từ giả thiết này, xây dựng thuật toán di truyền để xác định khóa
mật k đã sử dụng để mã hóa cũng như tìm ra bản rõ tương ứng.
Để giải quyết yêu cầu đặt ra và các bài toán nói trên, bài toán được chia thành các bài toán
con để gải quyết vấn đề:
- Xây dựng thuật toán nhận dạng bản rõ và “tiêu chuẩn bản rõ” tiếng Anh là cơ sở xác định
hàm “phù hợp”, một thành phần quan trọng của thuật toán di truyền.
- Tìm hiểu về thuật toán di truyền, xây dựng thuật toán di truyền để thực hiện tìm kiếm khoá
mật với phương pháp “vét cạn có định hướng” trong không gian khoá (K
2
) xác định khoảng 209
tỷ khóa.
Độ phức tạp của phương pháp này chủ yếu phụ thuộc sự phán đoán, nhận dạng ngôn ngữ của
bản rõ tương ứng với bản mã và phụ thuộc độ dài của khóa (số lượng bit khóa), mà không phụ
thuộc vào thuật toán mã hóa khối mã của DES. Vì vậy, để đạt được kết quả, mục tiêu nghiên cứu,
đòi hỏi sự kết hợp nhiều lĩnh vực liên quan. Đề tài đã kết hợp, vận dụng giữa thuật toán nhận dạng
bản rõ và thuật toán di truyền. Khi ứng dụng thuật toán di truyền thì “Tiêu chuẩn bản rõ” có thể
được xem như là hàm “phù hợp” - đặc thù của thuật toán di truyền thám mã.
Mục tiêu nghiên cứu của đề tài là xây dựng thuật toán tấn công thám mã. Tuy nhiên để để
tăng tốc độ tính toán, rút ngắn thời gian thám mã, tác giả đã xuất ứng dụng mô hình hệ thống tính
toán song song - mô hình GA master - slave.
3


CHƢƠNG I
GIỚI THIỆU VỀ CHUẨN MÃ HÓA DỮ LIỆU –
DES (DATA ENCRYPTION STANDARD) [4]

DES được phân biệt giữa hai khái niệm là Chuẩn mã hoá dữ liệu (DES - Data Encryption
Standard) và Thuật toán mã hoá dữ liệu (DEA - Data Encryption Algorithm). Thuật toán mã hoá

là thành phần cơ bản của Chuẩn mã hoá. Việc nghiên cứu, phân tích về DES chính là nghiên cứu,
phân tích về thuật toán của nó.
Trong lĩnh vực mật mã học, có hai loại hệ mật mã thường được đề cập đến, đó là mật mã
khoá công khai (khoá bất đối xứng) và mật mã khoá bí mật (khoá đối xứng). Riêng đối với hệ mật
mã đối xứng lại chia ra làm hai loại là mã hoá, giải mã theo khối và mã hoá, giải mã theo dòng.
DES (Data Encryption Standard) hay Chuẩn mã hóa dữ liệu thuộc hệ mật mã khoá đối xứng và
thực hiện mã hoá, giải mã theo khối. Độ dài của khối thông tin mã hoá, giải mã là 64 bit.
1.1. Quy trình mã hoá theo DES
Quy trình mã hoá của mật mã khối nói chung và mã hoá theo DES nói riêng được thực hiện
qua năm giai đoạn sau:
Giai đoạn 1: Bản rõ chữ Bản Rõ số (Dạng nhị phân)
Giai đoạn 2: Bản rõ số
Các đoạn 64 bit Rõ
số

Giai đoạn 3: 64 bit Rõ số 64 bit Mã số
Giai đoạn 4: Các đoạn 64 bit Mã số Bản Mã số (Dạng nhị phân)
Giai đoạn 5: Bản Mã số Bản Mã chữ
1.2. Lập mã và gải mã DES
Thuật toán DES tập trung thực hiện Giai đoạn 3 của quy trình mã hóa. Đó là chuyển đổi bản
Rõ số với 64 bit thành bản Mã số với 64 bit. Còn đối với quy trình giải mã thì ngược lại, đổi bản
Mã số với 64 bit thành bản Rõ số với 64 bit
Quy trình mã hoá, giải mã khối gồm hai thuật toán là mã hoá (ký hiệu là E) và giải mã (ký
hiệu là D). Cả hai thuật toán đều tác động lên một khối đầu vào 64 bit sử dụng khoá 56 bit để cho
ra khối 64 bit. Đối với bất kỳ khoá k nào, giải mã là hàm ngược của mã hoá, nghĩa là:
- Mã hoá khối: E
k
(M),
- Giải mã khối: M = D
k

(E
k
(M)),
trong đó, M là khối thông tin 64 bit và k là khoá 56 bit.
4

Thuật toán mã hóa
DES
Khoá K
56 bit
Bản rõ 64 bit
Bản mã 64 bit
Thuật toán giải mã
DES
-1
Khoá K
56 bit
Bản mã 64 bit
Bản rõ 64 bit

a. Quy trình mã hoá b. Quy trình giải mã
Hình 1.1. Mô phỏng mã hoá (a) và giải mã (b) theo DES
Quy trình giải mã của DES là quy trình ngược lại với quy trình mã hóa DES, xuất phát từ bản
mã Y (đầu vào), kết quả là bản rõ X (đầu ra).
Do xác định mục tiêu, phương pháp thám mã khối DES là thám mã “hộp đen”, thám mã “vét
cạn có định hướng” dựa trên các yếu tố độ dài khóa (số lượng bit của khoá), bản mã, và độ dài
khối mã nên khi xây dựng thuật toán thám mã không cần phân tích chi tiết thuật toán DES.
1.3. Các chế độ mã hoá theo DES [15]
Các hệ mật mã khối nói chung và Chuẩn mã hóa khối DES có 6 (sáu) chế độ mã hóa, gồm
chế độ mã hoá cơ bản (ECB - electronic codebook mode), chế độ liên kết khối mã (CBC - cipher

block chaining mode), chế độ phản hồi mã (CFB - cipher feedback mode), ... Trong đó chế độ mã
hóa cơ bản là đơn giản nhất. Dưới đây là sơ đồ mô tả chế độ mã hoá cơ bản (ECB - electronic
codebook).
Mã hoá
mã khối
Khoá
Bản rõ
Bản mã
Mã hoá
mã khối
Khoá
Bản rõ
Bản mã
Mã hoá
mã khối
Khoá
Bản rõ
Bản mã

a. Mã hoá
Giải mã
mã khối
Khoá
Bản mã
Bản rõ
Giải mã
mã khối
Khoá
Bản mã
Bản rõ

Giải mã
mã khối
Khoá
Bản mã
Bản rõ

b. Giải mã
Hình 1.5. Mã hóa (a) và giải mã (b) theo chế độ mã cơ bản (ECB) [15]
DES có thể áp dụng một trong các chế độ mã hoá như đã nói trên. Nhưng để giới hạn phạm vi
nghiên cứu của đề tài, khi thực hiện hiện công việc thám mã đương nhiên chúng ta giả định bản mã
cho trước được mã hóa bởi Chuẩn mã hóa DES, đồng thời cũng giả định rằng bản mã được mã hóa
5

theo chế độ mã cơ bản (ECB). Tức là bản rõ được chia nhỏ thành các khối độc lập, mỗi khối 64 bit.
Mỗi khối này được mã hóa bởi cùng một khóa k nào đó để tạo ra các khối mã 64 bit độc lập.
1.4. Độ an toàn của DES
Ngoại trừ các bảng S, mọi tính toán trong DES đều tuyến tính, tức là việc tính phép hoặc loại
trừ của hai đầu ra cũng giống như phép hoặc loại trừ của hai đầu vào, rồi tính toán đầu ra. Các
bảng S chứa đựng nhiều thành phần phi tuyến của hệ mật, là yếu tố quan trọng nhất đối với độ an
toàn của hệ thống.
Số khóa có thể là 2
56
, không gian này là nhỏ để đảm bảo an toàn thực sự. Nhiều thiết bị
chuyên dụng đã được đề xuất nhằm phục vụ tấn công với một cặp bản rõ - bản mã đã biết. Phép
tấn công này chủ yếu thực hiện theo phương pháp “vét cạn”. Tức là với bản rõ X và bản mã Y
tương ứng (64 bit), mỗi khóa có thể được kiểm tra cho tới khi tìm được một khóa K thỏa mãn
e
k
(X) = Y.


CHƢƠNG II
CÁC PHƢƠNG PHÁP THÁM MÃ CHUẨN MÃ HÓA DỮ LIỆU DES,
CÁC HỆ THỐNG CHUYÊN DỤNG PHỤC VỤ THÁM MÃ DES

2.1. Một số khái niệm cơ bản
Có thể phân loại các phương pháp thám mã nói chung, thám mã DES dựa trên nhiều góc độ,
nhưng về cơ bản, có các phương pháp thám mã như sau:
- Thám mã đường tắt là phương pháp thám mã dựa trên các phân tích toán học, thống kê và
cấu trúc chi tiết bên trong thuật toán mã hóa hóa/giải mã, để từ đó có các thống kê về xác suất, các
hệ phương trình tuyến tính,... của hệ mã hóa giúp rút ngắn thời gian phá mã so với “thám mã vét
cạn”. Các phương pháp thám mã đường tắt đã được công bố gồm có thám mã vi sai, thám mã
tuyến tính, thám mã phi tuyến, thám mã vi sai tuyến tính v.v..
- Thám mã hộp đen hoàn toàn khác với thám mã đường tắt, phương pháp thám mã này không
phân tích chi tiết thuật toán mã hóa mà xem nó như là một “hộp đen” để dò tìm khóa khi biết bản
rõ, bản mã hoặc chỉ biết bản mã. Phương pháp này có thể áp dụng cho hệ mật mã khối bất kỳ. Độ
phức tạp tính toán của phương pháp này chỉ phụ thuộc vào các tham số như độ dài khóa và độ dài
khối mã. Thông thường, khi người ta nói đến các phương pháp “thám mã vét cạn”, “tấn công vét
cạn”, “tấn công bạo lực” (brute-force attack), hay “tấn công dùng bạo lực” (attacks using force)
thì đều được hiểu là phương pháp thám mã hộp đen.
Ngoài ra, với giả định khi người thám mã đã biết thuật toán mã hoá (đối với một hệ mã hoá
xác định), chúng ta có thể phân loại thám mã dựa trên các số lượng thông tin được biết về bản rõ,
bản mã, gồm Thám mã chỉ biết bản mã, Thám mã chỉ biết bản tin rõ, Thám mã với bản rõ được
chọn, Thám mã với bản mã được chọn. Trong mọi trường hợp thám mã này, mục đích là tìm ra
khóa mật được sử dụng cho hệ mã hoá.
6

2.2. Các phƣơng pháp thám mã DES
2.2.1. Thám mã đƣờng tắt
Các phương pháp thám mã đường tắt đã được công bố gồm có thám mã vi sai, thám mã tuyến
tính, thám mã phi tuyến, thám mã vi sai tuyến tính, thám mã tích phân, phương pháp thám mã vi

sai bậc cao, thám mã nội suy v.v..
2.2.2. Thám mã hộp đen (vét cạn để tìm khoá) [1][2][8]
Thám mã hộp đen nói chung và tấn công vét cạn nói riêng là phương pháp thám mã không
phân tích sâu cấu trúc bên trong của hệ mật mã. Cơ sở của phương pháp này chủ yếu dựa vào sức
mạnh của các hệ thống tính toán hiệu năng cao để thực hiện vét cạn và tìm ra khoá mật. Đây là
phương pháp thám mã đơn giản nhất đối với hệ mật mã khối. Việc thám mã đơn thuần chỉ là thử
tất cả các khóa, khóa này nối tiếp khóa kia, cho đến khi tìm ra khóa đúng. Như vậy, trong trường
hợp xấu nhất ta cần phải thử 2
l
khóa, nếu độ dài khóa là l. Và riêng đối với hệ DES thì trường hợp
xấu nhất ta cần phải thử 2
56
khóa (khoảng hơn 72 triệu tỷ khóa).
Trong mọi trường hợp thám mã nói trên, mục đích là tìm ra khóa mật được sử dụng cho hệ
mã hoá. Dựa vào cách thức phân loại thám mã này để xác định bài toán thám mã được nghiên
cứu, đề xuất trong đề tài này thuộc phương pháp thám mã hộp đen, đồng thời là thám mã chỉ biết
bản mã, và người thám mã biết thuật toán mã hóa/giải mã (có thể truy cập vào chức năng mã
hóa/giải mã của DES).
2.3. Các hệ thống chuyên dụng thám mã DES
Công việc thám mã nói chung và thám mã hộp đen, vét cạn để tìm khóa nói riêng do có
không gian khóa thử là rất lớn, độ phức tạp tính toán cao. Do vậy, thám mã không thể sử dụng
những máy tính thông thường mà cần phải sử dụng các hệ thống tính toán hiệu năng cao, hay các
hệ thống vận dụng được đồng thời rất nhiều nguồn lực tính toán. Cụ thể, các hệ thống này gồm có
các phần cứng chuyên dụng thám mã, điện toán lưới, điện toán đám mây, siêu máy tính, máy tính
song song, hệ thống máy tính cụm cluster v.v.. Đặc biệt, đối với thuật toán di truyền thám mã rất
thích hợp với ứng dụng các máy tính song song hoặc hệ thống tính toán song song (hệ thống máy
tính cụm - cluster).

CHƢƠNG III
NGHIÊN CỨU, ĐỀ XUẤT PHƢƠNG PHÁP THÁM MÃ DES


3.1. Mô tả bài toán
Vơi bản mã cho trước được mã bởi Chuẩn mã hóa dữ liệu DES và bởi chế độ mã hóa cơ bản
ECB của DES từ bản rõ là một thông điệp tiếng Anh, đồng thời người thám mã có thể truy cập
được vào các chức năng mã hóa, giải mã DES. Từ các giả thiết này, yêu cầu ứng dụng thuật toán
di truyền để dò tìm khóa mật k đã sử dụng để mã hóa bản mã và tìm ra bản rõ.
7

Do quá trình chạy thuật toán, máy tính phải thử giải mã bản mã với số lượng rất lớn các khóa
k (toàn bộ không gian khóa của DES là 2
56
khóa). Vì vậy, để giảm thời gian tính toán, bản mã cho
trước cần được chia nhỏ thành các khối 8 byte (64 bit). Từ đây, việc thám mã, dò tìm khóa được
thực hiện dựa trên một phần 64 bit bất kỳ của bản mã.
DES
(Chế độ ECB)
Khoá mật K
(56 bit) ?
Bản rõ ?
(64 bit)
Bản mã Y
(64 bit)
Thuật toán
dò tìm khoá mật ?
Bản mã Y
(64 bit)
Khoá K (56 bit) ?
Bản rõ (64 bit) ?
DES
-1

(Chế độ ECB)

(a) Giả thiết (b) Bài toán đặt ra
Hình 3.1. Mô tả giả thiết (a) và bài toán thám mã DES (b)
Với giả thiết bài toán như trên, tác giả đề xuất phương pháp thám mã hộp đen áp dụng thuật
toán di truyền với sự hỗ trợ của hệ thống tính toán song song.
Theo như phần tìm hiểu về phương pháp thám mã hộp đen, công việc thám mã không cần
phân tích chi tiết thuật toán bên trong DES, mà xem như các biến đổi bên trong khối mã là một
“hộp đen”. Do vậy, thám mã ở đây thực chất là thực hiện vét cạn khóa trên không gian đã được
giới hạn. Tuy nhiên, sự “vét cạn” là “có định hướng” nhờ thuật toán di truyền, và sự “tiến hóa”
qua các thế hệ (vòng lặp) của thuật toán di truyền.
3.2. Xây dựng thuật toán nhận dạng bản rõ tiếng Anh
3.2.1. Vai trò của nhận dạng bản rõ tự động trong thám mã “vét cạn”
Đọc bằng mắt thường
Giải mã toàn bộ bản mã
Kết thúc
Ghi nhận khóa đúng
Sinh khóa
Đúng
Sai
Module nhận dạng
bản rõ tự động
Giải mã một phần bản mã
Đọc được
(là bản rõ tiếng Anh)?
Kết thúc
Ghi nhận khóa đúng,
giải mã cho đến hết
Sinh khóa
Đúng

Sai
Đọc được
(là bản rõ tiếng Anh)?

(a) Nhận dạng bản rõ thủ công (b) Nhận dạng bản rõ tự động
8

Hình 3.2. So sánh thám mã dựa trên nhận dạng bản rõ thủ công (a)
và nhận dạng bản rõ tự động (b) [1], [3]
Hình 3.2 cho thấy rõ vai trò quan trọng của module hay thuật toán nhận dạng bản rõ đối với
thám mã vét cạn khi số lượng khóa thử là rất lớn. Cụ thể, ví dụ toàn bộ không gian khóa của DES
là 2
56
khóa (khoảng 209) tỷ khóa, của AES có thể là là 2
128
, 2
192
, hoặc 2
256
khóa...
3.2.2. Một số phương pháp nhận dạng “bản rõ” tự động
Hiện nay đã có một số phương pháp nhận dạng “bản rõ” như nhận dạng dựa vào từ điển,
nhận dạng dựa trên tập hợp từ, cụm từ giả định, nhận dạng dựa vào thống kê đặc trưng của ngôn
ngữ. Trong đó, phương pháp dựa vào thống kê đặc trưng của ngôn ngữ có ưu điểm nhanh hơn,
chính xác hơn so với các phương pháp khác.
3.2.3. Xây dựng thuật toán nhận dạng bản rõ dựa vào phương pháp thống kê đặc trưng
ngôn ngữ
a) Đặt bài toán
Trong phạm vi đề tài luận văn này, bài toán cụ thể được đặt ra như sau: giả sử trên cơ sở nào
đó, máy tính nhận được một dãy các ký tự X = x

1
x
2
...x
m
. Trong đó, x
i
∈ A = {a, b, c,..., z}, i = .
Hãy xây dựng một thuật toán để máy tính trả lời cho câu hỏi: dãy X là “bản rõ” tiếng Anh hay là
dãy giả ngẫu nhiên (một dãy vô nghĩa)?
b) Cách tiếp cận
Đặc trưng của một chữ viết thuộc ngôn ngữ nào đó có thể được xác định dựa trên thống kê
tần suất đơn hoặc tần suất bộ đôi của sự xuất hiện các chữ cái. Phần này sẽ tập trung nghiên cứu
xây dựng thuật toán nhận dạng “bản rõ” tự động dựa trên thống kê tần suất bộ đôi.
Tần suất bộ đôi là xác suất để một chữ cái liền kề sau chữ cái khác hay xác suất để hai chữ
cái bất kỳ trong bảng chữ cái đứng cạnh nhau. Đặc trưng này của ngôn ngữ được thể hiện ở mô
hình nổi tiếng được ứng dụng rộng rãi trong lĩnh vực xử lý ngôn ngữ tự nhiên - Mô hình xích
Markov. Dựa vào mô hình này để xây thuật toán giúp máy tính phân biệt được chữ viết một ngôn
ngữ xác định với một xâu ký tự ngẫu nhiên, hoặc phân biệt chữ viết của hai hay nhiều ngôn ngữ
khác nhau. Tuy nhiên, trong phạm vi nghiên cứu của đề tài, việc xây dựng thuật toán nhận dạng
“bản rõ” (“valid” plain-text) là để phân biệt được một thông điệp tiếng Anh với một xâu ký tự
ngẫu nhiên. Trong trường hợp này, xâu ký tự ngẫu nhiên được sinh ra do thực hiện giải mã bản
mã cho trước (“valid” cipher-text) bởi một khóa thử bất kỳ, mà không phải là khóa đúng.
c) Phương pháp giải
Đối với xâu đầu vào X chỉ cần tính tần số bộ đôi, tức số lần xuất hiện các bộ đôi chữ cái trong
xâu (không cần tính tần suất), các bộ đôi chữ cái (thuộc không gian 26
2
bộ đôi) không xuất hiện
trong xâu X coi như có tần số bằng 0. Từ đây, kết hợp với đặc trưng tần suất bộ đôi đã được lưu
vào cơ sở dữ liệu để kết luận xâu X là “bản rõ”, hay dãy ngẫu nhiên, vô nghĩa.

d) Hàm kiểm tra “bản rõ”
9

Hàm để kiểm tra xâu đầu vào X có phải là “bản rõ” hay không được xây dựng như sau:

trong đó, các giá trị s(x, y) là đặc trưng tần suất bộ đôi được tính toán trước, lưu vào cơ sở dữ liệu
(phần off-line) và trình bày ở Phụ lục 2, các giá trị t(x, y) là tần số bộ đôi được tính từ xâu đầu vào
X (phần on-line).
Nếu F ≥ 0 thì X là mẫu ngẫu nhiên, không đọc được, tức X không phải là bản rõ; ngược lại,
nếu F < 0 thì X là bản rõ tiếng Anh, có nghĩa và đọc được.
Thuật toán nhận dạng bản rõ cùng với “tiêu chuẩn bản rõ” của nó là cơ sở để xây dựng “hàm
phù hợp” (finness function) - một thành phần rất quan trọng của thuật toán di truyền.
3.3. Tìm hiểu thuật toán di truyền
Thuật toán di truyền bắt đầu giống như bất kỳ thuật toán tối ưu nào khác, bằng cách định
nghĩa các biến tối ưu, chi phí và hàm chi phí, và cũng kết thúc tương tự các thuật toán khác. Tuy
nhiên, các thành phần khác ở giữa toàn bộ tiến trình của mỗi thế hệ thì hoàn toàn khác. Chúng
hoạt động tương tự các diễn biến tự nhiên trong sinh học. Đặc điểm, chất lượng dân số qua các thế
hệ thể hiện sự tiến hóa tự nhiên theo một quy luật, hay một xu hướng nào đó (của môi trường
sống). Sự “tiến hóa” này giúp thuật toán tìm dần đưa ra được các giải pháp tốt, và cuối cùng tìm
được một giải pháp chấp nhận được (hội tụ).
Định nghĩa chi phí,
hàm chi phí, các biến,
chọn lọc các tham biến GA
Tạo dân số ban đầu
Mã hóa các nhiễm sắc thể
Tính chi phí
mỗi nhiễm sắc thể
Ghép cặp, sinh sản
Đột biến
Kết thúc

Kiểm tra hội tụ

Không
Chọn lọc

Hình 3.5. Biểu đồ luồng của thuật toán di truyền nhị phân [12, pp.29]
3.4. Đề xuất phƣơng pháp thám mã DES
10

3.4.1. Xây dựng thuật toán di truyền dò tìm khóa
Vận dụng kết quả nghiên cứu thuật toán di truyền nhị phân và đặc trưng của bài toán thám mã
hộp đen để xây dựng quy trình dò tìm khóa đúng như hình dưới đây:
Định nghĩa hàm phù hợp,
các biến
Tạo lập họ khóa khởi tạo
Giải mã bản mã cho trước
với các khóa trong họ
Tính các giá trị mức phù hợp
của các bản giải mã
Loại bỏ 50% khóa
có mức phù hợp thấp
Chọn từng cặp khóa để kết hợp
Kết hợp,
sinh khóa mới
Đột biến
Kết thúc
Kiểm tra hội tụ ?

Không
100 khóa

100 khóa
50 khóa

Hình 3.7. Quy trình thám mã dựa trên thuật toán di truyền
3.4.1.1. Xác định hàm phù hợp (hàm chi phí)
Đối với bài toán thám mã, dò tìm khóa, độ phù hợp các khóa (của các nhiễm sắc thể) không
được tính một cách trực tiếp từ các khóa k mà được tính từ bản giải mã X = D
k
(Y)
Mức phù hợp khóa k = Mức phù hợp của X = f(X)
Ứng dụng kết quả nghiên cứu xây dựng “tiêu chuẩn bản rõ” dựa trên tần suất móc xích bộ đôi
chữ cái tiếng Anh, ta xác định hàm phù hợp Fitness(X) như sau:

trong đó, s(x, y) là đặc trưng về tần suất bộ đôi móc xích của chữ cái tiếng Anh được tính toán
trước (Phụ lục 2); t(x, y) là tần số bộ đôi tính được từ mẫu đầu vào X.
3.4.1.2. Tạo lập họ khóa khởi tạo
Trước khi các vòng lặp của thuật toán di truyền tự sinh khóa mới theo một quy luật được xác
định, cần phải tạo lập tập khóa khởi tạo. Tập khóa này chỉ gồm một phần nhỏ trong không gian
11

khóa mà thuật toán di truyền sẽ hội tụ. Số lượng tập khóa khởi tạo (dân số khởi tạo) là tùy ý
nhưng trong trường hợp này số lượng được chọn là 100 khóa (ký hiệu là tập P).
Giải mã 8 byte
bản mã Y cho trước
Gồm các ký tự
thuộc bảng chữ cái
(tiếng Anh)
Tập khóa khởi tạo P
thuộc không gian {K
2

}
Tập P đạt
100 khóa
Kết thúc
Đúng
Đúng
Sai
Sinh khóa mới
Sai

Hình 3.8. Quy trình tạo lập tập khóa khởi tạo P gồm 100 khóa
Không gian khóa {K
2
} là không gian khóa gồm các khóa k nếu sử dụng để giải mã Y thì
cho kết quả là xâu X gồm các chữ cái tiếng Anh.
Theo như đã tìm hiểu về thuật toán di truyền thì ký hiệu N
pop
là dân số khởi tạo, N
bits
là số
bit của nhiễm sắc thế, nên ở đây, N
pop
= 100 do họ khóa khởi tạo P là 100, và N
bits
= 64, vì mỗi
khóa của DES có 64 bit (gồm cả 8 bit kiểm tra chẵn lẻ - parity). Như vậy, họ khóa k khởi tạo là
một ma trận gồm các bit không (0) và một (1), có 100 dòng, 64 cột.
3.4.1.3. Giải mã bản mã cho trước với các khóa trong họ
Không giống như áp dụng thuật toán di truyền trong các trường hợp khác, để tính toán mức
độ phù hợp (chí phí) cho các khóa, thuật toán không tính trực tiếp trên các bit khóa, mà dựa trên

bản giải mã. Tại đầu mỗi vòng lặp hay mỗi thế hệ, thuật toán thực hiện giải mã lần lượt các khoá
trong họ k
1
, k
2
, ..., k
100
đã được chọn:
D
ki
(Y) = X
(i)
= x
(i)
1
x
(i)
2 ...
x
(i)
8
, i =
3.4.1.4. Tính mức độ phù hợp của các khóa
Mức phù hợp của các khóa k được tính dựa trên hàm phù hợp f(X). Quá trình tính toán trong
một thế hệ được lập thành bảng sau đây:
Bảng 3.3: Tính toán mức độ phù hợp của các
khoá trong một thế hệ
STT k
i
Fitness

1 k
1,1
k
1,2
... k
1,64
f
1

2 k
2,1
k
2,2
... k
2,64
f
2

12

3 k
3,1
k
3,2
... k
3,64
f
3

... ... ...

100 k
100,1
k
100,2
... k
100,64
f
100

trong đó, f
i
được xác định ở biểu thức (3.14) ứng với khoá k
i
, i =
3.4.1.5. Chọn lọc
Sau khi xác định được các giá trị của hàm phù hợp, các khóa k
i
được sắp xếp theo thứ tự từ
giá trị thấp nhất đến giá trị cao nhất của f
i
, i = . Trên cơ sở đó, 50 khóa có mức phù hợp thấp
nhất sẽ bị loại, 50 khóa có mức phù hợp cao nhất được giữ lại để ghép cặp, kết hợp và tạo ra thế
hệ mới.
3.4.1.6. Ghép cặp
Ghép cặp từ trên xuống tuy không gần với sự chọn lọc tự nhiên so với các phương pháp ghép
cặp khác nhưng được áp dụng trong trường hợp này để ghép cặp khóa k làm bố mẹ với lý do thời
gian, độ phức tạp tính toán nhỏ. Tức là, các khoá ở các vị trí lẻ i = 1, 3, ..., 49 được xác định là bố,
các khoá ở các vị trí chẵn i = 2, 4, ..., 50 được xác định là mẹ. Quá trình ghép cặp để sinh sản được
mô tả như sau:
Bố(1) + Mẹ(2) → Con(51), Con(52)

Bố(3) + Mẹ(4) → Con(53), Con(54)
....
Bố(49) + Mẹ(50) → Con(99), Con(100)
hay:
k
1
+ k
2
→ k
51
, k
52

k
3
+ k
4
→ k
53
, k
54

....
k
49
+ k
50
→ k
99
, k

100

3.4.1.7. Kết hợp
Để mô tả quá trình kết hợp, các khoá k
i
= k
i1
k
i2
... k
i8
... k
i64
được biểu diễn thành các byte
(mỗi byte gồm 8 bit) được đánh số từ 1 đến 7:
k
i
= k
i
(1)
k
i
(2)
k
i
(3)
k
i
(4)
k

i
(5)
k
i
(6)
k
i
(7)
k
i
(8)
.
Chẳng hạn khi khoá k
1
kết hợp với khoá k
2
sẽ tạo ra hai con k
51
và k
52
là:
k
51
= k
1
(1)
k
2
(2)
k

1
(3)
k
2
(4)
k
1
(5)
k
2
(6)
k
1
(7)
k
2
(8)
k
52
= k
2
(1)
k
1
(2)
k
2
(3)
k
1

(4)
k
2
(5)
k
1
(6)
k
2
(7)
k
1
(8)
Tiến hành như vậy đối với 24 cặp bố mẹ còn lại để tạo ra 24 cặp con cái. Kết thúc giai đoạn
sinh sản này, họ khoá trở về số lượng 100 như ban đầu.

3.4.1.8. Đột biến
13

Để mô tả quá trình đột biến, ta vẫn sử dụng ký hiệu khoá k
i
= k
i1
k
i2
... k
i8
... k
i64
để biểu thị 64

bit của một khoá (gồm cả 8 bit kiểm tra chẵn lẻ - parity).
Chọn tỷ lệ đột biến là 10% (µ = 0,1). Nếu ký hiệu N
pop
là số lượng các khoá tham gia đột
biến, N
bit
là số lượng các bit của một khoá. Chú ý là không thực hiện đột biến đối với nhiễm sắc
thể có mức phù hợp cao nhất (cần giữ lại làm kết quả cuối cùng hoặc để phục vụ sinh sản). Khi đó
số lượng các bit đột biến sẽ là:
#mutations=µ(N
pop
–1).N
bit
= 0,1(100-1).64 = 633,6 ≈ 634
Các giá trị mrow (hàng), mcol (cột) được tạo ngẫu nhiên như sau:
mrow = ceil(rand(1,µ)*(N
pop
-1))+1
mcol = ceil(rand(1,µ)*N
bits
)
và N
pop
= 100, N
bits
= 64 cho nên 634 giá trị mrow được tạo ra một cách ngẫu nhiên trong giới hạn
99 số tự nhiên từ 1 đến 99, do nhiễm sắc thể đầu tiên (được đánh chỉ số là 0) không tham gia đột
biến; 634 giá trị mcol được tạo ra một cách ngẫu nhiên trong giới hạn 64 số tự nhiên đầu tiên (từ 0
đến 63). Chẳng hạn,
mrow = [5 92 6 21 11 2 6 8 7 ... 68 15 7 3 5 34]

554 thành phần
mcol = [2 12 5 18 56 1 44 3 11 ... 26 9 18 4 19 31]
554 thành phần
Với các giá trị mrow và mcol được tạo ra như trên, 634 bit đột biến sẽ là các bit ở các toạ độ
dòng và cột tương ứng (5, 2), (92, 12), (6, 5), ..., (5, 19), (34, 31). Những bit tại các toạ độ này nếu
có giá trị là 0 thì sẽ được chuyển thành 1, và ngược lại.
Mã lệnh đột biến cho một phần tử của ma trận các bit như sau:
pop(mrow,mcol)=1-pop(mrow,mcol)
Sau khi thực hiện xong sự đột biến cho 634 bit của họ, thuật toán tiếp tục thế hệ mới với công
việc đầu tiên là giải bản mã gốc với 100 khoá (đã qua kết hợp và đột biến) rồi tính các giá trị mức
phù hợp (fitness) để xác định f
1
, f
2
, ..., f
100
tương ứng. Sau đó sắp xếp lại các khoá (nhiễm sắc thể)
của họ khoá theo thứ tự các giá trị f
i
thấp nhất đến cao nhất. Dựa trên bảng phân hạng mức phù
hợp này, thực hiện kiểm tra sự hội tụ. Nếu chưa có hội tụ, tiếp tục loại 50 khoá có giá trị f
i
cao
nhất, giữ lại 50 khoá có giá trị f
i
thấp nhất. 50 khoá được giữ lại này lại tiếp tục các tiến trình ghép
cặp, kết hợp, đột biến. Ở mỗi thế hệ, kể từ thế hệ thứ hai đều lặp lại bắt đầu từ bước giải bản mã
cho trước với các khoá trong họ.
3.4.1.9. Kiểm tra hội tụ
Quá trình lặp trên đây cứ tiếp tục diễn ra từ thế hệ này đến thế hệ khác cho đến khi có sự hội

tụ. Sự hội tụ sẽ đạt được khi tìm được một khoá k
i
nào đó để có thể giải mã và cho kết quả là “bản
rõ”. Nói cách khác, điều kiện hội tụ của thuật toán là khi đạt ngưỡng hay tìm được một giá trị hàm
phù hợp f
i
có giá trị âm (f(X
i
) < 0). Khoá k
i
tương ứng với giá trị f
i
âm đó là khoá phải tìm. Đến
đây, thuật toán kết thúc.
14

3.4.2. Ƣớc lƣợng thời gian, độ phức tạp tính toán
Thời gian chạy của thuật toán cho đến khi đạt sự hội tụ phải trải qua nhiều giai đoạn, nhưng
tiêu tốn nhất là các tiến trình tạo lập tập khóa khởi tạo P, duyệt, giải mã với các khóa và tính các
hàm “phù hợp” của các khóa trong các vòng lặp (các thế hệ). Vì vậy, việc ước lượng thời gian, độ
phức tạp tính toán để thuật toán hội tụ tập trung vào ba loại tiến trình này. Thời gian tính toán
được ước lượng (thực hiện trên một máy tính có một bộ vi xử lý CPU Pentium IV với tốc độ trung
bình) căn cứ vào:
- Thời gian giải mã của DES là 35 Kb/s [15]
- Thời gian tính toán hàm phù hợp giả định là 100 Kb/s
a) Thời gian tạo lập tập khóa khởi tạo P
Số lượng các xâu ký tự có độ dài 8 ký tự (8 byte) gồm các chữ cái tiếng Anh là 26
8
do bảng
chữ cái tiếng Anh có 26 chữ cái. Đồng thời, do sự tương ứng 1 - 1 giữa bản giải mã X với khoá k

nên có 26
8
khoá k thuộc không gian khóa K
2
, tương đương khoảng 209 tỷ khóa k. Đồng thời, toàn
bộ không gian khóa K của DES là 2
56
khóa (khoảng 72 triệu tỷ khóa), nên theo tỷ lệ và xác suất,
để tìm được 100 khóa thuộc không gian khóa K
2
trong toàn bộ không gian khóa K thì cần phải thử
khoảng:
100 x (72 triệu tỷ khóa / 209 tỷ khóa) 34.500.000 khóa.
Với tốc độ 35 Kb/s thì mỗi giây DES duyệt 4.375 khóa để giải mã 8 byte bản mã. Có nghĩa,
để thử với giải mã 1 khóa, cần tiêu tốn 1/4.375 giây, hay T
d
= 0,000229. Do vậy, thời gian tạo lập
tập P gồm 100 khóa là Tp = 34.500.000 x 0,000229 = 7900 giây (khoảng 132 phút).
b) Thời gian tính toán qua các thế hệ
Giả định rằng, thuật toán di truyền thám mã đạt được sự hội tụ qua 2.000.000 thế hệ. Khi đó,
số lượng khóa k phải duyệt là 2.000.000 x 100 = 200.000.000 khóa (trong số 2
56
hay khoảng 72
triệu tỷ khóa của toàn bộ không gian khóa của DES), và chỉ bằng khoảng một phần ba trăm sáu
mươi triệu (1 / 360.000.000) so với vét cạn toàn bộ không gian khóa.
Thời gian duyệt một khóa trong mỗi vòng lặp gồm:
- Thời gian giải mã bản mã cho trước với khóa được duyệt
- Thời gian tính giá trị hàm phù hợp của bản giải mã tương ứng với khóa được duyệt.
Với tốc độ 35 Kb/s để giải mã bản mã cho trước, thì để giải mã với một khóa bất kỳ thì cần
một khoảng thời gian là 0,000229 giây (hay T

d
= 0,000229 giây).
Với tốc độ 100 Kb/s (100.000 byte /s), thì để tính mức phù hợp cho một khóa (bản giải mã 8
byte tương ứng với khóa đó) cần một khoảng thời gian khoảng 0,00008 giây (hay T
f
= 0,00008
giây).
Ở mỗi vòng lặp, việc giải mã và tính giá trị phù hợp thực hiện đối với 100 khóa, nên giá trị
N
pop
được xác định là 100, vậy
T
p
= 100 x (0,000229 + 0,00008) = 0,0309 (giây).
15

Tổng thời gian tính toán qua 2.000.000 vòng lặp là 2.000.000 x 0,0309 = 61.800 giây (khoảng
1.030 phút).
c) Tổng thời gian tính toán
Tổng thời gian thám mã = thời gian tạo lập tập khóa P gồm 100 khóa = tổng thời gian của các
vòng lặp = 132 phút + 1.030 phút = 1.162 phút (khoảng 19,4 giờ).
3.4.3. Vai trò của hệ thống tính toán hiệu năng cao
Theo tài liệu Thuật toán di truyền thực hành của Randy L. Haupt và Sue Ellen Haupt (2004)
[12] thì tổng thời gian chạy của một thế hệ (một vòng lặp) thuật toán di truyền trên hệ thống tính
toán song song được tính như sau:

(3.14) [12, pp.141]
Trong đó, T
f
: thời gian định giá hàm “phù hợp”, T

c
: thời gian trung bình truyền dữ liệu từ một
bộ vi xử lý tới một bộ vi xử lý khác, P: số lượng bộ vi xử lý, : tham biến phụ thuộc vào phương
pháp lập trình, đặc điểm hệ thống tính toán song song, N
pop
: là dân số của một

thế hệ.
Với đặc trưng bài toán thám mã, đẳng thức 3.14 có thể được bổ sung như sau:
,
(3.15)
trong đó T
d
là thời gian giải bản mã (8 byte) với một khóa thử k bất kỳ.
Nếu áp dụng mô hình tính toán song song đối thuật toán di truyền đó là “GA master - slaver”
một cách hiệu quả, thì thời gian truyền thông hay giá trị là không đáng kể và có thể bỏ
qua khi ước lượng tổng thời gian tính toán. Trong trường hợp này mô hình sẽ đạt hiệu quả cao,
tăng tốc khoảng 100 lần khi sử dụng một máy chủ (master) và 100 thành viên (slave).
Thời gian thám mã khi ứng dụng mô hình GA master - slave có 100 máy slave nói trên là:
1.162 phút / 100 = 11,62 phút.

KẾT LUẬN
1. Kết quả nghiên cứu
Đề tài đã ứng dụng thuật toán di truyền cùng với “tiêu chuẩn bản rõ” tiếng Anh để xây dựng
thuật toán “vét cạn có định hướng” trên không gian khoá đã giới hạn. Thuật toán này thực hiện dò
tìm khoá mật với một bản mã cho trước được mã hóa bởi Chuẩn mã hóa dữ liệu DES.
Đề tài đã đạt được những kết quả nghiên cứu chính sau:
- Xây dựng thuật toán nhận dạng “bản rõ” và “tiêu chuẩn bản rõ” đối với tiếng Anh là cơ sở
để xác định hàm “phù hợp” áp dụng cho thuật toán di truyền.
- Xây dựng quy trình thám mã dựa trên thuật toán di truyền gồm các bước tạo lập họ khoá

khởi tạo, giải mã với các khoá, chọn lọc, ghép cặp, đột biến, kiểm tra hội tụ. Với đặc trưng của
thuật toán di truyền, các bước tính các giá trị mức phù hợp, loại bỏ các khóa có giá trị mức phù
hợp thấp và kiểm tra hội tụ được thực hiện trong đó hàm “phù hợp” đóng vai trò cốt lõi.
16

- Đề xuất mô hình tính toán song song cho thuật toán di truyền thám mã - Mô hình “GA
master - slave” để rút ngắn thời gian thám mã khoảng 100 lần.
2. Hƣớng phát triển của đề tài
Phương pháp nghiên cứu và kết quả nghiên cứu của đề tài mở ra các hướng phát triển tiếp
theo gồm:
- Mục tiêu của đề tài là thám mã DES với thông điệp mã hoá được giả định là tiếng Anh
nhưng nó có thể mở rộng nghiên cứu thám mã với bản mã cho trước được mã hoá từ thông điệp là
tiếng Pháp, tiếng Việt, tiếng Nga,... hoặc khi không được biết trước ngôn ngữ của thông điệp mã
hoá.
- Độ phức tạp của phương pháp này chủ yếu phụ thuộc vào độ dài của khóa (số lượng bit
khóa), hoàn toàn không phụ thuộc vào thuật toán mã hóa bên trong khối mã nên nó có thể mở
rộng thám mã đối với các hệ mật mã khối có độ an toàn cao hơn, độ dài khoá lớn hơn DES, như
IDEA, AES, FEAL, RC4, RC5, 3DES..., miễn là chúng ta được cho trước bản mã, thuật toán mã
hóa, giải mã. Việc mở rộng thám mã đòi hỏi sự phát triển thuật toán đồng thời với tăng cường hệ
thống tính toán hiệu năng cao, tăng số lượng máy thành viên so với hệ thống tính toán song song
đã đề xuất.

References
Tiếng Việt
1. Hoàng Minh Tuấn (2008), Thám mã khối trên máy tính song song dùng hệ điều hành Linux,
Luận án Tiến sĩ, Học viện Kỹ thuật Quân sự, Bộ Quốc phòng, tr.34-71.
2. Hồ Văn Canh, Hoàng Minh Tuấn (2010), “Thám mã các văn bản được mã hóa bằng các
Chuẩn mã hóa khối”.
3. Trần Bá Ánh (2007), Nhận dạng các ngôn ngữ tự nhiên và ứng dụng, Luận văn cao học,
Đại học Công nghệ, ĐHQG Hà Nội.

4. Trịnh Nhật Tiến (2008), Giáo trình An toàn dữ liệu, Đại học Quốc gia, Hà Nội, tr.59-70.
Tiếng Anh
5. Alan Silvester (2004), “Differential Cryptanalysis and the Data Encryption Standard”.
6. Billingsley, Patrick (1961), “Statistical Methods in Markov Chains”. Annals of
mathematical statistics, 23:1.
7. C.R. Rao’s (1968), Linear statistical methods and their applications, Moscow, pp.45-60.
8. Curtin, Matt (2005): Brute-Force: Cracking the DES, Springer - Verlag.
9. Erick Cantú-Paz (2001), A Survey of Parallel Genetic Algorithms, Department of Computer
Science and Illinois Genetic Algorithms Laboratory, University of Illinois at Urbana-
Champaign, United States.
17

10. Juan M. E. Tapiador, Julio C. Hernandez-Castro, John A. Clark (2007), “Heuristic Search
for Non-Linear Cryptanalytic Approximations”, IEEE Congress on Evolutionary
Computation (CEC 2007)
11. Mitsuru Matsui (1998), “Linear Cryptanalysis Method for DES Cipher”, Springer-Verlag.
12. Randy L. Haupt, Sue Ellen Haupt (2004), Practical Genetic Algorithms (second edition),
John Wiley & Sons, Canada.
13. Ravi Ganesan, Alan T.Sherman (1993), Statistical Techniques for Language Recognition:
An Introduction and Guide for Cryptanalysts, IEEE - Transactions on Information Theory,
IT-28(4).
14. Susan K. Langford, Martin E. Hellman (1994) “Differential-Linear Cryptanalysis”,
Springer-Verlag.
Websites
15.

×