Tải bản đầy đủ (.docx) (48 trang)

Hệ mã hóa đối xứng và bất đối xứng, các thuật toán des, aes, rsa chữ ký số 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.03 MB, 48 trang )

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN I

BÁO CÁO THỰC TẬP TỐT NGHIỆP
Đề tài : Hệ mã hóa đối xứng và bất đối xứng, các thuật toán DES, AES, RSA. Chữ
ký số và ứng dụng.
Giảng viên hướng dẫn :

DƯƠNG TRẦN ĐỨC

Lớp

D07HTTT1

:

Hà Nội , ngày 27 tháng 7 năm 2011.


BÁO CÁO THỰC TẬP TỐT NGHIỆP

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à người
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 khi các thông
tin mang tính nhạy cảm và riêng tư được gửi đi trên mạng.
Quá trình mã hoá trong máy tính dựa vào khoa học về mật mã (Cryptography) đã được
con người sử dụng từ lâu đời. Trước thời đại số hoá, người sử dụng mật mã nhiều nhất
vẫn là chính phủ, chủ yếu trong mục đích quân sự. Hầu hết các phương pháp mã hoá
được dùng hiện nay 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á bởi công cụ máy tính.


Ứng dụng của khoa học mật mã không chỉ đơn thuần là mã hóa và giải mã thông tin mà
còn 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ã
khóa ( chứng nhận khóa công cộng), các qui trình trao đổi thông tin và thực hiện giao
dịch điện tử an toàn trên mạng. ….
Khi chọn đề tài này , em mong muốn được tìm hiểu những kiến thức tổng quan về mã
hóa ,đồng thời trình bày và phân tích một số thuật toán về mã hóa và ứng dụng của nó
vào kỹ thuật chữ ký số.
Nội dung báo cáo gồm 2 phần chính :
Phần I : Mã hóa.
Phần II: Chữ ký số.
Mặc dù đã cố gắng hoàn thành bản báo cáo với tất cả nỗ lực nhưng chắc chắn em vẫn còn
những thiếu sót nhất định. Kính mong sự thông cảm và sự góp ý của thầy và các bạn.
Em xin chân thành cảm ơn !
Hà Nội, ngày 23 tháng 7 năm 2011.
Sinh viên

.
2

SVTH: D07HTTT1

2


BÁO CÁO THỰC TẬP TỐT NGHIỆP

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
…………………………………………………………………………………………..
…………………………………………………………………………………………..

………………………………………………………………………………………….
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
………………………………………………………………………………………….
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
………………………………………………………………………………………….
…………………………………………………………………………………………..
………………………………………………………………………………………….
…………………………………………………………………………………………..
……………………………………………………………
Điểm: …………………………………………………(bằng chữ: …..…………… ….)
…………, ngày …. tháng … năm 2011
GIẢNG VIÊN HƯỚNG DẪN
(ký, họ tên)

3

SVTH: D07HTTT1


3


BÁO CÁO THỰC TẬP TỐT NGHIỆP

MỤC LỤC

DANH MỤC CÁC HÌNH VẼ

4

SVTH: D07HTTT1

4


BÁO CÁO THỰC TẬP TỐT NGHIỆP

DANH MỤC THUẬT NGỮ VIẾT TẮT
Thuật ngữ
Viết tắt
AES
Advanced Encryption
Standard
CA

A.

Ý nghĩa

Tiêu chuẩn mã hóa tiên tiến

CFB
CTR

Certificate Authority
Cipher FeedBack
Counter

Chứng thực số
Mã phản hồi ngược
Bộ đếm CTR

CBC
DES

Cipher Block Chaining
Data Encryption Standard

Dây chuyền mã khối
Tiêu chuẩn mã hóa dữ liệu

IDEA

International Data
Encryption Algorithm

Thuật toán mã hóa dữ liệu quốc tế

ECB

MD5
OFB
FIPS

Electronic Codebook Book
Message Digest 5
Output FeedBack

RSA

Algorithm

Sách mật mã điện tử
Giải thuật MD5
Phản hồi ngược đầu ra
Tiêu chuẩn Xử lý Thông tin Liên
bang Hoa Kỳ
Thuật toán mật mã hóa khóa công
khai.

MÃ HÓA.
5

SVTH: D07HTTT1

5


BÁO CÁO THỰC TẬP TỐT NGHIỆP


Tổng quan về mã hóa.
Mã hóa là quá trình biến đổi thông tin sang một dạng khác nhưng có thể biến đổi ngược
về dạng ban đầu. Giải mã là quá trình biến đổi ngược lại của mã hóa.
I.

Tại sao cần mã hóa thông tin?
Mọi công việc hàng ngày của chúng ta đều có thể thực hiện đựợc từ xa với sự hổ trợ của
máy vi tính và mạng internet (từ việc học tập, đi mua sắm, gửi thư… đến việc đi chợ của
một cô đầu bếp). Tất cả thông tin liên quan đến những công việc này đều do máy vi tính
quản lý và truyền đi trên hệ thống mạng. Đối với những thông tin bình thường thì
không có ai chú ý đến, nhưng đối với những thông tin mang tính chất sống còn đối với
một số cá nhân (hay tổ chức) thì vấn đề bảo mật thật sự rất quan trọng. Do đó mà cần
phả mã hõa thông tin lại trước khi gửi đi. Cụ thể:

Hình 1 : Mô hình trao đổi thông tin qua mạng thông thường
Thông thường việc trao đổi thông tin giữa hai người được mô tả ở hình 1, các bước thực
hiện như sau:
Tạo ra thông tin cần gửi đi.
Gửi thông tin này cho các đối tác.

-

Theo cách này thì chúng ta sẽ không thể quản lý được sự bí mật của thông tin và người
thứ ba không mong muốn nào đó có thể đón được thông tin trên. Vì vậy ta có thể xây
dựng một mô hình trao đổi thông tin bảo mật như ở hình 2, các bước thực hiện như sau:
-

Tạo ra thông tin cần gửi đi.
Mã hóa và gửi thông tin đã được mã hóa đi.
Đối tác giải mã thông tin nhận được.

Đối tác có được thông tin ban đầu của người gởi

6

SVTH: D07HTTT1

6


BÁO CÁO THỰC TẬP TỐT NGHIỆP

Hình 2 : Quy trình mã hóa thông tin
Hơn nữa, mã hóa dữ liệu ngăn chặn được các việc sau :
Nghe trộm và xem lén dữ liệu.
Chỉnh sữa và đánh cắp lén dữ liệu.
Giả mạo thông tin.
Data non-repudiation.
Sự gián đoạn các dịch vụ mạng.







Khi nhận được gói tin, người nhận sẽ giải mã dữ liệu lại dạng cơ bản ban đầu. Cho dù dữ
liệu có bị chặn trong suốt quá trình trao đổi dữ liệu.
II.
Mã hóa đối xứng và các thuật toán
II.1. Khái niệm mã hóa đối xứng.


Mã hóa đối xứng là kiểu mã hóa hai bên tham gia truyền dữ liệu sử dụng chung một
khóa để mã hóa và giải mã.
Một khoá có thể là một con số, một từ, hoặc một cụm từ được dùng vào mục đích mã hóa
và giải mã dữ liệu.
Trước khi hai bên trao đổi dữ liệu, khóa phải được chia sẽ dùng chung cho cả 2 bên.
Người gửi sẽ mã hóa thông tin bằng khóa riêng và gửi thông tin đến người. Trong quá
trình nhận thông tin, người nhận sủ dụng cùng một khóa để giải mã thông điệp.

7

SVTH: D07HTTT1

7


BÁO CÁO THỰC TẬP TỐT NGHIỆP

Hình 3 : Mô hình mã hóa đối xứng










Các thành phần của thuật toán (5 thành phần):

Plaintext: bản tin (dữ liệu) gốc
Encryption algorithm: Thuật toán mã hóa – thực hiện thay thế và biến đổi
dữ liệu gốc
Secret key: khóa bí mật- đầu vào của thuật toán. Sự xáo trộn, thay thế được
thực hiện phụ thuộc vào khóa này
Ciphertext: Bản tin đã bị biến đổi sau khi áp dụng thuật toán, nó phụ thuộc
vào plaintext và khóa bí mật
Decryption algorithm: Thuật toán giải mã (phép biến đổi ngược). Sử dụng
ciphertext và khóa bí mật để đưa ra bản tin gốc
Cụ thể hơn:





Plaintext: M
Hàm biến đổi mã hóa: Ek : :M → C, where k∈K (tập khóa K- vô hạn).
Ciphertext: C
Hàm biến đổi ngược giải mã: Dk: CM (k∈K)
M  E k  C  Dk  M

Ek được định nghĩa bởi thuật toán mã hóa E, D k được định nghĩa bởi thuật toán
giải mã D
Với mỗi K, Dk là nghịch đảo của Ek : DK(EK(M))=M , với mọi M
II.2. Các kiểu tấn công hệ mã hóa đối xứng

Có 2 kiểu tấn công hệ mã hóa đối xứng: Phân tích mã hóa và Tấn công vét cạn

8


SVTH: D07HTTT1

8


BÁO CÁO THỰC TẬP TỐT NGHIỆP
-

Phân tích mã hóa: là quá trình cố gắng phát hiện bản tin gốc hoặc khóa. Có cách
kiểu tấn công phân tích là:



Ciphertext only- chỉ dùng bản mã: đối phương chỉ có bản tin gốc đã mã hóa, dùng
phương pháp thống kê, xác định bản gốc p
Known plaintext- biết bản tin gốc: đối phương có ciphertext và 1 số cặp p và c
khác
Chosen plaintext: c và một engine biến đổi p-c, Đột nhập được vào máy mã hoá.
Tự chọn văn bản p và mã hoá lấy được văn bản mã c tương ứng.
Chosen ciphertext: đối phương có c +một engine biến đổi c-p, Đột nhập được vào
máy giải mã. Tự chọn văn bản mã c và giải mã lấy được văn bản p tương ứng







-


Tấn công vét cạn: thử với mọi trường hợp có thể. Phần lớn công sức của các tấn
công đều tỉ lệ với kích thước khóa

Giả thiết là biết hoặc nhận biết được các bản tin gốc p:

9

SVTH: D07HTTT1

9


BÁO CÁO THỰC TẬP TỐT NGHIỆP

Key size Thời gian vét Thời gian (106
(bit)
cạn
encrypt/Ms)
32

231 Ms= 35p

2 Ms

56

255= 1142 năm

10h


128

2127=
năm

5,4.1024 5,4.108

Như vậy, thuật toán này an toàn về mặt tính toán nhưng giá để phá khóa có khi vượt quá
giá trị tính toán thu được.
Kết luận:
Hệ thống mã hóa đồng bộ đưa ra 2 vấn đề chính. Đầu tiên, bởi vì một khóa vừa được
dùng để mã hóa vừa dùng để giả mã, nếu nó bắt đầu trở thành kẻ xâm nhập, thì tất cả
những thông tin sữ dụng khóa này sẽ bị huỷ. Vì thế, khóa nên thường xuyên thay đổi theo
định
kỳ.
Một vấn đề khác là khi hệ thống mã hóa đồng bộ xữ lý một lượng thông tin lớn, việc quả
lý các khóa sẽ trở thành một công việc vô cùng khó khăn. Kết hợp với việc thiết lặp các
cặp khóa, phân phối, và thay đổi theo định kỳ đều đòi hỏi thời gian và tiền bạc.
Hệ hống mã hóa đối xứng đã giải quyết vấn đề đó bằng việc đưa ra hệ thống mã hóa đối
xứng. Đồng thời, họ cũng tăng tính năng bảo mật trong suốt quá trình chuyển vận. Chúng
ta sẽ được tham khảo thêm về hệ thống mã hóa bất đối xứng ở phần sau.
II.3. Thuật toán DES ( Data Encryption Standard).
II.3.1. Lịch sử của thuật toán DES

DES (viết tắt của Data Encryption Standard, hay Tiêu chuẩn Mã hóa Dữ liệu) là một
phương pháp mật mã hóa đượ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 cãi, do nó bao
gồm các thành phần thiết kế mật, độ dài khóa tương đối ngắn, và các nghi ngờ về cửa sau
để Cơ quan An ninh quốc gia Hoa Kỳ (NSA) có thể bẻ khóa. Do đó, DES đã được giới

10

SVTH: D07HTTT1

10


BÁO CÁO THỰC TẬP TỐT NGHIỆP

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.
Từ cuối thập niên 1980, đầu thập niên 1990, xuất phát từ những lo ngại về độ an toàn và
tốc độ thấp khi áp dụng bằng phần mềm, giới nghiên cứu đã đề xuất khá nhiều thuật toán
mã hóa khối để thay thế DES. Những ví dụ tiêu biểu bao gồm: RC5, Blowfish, IDEA,
NewDES, SAFER, CAST5 và FEAL. Hầu hết những thuật toán này có thể sử dụng từ
khóa 64 bit của DES mặc dù chúng thường được thiết kế hoạt động với từ khóa 64 bit
hay 128 bit.
Hiện nay DES được xem là không đủ an toàn cho nhiều ứng dụng. Nguyên nhân chủ yếu
là độ dài 56 bit của khóa là quá nhỏ. Khóa DES đã từng bị phá trong vòng chưa đầy 24
giờ. Đã có rất nhiều kết quả phân tích cho thấy những điểm yếu về mặt lý thuyết của mã
hóa có thể dẫn đến phá khóa, tuy chúng không khả thi trong thực tiễn. Thuật toán được
tin tưởng là an toàn trong thực tiễn có dạng Triple DES (thực hiện DES ba lần), mặc dù
trên lý thuyết phương pháp này vẫn có thể bị phá. Triple DES được xem là an toàn mặc
dù tốc độ thực hiện khá chậm. Một phương pháp khác ít đòi hỏi khả năng tính toán hơn là
DES-X với việc tăng độ dài từ khóa bằng cách thực hiện phép XOR từ khóa với phần
thêm trước và sau khi thực hiện DES. Một phương pháp nữa là GDES được đề xuất làm
tăng tốc độ mã hóa nhưng nó được chứng tỏ là không an toàn trước tấn công vi sai
(differential cryptanalysis).
Năm 2001, sau một cuộc thi quốc tế, NIST đã chọn ra một thuật toán mới, AES, để thay
thế cho DES. Thuật toán được trình diện dưới tên là Rijndael. Những thuật toán khác có

tên trong danh sách cuối cùng của cuộc thi AES bao gồm: RC6, Serpent, MARS và
Twofish.
II.3.2.

Mô tả thuật toán.

DES là thuật toán mã hóa khối: nó xử lý từng khối thông tin của bản rõ có độ dài xác
định và biến đổi theo những quá trình phức tạp để trở thành khối thông tin của bản mã có
độ dài không thay đổi. Trong trường hợp của DES, độ dài mỗi khối là 64 bit. DES cũng
sử dụng khóa để cá biệt hóa quá trình chuyển đổi. Nhờ vậy, chỉ khi biết khóa mới có thể
giải mã được văn bản mã. Khóa dùng trong DES có độ dài toàn bộ là 64 bit. Tuy nhiên
chỉ có 56 bit thực sự được sử dụng; 8 bit còn lại chỉ dùng cho việc kiểm tra. Vì thế, độ dài
thực tế của khóa chỉ là 56 bit.

11

SVTH: D07HTTT1

11


BÁO CÁO THỰC TẬP TỐT NGHIỆP

Giống như các thuật toán mã hóa khối khác, khi áp dụng cho các văn bản dài hơn 64 bit,
DES phải được dùng theo một phương pháp nào đó.
Tổng thể
Cấu trúc tổng thể của thuật toán được thể hiện ở Hình 2.2:

12


SVTH: D07HTTT1

12


BÁO CÁO THỰC TẬP TỐT NGHIỆP

Hình 4 : Cấu trúc thuật toán Feistel dùng trong DES

Có 16 chu trình giống nhau trong quá trình xử lý. Ngoài ra còn có hai lần hoán vị đầu và
cuối (Initial and final permutation - IP & FP). Hai quá trình này có tính chất đối nhau
(Trong quá trình mã hóa thì IP trước FP, khi giải mã thì ngược lại). IP và FP không có vai
13

SVTH: D07HTTT1

13


BÁO CÁO THỰC TẬP TỐT NGHIỆP

trò xét về mật mã học và việc sử dụng chúng chỉ có ý nghĩa đáp ứng cho quá trình đưa
thông tin vào và lấy thông tin ra từ các khối phần cứng có từ thập niên 1970. Trước khi đi
vào 16 chu trình chính, khối thông tin 64 bit được tách làm hai phần 32 bit và mỗi phần
sẽ được xử lý tuần tự (quá trình này còn được gọi là mạng Feistel).
Cấu trúc của thuật toán (mạng Feistel) đảm bảo rằng quá trình mã hóa và giải mã diễn ra
tương tự. Điểm khác nhau chỉ ở chỗ các khóa con được sử dụng theo trình tự ngược nhau.
Điều này giúp cho việc thực hiện thuật toán trở nên đơn giản, đặc biệt là khi thực hiện
bằng phần cứng.
Ký hiệu sau: thể hiện phép toán XOR. Hàm F làm biến đổi một nửa của khối đang xử

lý với một khóa con. Đầu ra sau hàm F được kết hợp với nửa còn lại của khối và hai phần
được tráo đổi để xử lý trong chu trình kế tiếp. Sau chu trình cuối cùng thì 2 nửa không bị
tráo đổi; đây là đặc điểm của cấu trúc Feistel khiến cho quá trình mã hóa và giải mã trở
nên giống nhau.
Hàm Feistel (F)
Hàm F, như được miêu tả ở Hình 5 , hoạt động trên khối 32 bit và bao gồm bốn giai
đoạn:

Hình 5 : Hàm F (F-function) dùng trong DES
1. Mở rộng: 32 bit đầu vào được mở rộng thành 48 bit sử dụng thuật toán hoán vị mở

rộng (expansion permutation) với việc nhân đôi một số bit. Giai đoạn này được ký
hiệu là E trong sơ đồ.
14

SVTH: D07HTTT1

14


BÁO CÁO THỰC TẬP TỐT NGHIỆP
2. Trộn khóa: 48 bit thu được sau quá trình mở rộng được XOR với khóa con. Mười

sáu khóa con 48 bit được tạo ra từ khóa chính 56 bit theo một chu trình tạo khóa
con (key schedule) miêu tả ở phần sau.
3. Thay thế: 48 bit sau khi trộn được chia làm 8 khối con 6 bit và được xử lý qua hộp

thay thế S-box. Đầu ra của mỗi khối 6 bit là một khối 4 bit theo một chuyển đổi
phi tuyến được thực hiện bẳng một bảng tra. Khối S-box đảm bảo phần quan trọng
cho độ an toàn của DES. Nếu không có S-box thì quá trình sẽ là tuyến tính và việc

thám mã sẽ rất đơn giản.
4. Hoán vị: Cuối cùng, 32 bit thu được sau S-box sẽ được sắp xếp lại theo một thứ tự

cho trước (còn gọi là P-box).
Quá trình luân phiên sử dụng S-box và sự hoán vị các bít cũng như quá trình mở rộng đã
thực hiện được tính chất gọi là sự xáo trộn và khuyếch tán (confusion and diffusion). Đây
là yêu cầu cần có của một thuật toán mã hoá được Claude Shannon phát hiện trong những
năm 1940.
Quá trình tạo khóa con

Hình 6 : Quá trình tạo khóa con trong DES
15

SVTH: D07HTTT1

15


BÁO CÁO THỰC TẬP TỐT NGHIỆP

Hình 6 mô tả thuật toán tạo khóa con cho các chu trình. Đầu tiên, từ 64 bit ban đầu của
khóa, 56 bit được chọn (Permuted Choice 1, hay PC-1); 8 bit còn lại bị loại bỏ. 56 bit thu
được được chia làm hai phần bằng nhau, mỗi phần được xử lý độc lập. Sau mỗi chu trình,
mỗi phần được dịch đi 1 hoặc 2 bit (tùy thuộc từng chu trình). Các khóa con 48 bit được
tạo thành bởi thuật toán lựa chọn 2 (Permuted Choice 2, hay PC-2) gồm 24 bit từ mỗi
phần. Quá trình dịch bit (được ký hiệu là "<<<" trong sơ đồ) khiến cho các khóa con sử
dụng các bit khác nhau của khóa chính; mỗi bit được sử dụng trung bình ở 14 trong tổng
số 16 khóa con.
Quá trình tạo khóa con khi thực hiện giải mã cũng diễn ra tương tự nhưng các khóa con
được tạo theo thứ tự ngược lại. Ngoài ra sau mỗi chu trình, khóa sẽ được dịch phải thay

vì dịch trái như khi mã hóa
Giải mã DES

Giải mã làm ngược lại quá trình mã hoá. Với thiết kế Fiestel thực hiện mã hoá tiếp với
các khoá con từ SK16 ngược lại về SK1. Nhận thấy rằng hoán vị ban đầu IP sẽ trả lại tác
dụng của hoán vị cuối FP. Vòng đầu với SK16 sẽ trả lại tác dụng của vòng mã thứ 16.
Vòng thứ 16 với SK1 sẽ trả lại tác dụng của vòng mã đầu tiên. Hoán vị cuối FP trả lại
tác dụng hoán vị ban đầu IP. Như vậy đã khôi phục lại được dữ liệu ban đầu.
Một số đặc điểm của giải mã DES
-

DES có tính chất bù:

trong đó là phần bù của x theo từng bít (1 thay bằng 0 và ngược lại). EK là bản mã hóa
của E với khóa K. P và C là văn bản rõ (trước khi mã hóa) và văn bản mã (sau khi mã
hóa). Do tính bù, ta có thể giảm độ phức tạp của tấn công bạo lực xuống 2 lần (tương ứng
với 1 bít) với điều kiện là ta có thể lựa chọn bản rõ.
-

Ngoài ra DES còn có 4 khóa yếu (weak keys). Khi sử dụng khóa yếu thì mã hóa
(E) và giải mã (D) sẽ cho ra cùng kết quả:
EK(EK(P)) = P or equivalently, EK = DK

16

SVTH: D07HTTT1

16



BÁO CÁO THỰC TẬP TỐT NGHIỆP
-

Bên cạnh đó, còn có 6 cặp khóa nửa yếu (semi-weak keys). Mã hóa với một khóa
trong cặp, K1, tương đương với giải mã với khóa còn lại, K2:
or equivalently,

Tuy nhiên có thể dễ dàng tránh được những khóa này khi thực hiện thuật toán, có thể
bằng cách thử hoặc chọn khóa một cách ngẫu nhiên. Khi đó khả năng chọn phải khóa yếu
là rất nhỏ.
DES đã được chứng minh là không tạo thành nhóm. Nói một cách khác, tập hợp {EK}
(cho tất cả các khóa có thể) theo phép hợp thành không tạo thành một nhóm hay gần với
một nhóm (Campbell and Wiener, 1992). Vấn đề này đã từng là một câu hỏi mở trong
khá lâu và nếu như tạo thành nhóm thì DES có thể bị phá vỡ dễ dàng hơn bởi vì việc áp
dụng DES nhiều lần (ví dụ như trong Triple DES) sẽ không làm tăng thêm độ an toàn của
DES
II.3.3. Các kiểu tấn công

Hiện nay có 3 kiểu tấn công có khả năng phá vỡ DES (với đủ 16 chu trình) với độ phức
tạp thấp hơn phương pháp bạo lực: phá mã vi sai (differential cryptanalysis - DC), phá
mã tuyến tính (linear cryptanalysis - LC) và phá mã Davies (Davies' attack). Tuy nhiên
các dạng tấn công này chưa thực hiện được trong thực tế.


Phá mã vi sai được Eli Biham và Adi Shamir tìm ra vào cuối những năm 1980
mặc dù nó đã được IBM và NSA biết đến trước đó. Để phá mã DES với đủ 16 chu
trình, phá mã vi sai cần đến 247 văn bản rõ. DES đã được thiết kế để chống lại tấn
công dạng này.




Phá mã tuyến tính được tìm ra bởi Mitsuru Matsui và nó đòi hỏi 243 văn bản rõ
(Matsui, 1993). Phương pháp này đã được Matsui thực hiện và là thực nghiệm phá
mã đầu tiên được công bố. Không có bằng chứng chứng tỏ DES có khả năng
chống lại tấn công dạng này. Một phương pháp tổng quát hơn, phá mã tuyến tính
đa chiều (multiple linear cryptanalysis), được Kaliski và Robshaw nêu ra vào năm
1994, Biryukov và cộng sự tiếp tục cải tiến vào năm 2004. Nghiên cứu của họ cho
thấy mô phỏng tuyến tính đa chiều có thể sử dụng để giảm độ phức tạp của quá
trình phá mã tới 4 lần (chỉ còn 241 văn bản rõ). Kết quả tương tự cũng có thể đạt
được với kiểu tấn công tuyến tính kết hợp với lựa chọn bản rõ (Knudsen and
Mathiassen, 2000). Junod (2001) đã thực hiện một số thực nghiệm để tìm ra độ
17

SVTH: D07HTTT1

17


BÁO CÁO THỰC TẬP TỐT NGHIỆP

phức tạp thực tế của phá mã tuyến tính và thấy rằng quá trình thực tế nhanh hơn
dự đoán: 239×241.


Phá mã Davies: trong khi phá mã vi sai và phá mã tuyến tính là các kỹ thuật phá
mã tổng quát, có thể áp dụng cho các thuật toán khác nhau, phá mã Davies là một
kỹ thuật dành riêng cho DES. Dạng tấn công này được đề xuất lần đầu bởi Davies
vào cuối những năm 1980 và cải tiến bởi Biham và Biryukov (1997). Dạng tấn
công mạnh nhất đòi hỏi 250 văn bản rõ, độ phức tạp là 250 và có tỷ lệ thành công là
51%.


1. Ngoài ra còn có những kiểu tấn công dựa trên bản thu gọn của DES - DES với ít

hơn 16 chu trình. Những nghiên cứu này cho chúng ta biết số lượng chu trình cần
có và ranh giới an toàn của hệ thống. Năm 1994, Langford và Hellman đề xuất phá
mã vi sai - tuyến tính (differential-linear cryptanalysis) kết hợp giữa phá mã vi sai
và tuyến tính. Một dạng cải tiến của phương pháp này có thể phá vỡ DES 9 chu
trình với 215.8 văn bản rõ và có độ phức tạp là 229.2 (Biham et al, 2002).
II.3.4. Vấn đề về mã hóa khối
Mã khối mã các block có kích thước cố định. Chẳng hạn DES mã các block 64 bít
với khoá 56 bít Cần phải có cách áp dụng vào thực tế vì các thông tin cần mã có kích
thước tùy ý. Trwosc kia có 4 kiểu thao tác được định nghĩa cho DES theo chuẩn ANSI:
ANSI X3.106-1983 Modes of Use. Bây giờ mở rộng them có 5 cách cho DES và chuẩn
mã nâng cao (AES – Advanced Encryption Standards). Trong đó có kiểu áp dụng cho
khối và có kiểu áp dụng cho mã dòng.
2.3.4.1. Sách mật mã điện tử (Electronic Codebook Book - ECB)
- Mẫu tin được chia thành các khối độc lập, sau đó mã từng khối
- Mỗi khối là giá trị cần thay thế như dùng sách mã, do đó có tên như vậy
- Mỗi khối được mã độc lập với các mã khác Ci = DESK1 (Pi)
- Khi dùng: truyền an toàn từng giá trị riêng lẻ

18

SVTH: D07HTTT1

18


BÁO CÁO THỰC TẬP TỐT NGHIỆP


- Ưu và nhược của ECB
• Lặp trên bản mã được chỉ rõ lặp trên bản tin
• Nếu dóng đúng khối.
• Đặc biệt với hình ảnh
• Hoặc với bản tin mà thay đổi rất ít sẽ trở thành đối tượng để thám mã
- Nhược điểm là các khối được mã độc lập
- Được sử dụng chủ yếu khi gửi một ít dữ liệu
2.3.4.2. Dây chuyền mã khối (Cipher Block Chaining - CBC)
- Các mẫu tin được chia thành các khối
- Nhưng chúng được liên kết với nhau trong quá trình mã hoá
- Các block được sắp thành dãy, vì vậy có tên như vậy
- Sử dụng véctơ ban đầu IV để bắt đầu quá trình
Ci = DESK1(Pi XOR Ci-1)
C-1 = IV
Dùng khi: mã dữ liệu lớn, xác thực

19

SVTH: D07HTTT1

19


BÁO CÁO THỰC TẬP TỐT NGHIỆP

- Ưu và nhược của CBC
• Mỗi khối mã phụ thuộc vào tất cả các khối bản rõ
• Sự thay đổi của bản tin ở đâu đó sẽ kéo theo sự thay đổi của mọi khối mã
• Cần giá trị véc tơ ban đầu IV được biết trước bởi người gửi và người nhận
Tuy nhiên nếu IV được gửi công khai, kẻ tấn công có thể thay đổi bít đầu tiên và thay

đổi cả IV để bù trừ. Vậy IV cần phải có giá trị cố định trước hoặc mã hoá trong chế độ
ECB và gửi trước phần còn lại của mẩu tin. Ở cuối bản tin, để kiểm soát các block ngắn
còn lại
• Có thể bổ sung các giá trị không phải dữ liệu như NULL
• Hoặc dùng bộ đệm cuối với số byte đếm kích thước của nó.
Ví dụ
[ b1 b2 b3 0 0 0 0 5] <- 3 data bytes,
vậy có 5 bytes dành cho đệm và đếm.
2.3.4.3. Mã phản hồi ngược (Cipher FeedBack - CFB)
Bản tin coi như dòng các bít
Bổ sung vào đầu ra của mã khối
Kết quả phản hồi trở lại cho giai đoạn tiếp theo, vì vậy có tên như vậy.
Nói chung cho phép số bít phản hồi là 1, 8, 64, hoặc tuỳ ý: ký hiệu tương ứng là
CFB1, CFB8, CFB64,…
Thường hiệu quả sử dụng cả 64 bít
Ci = Pi XOR DESK1(Ci-1)
C-1 = IV
Được dùng cho mã dữ liệu dòng, xác thực
20

SVTH: D07HTTT1

20


BÁO CÁO THỰC TẬP TỐT NGHIỆP

- Ưu và nhược điểm của mã phản hồi ngược
• Được dùng khi dữ liệu đến theo byte/bit
• Chế độ dòng thường gặp nhất

• Hạn chế là cần ngăn chuồng khi mã khối sau mỗi n bit
• Nhận xét là mã khối được dùng ở chế độ mã ở cả hai đầu
Lỗi sẽ lan ra một vài block sau lỗi
2.3.4.4. Phản hồi ngược đầu ra (Output FeedBack - OFB)
Mẩu tin xem như dòng bit
Đầu ra của mã được bổ sung cho mẩu tin
Đầu ra do đó là phản hồi, do đó có tên như vậy
Phản hồi ngược là độc lập đối với bản tin
Có thể được tính trước
Ci = Pi XOR Oi
Oi = DESK1(Oi-1)
-1 = IV
Được dùng cho mã dòng trên các kênh âm thanh

21

SVTH: D07HTTT1

21


BÁO CÁO THỰC TẬP TỐT NGHIỆP

- Ưu điểm và nhược điểm của OFB
• Được dùng khi lỗi phản hồi ngược lại hoặc ở nơi cần mã trước khi mẩu tin sẵn
sang
• Rất giống CFB
• Nhưng phản hồi là từ đầu ra của mã và độc lập với mẩu tin
• Là biến thể của mã Vernam, suy ra không sử dụng lại với cùng một dãy (Key +
IV)

• Người gửi và người nhận phải đồng bộ, có phương pháp khôi phục nào đó là cần
thiết để đảm bảo việc đó.
• Nguyên bản chỉ rõ m bit phản hồi ngược theo các chuẩn
• Các nghiên cứu tiếp theo chỉ ra rằng chỉ có OFB64 là dùng được
2.3.4.5. Bộ đếm CTR (Counter)
- Là chế độ mới, tuy đã được đề xuất từ lâu
Giống như OFB, nhưng mã giá trị đếm thay vì giá trị phản hồi tuỳ ý.
Cần phải có khoá khác và giá trị đếm cho mỗi khối bản rõ (không bao giờ dùng
lại)
Ci = Pi XOR Oi
i = DESK1(i)
Được dùng mã trên mạng với tốc độ cao
- Ưu và nhược điểm của CTR
• Hiệu quả
Do có thể mã song song
Chuẩn bị trước nếu cần
22

SVTH: D07HTTT1

22


BÁO CÁO THỰC TẬP TỐT NGHIỆP







Tốt cho các kết nối với tốc độ rất cao
Truy cập ngẫu nhiên đến các khối dữ liệu mã
Tính an toàn có thể chứng minh được
Nhưng phải tin tưởng không bao giờ dùng lại khoá/đếm, nếu không có
thể bẻ.

II.4. Thuật toán AES (Advanced Encryption Standard).

AES được dựa trên một nguyên tắc thiết kế được biết đến như là một mạng hoán vị thay
thế . Đó là nhanh chóng ở cả hai phần mềm và phần cứng . Không giống như thuật toán
tiền nhiệm của nó, DES, AES không sử dụng mạng Feistel .
AES có một cố định kích thước khối là 128 bit và kích thước khóa 128, 192, hoặc 256
bit, trong khi Rijndael có thể được chỉ định với khối và kích thước quan trọng trong bất
kỳ bội số của 32 bit, với tối thiểu là 128 bit. Kích cỡ khối có tối đa là 256 bit, nhưng
keysize không có lý thuyết tối đa.
AES hoạt động trên một ma trận 4 × 4 byte, gọi là nhà nước (các phiên bản của Rijndael
với một kích thước khối lớn hơn có các cột bổ sung trong tiểu bang). Hầu hết các tính
toán AES được thực hiện trong một đặc biệt lĩnh vực hữu hạn .
Các thuật toán mã hóa AES được quy định như một số lần lặp lại của vòng chuyển đổi
mà chuyển đổi các chữ thô đầu vào vào đầu ra cuối cùng của bản mã. Mỗi vòng bao gồm
nhiều bước xử lý, trong đó có một phụ thuộc vào khóa mã hóa. Một tập hợp các vòng đảo
23

SVTH: D07HTTT1

23


BÁO CÁO THỰC TẬP TỐT NGHIỆP


ngược được áp dụng để biến đổi bản mã trở lại bản rõ ban đầu bằng cách sử dụng cùng
một khóa mã hóa.
II.4.1. Mô tả của thuật toán

Sơ đồ Rijndael

Hình 7 : Sơ đồ Rijndael

24

SVTH: D07HTTT1

24


BÁO CÁO THỰC TẬP TỐT NGHIỆP

Sau đây ta xét chi tiết hơn các quá trình mã hoá, sinh khoá và giải mã AES. Xét cụ thể
quá trình mã hóa bao gồm 4 bước:
1. AddRoundKey - mỗi byte của khối được kết hợp với khóa con, các khóa con này
được tạo ra từ quá trình tạo khóa con Rijndael.

Hình 2.5: Mô tả hoạt động bước AddRoundKey
2.
SubBytes - đây là quá trình thay thế (phi tuyến) trong đó mỗi byte sẽ được thay thế
bằng một byte khác theo bảng tra (Tìm trong tài liệu tương ứng).

25

SVTH: D07HTTT1


25


×