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

Tiểu luận môn toán học cho khoa học máy tính TÌM HIỂU CHỮ KÝ ĐIỆN TỬ XÂY DỰNG ỨNG DỤNG MÔ PHỎNG CHỮ KÝ ĐIỆN TỬ

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 (732.04 KB, 43 trang )

Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN TPHCM
KHOA: KHOA HỌC MÁY TÍNH
CHƯƠNG TRÌNH ĐÀO TẠO THẠC SĨ CNTT

BÀI THU HOẠCH
MƠN: TỐN CHO KHOA HỌC MÁY TÍNH
Đề tài:

TÌM HIỂU CHỮ KÝ ĐIỆN TỬ- XÂY DỰNG ỨNG DỤNG
MÔ PHỎNG CHỮ KÝ ĐIỆN TỬ
GVHD :

PGS.TS ĐỖ VĂN NHƠN

HVTH :

Phan Trọng Nghĩa

MSHV:

CH1301042

TP HCM, Tháng 12 năm 2013
HVTH: Phan Trọng Nghĩa – CH1301042

1



Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

LỜI MỞ ĐẦU
Hiện nay, việc đảm bảo an tồn thơng tin, tránh mọi nguy cơ bị thay đổi, sao chép
hoặc mất mát dữ liệu trong các ứng dụng trên mạng luôn làvấn đề bức xúc, được nhiều
người quan tâm. Trên thực tế, chữ ký điện tử (Digital Signature) đã được ứng dụng rộng
rãi trong các ứng dụng trên mạng. Một trong những ứng dụng quan trọng của chữ ký
điện tử là đảm bảo an toàn dữ liệu khi truyền trên mạng. Tuy nhiên, khi xây dựng một
ứng dụng, các nhà phát triển thường chỉ tập trung xây dựng các chức năng của hệ thống,
ít quan tâm đến vấn đề an tồn trong q trình truyền tin.
Trên cơ sở này, em xin trình bày những cơ sở lý thuyết cơ bản về mã hóa, thuật
tốn băm MD5, thuật giải RSA và chữ ký điện tử. Từ đó, xây dựng một ứng dụng nhỏ
mơ phỏng quy trình tạo chữ ký và xác nhận chữ ký.
Em xin chân thành cảm ơn PGS.TS Đỗ Văn Nhơn đã tận tình hướng dẫn và truyền
đạt những kiến thức hữu ích giúp em hồn thành bài thu hoạch này.
Tp. HCM, tháng 12 năm 2013

Phan Trọng Nghĩa

HVTH: Phan Trọng Nghĩa – CH1301042

2


Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn


PHỤ LỤC

HVTH: Phan Trọng Nghĩa – CH1301042

3


Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

NỘI DUNG
A. ĐẶT VẤN ĐỀ
Ngày nay, các ứng dụng của công nghệ thông tin ngày càng không thể thiếu
được đối với các thành phần như xã hội, kinh tế, chính trị, quân sự... Một lĩnh vực
quan trọng mà công nghệ thông tin được ứng dụng rất mạnh mẽ và khơng thể thiếu
đó là lĩnh vực truyền thơng. Rất nhiều thông tin liên quan đến những công việc
hàng ngày đều do máy vi tính quản lý và truyền gửi đi trên hệ thống mạng, kéo
theo đó là vấn đề về xác thực nguồn thông tin nhận được. Và vấn đề được đặt ra là
làm thế nào để xác thực được một cách chính xác nguồn thơng tin nhận là của một
người, một máy chủ hay của một thực thể nào đó gửi tin trên hệ thống mạng?
A

D
B

INTERNET

Mơ hình trao đổi thơng tin qua mạng INTERNET

Ví dụ: khi A gửi một thông tin điện tử cho D, và giả sử B “giả mạo” A cũng
gửi một thông tin cho D, hoặc một người C trên môi trường truyền bắt được và sửa
đổi thơng tin A gửi sau đó các thơng tin này được gửi lại cho D. Vậy thông tin D
nhận được khơng chính xác và người nhận D cũng khơng thể xác thực được thơng
tin đó là do người A gửi, hay B gửi, hay một người nào khác gửi.

HVTH: Phan Trọng Nghĩa – CH1301042

4


Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

Vấn đề đặt ra là người D sau khi nhận được bản tin phải xác thực được rằng
thông tin là của chính một đối tượng cụ thể gửi và thông tin không bị tiết lộ cũng
như bị không thay đổi trên môi trường truyền thông.
Bài thu hoạch này đề cập đến những cơ sở lý thuyết về hàm băm MD5, thuật
tốn mã hóa RSA, chữ ký điện tử và ứng dụng phỏng chữ ký điện tử.

B. CƠ SỞ LÝ THUYẾT
I. Tổng quan về chứng thực và an toàn thông tin
-

Chúng ta đang sống trong một thời đại bùng nổ thông tin. Nhu cầu trao đổi thông
tin và các phương tiện truyền đưa thông tin phát triển một cách nhanh chóng. Và
cùng với sự phát triển đó, địi hỏi bảo vệ tính bí mật và chứng thực nguồn thơng
tin cũng càng ngày càng to lớn và có tính phổ biến. Có nhiều bài tốn khác nhau
về u cầu an tồn thơng tin tùy theo những tình huống khác nhau.


-

Ví dụ trong thực tế, một số bài toán chung nhất mà ta thường gặp là những bài
toán sau đây:
o

Bảo mật: Giữ thơng tin được bí mật đối với tất cả mọi người, trừ một ít
người có thẩm quyền được đọc, biết thơng tin đó.

o

Tồn vẹn thơng tin: Bảo đảm thơng tin không bị thay đổi hay xuyên
tạc bởi những kẻ khơng có thẩm quyền hoặc bằng những phương tiện
khơng được phép.

o

Nhận thực một thực thể: Xác nhận danh tính của một thực thể, chẳng
hạn một người, một máy tính cuối trong mạng, một thẻ tín dụng,...

o

Nhận thực một thơng báo: Xác nhận nguồn gốc của một thông báo
được gửi đến.

o

Chữ ký: Một cách để gắn kết một thông tin với một thực thể, thường
dùng trong bài toán nhận thực một thơng báo cũng như trong nhiều bài

tốn nhận thực khác.

HVTH: Phan Trọng Nghĩa – CH1301042

5


Bài thu hoạch mơn Tốn cho KHMT
o

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

Ủy quyền: Chuyển cho một thực thể khác quyền được đại diện hoặc
được làm một việc gì đó.

o

Cấp chứng chỉ: Cấp một sự xác nhận thông tin bởi một thực thể được
tín nhiệm.

o

Báo nhận: Xác nhận một thơng báo đã được nhận hay một dịch vụ đã
được thực hiện.

o

Làm chứng: Kiểm thử việc tồn tại một thông tin ở một thực thể khác
với người chủ sở hữu thông tin đó.


o

Khơng chối bỏ được: Ngăn ngừa việc chối bỏ trách nhiệm đối với một
cam kết đã có (thí dụ đã ký vào một văn bản).

o

Ẩn danh: che giấu danh tính của một thực thể tham gia trong một tiến
trình nào đó (thường dùng trong giao dịch tiền điện tử).

o
-

Thu hồi: Rút lại một giấy chứng chỉ hay ủy quyền đã cấp.

Cơ sở của các giải pháp cho các bài toán kể trên là các phương pháp mật mã, đặc
biệt là mật mã khóa cơng khai.

-

Trong thế giới số, có 3 cách để xác thực một người hoặc mức độ tin cậy của một
thơng tin trên máy tính. Một là Thẻ thông hành (Pass Card) mà ở nước ta hiện
nay chưa phổ biến. Hai là Password, cách này sử dụng tên truy nhập (User Name)
và mật khẩu (Password) cung cấp cho các giao diện đăng nhập để xác thực thông
tin. Thứ ba, dùng chữ ký điện tử (Digital Signature)

II. Mã hóa dữ liệu và giải mã
II.1 Tổng quan về mã hóa dữ liệu và giải mã

HVTH: Phan Trọng Nghĩa – CH1301042


6


Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

Hình 1:Quy trình mã hóa dữ liệu
-

Sự phát triển chóng mặt 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.

-

Mã hóa là ngành nghiên cứu các thuật tốn và phương thức để đảm bảo tính bí
mật và (thường là dưới dạng các văn bản lưu trữ trên máy tính). Các sản phẩm
của lĩnh vực này là các hệ mã mật, các hàm băm, các hệ chữ ký điện tử, các cơ
chế phân phối, quản lý khóa và các giao thức mật mã.

-

Có rất nhiều thơng tin mà chúng ta không muốn người khác biết khi gửi đi như:
thông tin về Credit-Card, thông tin về kinh doanh của công ty, thông tin về tài
khoản cá nhân, thông tin về cá nhân như số chứng minh thư, số thẻ...

-


Q trình mã hố 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. Các hệ thống mã
hố trong máy tính phổ biến nhất thuộc một trong hai loại sau:
o
o

-

Mã hoá với khoá đối xứng (Symmetric-key Encryption)
Mã hố với khố cơng khai (Public-key Encryption)

Gần đây nhất là các sự kiện liên quan tới các hàm băm MD5 (một hàm băm thuộc
họ MD do Ron Rivest phát triển) và SHA. Một nhóm các nhà khoa học người
Trung Quốc (Xiaoyun Wang, Yiqun Lisa Yin, Hongbo Yu) đã phát triển các
phương pháp cho phép phát hiện ra các đụng độ của các hàm băm được sử dụng
rộng rãi nhất trong số các hàm băm này. Đây là một sự kiện lớn đối với ngành
mật mã học do sự ứng dụng rộng rãi và có thể xem là còn quan trọng hơn bản
thân các hệ mã mật của các hàm băm. Do sự kiện này các hãng viết phần mềm

HVTH: Phan Trọng Nghĩa – CH1301042

7


Bài thu hoạch mơn Tốn cho KHMT


GVHD: PGS. TS Thầy Đỗ Văn Nhơn

lớn (như Microsoft) và các nhà mật mã học đã khuyến cáo các lập trình viên sử
dụng các hàm băm mạnh hơn (như SHA-256, SHA-512) trong các ứng dụng.

II.2 Mã hóa bất đối xứng (asymmetric)
-

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ệ tốn học
với nhau là khóa cơng khai và khóa cá nhân (hay khóa 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.
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:

-

o

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.

o


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.

o

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.

-

Không phải tất cả các thuật tốn mật mã hóa khóa bất đối xứng đều hoạt động
giống nhau nhưng phần lớn đều gồm 2 khóa có quan hệ tốn học với nhau: một
cho mã hóa và một để giải mã. Để thuật tốn đảm bảo an tồn thì khơng thể tìm
được khóa giải mã nếu chỉ biết khóa đã dùng mã hóa. Điều này cịn được gọi là
mã hóa cơng khai vì khóa dùng để mã hóa có thể cơng bố cơng khai mà khơng
ảnh hưởng đến bí mật của văn bản mã hóa.

-

Các thơng tin để mở khóa thì chỉ có người sở hữu mới biết. Tồn tại khả năng một
người nào đó có thể tìm ra được khóa bí mật. Không giống với hệ thống mật mã

HVTH: Phan Trọng Nghĩa – CH1301042

8


Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn


sử dụng một lần (one-time pad) hoặc tương đương, chưa có thuật tốn mã hóa
khóa bất đối xứng nào được chứng minh là an toàn trước các tấn cơng dựa trên
bản chất tốn học của thuật tốn. Khả năng một mối quan hệ nào đó giữa 2 khóa
hay điểm yếu của thuật toán dẫn tới cho phép giải mã khơng cần tới khóa hay chỉ
cần khóa mã hóa vẫn chưa được loại trừ. An toàn của các thuật toán này đều dựa
trên các ước lượng về khối lượng tính tốn để giải các bài tốn gắn với chúng.
Các ước lượng này lại luôn thay đổi tùy thuộc khả năng của máy tính và các phát
hiện tốn học mới.
-

Mặc dù vậy, độ an tồn của các thuật tốn mật mã hóa khóa cơng khai cũng
tương đối đảm bảo. Nếu thời gian để phá một mã (bằng phương pháp duyệt tồn
bợ) được ước lượng là 1000 năm thì thuật tốn này hồn tồn có thể dùng để mã
hóa các thơng tin về thẻ tín dụng - Rõ ràng là thời gian phá mã lớn hơn nhiều lần
thời gian tồn tại của thẻ (vài năm).

II.3 Mã hóa đối xứng (symmetric).
-

Trong mật mã học, các thuật tốn khóa đối xứng (tiếng Anh: symmetric-key
algorithms) là một lớp các thuật tốn mật mã hóa trong đó các khóa dùng cho
việc mật mã hóa và giải mã có quan hệ rõ ràng với nhau (có thể dễ dàng tìm được
mợt khóa nếu biết khóa kia).

-

Khóa dùng để mã hóa có liên hệ một cách rõ ràng với khóa dùng để giải mã có
nghĩa chúng có thể hoàn toàn giống nhau, hoặc chỉ khác nhau nhờ một biến đổi
đơn giản giữa hai khóa. Trên thực tế, các khóa này đại diện cho một bí mật được

phân hưởng bởi hai bên hoặc nhiều hơn và được sử dụng để giữ gìn sự bí mật
trong kênh truyền thơng tin.

-

Thuật tốn đối xứng có thể được chia ra làm hai thể loại, mật mã luồng (stream
ciphers) và mật mã khối (block ciphers). Mật mã luồng mã hóa từng bit của thông
điệp trong khi mật mã khối gộp một số bit lại và mật mã hóa chúng như một đơn
vị. Cỡ khối được dùng thường là các khối 64 bit. Thuật tốn tiêu chuẩn mã hóa

HVTH: Phan Trọng Nghĩa – CH1301042

9


Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

tân tiến (Advanced Encryption Standard), được NIST công nhận tháng 12 năm
2001, sử dụng các khối gồm 128 bit.
-

Các thuật tốn đối xứng thường khơng được sử dụng độc lập. Trong thiết kế của
các hệ thống mật mã hiện đại, cả hai thuật toán bất đối xứng và thuật toán đối
xứng được sử dụng phối hợp để tận dụng các ưu điểm của cả hai. Những hệ thống
sử dụng cả hai thuật toán bao gồm SSL (Secure Sockets Layer), PGP (Pretty
Good Privacy) và GPG (GNU Privacy Guard)... Các thuật tốn chìa khóa bất đối
xứng được sử dụng để phân phối chìa khóa mật cho thuật tốn đối xứng có tốc độ
cao hơn.


-

Một số ví dụ các thuật tốn đối xứng nổi tiếng bao gồm Twofish, Serpent, AES
(còn được gọi là Rijndael), Blowfish, CAST5, RC4, Tam phần DES (Triple
DES), và IDEA (International Data Encryption Algorithm - Thuật toán mật mã
hóa dữ liệu quốc tế).

-

Hạn chế của các thuật tốn khóa đối xứng bắt nguồn từ yêu cầu về sự phân
hưởng chìa khóa bí mật, mỗi bên phải có một bản sao của chìa. Do khả năng các
chìa khóa có thể bị phát hiện bởi đối thủ mật mã, chúng thường phải được bảo an
trong khi phân phối và trong khi dùng. Hậu quả của yêu cầu về việc lựa chọn,
phân phối và lưu trữ các chìa khóa một cách khơng có lỗi, khơng bị mất mát là
một việc làm khó khăn, khó có thể đạt được một cách đáng tin cậy.

-

Để đảm bảo giao thơng liên lạc an tồn cho tất cả mọi người trong một nhóm gồm
n người, tổng số lượng chìa khóa cần phải có là n(n-1)/2.

-

Các thuật tốn khóa đối xứng khơng thể dùng cho mục đích xác thực hay mục
đích chống thối thác.

II.4 Hàm băm - Hashing
-


Hashing là một phương thức mật mã nhưng nó khơng phải là một thuật tốn mã
hố. Đúng như vậy, hashing chỉ sử dụng một chứng chỉ số duy nhất được biết đến
với tên như "hash value – giá trị hash", "hash – băm", Message Authentication

HVTH: Phan Trọng Nghĩa – CH1301042

10


Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

Code (MAC), fingerprint – vân tay, hay một đoạn message. Dữ liệu đầu vào của
bạn có thể là một file, một ổ đĩa một q trình truyền thơng tin trên mạng, hay
một bức thư điện tử. Thông số hash value được sử dụng để phát hiện khi có sự
thay đổi của tài nguyên. Nói cách khác, hashing sử dụng nó để phát hiện ra dữ
liệu có tồn vẹn trong quá trình lưu trữ hay trong khi truyền hay khơng.
-

Ví dụ, thơng số hash value được tính tốn để so sánh với thông số hash value
được tạo ra trước đó một tuần. Nếu hai thơng số giống nhau thì dữ liệu chưa có sự
thay đổi. Nếu hai thơng số có sự khác nhau, thì dữ liệu đã bị thay đổi. Trong hình
dưới đây thể hiện cơ bản về hash hay thơng số MAC.

-

Thơng số MAC value được tính tốn bởi người gửi (sender) và người nhận
(receive) với cùng một thuật tốn.


Hình 2: Thể hiện cơ bản về hash hay thơng số MAC
-

Ví dụ, Message Digest 5 (MD5) là một thuật tốn hash với 128-bit hash. Điều này
có nghĩa khơng có vấn đề với dữ liệu đầu vào và dữ liệu đầu ra sau quá trình hash

HVTH: Phan Trọng Nghĩa – CH1301042

11


Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

bởi nó ln ln thêm vào 128 bits. Sức mạnh của q trình hashing là nó được
thực hiện một chiều và khơng thể có phương thức nào có thể thực hiện ngược lại
được để converts thông số hash thành dữ liệu ban đầu. Nếu một vài người có
được các thông số hash của ta, họ không thể lấy được dữ liệu ban đầu. Tuy nhiên
đó khơng phải là phương thức mật mã khơng thể tấn cơng. Hashing có thể bị tấn
công bởi các phương thức đảo ngược hay birthday attack. Phương thức tấn cơng
bình thường sử dụng đó là sử dụng các công cụ password-cracking. Hầu hết các
hệ thống lưu trữ passwords trong dữ liệu accounts và được hashed (băm). Hashs
khơng thể thực hiện ngược lại, bởi đó là một giải pháp bảo mật, có nghĩa khơng
có cơng cụ nào có thể chuyển ngược lại một password được hash thành một
password nguyên bản chưa được hash. Tuy nhiên một thuật tốn nào cũng có
những bất cập riêng, bằng việc sử dụng các phần mềm, password crackers chúng
có thể phát hiện ra đoạn mã them vào dữ liệu ban đầu và chỉ cần xố đoạn hash
value đi là có thể truy cập bình thường. Dữ liệu Account thường khơng được mã
hoá, và dữ liệu password thường được hash do đó hầu hết các cơng cụ crack

password chỉ có thể xố password đã được đặt cho user đó mà khơng thể view
password đó.
Thuật tốn hashing thường được sử dụng:
Secure Hash Algorithm (SHA-1) với - 160-bit hash value
Message Digest 5 (MD5) với —128-bit hash value
Message Digest 4 (MD4) với —128-bit hash value
Message Digest 2 (MD2) với —128-bit hash value
-

Các tính chất cơ bản của hàm băm:
o

Là hàm một chiều, không thể thực hiện phép biến đổi ngược như trong
quá trình mã hóa và giải mã, nghĩa là với một message_digest cho
trước, khó có thể tìm được một message nào mà có hàm băm bằng
message_digest này.

o

Khó có thể tìm được hai message mà có cùng một message_digest.

HVTH: Phan Trọng Nghĩa – CH1301042

12


Bài thu hoạch mơn Tốn cho KHMT
o

GVHD: PGS. TS Thầy Đỗ Văn Nhơn


Các giải thuật băm được sử dụng hiện nay là: MD2, MD4, MD5, SHS.
Trong đó MD5 là giải thuật băm được sử dụng phổ biến và nó sẽ được
trình bày trong phần dưới.

II.5 Hàm băm MD5
-

Giải thuật MD5 được phát triển bởi Ron Rivest ở MIT: nhận đầu vào là một khối
data (message) có chiều dài bất kỳ, xử lý nó thành các khối 512 bít, tạo đầu ra là
một message_digest 128 bít. Q trình bao gồm các bước sau:
o Bước 1: message ban đầu được thêm (padding) một số bít (bắt đầu là bít 1,

kế tiếp là các bít 0, số bít thêm vào từ 1 tới 512 bít) sao cho tổng số bít sau
khi thêm vào cộng với 64 (chiềi dài của message ban đầu) là bội số của
512.

Hình 3: Tạo message_digest sử dụng MD5.
o

Bước 2: khởi tạo bộ đệm MD. Bộ đệm 128 bít được dùng để chứa kết quả
trung gian và cuối cùng của hàm băm. Có thể xem bộ đệm như là 4 thanh
ghi 32 bít. Các thanh ghi này được khởi tạo (dạng số hex) như sau:
A = 01234567;

HVTH: Phan Trọng Nghĩa – CH1301042

B = 89abcdef; C = fedcba98; D = 76543210
13



Bài thu hoạch mơn Tốn cho KHMT
o

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

Bước 3: xử lý message thành từng khối 512 bít (16 từ 32 bít). Q trình tính
tốn được chia thành từng giai đoạn, số giai đoạn bằng số chiều dài (tính
theo bít) của message sau khi đã padding chia cho 512. Mỗi giai đoạn nhận
đầu vào là khối 512 bít của message đã được padding và message_digest của
giai đoạn trước, cho ra kết quả là message_digest mới (xem hình 1). Mỗi
giai đoạn thực hiện trong 4 bước (vịng), bốn vịng có cấu trúc giống nhau
nhưng mỗi vịng sử dụng một hàm luận lý khác nhau, được đặc tả là F, G, H,
I. Trong hình 2, bốn vịng được đặt nhãn là f F , fG , fH , fI , để chỉ rằng mỗi
vịng có cấu trúc hàm tổng quát như nhau nhưng tùy thuộc vào sự khác nhau
của hàm thao tác (F, G, H, I).

HVTH: Phan Trọng Nghĩa – CH1301042

14


Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

Hình 4: Xử lý MD5 của khối đơn 512 bít (HDMD5).
-

Mỗi vòng được thực hiện 16 bước tuần tự trên các data A, B, C, D (hình 4).

Biểu thức tính tốn được sử dụng trong mỗi vịng có dạng:
a = b + CLSs(a + g(b,c,d) + X[k] + T[i]).
Trong đó:


a, b, c, d: là 4 word A, B, C, D theo thứ tự nào đó.



g: là một trong các hàm F, G, H, I.



F(b,c,d) = (b & c) | (~b & d)



G(b,c,d) = (b & d) | (c & ~d)

HVTH: Phan Trọng Nghĩa – CH1301042

15


Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn




H(b,c,d) = b ^ c ^ d



I(b,c,d) = c ^ (b & ~d)



CLSs: dịch vòng bên trái s bít.



X[k] = M[q*16 + k] : từ 32 bít thứ k của khối 512 bít thứ q của
message.



T[i] = 232 * abs(sin(i)) : từ 32 bít thứ i (i tính theo radian) (xem
bảng).



Phép tốn cộng (+) tính cho modulo 232

Hình 5: Tác vụ của MD5: [abcd k s i]

HVTH: Phan Trọng Nghĩa – CH1301042

16



Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

Bảng T được xây dựng từ hàm sin
T1 = D76AA478

T17 = F61E2562

T33 = FFFA3942

T49 = F4292244

T2 = E8C7B756

T18 = C040B340

T34 = 8771F681

T50 = 432AFF97

T3 = 242070D8

T19 = 265E5A51

T35 = 69D96122

T51 = AB9423A7


T4 = C1BDCEEE

T20 = E9B6C7AA

T36 = FDE5380C

T52 = FC93A039

T5 = F57C0FAF

T21 = D62F105D

T37 = A4BEEA44

T53 = 655B59C3

T6 = 4787C62A

T22 = 02441453

T38 = 4BDECFA9

T54 = 8F0CCC92

T7 = A8304613

T23 = D8A1E681

T39 = F6BB4B60


T55 = FFEFF47D

T8 = FD469501

T24 = E7D3FBC8

T40 = BEBFBC70

T56 = 85845DD1

T9 = 698098D8

T25 = 21E1CDE6

T41 = 289B7EC6

T57 = 6FA87E4F

T10 = 8B44F7AF

T26 = C33707D6

T42 = EAA127FA

T58 = FE2CE6E0

T11 = FFFF5BB1

T27 = F4D50D87


T43 = D4EF3085

T59 = A3014314

T12 = 895CD7BE

T28 = 455A14ED

T44 = 04881D05

T60 = 4E0811A1

T13 = 6B901122

T29 = A9E3E905

T45 = D9D4D039

T61 = F7537E82

T14 = FD987193

T30 = FCEFA3F8

T46 = E6DB99E5

T62 = BD3AF235

T15 = A679438E


T31 = 676F02D9

T47 = 1FA27CF8

T63 = 2AD7D2BB

T16 = 49B40281

T32 = 8D2A4C8A

T48 = C4AC5665

T64 = EB86D391

HVTH: Phan Trọng Nghĩa – CH1301042

17


Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

Các tác vụ [abcd k s i] trong mỗi vịng là:
Vịng 1

Vịng 2

Vịng 3


Vịng 4

ABCD

7

1

1

5

17

5

4

33

0

6

49

DABC

1


12

2

6

9

18

8

11

34

7

10

50

CDAB

2

17

3


11

14

19

11

16

35

14

15

51

BCDA

3

22

4

0

20


20

14

23

36

5

21

52

ABCD

4

7

5

5

5

21

1


4

37

12

6

53

DABC

5

12

6

10

9

22

4

11

38


3

10

54

CDAB

6

17

7

15

14

23

7

16

39

10

15


55

BCDA

7

22

8

4

20

24

10

23

40

1

21

56

ABCD


8

7

9

9

5

25

13

4

41

8

6

57

DABC

9

12


10

14

9

26

0

11

42

15

10

58

CDAB

10

17

11

3


14

27

3

16

43

6

15

59

BCDA

11

22

12

8

20

28


6

23

44

13

21

60

ABCD

12

7

13

13

5

29

9

4


45

4

6

61

DABC

13

12

14

2

9

30

12

11

46

11


10

62

CDAB

14

17

15

7

14

31

15

16

47

2

15

63


BCDA

-

0

15

22

16

12

20

32

2

23

48

9

21

64


Các phép tốn dùng trong giải thuật MD5 gồm có:


Phép tốn đối (~): bù bít.



Phép tốn and (&): and các bít của hai tốn hạng 32 bít với nhau.



Phép tốn or (|): or các bít của hai tốn hạng 32 bít với nhau.



Phép tốn xor (^): xor các bít của hai tốn hạng 32 bít với nhau.

HVTH: Phan Trọng Nghĩa – CH1301042

18


Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn



Phép toán cộng (+): cộng modulo 232 hai tốn hạng 32 bít với nhau.




Phép tốn dịch trái vịng (w << s): dịch trái vịng w (32 bít) với s bít.

o Bước 4: xuất (output). Tất cả khối 512 bít L đã được xử lý thì đầu ra ở giai

đoạn thứ L là message_digest 128 bít.
Có thể tóm tắt hoạt động của MD5 như sau:
MD0

= IV

MDq+1 = MDq + fI(Yq , fH(Yq , fG(Yq ,fF(Yq ,MDq))))
MD

= MDL-1

Trong đó:


IV: giá trị khởi tạo của bộ đệm ABCD được xác định trong bước 2.



Yq: khối message 512 bít thứ q.



L: số khối message (đã được padding).




MD: giá trị message_digest cuối cùng.

III. Thuật tốn mã hóa khóa cơng khai RSA
Trong mật mã học, RSA là một thuật tốn mã hóa khóa cơng cộng. Đây là
thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã
hóa. Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc sử
dụng khóa công cộng. RSA đang được sử dụng phổ biến trong thương mại điện tử
và được cho là đảm bảo an tồn với điều kiện độ dài khóa đủ lớn.

HVTH: Phan Trọng Nghĩa – CH1301042

19


Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

III.1 Lịch sử ra đời
-

Khi phương pháp mã khóa cơng khai chưa ra đời, người ta sử dụng hầu như
cùng một 'chìa khóa' để mã hóa cũng như giải mã chung cho cả người gửi và
người nhận thông tin (hệ mã đối xứng). Với hệ mã này, một trong những khó
khăn lớn của ngành an ninh và mã hóa lúc đó là làm sao gửi an tồn chìa khóa
bí mật trên các kênh truyền tin cơng khai có nhiều người tham gia.

Hình 6: Ba nhà khoa học Shamir, Rivest và Adleman

-

Đầu năm 1969, James Ellis, một chuyên gia thám mã lỗi lạc của Cơ Quan
Truyền Thơng Chính Phủ Anh Quốc (GCHQ) đã nảy ra ý tưởng đặc sắc rằng,
nếu người nhận tin đưa một nhiễu nào đó lên đường truyền công khai mà chỉ
riêng anh ta biết cách khử nhiễu, thì mọi thơng tin mật gửi đến cho anh ta đều
có thể đưa lên kênh truyền tin cơng khai đó. Những người khác, dù bắt được tín
hiệu cũng không thể nào giải mã được tin mật.

-

Cuối năm 1969, James Ellis nhận ra ý tưởng trên có thể đạt được bằng 'hàm
một chiều' (xem phụ lục) Theo đó, chỉ có thể tìm hàm ngược nếu biết thơng tin
nào đó, giống như khơi phục tín hiệu khi biết cái nhiễu do mình tạo ra. Nhưng
ơng khơng thực hiện được điều này, do khơng biết liệu hàm một chiều có tồn tại
hay không.

-

Bốn năm sau Clifford Cocks- một nhân viên mới của GCHQ- được Patterson,
thầy hướng dẫn, kể cho nghe ý tưởng độc đáo của James Ellis và ơng đã tìm ra
hàm một chiều cần thiết chỉ trong vòng nửa giờ: đó chính là phép nhân! Nhân

HVTH: Phan Trọng Nghĩa – CH1301042

20


Bài thu hoạch mơn Tốn cho KHMT


GVHD: PGS. TS Thầy Đỗ Văn Nhơn

hai số nguyên tố lớn bao nhiêu cũng được là điều hết sức dễ dàng, nhưng khi
biết tích của chúng, để tìm lại các thừa số thì ta cần phân tích số đã cho ra thừa
số nguyên tố. Điều này hầu như không thể làm được với các số đủ lớn. hật vậy,
để phân tích n (=p*q) ra thừa số nguyên tố, cần chia lần lượt n cho các số
nguyên tố nhỏ hơn. Theo một định lý nổi tiếng trong số học, có khoảng (n/log
n) số nguyên tố bé hơn n. Nếu n có khoảng 300 chữ số thì sẽ phải làm khoảng
10150/300 phép chia. (Nếu dùng máy tính tốc độ 1 tỷ phép tính/giây, ta sẽ mất
chừng...tỷ tỷ tỷ năm để phân tích số n!) Như vậy, hàm số thiết lập sự tương ứng
giữa hai số p, q với tích n=pq chính là hàm một chiều. Giải pháp thật đơn giản
và Cocks cũng không tự cảm nhận được đầy đủ ý nghĩa của kết quả đạt
được. Kết quả của Cocks được giữ tuyệt mật. Nó có sức thuyết phục lớn trong
nội bộ GCHQ. Nhưng phương tiện tính tốn thời đó khơng cho phép triển
khai thuật tốn. Năm 1978, kết quả của Cocks được Rivest, Shamir và Adleman
phát minh lại! Đó chính là cuộc cách mạng trong lĩnh vực mật mã, cuộc cách
mạng mang tên RSA (ghép chữ đầu tên của ba nhà khoa học trên).

III.2 Mô tả sơ lược
-

Thuật tốn RSA có hai khóa: khóa cơng khai(hay khóa cơng cợng) và khóa bí
mật(hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong quá trình
mã hóa và giải mã. Khóa cơng khai được cơng bố rộng rãi cho mọi người và
được dùng để mã hóa. Những thơng tin được mã hóa bằng khóa cơng khai chỉ
có thể được giải mã bằng khóa bí mật tương ứng. Nói cách khác, mọi người đều
có thể mã hóa nhưng chỉ có người biết khóa cá nhân mới có thể giải mã được.

-


Một ví dụ trực quan: 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ở 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 (lúc này ngay cả Bob cũng khơng
thể đọ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.

HVTH: Phan Trọng Nghĩa – CH1301042

21


Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

III.3 Thuật tốn RSA
- Tạo khóa RSA:

o 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 tồ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 p và q với p≠q, lựa chọn ngẫu nhiên và độc

lập.
2. Tính: N=p*q.
3. Tính: Ф(N) = (p-1)(q-1).

4. Chọn một số tự nhiên e sao cho 1 < e <Ф(N) và là số nguyên tố cùng

nhau với Ф(N)
5. Tính: d sao cho de ≡ 1 (mod Ф(N))(hay d= (1 + i * Phi_N) / E) với

1, n

i=
Khóa cơng khai: Ku = {e,N}
Khóa bí mật: Kprl = {d,p,q}
o 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 q trình tạo khóa.
Mã hóa:
-

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được thỏa thuận trước.
M m

HVTH: Phan Trọng Nghĩa – CH1301042

22


Bài thu hoạch mơn Tốn cho KHMT


-

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

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:
C=me mod N

-

Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ (mơđun) bằng
phương pháp bình phương (exponentiation by squaring). Cuối cùng Bob gửi c
cho Alice.
Giải mã:

-

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 = cd mod N

-

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ó
cd ≡ (me)d ≡ med (mod N)

-

Do ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), (theo Định lý Fermat nhỏ) nên:

(med ≡ m (mod p) và med ≡ m (mod q)

-

Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý số dư Trung quốc, ta
có:
(med ≡ m (mod p*q)
hay
cd ≡ m (mod N)

-

Có thể tóm tắt giải thuật RSA như bảng sau:
Tạo khóa

HVTH: Phan Trọng Nghĩa – CH1301042

Độ phức tạp
23


Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

Tạo 2 số nguyên tố lớn p và q
Tính n = p*q, 0(n) = (p-1)*(q-1)

0((logn)2)


Chọn 1 số ngẫu nhiên 1
0((log(0(n))2)

Tính d: d = e-1 mod 0(n) (giải thuật Extended 0((logn)3)
Euclidean)
Khóa cơng khai KU = [e, n]
Khóa bí mật
KR = [d, n]
Mơ tả đợ phức tạp của giải thuật RSA

Mã hóa
Đoạn tin : M < n
Mã hóa : C = Me mod n

Giải mã
Đoạn tin mã: C
Giải mã

: M = Cd mod n

Mã hóa và giải mã trong RSA
-

Độ phức tạp:



Nhân 2 số k bít: O(k2)




2 k bít mod n : O(k2)


o

Cộng 2 số k bít: O(k)

xc mod n

: O(k3)

Để tính xc mod n cần c-1 phép nhân modulus  không hiệu quả (do c lớn) 
sử dụng giải thuật square_multiply để giảm số phép nhân mod nhiều nhất 2l (l
là số bít nhị phân của c, l<=k với k là số bít nhị phân của x)

HVTH: Phan Trọng Nghĩa – CH1301042

24


Bài thu hoạch mơn Tốn cho KHMT

GVHD: PGS. TS Thầy Đỗ Văn Nhơn

- Ví dụ
o

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 tốn cịn trong thực tế phải dùng các số có giá trị đủ lớn.
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 = 3233

— Môđun (công bố công khai)

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à:
encrypt(m) = me mod N = m17 mod 3233




với m là văn bản rõ. Hàm giải mã là:
decrypt(c) = cd mod N = c2753 mod 3233 với c là văn bản mã.



Để mã hóa văn bản có giá trị 123, ta thực hiện phép tính:
encrypt(123) = 12317 mod 3233 = 855



Để giải mã văn bản có giá trị 855, ta thực hiện phép tính:
decrypt(855) = 8552753 mod 3233 = 123

o Cả hai phép tính trên đều có thể được thực hiện hiệu quả với phương pháp tính
hàm mũ (mơđun) bằng phương pháp bình phương.

III.4 Tính bảo mật của giải thuật RSA
-

Vì khóa là cơng khai, nên người giải mã thường dựa vào cặp khóa này để tìm
cặp khóa bí mật. Điều quan trọng là dựa vào n để tính hai thừa số p, q của n từ

HVTH: Phan Trọng Nghĩa – CH1301042

25


×