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