Professional Documents
Culture Documents
Đề 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.
Lớp : D07HTTT1
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 !
SVTH: D07HTTT1 1
BÁO CÁO THỰC TẬP TỐT NGHIỆP
…………………………………………………………………………………………..
…………………………………………………………………………………………..
………………………………………………………………………………………….
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
………………………………………………………………………………………….
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
………………………………………………………………………………………….
…………………………………………………………………………………………..
………………………………………………………………………………………….
…………………………………………………………………………………………..
……………………………………………………………
Điểm: …………………………………………………(bằng chữ: …..…………… ….)
(ký, họ tên)
SVTH: D07HTTT1 2
BÁO CÁO THỰC TẬP TỐT NGHIỆP
MỤC LỤC
A. MÃ HÓA.................................................................................................................................5
I. Tổng quan về mã hóa.................................................................................................6
II. Mã hóa đối xứng và các thuật toán........................................................................7
2.1. Khái niệm mã hóa đối xứng................................................................................7
2.2. Các kiểu tấn công hệ mã hóa đối xứng...............................................................8
2.3. Thuật toán DES ( Data Encryption Standard)..................................................10
2.4. Thuật toán AES (Advanced Encryption Standard)...........................................21
III. Mã hóa bất đối xứng.............................................................................................26
3.1. Khái niệm mã hóa bất đối xứng, cơ chế, các thành phần của hệ mã hóa bất đối
xứng. 26
3.2. Các đặc điểm và yêu cầu của hệ mã hóa bất đối xứng.....................................27
IV. Thuật toán mã hóa khóa công khai RSA..............................................................28
4.1. Ý tưởng và yêu cầu của thuật toán....................................................................28
4.2. Chi tiết về tạo khóa và quá trình mã hóa, giải mã............................................29
4.3. Đặc điểm của thuật toán....................................................................................34
B. CHỮ KÝ SỐ VÀ ỨNG DỤNG............................................................................................38
I. Chữ ký số.................................................................................................................38
1.1. Khái niệm..........................................................................................................38
1.2. Tạo và sử dụng chữ ký số bằng kỹ thuật mã hóa bất đối xứng.........................38
II. Chứng chỉ số.........................................................................................................41
2.1. Khái niệm chứng chỉ số (Digital Certificate)....................................................41
2.2. Quá trình xác minh chữ ký số thông qua chứng chỉ số.....................................41
III. Giải pháp ứng dụng chữ ký số.............................................................................42
KẾT LUẬN...................................................................................................................................46
TÀI LIỆU THAM KHẢO...........................................................................................................47
SVTH: D07HTTT1 3
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Hình 1 : Mô hình trao đổi thông tin qua mạng thông thường..............................................6
Hình 2 : Quy trình mã hóa thông tin....................................................................................7
Hình 3 : Mô hình mã hóa đối xứng......................................................................................8
Hình 4 : Cấu trúc thuật toán Feistel dùng trong DES........................................................12
Hình 5 : Hàm F (F-function) dùng trong DES...................................................................13
Hình 6 : Quá trình tạo khóa con trong DES.......................................................................14
Hình 7 : Sơ đồ Rijndael.....................................................................................................22
Hình 8 : Sơ đồ biểu diễn thuật toán mã hóa RSA..............................................................31
Hình 9 : Sơ đồ tạo và kiểm tra chữ ký số..........................................................................39
Hình 10 : Mô tả giải thuật MD5........................................................................................43
Hình 11 : Sơ đồ mô tả quá trình ký và gửi các tệp văn bản...............................................44
Hình 12 : Sơ đồ mô tả quá trình nhận các tệp văn bản....................................................45
SVTH: D07HTTT1 4
BÁO CÁO THỰC TẬP TỐT NGHIỆP
A. MÃ HÓA.
SVTH: D07HTTT1 5
BÁO CÁO THỰC TẬP TỐT NGHIỆP
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:
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:
SVTH: D07HTTT1 6
BÁO CÁO THỰC TẬP TỐT NGHIỆP
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.
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.
SVTH: D07HTTT1 7
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Plaintext: M
Hàm biến đổi mã hóa: Ek : :M C, where kK (tập khóa K- vô hạn).
Ciphertext: C
Hàm biến đổi ngược giải mã: Dk: CM (kK)
M E k C Dk M
Ek được định nghĩa bởi thuật toán mã hóa E, Dk được định nghĩa bởi thuật toán
giải mã D
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
SVTH: D07HTTT1 9
BÁO CÁO THỰC TẬP TỐT NGHIỆP
- 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:
SVTH: D07HTTT1 10
BÁO CÁO THỰC TẬP TỐT NGHIỆP
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.
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
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.
SVTH: D07HTTT1 11
BÁO CÁO THỰC TẬP TỐT NGHIỆP
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.
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.
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:
SVTH: D07HTTT1 12
BÁO CÁO THỰC TẬP TỐT NGHIỆP
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
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
SVTH: D07HTTT1 13
BÁO CÁO THỰC TẬP TỐT NGHIỆP
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 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:
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ơ đồ.
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.
SVTH: D07HTTT1 15
BÁO CÁO THỰC TẬP TỐT NGHIỆP
đượ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.
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
- 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,
SVTH: D07HTTT1 16
BÁO CÁO THỰC TẬP TỐT NGHIỆP
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
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 độ
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
SVTH: D07HTTT1 17
BÁO CÁO THỰC TẬP TỐT NGHIỆP
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).
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
SVTH: D07HTTT1 19
BÁO CÁO THỰC TẬP TỐT NGHIỆP
SVTH: D07HTTT1 20
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Oi = DESK1(Oi-1)
-1 = IV
Được dùng cho mã dòng trên các kênh âm thanh
SVTH: D07HTTT1 21
BÁO CÁO THỰC TẬP TỐT NGHIỆP
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
SVTH: D07HTTT1 22
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.
Sơ đồ Rijndael
Hình 7 : Sơ đồ Rijndael
SVTH: D07HTTT1 23
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.
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).
SVTH: D07HTTT1 24
BÁO CÁO THỰC TẬP TỐT NGHIỆP
3. ShiftRows - đổi chỗ, các hàng trong khối được dịch vòng.
4. MixColumns - quá trình trộn làm việc theo các cột trong khối theo một chuyển đổi
tuyến tính.
SVTH: D07HTTT1 25
BÁO CÁO THỰC TẬP TỐT NGHIỆP
ShiftRows(state);
MixColums(state);
AddRoundKey(state,w[i*Nb],(i+1)*Nb-1);
end loop;
SubByte(state);
ShiftRows(state);
AddRoundKey(state,w[i*Nb],(i+1)*Nb-1);
Y:=state;
Thuật toán:
INPUT: Khoá đầu vào K, Nk
OUTPUT: Mảng khoá con
TIẾN TRÌNH XỬ LÝ:
Tách khoá K thành Nk khối 4 byte w[i] i=0..Nk-1
i:=Nk;
while (i<Nb*(Nr+1)) loop
temp:=w[i-1];
if (i mod Nk = 0);
temp = SubWord(RotWord(temp)) xor Rcon[i/Nk];
else if (Nk > 6 and i mod Nk = 4);
temp = SubWord(temp);
end if;
w[i] = w[i-Nk] xor temp;
i = i + 1;
end loop;
Thuật toán giải mã sử dụng 4 biến đổi trong đó có 1 biến đổi AddRoundKey và 3
biến đổi đảo ngược.
Biến đổi InvShiftRows(): tương tự biến đổi ShiftRows thay vì dịch trái thì trong
biến đổi này là dịch phải.
SVTH: D07HTTT1 26
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Bứơc InvSubBytes(): Phép biến đổi này tương tự như SubBytes() thay vì dùng S-box thì
sử dụng InvS-box .
Bứơc InvMixColums(): Tương tự như phép MixColums thay vì a XOR với c(x)
thì là a-1 XOR c(x).
Thuật toán giải mã
INPUT: M 128 bit, w[Nb*(Nr+1)] --- w là mảng khoá , M là bản mã
OUTPUT: Y 128 bit -- Khối dữ liệu đã được giải mã
TIẾN TRÌNH XỬ LÝ:
state = M
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])
for round = Nr-1 step -1 downto 1
InvShiftRows(state)
InvSubBytes(state)
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])
InvMixColumns(state)
end for
InvShiftRows(state)
InvSubBytes(state)
AddRoundKey(state, w[0, Nb-1])
Y = state.
III. Mã hóa bất đối xứng.
III.1. Khái niệm mã hóa bất đối xứng, cơ chế, các thành phần của hệ mã hóa bất
đối xứng.
Mật mã hóa khóa công khai là một dạng mật mã hóa cho phép người sử dụng trao đổi các
thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó. Điều này được
thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học với nhau là khóa công
khai và khóa cá nhân (hay khóa bí mật).
Thuật ngữ mật mã hóa khóa bất đối xứng thường được dùng đồng nghĩa với mật mã hóa
khóa công khai mặc dù hai khái niệm không hoàn toàn tương đương. Có những thuật toán
mật mã khóa bất đối xứng không có tính chất khóa công khai và bí mật như đề cập ở trên
mà cả hai khóa (cho mã hóa và giải mã) đều cần phải giữ bí mật.
Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí mật trong khi khóa
công khai được phổ biến công khai. Trong 2 khóa, một dùng để mã hóa và khóa còn lại
dùng để giải mã. Điều quan trọng đối với hệ thống là không thể tìm ra khóa bí mật nếu
chỉ biết khóa công khai.
SVTH: D07HTTT1 27
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích:
Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được.
Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một khóa
bí mật nào đó hay không.
Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa 2
bên.
Thay vì sử dụng một khóa đơn trong hệ thống mã hóa đối xứng, hệ thống mã hóa bất đối
xứng sử dụng một cặp khóa có quan hệ toán học. Một khóa là riêng tư, chỉ được dùng bởi
chính chủ nhân. Khóa thứ hai thì được phổ biến, công cộng và phân phối tự do. Khóa
công cộng thì được dùng để mã hóa và ngược lại khóa riêng thì được dùng để giải thông
tin.
III.2. Các đặc điểm và yêu cầu của hệ mã hóa bất đối xứng.
Thuận tiện cho người dùng có thể tạo khóa PU/PR
Cho phép bên gửi dễ dàng thực hiện mã hóa bằng PU
C= EPU (M)
SVTH: D07HTTT1 28
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau : Bob muốn gửi
cho Alice một thông tin mật mà Bob muốn duy nhất Alice có thể đọc được. Để làm được
điều này, Alice gửi cho Bob một chiếc hộp có khóa đã mở sẵn và giữ lại chìa khóa. Bob
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ả Bob 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 đó Bob gửi chiếc hộp
lại cho Alice. Alice 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.
C= Me mod n
- Người gửi và người nhận biết giá trị của n và e, nhưng chỉ người nhận biết gtrị
của d
- Mục đích: tìm các giá trị e, d, n (chọn) để tính M và C
Nhận xét:
SVTH: D07HTTT1 29
BÁO CÁO THỰC TẬP TỐT NGHIỆP
- Có thể tìm giá trị của e, d, n sao cho Med = M mod n với M < n
- Không thể xác định d nếu biết e và n
IV.2. Chi tiết về tạo khóa và quá trình mã hóa, giải mã.
Tạo khóa
Giả sử Alice và Bob 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, Alice đầ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 và với , lựa chọn ngẫu nhiên và độc lập.
2. Tính: .
3. Tính: giá trị hàm số Ơle .
4. Chọn một số tự nhiên e sao cho và là số nguyên tố cùng nhau với
.
5. Tính: d sao cho .
Một số lưu ý:
Các số nguyên tố thường được chọn bằng phương pháp thử xác suất.
SVTH: D07HTTT1 30
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Các bước 4 và 5 có thể được thực hiện bằng giải thuật Euclid mở rộng (xem thêm:
số học môđun).
Bước 5 có thể viết cách khác: Tìm số tự nhiên sao cho
n, môđun, và
e, số mũ công khai (cũng gọi là số mũ mã hóa).
Dạng này cho phép thực hiện giải mã và ký nhanh hơn với việc sử dụng định lý số dư
Trung Quốc (tiếng Anh: Chinese Remainder Theorem - CRT). Ở dạng này, tất cả thành
phần của khóa bí mật phải được giữ bí mật.
Alice gửi khóa công khai cho Bob, 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. Nếu
không sử dụng dạng sau của khóa bí mật (dạng CRT) thì p và q sẽ được xóa ngay sau khi
thực hiện xong quá trình tạo khóa.
Mã hóa
SVTH: D07HTTT1 31
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Giả sử Bob muốn gửi đoạn thông tin M cho Alice. Đầu tiên Bob chuyển M thành một số
m < n theo một hàm có thể đảo ngược (từ m có thể xác định lại M) được thỏa thuận
trước. Quá trình này được mô tả ở phần #Chuyển đổi văn bản rõ.
Lúc này Bob có m và biết n cũng như e do Alice gửi. Bob sẽ tính c là bản mã hóa của m
theo công thức:
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 Bob gửi c cho Alice.
Alice nhận c từ Bob và biết khóa bí mật d. Alice có thể tìm được m từ c theo công thức
sau:
m = c d mod n
SVTH: D07HTTT1 32
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Biết m, Alice tìm lại M theo phương pháp đã thỏa thuận trước. Quá trình giải mã hoạt
động vì ta có
và
hay:
Ví dụ
Sau đây là một ví dụ với những số cụ thể. Ở đây chúng ta sử dụng những số nhỏ để tiện
tính toán còn trong thực tế phải dùng các số có giá trị đủ lớn.
Lấy:
p = 61 — số nguyên tố thứ nhất (giữ bí mật hoặc hủy sau khi tạo khóa)
q = 53 — số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo khóa)
n = pq =
— môđun (công bố công khai)
3233
e = 17 — số mũ công khai
d = 2753 — số mũ bí mật
Khóa công khai là cặp (e, n). Khóa bí mật là d. Hàm mã hóa là:
SVTH: D07HTTT1 33
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Để mã hóa văn bản có giá trị 123, ta thực hiện phép tính:
Để giải mã văn bản có giá trị 855, ta thực hiện phép tính:
Cả hai phép tính trên đều có thể được thực hiện hiệu quả nhờ giải thuật bình phương và
nhân.
Trước khi thực hiện mã hóa, ta phải thực hiện việc chuyển đổi văn bản rõ (chuyển đổi từ
M sang m) sao cho không có giá trị nào của M tạo ra văn bản mã không an toàn. Nếu
không có quá trình này, RSA sẽ gặp phải một số vấn đề sau:
Trên thực tế, ta thường gặp 2 vấn đề đầu khi gửi các bản tin ASCII ngắn với m là nhóm
vài ký tự ASCII. Một đoạn tin chỉ có 1 ký tự NUL sẽ được gán giá trị m = 0 và cho ra bản
mã là 0 bất kể giá trị của e và N. Tương tự, một ký tự ASCII khác, SOH, có giá trị 1 sẽ
luôn cho ra bản mã là 1. Với các hệ thống dùng giá trị e nhỏ thì tất cả ký tự ASCII đều
cho kết quả mã hóa không an toàn vì giá trị lớn nhất của m chỉ là 255 và 2553 nhỏ hơn giá
trị n chấp nhận được. Những bản mã này sẽ dễ dàng bị phá mã.
SVTH: D07HTTT1 34
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Để tránh gặp phải những vấn đề trên, RSA trên thực tế thường bao gồm một hình thức
chuyển đổi ngẫu nhiên hóa m trước khi mã hóa. Quá trình chuyển đổi này phải đảm bảo
rằng m không rơi vào các giá trị không an toàn. Sau khi chuyển đổi, mỗi bản rõ khi mã
hóa sẽ cho ra một trong số khả năng trong tập hợp bản mã. Điều này làm giảm tính khả
thi của phương pháp tấn công lựa chọn bản rõ (một bản rõ sẽ có thể tương ứng với nhiều
bản mã tuỳ thuộc vào cách chuyển đổi).
Một số tiêu chuẩn, chẳng hạn như PKCS, đã được thiết kế để chuyển đổi bản rõ trước khi
mã hóa bằng RSA. Các phương pháp chuyển đổi này bổ sung thêm bít vào M. Các
phương pháp chuyển đổi cần được thiết kế cẩn thận để tránh những dạng tấn công phức
tạp tận dụng khả năng biết trước được cấu trúc của bản rõ. Phiên bản ban đầu của PKCS
dùng một phương pháp đặc ứng (ad-hoc) mà về sau được biết là không an toàn trước tấn
công lựa chọn bản rõ thích ứng (adaptive chosen ciphertext attack). Các phương pháp
chuyển đổi hiện đại sử dụng các kỹ thuật như chuyển đổi mã hóa bất đối xứng tối ưu
(Optimal Asymmetric Encryption Padding - OAEP) để chống lại tấn công dạng này. Tiêu
chuẩn PKCS còn được bổ sung các tính năng khác để đảm bảo an toàn cho chữ ký RSA
(Probabilistic Signature Scheme for RSA - RSA-PSS).
Độ an toàn của hệ thống RSA dựa trên 2 vấn đề của toán học: bài toán phân tích ra thừa
số nguyên tố các số nguyên lớn và bài toán RSA. Nếu 2 bài toán trên là khó (không tìm
được thuật toán hiệu quả để giải chúng) thì không thể thực hiện được việc phá mã toàn bộ
đối với RSA. Phá mã một phần phải được ngăn chặn bằng các phương pháp chuyển đổi
bản rõ an toàn.
Bài toán RSA là bài toán tính căn bậc e môđun n (với n là hợp số): tìm số m sao cho me=c
mod n, trong đó (e, n) chính là khóa công khai và c là bản mã. Hiện nay phương pháp
triển vọng nhất giải bài toán này là phân tích n ra thừa số nguyên tố. Khi thực hiện được
điều này, kẻ tấn công sẽ tìm ra số mũ bí mật d từ khóa công khai và có thể giải mã theo
đúng quy trình của thuật toán. Nếu kẻ tấn công tìm được 2 số nguyên tố p và q sao cho: n
= pq thì có thể dễ dàng tìm được giá trị (p-1)(q-1) và qua đó xác định d từ e. Chưa có một
phương pháp nào được tìm ra trên máy tính để giải bài toán này trong thời gian đa thức
(polynomial-time). Tuy nhiên người ta cũng chưa chứng minh được điều ngược lại (sự
không tồn tại của thuật toán). Xem thêm phân tích ra thừa số nguyên tố về vấn đề này.
SVTH: D07HTTT1 35
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Tại thời điểm năm 2005, số lớn nhất có thể được phân tích ra thừa số nguyên tố có độ dài
663 bít với phương pháp phân tán trong khi khóa của RSA có độ dài từ 1024 tới 2048 bít.
Một số chuyên gia cho rằng khóa 1024 bít có thể sớm bị phá vỡ (cũng có nhiều người
phản đối việc này). Với khóa 4096 bít thì hầu như không có khả năng bị phá vỡ trong
tương lai gần. Do đó, người ta thường cho rằng RSA đảm bảo an toàn với điều kiện n
được chọn đủ lớn. Nếu n có độ dài 256 bít hoặc ngắn hơn, nó có thể bị phân tích trong vài
giờ với máy tính cá nhân dùng các phần mềm có sẵn. Nếu n có độ dài 512 bít, nó có thể
bị phân tích bởi vài trăm máy tính tại thời điểm năm 1999. Một thiết bị lý thuyết có tên là
TWIRL do Shamir và Tromer mô tả năm 2003 đã đặt ra câu hỏi về độ an toàn của khóa
1024 bít. Vì vậy hiện nay người ta khuyến cáo sử dụng khóa có độ dài tối thiểu 2048 bít.
Năm 1993, Peter Shor công bố thuật toán Shor chỉ ra rằng: máy tính lượng tử (trên lý
thuyết) có thể giải bài toán phân tích ra thừa số trong thời gian đa thức. Tuy nhiên, máy
tính lượng tử vẫn chưa thể phát triển được tới mức độ này trong nhiều năm nữa.
Năm 2010, các nhà khoa học thuộc Đại học Michigan đã công bố phát hiện một kẽ hở
trong hệ thống mật mã hoá RSA. Cách phá vỡ hệ thống, lấy khoá bí mật RSA 1024 bit
chỉ trong vài ngày thay vì vài năm nếu tấn công theo cách thông thường - tấn công bằng
brute force (dò tìm lần lượt). Các nhà khoa học tạo một điện thế lớn để gây lỗi hệ thống,
từ đó giúp tìm ra khoá bí mật. Việc tấn công được thực hiện trên một FPGA. Báo cáo
được trình bày tại hội nghị DATE 2010 diễn ra tại Dresden, Đức tháng 3 năm 2010.
IV.3.2. Tốc độ
RSA có tốc độ thực hiện chậm hơn đáng kể so với DES và các thuật toán mã hóa đối
xứng khác. Trên thực tế, Bob sử dụng một thuật toán mã hóa đối xứng nào đó để mã hóa
văn bản cần gửi và chỉ sử dụng RSA để mã hóa khóa để giải mã (thông thường khóa ngắn
hơn nhiều so với văn bản).
Phương thức này cũng tạo ra những vấn đề an ninh mới. Một ví dụ là cần phải tạo ra khóa
đối xứng thật sự ngẫu nhiên. Nếu không, kẻ tấn công (thường ký hiệu là Eve) sẽ bỏ qua
RSA và tập trung vào việc đoán khóa đối xứng.
Cũng giống như các thuật toán mã hóa khác, cách thức phân phối khóa công khai là một
trong những yếu tố quyết định đối với độ an toàn của RSA. Quá trình phân phối khóa cần
chống lại được tấn công đứng giữa (man-in-the-middle attack). Giả sử Eve có thể gửi cho
Bob một khóa bất kỳ và khiến Bob tin rằng đó là khóa (công khai) của Alice. Đồng thời
SVTH: D07HTTT1 36
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Eve có khả năng đọc được thông tin trao đổi giữa Bob và Alice. Khi đó, Eve sẽ gửi cho
Bob khóa công khai của chính mình (mà Bob nghĩ rằng đó là khóa của Alice). Sau đó,
Eve đọc tất cả văn bản mã hóa do Bob gửi, giải mã với khóa bí mật của mình, giữ 1 bản
copy đồng thời mã hóa bằng khóa công khai của Alice và gửi cho Alice. Về nguyên tắc,
cả Bob và Alice đều không phát hiện ra sự can thiệp của người thứ ba. Các phương pháp
chống lại dạng tấn công này thường dựa trên các chứng thực khóa công khai (digital
certificate) hoặc các thành phần của hạ tầng khóa công khai (public key infrastructure -
PKI).
Vào năm 1995, Paul Kocher mô tả một dạng tấn công mới lên RSA: nếu kẻ tấn công nắm
đủ thông tin về phần cứng thực hiện mã hóa và xác định được thời gian giải mã đối với
một số bản mã lựa chọn thì có thể nhanh chóng tìm ra khóa d. Dạng tấn công này có thể
áp dụng đối với hệ thống chữ ký điện tử sử dụng RSA. Năm 2003, Dan Boneh và David
Brumley chứng minh một dạng tấn công thực tế hơn: phân tích thừa số RSA dùng mạng
máy tính (Máy chủ web dùng SSL). Tấn công đã khai thác thông tin rò rỉ của việc tối ưu
hóa định lý số dư Trung quốc mà nhiều ứng dụng đã thực hiện.
Để chống lại tấn công dựa trên thời gian là đảm bảo quá trình giải mã luôn diễn ra trong
thời gian không đổi bất kể văn bản mã. Tuy nhiên, cách này có thể làm giảm hiệu suất
tính toán. Thay vào đó, hầu hết các ứng dụng RSA sử dụng một kỹ thuật gọi là che mắt.
Kỹ thuật này dựa trên tính nhân của RSA: thay vì tính cd mod n, Alice đầu tiên chọn một
số ngẫu nhiên r và tính (rec)d mod n. Kết quả của phép tính này là rm mod n và tác động
của r sẽ được loại bỏ bằng cách nhân kết quả với nghịch đảo của r. Đỗi với mỗi văn bản
mã, người ta chọn một giá trị của r. Vì vậy, thời gian giải mã sẽ không còn phụ thuộc vào
giá trị của văn bản mã.
Năm 1981, Daniel Bleichenbacher mô tả dạng tấn công lựa chọn thích nghi bản mã
(adaptive chosen ciphertext attack) đầu tiên có thể thực hiện trên thực tế đối với một văn
bản mã hóa bằng RSA. Văn bản này được mã hóa dựa trên tiêu chuẩn PKCS #1 v1, một
tiêu chuẩn chuyển đổi bản rõ có khả năng kiểm tra tính hợp lệ của văn bản sau khi giải
mã. Do những khiếm khuyết của PKCS #1, Bleichenbacher có thể thực hiện một tấn công
lên bản RSA dùng cho giao thức SSL (tìm được khóa phiên). Do phát hiện này, các mô
hình chuyển đổi an toàn hơn như chuyển đổi mã hóa bất đối xứng tối ưu (Optimal
SVTH: D07HTTT1 37
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Asymmetric Encryption Padding) được khuyến cáo sử dụng. Đồng thời phòng nghiên
cứu của RSA cũng đưa ra phiên bản mới của PKCS #1 có khả năng chống lại dạng tấn
công nói trên.
SVTH: D07HTTT1 38
BÁO CÁO THỰC TẬP TỐT NGHIỆP
nhiểu ưu điểm quen thuộc như dễ kiểm thử , không sao chép được , chữ ký của một người
là giống nhau trên nhiều văn bản , nhưng mỗi chữ ký gắn liến với một văn bản cụ thể
v.v….
Khi chuyển sang cách thức truyền tin bằng phương tiện hiện đại, các thông báo được
truyền đi trên các mạng truyền tin số hóa, bản thân các thông báo cũng được biểu diễn
dưới dạng số hóa , tức dưới dạng các dãy bit nhị phân ,’’chữ ký’’ nếu có cũng ở dưới
dạng các dãy bít, thì các mối quan hệ tự nhiên kể trên không còn giữ được nữa. Chăng
hạn, ‘chữ ký ‘ của một người gửi trên những văn bản khác nhau phải thể hiện được sự
gắn kết trách nhiệm của người gửi đối với từng văn bản đó thì tất yếu phải khác nhau chứ
không thể là những đoạn bit giống nhau như các chữ ký giống nhau trên các văn bản
thông thường. Chữ ký viết tay có thể được kiểm thử bằng cách so sánh với nguyên mẫu ,
nhưng chữ ký điện tử thì không thể có ‘nguyên mẫu’ mà so sánh , việc kiểm thử phải
được thực hiện bằng những thuật toán đặc biệt.
- Chữ ký số : Là một thể chứng thực được mã hóa bởi khoá bí mật của người gửi.
Chữ ký số là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh, video...) nhằm mục
đích xác định người chủ của dữ liệu đó.
- Chữ ký số khóa công khai (hay hạ tầng khóa công khai) là mô hình sử dụng các kỹ
thuật mật mã để gắn với mỗi người sử dụng một cặp khóa công khai - bí mật và
qua đó có thể ký các văn bản điện tử cũng như trao đổi các thông tin mật. Khóa
công khai thường được phân phối thông qua chứng thực khóa công khai. Quá trình
sử dụng chữ ký số bao gồm 2 quá trình: tạo chữ ký và kiểm tra chữ ký.
I.2. Tạo và sử dụng chữ ký số bằng kỹ thuật mã hóa bất đối xứng.
Chữ ký số khóa công khai dựa trên nền tảng mật mã hóa khóa công khai. Để có thể trao
đổi thông tin trong môi trường này, mỗi người sử dụng có một cặp khóa: một công khai
và một bí mật. Khóa công khai được công bố rộng rãi còn khóa bí mật phải được giữ kín
và không thể tìm được khóa bí mật nếu chỉ biết khóa công khai.
SVTH: D07HTTT1 39
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Xét ví dụ sau: Bob muốn gửi thông tin cho Alice và muốn Alice biết thông tin đó thực sự
do chính Bob gửi. Bob gửi cho Alice bản tin kèm với chữ ký số. Chữ ký này được tạo ra
với khóa bí mật của Bob. Khi nhận được bản tin, Alice kiểm tra sự thống nhất giữa bản
tin và chữ ký bằng thuật toán kiểm tra sử dụng khóa công cộng của Bob. Bản chất của
thuật toán tạo chữ ký đảm bảo nếu chỉ cho trước bản tin, rất khó (gần như không thể) tạo
ra được chữ ký của Bob nếu không biết khóa bí mật của Bob. Nếu phép thử cho kết quả
đúng thì Alice có thể tin tưởng rằng bản tin thực sự do Bob gửi.
Thông thường, Bob không mật mã hóa toàn bộ bản tin với khóa bí mật mà chỉ thực hiện
với giá trị băm của bản tin đó. Điều này khiến việc ký trở nên đơn giản hơn và chữ ký
ngắn hơn. Tuy nhiên nó cũng làm nảy sinh vấn đề khi 2 bản tin khác nhau lại cho ra cùng
một giá trị băm. Đây là điều có thể xảy ra mặc dù xác suất rất thấp.
SVTH: D07HTTT1 40
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Tạo chữ ký số: bằng kỹ thuật mã hóa bất đối xứng (kỹ thuật mã hóa khóa công khai):
Chữ ký điện tử được tạo ra bằng cách áp dụng thuật toán băm một chiều trên văn bản gốc
để tạo ra bản phân tích văn bản (message digest) hay còn gọi là fingerprint, sau đó mã
hóa bằng private key tạo ra chữ ký số đính kèm với văn bản gốc để gửi đi. Khi nhận, văn
bản được tách làm 2 phần, phần văn bản gốc được tính lại fingerprint để so sánh với
fingerprint cũ cũng được phục hồi từ việc giải mã chữ ký số
1. Dùng giải thuật băm để thay đổi thông điệp cần truyền đi. Kết quả ta được một
message digest. Dùng giải thuật MD5 (Message Digest 5) ta được digest có chiều dài
128-bit, dùng giải thuật SHA (Secure Hash Algorithm) ta có chiều dài 160-bit.
2. Sử dụng khóa private key của người gửi để mã hóa message digest thu được ở bước
1. Thông thường ở bước này ta dùng giải thuật RSA. Kết quả thu được gọi là digital
signature của message ban đầu.
3. Gộp digital signature vào message ban đầu. Công việc này gọi là “ký nhận” vào
message. Sau khi đã ký nhận vào message, mọi sự thay đổi trên message sẽ bị phát
hiện trong giai đoạn kiểm tra. Ngoài ra, việc ký nhận này đảm bảo người nhận tin
tưởng message này xuất phát từ người gửi chứ không phải là ai khác.
SVTH: D07HTTT1 41
BÁO CÁO THỰC TẬP TỐT NGHIỆP
1. Dùng public key của người gửi (khóa này được thông báo đến mọi người) để giải
mã chữ ký số của message.
2. Dùng giải thuật (MD5 hoặc SHA) băm message đính kèm.
3. So sánh kết quả thu được ở bước 1 và 2. Nếu trùng nhau, ta kết luận message này
không bị thay đổi trong quá trình truyền và message này là của người gửi.
- Chứng chỉ số (digital certificate): Đoạn nội dung (chứa thông tin cá nhân và khoá
công khai của người sở hữu) có đính kèm chữ ký số của hệ thống phát hành cặp
khoá được gọi là chứng chỉ số (digital certificate) của người sở hữu cặp khoá
- Chứng thực số (certificate authority - CA): Hệ thống cấp khoá và chứng thực rằng
cặp khoá đó đại diện cho người tham gia giao dịch được gọi là hệ thống chứng
thực số (Certificate Authority - CA)
Để giải quyết câu hỏi "khoá công khai có đúng là của người gửi văn bản không và khoá
công khai này lấy ở đâu để có thể tin cậy được?", về mặt công nghệ, vấn đề được giải
quyết như sau:
- Xây dựng một hệ thống tập trung có thể cấp phát cặp khoá bí mật - công khai cho
toàn bộ người tham gia giao dịch
- Chuyển giao phần khoá bí mật cho người sở hữu và đảm bảo rằng chỉ duy nhất
anh ta biết được khoá này.
- Gắn liền thông tin cá nhân (tên, số nhân dạng có nhân, chức vụ, đơn vị công tác, ...
và một số thông tin khác) của người sở hữu cặp khoá vào phần khoá công khai để
tạo thành một file dữ liệu – đây chính là phần nội dung của chứng chỉ số
- Để đảm bảo tính toàn vẹn và có thể tin cậy vào file dữ liệu này, hệ thống phát
hành sử dụng khoá bí mật của mình tạo và đính kèm một chữ ký điện tử lên file dữ
liệu nói trên. Đoạn nội dung (chứa thông tin cá nhân và khoá công khai của người
sở hữu) có đính kèm chữ ký số của hệ thống phát hành cặp khoá được gọi là chứng
chỉ số (digital certificate) của người sở hữu cặp khoá
II.2. Quá trình xác minh chữ ký số thông qua chứng chỉ số.
SVTH: D07HTTT1 42
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Khi có chứng chỉ số, ta có được khoá công khai của người giao dịch, khoá công khai này
được đính kèm với thông tin cá nhân (tên, số nhân dạng có nhân, chức vụ, đơn vị công
tác, ... và một số thông tin khác) của người giao dịch
Việc chứng thực rằng khoá công khai này là hợp lệ và là đại diện cho người tham gia
giao dịch được chứng thực bởi hệ thống CA
Tất cả các bên giao dịch muốn kiểm tra tính đúng đắn, hợp lệ về nội dung của chứng chỉ
số đều xuất phát từ việc tin cậy vào chữ ký số của CA trên chứng chỉ số (điều này cũng
hoàn toàn tự nhiên như khi ta xem xét 1 chứng minh thư nhân dân để tin cậy vào một cá
nhân, ta tin cậy vào chữ ký và dấu của người ký chứng minh thư đó)
Phần này , tôi xin trình bày giải pháp ứng dụng chữ ký số trong hệ thống quản lý. Quá
trình gửi và nhận các tệp văn bản phục vụ quản lý dựa trên thuật toán băm MD5 và thuật
toán mã hóa RSA.
MD5 (viết tắt của tiếng Anh Message-Digest algorithm 5 ) được thiết kế bởi Ronald Rivest vào
năm 1991 để thay thế cho hàm băm trước đó, MD4.
Giải thuật MD5 chính hoạt động trên trạng thái 128-bit, được chia thành 4 từ 32-bit, với ký hiệu
A, B, C và D. Chúng được khởi tạo với những hằng số cố định. Giải thuật chính sau đó sẽ xử lý
các khối tin 512-bit, mỗi khối xác định một trạng thái. Quá trình xử lý khối tin bao gôm bốn giai
đoạn giống nhau, gọi là vòng; mỗi vòng gồm có 16 tác vụ giống nhau dựa trên hàm phi tuyến F,
cộng mô đun, và dịch trái. Hình 10 mô tả một tác vụ trong một vòng. Có 4 khả năng cho hàm F;
mỗi cái được dùng khác nhau cho mỗi vòng:
SVTH: D07HTTT1 43
BÁO CÁO THỰC TẬP TỐT NGHIỆP
SVTH: D07HTTT1 44
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Sau khi người nhận đăng nhập vào hệ thống và thực hiện việc nhận các tệp vă bản . Hệ
thống sẽ tách thông điệp đã ký thành ra các file và chữ ký điện tử. Đến giai đoạn này sẽ
có 2 quá trình kiểm tra :
- Sử dụng thuật toán RSA để giải mã chữ ký bằng khóa công khai của người gửi .
- Nếu giải mã không được thì file nhận được không đúng người gửi.
- Nếu giải mã thành công thì file nhận được đúng người gửi và có được Hashvalue 1
- Từ file được tách ra ta sử dụng hàm băm MD5 mã hóa thành hash value 2
SVTH: D07HTTT1 45
BÁO CÁO THỰC TẬP TỐT NGHIỆP
- Kiểm tra Hash value 1 và Hash value 2 có giống nhau hay không ? Nếu giống
nhau thì file nhận được là vẹn toàn ( không bị thay đổi hay tác động ), ngược lại là
file đã bị thay đổi.
SVTH: D07HTTT1 46
BÁO CÁO THỰC TẬP TỐT NGHIỆP
KẾT LUẬN
Xu hướng ứng dụng công nghệ thông tin (CNTT) để xây dựng thương mại điện tử và
chính phủ điện tử là mô hình phát triển chung của các nước trên thế giới. Ở Việt Nam
Đảng và chính phủ cũng đã từng bước triển khai những chủ trương, chính sách nhằm thúc
đầy ứng dụng CNTT trong các cơ quan nhà nước: hành chính công, thuế, ngân hàng… để
hướng tới phát triển chính phủ điện tử và thương mại điện tử.Tuy còn khá mới mẻ ở Việt
Nam nhưng chữ kí số được xem như là nhân tố quan trọng quyết định đến tương lai của
thương mại điện tử và chính phủ điện tử.
Đã từ lâu, việc ứng dụng CNTT được coi là yếu tố quan trọng giúp doanh nghiệp giữ
vững và mở rộng thị trường, tăng tính cạnh tranh, và thực hiện các thỏa thuận thương mại
trong khu vực và trên thế giới. Tất cả quá trình này đòi hỏi một lượng thông tin trao đổi
rất lớn qua mạng, đồng thời yêu cầu độ an toàn và tính xác thực cao. Chỉ có chữ ký số
mới đảm bảo được sự an toàn này; nó cũng được coi là phương tiện hữu hiệu để các
doanh nghiệp tăng cường sức cạnh tranh thông qua thương mại điện tử và tham gia vào
chính phủ điện tử.
SVTH: D07HTTT1 47
BÁO CÁO THỰC TẬP TỐT NGHIỆP
1. http://vi.wikipedia.org/wiki/
2. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford
Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw-
Hill, 2001
3. Phan Đình Diệu. Lý thuyết mật mã & An toàn thông tin. NXB Đại học
Quốc gia Hà Nội , 2002.
4. Dương Anh Đức , Trần Minh Triết . Mã hóa và ứng dụng . Đại học Khoa
học Tự nhiên , Đại học Quốc gia TP Hồ Chí Minh .2005.
5. FIPS . Announcing the Advanced Encryption Standard (AES) . 2001.
6. Mohan Atrey , Ben Hammond , Stephen Paine, Paul Starrett, Stephen Wu .
Digital Signatures, RSA.2002.
SVTH: D07HTTT1 48