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

Ứng dụng chữ ký số trong thương mại đ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 (3.82 MB, 83 trang )

TRƯỜNG ĐẠI HỌC AN GIANG
KHOA KỸ THUẬT – CÔNG NGHỆ – MÔI TRƯỜNG


NGUYỄN HOÀNG TÙNG

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC NGÀNH CỬ NHÂN TIN HỌC

ỨNG DỤNG CHỮ KÝ SỐ
TRONG THƯƠNG MẠI ĐIỆN TỬ

An Giang, 5/2009


TRƯỜNG ĐẠI HỌC AN GIANG
KHOA KỸ THUẬT – CÔNG NGHỆ – MÔI TRƯỜNG


NGUYỄN HOÀNG TÙNG

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC NGÀNH CỬ NHÂN TIN HỌC

ỨNG DỤNG CHỮ KÝ SỐ
TRONG THƯƠNG MẠI ĐIỆN TỬ

Giảng viên hướng dẫn:
ThS. NGUYỄN QUANG HUY

An Giang, 5/2009



Ứng dụng chữ ký số trong thương mại điện tử

LỜI CẢM ƠN


Trước tiên tôi xin được bày tỏ lòn g tri ân đến quý thầy cô Trườn g đại
học An Giang đã tận tình truyền đạt nhữn g kiến thức quý báu, dìu dắt,
giúp đỡ tôi hoàn thành tốt nhiệm vụ của khoá học, hoàn thành khóa
luận tốt nghiệp.
Đặc biệt tôi xin chân thành cảm ơn thầy Nguyễn Quang Huy đã tận
tình hướn g dẫn và cho tôi nhữn g ý kiến đón g gó p quý báu về các kiến
thức chuyên ngành giúp tôi hoàn thành khóa luận này.
Tôi cũn g xin chân thành cảm ơn đến gia đình, nhữn g người thân và
bạn bè đã độn g viên, khích lệ, tạo mọi điều kiện cho tôi trong suốt thời
gian học tập tại trườn g giúp tôi hoàn thành khóa luận.
An Giang, ngày 08 thán g 05 năm 2009
Sinh viên thực hiện

i


Ứng dụng chữ ký số trong thương mại điện tử

PHẦN TÓM TẮT

Khóa luận được trình bày theo hình thức từ trên xuống. Bắt đầu của mỗi phần đều đưa ra
những khái niệm cơ bản và quy định cho phần trình bày tiếp theo nhằm mục đích giúp dễ
dàng trong khi đọc, dần dần đi sâu vào chi tiết để thảo luận rõ hơn những vấn đề liên quan,
bao gồm cơ sở lý thuyết, việc bảo vệ an toàn dữ liệu dùng mật mã, trong đó trình bày rõ về hệ
mật mã có khoá công khai RSA, chữ ký số.

Phần A: TỔNG QUAN VỀ ĐỀ TÀI
Trình bày một số tình hình thực tế hiện nay trong việc bảo vệ an toàn dữ liệu, các
phương pháp bảo vệ dữ liệu, tình hình sử dụng chữ ký số và chứng thực điện tử tại Việt Nam,
các giải pháp hiện có từ đó đưa ra một số ý kiến về vấn đề bảo mật an toàn dữ liệu làm rõ lý
do chọn đề tài nghiên cứu của tác giả.
Phần B: CƠ SỞ LÝ THUYẾT
Trình bày một cách có hệ thống các lý thuyết về cơ sở toán học mật mã áp dụng trong
việc mã hóa và bảo mật thông tin, những khái niệm cơ bản về mã hóa, mật mã có khóa công
khai, hệ mã RSA, quản lý và phân phối khóa, hàm băm mật mã SHA-1, chữ ký số sử dụng
mật mã có khóa công khai, sơ đồ chữ ký số và chuẩn chữ ký số DSS.
Giới thiệu và trình bày một cách khái quát về giao thức bảo mật Secure Socket Layer
(SSL) trong việc chứng thực điện tử qua mạng, cách làm việc của SSL.
Phần C: CÀI ĐẶT MỘT SỐ ỨNG DỤNG
Trình bày một số giao diện và các chức năng chính của hai phần mềm ứng dụng: phần
mềm mã hóa và ứng dụng chữ ký số RSA, trang web bán hàng trực tuyến hỗ trợ giao thức bảo
mật SSL.
Phần D: TỔNG KẾT VÀ HƢỚNG PHÁT TRIỂN
Tóm tắt những kết quả đạt được đồng thời nêu ra những hạn chế của khóa luận và
hướng phát triển có thể được theo hướng nghiên cứu của khóa luận trong tương lai.
Phần E: PHẦN PHỤ LỤC
Hướng dẫn cách cài đặt SSL, cách tạo chứng chỉ SSL (SSL certificate) và Server Private
Key cho web server (Apache). Trích dẫn một số văn bản quan trọng trong giao dịch điện tử
(Luật giao dịch điện tử, Nghị định của Chính phủ về giao dịch điện tử trong hoạt động tài
chính).
Phần F: TÀI LIỆU THAM KHẢO
Trình bày theo thứ tự các tài liệu tham khảo về mã hóa thông tin, chứng thực điện tử,
chữ ký số,… của các tác giả trong và ngoài nước.

ii



Ứng dụng chữ ký số trong thương mại điện tử

MỤC LỤC

Phần A: TỔNG QUAN VỀ ĐỀ TÀI ....................................................................................... 1
I. Lý do chọn đề tài: ................................................................................................................ 1
II. Mục tiêu của đề tài: ............................................................................................................ 2
III. Giải pháp hiện có: ............................................................................................................. 2
1. Cơ sở pháp lý: ................................................................................................................. 2
2. Việc ứng dụng chữ ký số tại Việt Nam: .......................................................................... 2
IV. Nội dung thực hiện: .......................................................................................................... 3
Phần B: CƠ SỞ LÝ THUYẾT ................................................................................................ 4
I. Cơ sở toán học: .................................................................................................................... 4
1. Phép tính đồng dư và các vấn đề liên quan: .................................................................... 4
1.1. Số nguyên tố và các định lý cơ bản của Số học: ...................................................... 4
1.2. Thuật toán Euclide và mở rộng: ............................................................................... 4
1.3. Phi hàm Euler: .......................................................................................................... 5
1.4. Phép tính đồng dư và phương trình đồng dư: ........................................................... 6
1.5. Định lý Fermat và các mở rộng: ............................................................................... 7
1.6. Tính toán đồng dư của lũy thừa bậc lớn: .................................................................. 8
2. Hàm một chiều và hàm một chiều có “cửa sập”: ............................................................ 8
II. Những khái niệm cơ bản về mã hóa: .................................................................................. 9
1. Một số thuật ngữ: ............................................................................................................ 9
2. Vì sao cần mã hóa? ....................................................................................................... 10
3. Mã đối xứng và mã phi đối xứng: ................................................................................. 11
III. Mật mã có khóa công khai: ............................................................................................. 12
1. Giới thiệu về mật mã có khóa công khai:...................................................................... 12
2. Nguyên tắc chung của mã hóa với khóa công khai: ...................................................... 13
3. Hệ mã RSA: .................................................................................................................. 13

3.1. Thuật toán: .............................................................................................................. 14
3.2. Độ an toàn của RSA: .............................................................................................. 15
3.3. Các ứng dụng quan trọng: ...................................................................................... 16
3.4. Quản lý khóa:.......................................................................................................... 17
IV. Hàm băm mật mã: ........................................................................................................... 24
1. Giới thiệu sơ lược về hàm băm mật mã: ....................................................................... 24
2. Phân loại các hàm băm mật mã: .................................................................................... 24
3. Các khái niệm và định nghĩa: ........................................................................................ 25
iii


Ứng dụng chữ ký số trong thương mại điện tử
3.1. Định nghĩa tổng quát của hàm băm: ....................................................................... 25
3.2. Một số tính chất cơ bản của hàm băm mật mã: ...................................................... 25
3.3. Định nghĩa các hàm băm: ....................................................................................... 25
4. Cấu trúc cơ bản của các thuật toán băm: ....................................................................... 26
5. Hàm băm SHA-1: .......................................................................................................... 26
5.1. Hàm băm MD4: ...................................................................................................... 26
5.2. Hàm băm SHA-1: ................................................................................................... 28
V. Chữ ký số sử dụng mật mã khóa công khai: .................................................................... 30
1. Chữ ký số là gì? ............................................................................................................. 30
2. Phương pháp ký điện tử và xác nhận chủ thể: .............................................................. 30
2.1. Ký điện tử trong hệ thống an toàn với mã khóa công khai: ................................... 31
2.2. Ký văn bản có đóng dấu thời gian: ......................................................................... 31
2.3. Ký với mã khóa công khai và hàm băm một chiều: ............................................... 32
2.4. Ký điện tử và mã hóa thông tin: ............................................................................. 32
3. Sơ đồ chữ ký số: ............................................................................................................ 33
3.1. Định nghĩa: ............................................................................................................. 33
3.2. Phân loại sơ đồ chữ ký số: ...................................................................................... 34
4. Sơ đồ chữ ký RSA: ........................................................................................................ 36

4.1. Thuật toán sinh khóa: ............................................................................................. 36
4.2. Thuật toán sinh và xác minh chữ ký: ...................................................................... 36
5. Chuẩn chữ ký số DSS (Digital Signature Standard): .................................................... 37
5.1. Giải thuật sinh khóa: ............................................................................................... 37
5.2. Giải thuật sinh chữ ký: ............................................................................................ 37
5.3. Giải thuật xác nhận chữ ký: .................................................................................... 38
6. Ứng dụng của chữ ký số:............................................................................................... 38
VI. Secure Socket Layer: ...................................................................................................... 38
1. Secure Socket Layer (SSL) là gì? ................................................................................. 38
2. Giao thức SSL làm việc như thế nào? ........................................................................... 39
Phần C: CÀI ĐẶT MỘT SỐ ỨNG DỤNG .......................................................................... 42
I. Chương trình mã hóa và ứng dụng chữ ký số RSA: .......................................................... 42
1. Giao diện chính của chương trình: ................................................................................ 42
2. Giao diện một số form chức năng chính: ...................................................................... 44
II. Trang web bán hàng trực tuyến hỗ trợ giao thức SSL: .................................................... 51
1. Giao diện chính: ............................................................................................................ 51
2. Giao diện một số chức năng: ......................................................................................... 52
Phần D: TỔNG KẾT VÀ HƢỚNG PHÁT TRIỂN ............................................................. 57
iv


Ứng dụng chữ ký số trong thương mại điện tử
I. Kết quả đạt được:............................................................................................................... 57
II. Hạn chế: ........................................................................................................................... 57
III. Hướng phát triển: ............................................................................................................ 57
Phần E: PHỤ LỤC ................................................................................................................. 58
I. Cài đặt SSL cho web server: ............................................................................................. 58
1. Cài đặt XAMPP Server: ................................................................................................ 58
2. Tạo chứng chỉ SSL (SSL certificate) và server private key: ......................................... 62
II. Các văn bản kèm theo: ..................................................................................................... 64

1. Luật giao dịch điện tử: .................................................................................................. 64
2. Nghị định số 27/2007/NĐ-CP về giao dịch điện tử trong hoạt động tài chính:. ........... 70
Phần F: TÀI LIỆU THAM KHẢO ....................................................................................... 73

v


Ứng dụng chữ ký số trong thương mại điện tử

DANH MỤC HÌNH ẢNH

Hình 01: Các ký hiệu của phép mã hóa và phép giải mã.......................................................... 10
Hình 02: Sơ đồ khối nguyên lý hoạt động của mật mã khoá công khai ................................... 13
Hình 03: Phân phối khoá công khai không kiểm soát .............................................................. 17
Hình 04: Công bố khóa công khai vào thư mục khóa .............................................................. 18
Hình 05: Lược đồ phân phối khoá công khai ........................................................................... 19
Hình 06: Chứng chỉ khoá công khai đơn giản .......................................................................... 21
Hình 07: Một đoạn mẫu của chứng chỉ X.509 ......................................................................... 22
Hình 08: Sử dụng mã hóa khóa công khai để thiết lập một khóa phiên ................................... 23
Hình 09: Sử dụng mã hoá khoá công khai để trao đổi khoá bí mật.......................................... 24
Hình 10: Mã hóa công khai: Cung cấp xác thực và chữ ký...................................................... 31
Hình 11: Chữ ký số với khóa công khai và hàm băm một chiều.............................................. 32
Hình 12: Mã hóa công khai: Cung cấp xác thực, bí mật và chữ ký ......................................... 33
Hình 13: Phân lớp các sơ đồ chữ ký số .................................................................................... 34
Hình 14: Tiến trình ký thông điệp ............................................................................................ 35
Hình 15: Tiến trình xác minh chữ ký ....................................................................................... 35
Hình 16: Sơ đồ chữ ký khôi phục thông điệp ........................................................................... 36
Hình 17: Sơ đồ chuẩn chữ ký số DSS ...................................................................................... 37
Hình 18: Các giao thức con của SSL trong mô hình TCP/IP ................................................... 39
Hình 19: Từng bước thành lập một kết nối SSL ...................................................................... 40

Hình 21: Giao diện chính chương trình mã hóa và ứng dụng chữ ký số RSA ......................... 42
Hình 22: Giao diện phần soạn thảo văn bản ............................................................................. 42
Hình 23: Giao diện phần mã hóa văn bản ................................................................................ 42
Hình 24: Giao diện phần chữ ký số .......................................................................................... 43
Hình 25: Giao diện phần hiển thị ............................................................................................. 43
Hình 26: Giao diện menu docksite ........................................................................................... 43
Hình 27: Giao diện phần giúp đỡ ............................................................................................. 44
Hình 28: Form tạo cặp khóa ..................................................................................................... 44
Hình 29: Form demo giải thuật RSA ........................................................................................ 44
Hình 30: Form mã hóa văn bản ................................................................................................ 45
Hình 31: Form giải mã văn bản ................................................................................................ 46
Hình 32: Form mã hóa và giải mã file ...................................................................................... 46
Hình 33: Form tạo mã băm (SHA-1) cho văn bản ................................................................... 47
Hình 34: Form tạo mã băm (SHA-1) cho file ........................................................................... 47
vi


Ứng dụng chữ ký số trong thương mại điện tử
Hình 35: Form ký văn bản ........................................................................................................ 48
Hình 36: Form chứng thực chữ ký của văn bản (chấp nhận chữ ký) ....................................... 49
Hình 37: Form chứng thực chữ ký của văn bản (từ chối chữ ký)............................................. 50
Hình 38: Giao diện chính trang web bán hàng ......................................................................... 51
Hình 39: Trang giỏ hàng........................................................................................................... 52
Hình 40: Trang sản phẩm trong danh mục ............................................................................... 53
Hình 41: Trang thông tin sản phẩm .......................................................................................... 54
Hình 42: Giao diện chính trang quản trị ................................................................................... 55
Hình 43: Giao diện quản trị danh mục sản phẩm ..................................................................... 56

vii



Ứng dụng chữ ký số trong thương mại điện tử

DANH MỤC CÁC KÝ HIỆU VÀ TỪ VIẾT TẮT

Các từ viết tắt:
AES

Advanced Encryption Standard

Chuẩn mã hóa nâng cao

CA

Certificate Authority

Nhà cung cấp chứng thực số

DES

Data Encryption Standard

Chuẩn mã hóa dữ liệu

DSS

Digital Signature Standard

Chuẩn chữ ký số


IDEA

International Data Encryption Algorithm

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

IIS

Internet Information Server

Dịch vụ server của Microsoft

MD4

Message Digest 4

Thuật toán tạo dấu vết thông điệp

MIT

Massachusets Institute of Technology

Học viện công nghệ Massachusets

NAT

Network Address Translation

Hệ thống phân giải địa chỉ IP


NIST

National Institute for Standards and Technology

Viện Tiêu chuẩn và Công nghệ Hoa Kỳ

PKI

Public Key Infrastructure

Cơ sở hạ tầng khoá công khai

SHA

Secure Hash Algorithm

Thuật toán băm phát triển của MD4

SSL

Secure Socket Layer

Giao thức bảo mật HTTPS

TLS

Transport Layer Security

Tương tự như SSL


C

Ciphertext

Văn bản mã

D

Decipherment

Hàm giải mã

Ký hiệu:

dau
E

Khóa riêng của CA
Encipherment

eau

Hàm mã hóa
Khóa công khai của CA

k, K

Key

Khóa mã


P

Plaintext

Văn bản rõ

sig

Signature

Thuật toán ký

ver

Verify

Thuật toán xác minh chữ ký

Từ khóa:
Message digest, hash code, mã hóa, giải mã, khoá bí mật, khoá công khai, khóa riêng,
biến dây chuyền, dấu vết thông điệp, đặc trưng văn bản, mã băm, chữ ký số, thuật toán sinh
chữ ký số, thuật toán chứng thực chữ ký số, chữ ký số kèm theo thông điệp, chữ ký số khôi
phục thông điệp, nhà cung cấp chứng thực số, lược đồ chữ ký số,…

viii


Khóa luận tốt nghiệp


Ứng dụng chữ ký số trong thương mại điện tử

Phần A: TỔNG QUAN VỀ ĐỀ TÀI


I. Lý do chọn đề tài:
Hiện nay, ở tất cả các nước phát triển cũng như đang phát triển, mạng máy tính đang ngày
càng đóng vai trò thiết yếu trong mọi lĩnh vực hoạt động của toàn xã hội, và một khi nó trở
thành phương tiện điều hành các hệ thống thì nhu cầu bảo mật thông tin được đặt lên hàng
đầu. Nhu cầu này không chỉ có ở các bộ máy an ninh, quốc phòng, quản lý nhà nước,… mà đã
trở thành bức thiết trong nhiều hoạt động kinh tế xã hội: tài chính, ngân hàng, thương mại
điện tử,… và thậm chí trong cả một số hoạt động thường ngày của người dân (thư điện tử,
thanh toán, tín dụng,…).
Vấn đề bảo mật đang được nhiều người tập trung nghiên cứu và tìm mọi giải pháp để đảm
bảo an toàn, an ninh cho hệ thống phần mềm, đặc biệt là các hệ thống thông tin trên mạng.
Việc bảo mật cho hệ thống có thể thực hiện theo nhiều phương diện, ở nhiều tầng khác nhau,
bao gồm từ phương diện kiểm soát truy nhập vật lý vào hệ thống; thực hiện sửa chữa, cập
nhật, nâng cấp hệ điều hành cũng như vá mọi lỗ hổng về an ninh tìm thấy; quản lý các hoạt
động trao đổi thông tin trên mạng (giám sát qua bức tường lửa, các bộ định vị router, phát
hiện và phòng ngừa sự xâm nhập, v.v…); xây dựng các giải pháp bảo mật ở mỗi phần mềm
đến quản lý người dùng thông qua việc cấp quyền sử dụng, mật khẩu, sử dụng mật mã, mã
hoá dữ liệu để che giấu thông tin. Nếu không có sự bảo vệ phụ trợ, như mã hóa dữ liệu thì
môi trường mạng không phải là nơi an toàn để có thể trao đổi dữ liệu thông tin mật.
Về triết lý, dưới một góc độ nào đó, thông tin dữ liệu được xem là an toàn nếu như khi đối
phương khai thác được thì thông tin đó đã mất hiệu lực sử dụng hoặc khi phía gửi tin thừa
nhận là an toàn và phía nhận tin không có nghi vấn gì. Trong các mạng truyền tin lớn, như
Internet chẳng hạn (nhiều người sử dụng, nhiều thành phần bao gồm các phần cứng, phần
mềm khác nhau tham gia vào mạng,...) thì việc khẳng định được độ tin cậy là một việc làm
hết sức khó khăn và tốn kém. Hiện nay, việc sử dụng mạng truyền thông để trao đổi thông tin
dữ liệu đang trở thành xu thế. Do đó cần có các yêu cầu về bảo mật truyền thông. Đó là bốn

yêu cầu sau:
 Độ tin cậy: Cung cấp sự bí mật cho các thông báo và dữ liệu được lưu bằng việc che
dấu thông tin sử dụng các kỹ thuật mã hóa.
 Tính toàn vẹn: Cung cấp sự bảo đảm với tất cả các bên rằng thông báo và dữ liệu
không bị thay đổi từ khi tạo ra cho đến khi người nhận mở nó.
 Tính không từ chối: Có thể cung cấp một cách xác nhận rằng tài liệu là do người nào
gởi đi ngay cả khi họ cố gắng từ chối nó.
 Tính xác thực: Cung cấp 2 dịch vụ: Đầu tiên là nhận dạng nguồn gốc của một thông
báo và cung cấp một vài sự bảo đảm rằng nó là đúng sự thực. Thứ hai là kiểm tra đặc tính của
người đang logon một hệ thống và sau đó tiếp tục kiểm tra đặc tính của họ trong trường hợp ai
đó đang cố gắng đột nhiên kết nối và giả dạng là người sử dụng.
Với công nghệ mật mã trước đây chỉ có thể cho phép ta thực hiện được hai yêu cầu đầu
tiên. Ngày nay với sự phát triển của công nghệ này thì hai yêu cầu sau có thể thực hiện được
bằng chữ ký số và chứng thực chữ ký số thông qua mật mã có khoá công khai.
Ứng dụng mã hóa và bảo mật thông tin trong các hệ thống thương mại điện tử, giao dịch
chứng khoán,… đã trở nên phổ biến trên thế giới và sẽ ngày càng trở nên quen thuộc với
người dân Việt Nam. Tháng 7/2000, thị trường chứng khoán lần đầu tiên được hình thành tại
Việt Nam; các thẻ tín dụng bắt đầu được sử dụng, các ứng dụng hệ thống thương mại điện tử
Sinh viên thực hiện: Nguyễn Hoàng Tùng

Trang 1


Khóa luận tốt nghiệp

Ứng dụng chữ ký số trong thương mại điện tử

đang ở bước đầu được quan tâm và xây dựng. Do đó, nhu cầu về các ứng dụng mã hóa và bảo
mật thông tin trở nên rất cần thiết.
Chính vì những vấn đề thực tiễn trên, khóa luận với đề tài: “Ứng dụng Chữ ký số trong

Thương mại điện tử” sẽ tập trung nghiên cứu một trong những phương pháp bảo vệ an toàn
dữ liệu có tính an toàn cao nhất hiện nay là hệ mật mã có khoá công khai RSA, chữ ký số, các
lược đồ chữ ký số, chứng thực chữ ký số, công nghệ bảo mật sử dụng cho thương mại điện
tử…

II. Mục tiêu của đề tài:
Khóa luận sẽ tập trung tìm hiểu cơ sở toán học của lý thuyết mật mã, thuật toán và độ phức
tạp của hệ mật mã có khoá công khai RSA, hàm băm mật mã, các vấn đề về chứng thực thông
qua sơ đồ chữ ký RSA. Ngoài ra khóa luận này cũng trình bày và xây dựng một ứng dụng
trong việc chứng thực chữ ký số, và ứng dụng chữ ký số trong thương mại điện tử – cụ thể là
công nghệ bảo mật SSL trong việc chứng thực thông tin qua mạng.

III. Giải pháp hiện có:
1. Cơ sở pháp lý:
Ngày 23/02/2007, Chính phủ đã ban hành Nghị định 27/2007/NĐ-CP về giao dịch điện
tử trong hoạt động tài chính (nội dung tóm tắt Nghị định này được trình bày trong phần phụ
lục). Theo đó, cơ quan tài chính và tổ chức, cá nhân có tham gia giao dịch điện tử trong hoạt
động tài chính với cơ quan tài chính phải sử dụng chữ ký số.
Trước đó, Chính phủ đã ban hành Nghị định 26/2007/NĐ-CP (ngày 15/02/2007) quy
định chi tiết thi hành Luật Giao dịch điện tử về chữ ký số và dịch vụ chứng thực chữ ký
số. Theo đó, trong trường hợp pháp luật quy định văn bản cần có chữ ký thì yêu cầu đối với
một thông điệp dữ liệu được xem là đáp ứng nếu thông điệp dữ liệu đó được ký bằng chữ ký
số.
Trong trường hợp pháp luật quy định văn bản cần được đóng dấu của cơ quan, tổ chức
thì yêu cầu đó đối với một thông điệp dữ liệu được xem là đáp ứng nếu thông điệp dữ liệu đó
được ký bởi chữ ký số của người có thẩm quyền theo quy định của pháp luật về quản lý và sử
dụng con dấu và chữ ký số đó được bảo đảm an toàn theo quy định.
2. Việc ứng dụng chữ ký số tại Việt Nam:
Ở Việt Nam, một số đơn vị trong ngành kho bạc, ngân hàng, thương mại đã ứng dụng
thử nghiệm chữ ký số trong các giao dịch nội bộ (số lượng không nhiều). Trên thực tế, Việt

Nam vẫn đang trong giai đoạn xây dựng hành lang pháp lý và mô hình tổ chức để triển khai
chính thức công cộng.
Khái niệm “chứng thực số” và “chữ ký số” còn tương đối mới đối với người sử dụng tại
Việt Nam. Để hiểu được vai trò của nó trong giao dịch điện tử, người dùng đòi hỏi phải có
một kiến thức nhất định về công nghệ thông tin và mã hóa (mã hóa bất đối xứng, public key,
private key,…). Vì vậy một phần khách hàng vẫn chưa hưởng ứng dịch vụ này vì “không tin”
vào chứng thực số và chữ ký số.
Những tiện dụng đem lại từ việc triển khai chữ ký số, chứng thực số đã được thừa nhận
ở nhiều nước trên thế giới. Còn tại nước ta, cái "khó" trong việc thực hiện chữ ký số, chứng
thực số đang "bó" luôn thương mại điện tử, chính phủ điện tử.
Vấn đề mấu chốt hiện nằm ở chỗ: Chữ ký “tươi” và con dấu trên văn bản đã được công
nhận giá trị pháp lý từ lâu trong các văn bản pháp luật, nhưng chữ ký số và chứng thực số thì
chưa hề có. Khi chưa có căn cứ pháp lý rõ ràng và đảm bảo, sẽ không ai dám mạo hiểm
"quẳng" tiền của mình qua... Internet.
Sinh viên thực hiện: Nguyễn Hoàng Tùng

Trang 2


Khóa luận tốt nghiệp

Ứng dụng chữ ký số trong thương mại điện tử

Đến nay, còn có ý kiến tranh luận về việc có nên để doanh nghiệp, nhà đầu tư nước
ngoài trở thành nhà cung cấp chứng thực số (Certificate Authority - CA) hay chỉ để nhà nước
làm việc này. Từ năm 2003 cho đến nay, Công ty Phần mềm và Truyền thông VASC là nhà
cung cấp chứng thực số duy nhất tại Việt Nam.
VASC đã ra đời từ 9 năm nay (được thành lập theo quyết định số 257/2000/QĐ-TCCB
ngày 20/03/2000 của Tổng cục Bưu điện với tên gọi ban đầu là Công ty Phát triển Phần mềm
VASC. Ngày 29/08/2003, công ty được đổi tên thành Công ty Phần mềm và Truyền thông

VASC. VASC có trụ sở chính tại 33 Thái Hà, Hà Nội. VASC là doanh nghiệp thành viên
hạch toán phụ thuộc Tập đoàn Bưu chính Viễn thông Việt Nam, hoạt động theo Luật doanh
nghiệp Nhà nước) nhưng khách hàng lớn nhất đến thời điểm hiện tại vẫn là ACB. Công ty
VASC cũng thực hiện giao dịch với Ngân hàng Ngoại thương VCB tuy nhiên mới chỉ là
chuyển lương. VCB và VASC dùng lệnh chuyển khoản trực tiếp. VCB chấp nhận giao dịch
với CA của VASC chứ không dùng chứng thực số của VASC để cung cấp tới khách hàng.
Chữ ký số và chứng thực số hiện không héo nhưng khá ủ rũ, và Luật giao dịch điện tử
(xem phụ lục) được ban hành mới đây đang được kỳ vọng như một làn nước mát lành để các
hình thức giao dịch điện tử trở nên "tươi tắn" trong cuộc sống.
Khi luật có hiệu lực, thương mại điện tử sẽ bùng nổ mạnh bởi vì cung – cầu đều đã sẵn
sàng. Có người so sánh chữ ký số, chứng thực số và chữ ký "tươi" giống như cái cày và cái
máy cày. Khi có cái máy cày thì người làm đồng áng không ai không muốn sử dụng nó (cái
cày). Việc tạo ra lợi ích, sự thuận tiện, tăng hiệu quả công của cái máy cày quá rõ, phân biệt
nó với cái cày thì quá dễ và việc học lái máy cày thực tế cũng không không phải trong tình
trạng "cái khó bó cái khôn".

IV. Nội dung thực hiện:
Tìm kiếm và nghiên cứu các tài liệu về mã hoá, hệ mật mã, công nghệ bảo mật SSL,… của
các tác giả trong và ngoài nước, các bài báo, thông tin trên mạng,… sau đó chọn lọc và sắp
xếp lại theo ý tưởng của mình.
Khai thác các hệ thống mã nguồn mở (PHP, OpenSSL, GnuPG,…) và ngôn ngữ lập trình
hướng đối tượng C# để viết một ứng dụng nhỏ về mã hóa và chữ ký số, trang web bán hàng
qua mạng có hỗ trợ giao thức bảo mật SSL.

Sinh viên thực hiện: Nguyễn Hoàng Tùng

Trang 3


Ứng dụng chữ ký số trong thương mại điện tử


Khóa luận tốt nghiệp

Phần B: CƠ SỞ LÝ THUYẾT


I. Cơ sở toán học:
Trong phần này sẽ trình bày về một số cơ sở toán học của mã hóa, điều này sẽ giúp ta nắm
được một cách chi tiết hơn về phương pháp mã hóa.
1. Phép tính đồng dƣ và các vấn đề liên quan:
1.1. Số nguyên tố và các định lý cơ bản của Số học:
Như ta đã biết, ký hiệu Z là tập các số nguyên: …,-2,-1,0,1,2,… và N là tập các số tự
nhiên (tức là các số nguyên dương: 1,2,3,…).
Với a, b  Z, ta nói rằng b chia hết cho a nếu như b có thể viết thành tích của a với
một số nguyên khác; khi ấy ta cũng có thể nói rằng a chia hết b, hay a là một ước số của b, và
ký hiệu a | b. Ta có một số tính chất:
 Nếu a, b, c  Z và a | b thì a | bc;
 Nếu a | b và b | c thì a | c;
 Nếu a | b và a | c thì a | b  c;
 Nếu a | b và a không chia hết c thì a không chia hết cả b + c lẫn b – c.
Số tự nhiên lớn hơn 1 mà không chia hết cho số tự nhiên nào khác, trừ chính nó và 1,
thì được gọi là số nguyên tố. Nếu p là một số nguyên tố thì ta sẽ sử dụng ký hiệu p  || b để chỉ
rằng p  | b nhưng p  1 không chia hết b.
Định lý cơ bản của Số học: Mọi số nguyên lớn hơn 1 đều có thể được phân tích một
cách duy nhất dưới dạng tích các lũy thừa của các số nguyên tố khác nhau.
Như vậy, với mọi số nguyên n > 1, ta luôn tìm được các số nguyên tố khác nhau


p1 ,..., pr và các số tự nhiên 1 ,...,  r sao cho n  p1 1 ... pr r . Dễ dàng thấy rằng
(1  1)...( r  1) là số lượng các ước số dương của n.

Ví dụ: Với n = 90 ta có 90 = 21.32.51, cho nên nó có cả thảy (1 + 1)(2 + 1)(1 + 1) =
12 ước số dương.
Hệ quả: Nếu p là một số nguyên tố và p | ab thì ít nhất một trong 2 số a, b phải chia
hết cho p.
Ước chung lớn nhất của 2 số tự nhiên a, b là số lớn nhất trong tập các ước chung
của 2 số đó, được ký hiệu là gcd(a,b) hay đơn giản là (a,b). Như vậy, nếu d | a và d | b thì d |
gcd(a, b).
Khi 2 số tự nhiên có ước chung lớn nhất là 1 thì chúng được gọi là nguyên tố cùng
nhau.
1.2. Thuật toán Euclide và mở rộng:
Nếu như biết biểu thức khai triển thành tích của từng số nguyên a,b thì việc tính ước
chung lớn nhất của chúng, gcd(a,b), quả là dễ dàng (chỉ việc lấy tích của tất cả các thừa số
chung với số mũ bé hơn, trong 2 số mũ). Tuy nhiên trong thực tế tính toán với những số lớn
thì việc khai triển thành tích là việc vô cùng gian nan, cho nên việc tính ước chung lớn nhất
theo kiểu này là không “khả thi”. Một giải pháp đơn giản hơn nhiều (và luôn khả thi) là dùng
thuật toán Euclide.
Sinh viên thực hiện: Nguyễn Hoàng Tùng

Trang 4


Ứng dụng chữ ký số trong thương mại điện tử

Khóa luận tốt nghiệp

Thuật toán Euclide: Lấy số lớn hơn, ví dụ b, chia cho số bé hơn, ví dụ a, sẽ được số
dư r < a; lại coi a là số lớn còn r là số bé và tiếp tục quá trình trên, cho tới khi nào phép chia
có số dư là 0 thì dừng và số chia ở trong phép chia cuối chính là gcd(a,b).
Ví dụ: Tính gcd(781,330).
781 = 2.330 + 121

330 = 2.121 + 88
121 = 1.88 + 33
88

= 2.33 + 22

33

= 1.22 + 11

22

= 2.11 + 0,

vì số chia trong phép chia cuối cùng là 11 cho nên gcd(781,330) = 11.
Thực ra, theo thuật toán Euclide, ta thấy gcd(a,b) cũng chính là số dư ở trong phép
chia ngay trước phép chia cuối cùng. Từ phép chia đó, qua một loạt các bước thay thế liên
tiếp (ở mỗi bước số gạch dưới là số được thay thế), ta thấy rằng:
11

= 33 – 1.22
= 33 – (88 – 2.33)
= 3.33 – 88
= 3(121 – 1.88) – 88
= 3.121 – 4.88
= 3.121 – 4(330 – 2.121)
= 11.121 – 4.330
= 11(781 – 2.330) – 4.330
= 11.781 – 26.330,


và tương tự như vậy, trong trường hợp tổng quát, ta có:
gcd(a,b) = m.b + n.a,
trong đó m và n là những số nguyên thích hợp nào đó. Thuật toán tìm m và n như trên
được gọi là thuật toán Euclide mở rộng.
1.3. Phi hàm Euler:
Với n N , số lƣợng các số tự nhiên bé hơn n và nguyên tố cùng nhau với n được ký
hiệu là  (n) .
Ví dụ:  (5)  4, (6)  2, (7)  6 .
Rõ ràng, khi p là số nguyên tố thì mọi số tự nhiên bé hơn nó đều là nguyên tố cùng
nhau với nó và do đó ta có  ( p)  p 1. Tổng quát hơn, khi p là số nguyên tố và r là một số tự
nhiên bất kỳ thì  ( p r )  p r 1 ( p  1)  p r (1  1 / p ) .
Có thể chứng minh được rằng khi m, n là các số nguyên tố cùng nhau thì ta có

 (m.n)   (m). (n)

Sinh viên thực hiện: Nguyễn Hoàng Tùng

Trang 5


Ứng dụng chữ ký số trong thương mại điện tử

Khóa luận tốt nghiệp

và do đó để tính  của một số tự nhiên nào đó người ta phân tích nó ra thành các
thừa số nguyên tố rồi áp dụng các công thức trên.
Ví dụ:  (720)   (2 4.32.5)   (2 4 ). (32 ). (5)  2 3 (2  1).3(3  1).(5  1)  192 .
Ta đã biết rằng việc phân tích các số lớn ra các thừa số nguyên tố là rất gian nan, cho
nên việc tính Phi hàm của một số lớn cũng là như vậy.
1.4. Phép tính đồng dƣ và phƣơng trình đồng dƣ:

Có 2 cách hiểu về đồng dư: Một của các nhà số học và một của các chuyên gia máy
tính. Các nhà số học nói rằng a  b(modm) (đọc là “a đồng dư với b theo môđun m”) nếu a
và b sai khác nhau một bội của m, còn các chuyên gia máy tính thì bảo rằng a(mod m)  b
nếu số dư tìm được trong phép chia a và b cho m là bằng nhau. Cả 2 cách hiểu trên đều có
cùng bản chất nên ta không ngại khả năng nhầm lẫn, mà chỉ nên lưu ý làm việc ở đâu thì nói
như thế nào.
Phép tính đồng dư theo mod m dẫn đến việc tách tập số nguyên ra thành m lớp, mỗi
lớp chứa các số nguyên đồng dư với nhau theo mod m. Tập các lớp này được ký hiệu là Z/mZ
và chứa đúng m phần tử. Mỗi lớp trong tập Z/mZ có đúng 1 số nằm trong đoạn [0,m – 1], cho
nên mỗi số nguyên trong đoạn này được xem là “đại diện” của một lớp.
Một số tính chất của phép tính đồng dư:
 a  a(modm) ;
 Nếu a  b(modm) thì b  a(modm) ;
 Nếu a  b(modm) và b  c(modm) thì a  c(modm) ;
 Nếu a  b(modm) , c  d (modm) thì

a  c  b  d (modm) , a.c  b.d (mod m) .
Như vậy, vì những tính chất trên của phép tính đồng dư ta có thể tự do thực hiện các
phép tính số học thông thường trên tập Z/mZ.
Nếu x là một phần tử trong Z/mZ và gcd(x,m) = 1 thì tồn tại các số u, v sao cho ux +
vm = 1, tức là u.x  1(mod m) , nên người ta nói x có nghịch đảo (trong Z/mZ) là u, và thường
ký hiệu phần tử nghịch đảo này là x 1 hay 1/x.
Ví dụ: Xét tập Z/9Z = {0,1,2,…,8}. Để tìm phần tử nghịch đảo của 7 (tức là 1/7) ta
dùng thuật toán Euclide mở rộng, tức là phân tích:
9 = 1.7 + 2, 7 = 3.2 + 1, 2 = 2.1 + 0,
rồi thế ngược trở lại ta có:
1 = 7 – 3.2 = 7 – 3(9 – 1.7) = 4.7 – 3.9
và suy ra 4.7  1(mod9) , hay là 7 1  4(mod 9) .
Tập các phần tử trong Z/mZ mà có nghịch đảo thường được ký hiệu là Z/mZ*. Rõ
ràng tập này có số phần tử bằng  (m) , và trên tập này, ngoài các phép tính cộng, trừ, nhân, ta

còn có thể đưa vào phép chia.
Nếu a  b(modm) , c  d (modm) với gcd(c,m) = 1, thì
a.c 1  b.d 1 (mod m) .
Sinh viên thực hiện: Nguyễn Hoàng Tùng

Trang 6


Ứng dụng chữ ký số trong thương mại điện tử

Khóa luận tốt nghiệp

Ví dụ: Với Z/9Z = {0,1,2,…,8}, Z/9Z* = {1,2,4,5,7,8}, ta có 7 1  4(mod 9) và
phép chia của 2 cho 7 (trong Z/9Z*) được thực hiện như sau:

2
 2.7 1  2.4  8(mod 9) .
7
Ta đương nhiên cũng có 2  7.8(mod9) vì 7.8 = 56 = 6.9 + 2.
Phƣơng trình đồng dƣ tuyến tính: ax  b(modm)
Khi gcd(a,m) = 1 (tức là khi a là phần tử của Z/mZ*) thì ta có ngay nghiệm:
x  a 1b(mod m) .

Khi gcd(a,m) = g thì có 2 khả năng xảy ra:
 Phương trình có nghiệm khi g chia hết b, vì rằng khi ấy phương trình đã cho
tương đương với phương trình (a / g ) x  b / g (mod m / g ) , trong đó hệ số a / g là nguyên tố
cùng nhau với m/ g (đã xét ở trên).
 Phương trình vô nghiệm nếu g không chia hết b, vì hiệu của 2 số chia hết cho g
thì không thể là một số không chia hết cho g.
1.5. Định lý Fermat và các mở rộng:

Định lý Fermat (bé): Nếu p là một số nguyên tố còn a là một số nguyên thì
a  a(mod p) . Nếu p không chia hết a (tức là a(mod p)  0 ) thì a p 1  1(mod p ) .
p

Ví dụ: Dễ dàng thấy rằng:
4 7  4(mod 7) ; 4 71  1(mod 7) ; 1471  0(mod 7) .

Định lý mở rộng (Euler): Nếu gcd(a,m) = 1 thì a ( m )  1(mod m). Trong trường hợp
riêng, khi m là số nguyên tố thì  (m)  m  1 và ta có định lý Fermat.
Ví dụ: Với m = 10 ta có  (10)   (2). (5)  1.4  4 và do đó
7 4  1(mod10) ; 9 4  1(mod10) ; 214  1(mod10) ;…

Hệ quả 1: Nếu gcd(c,m) = 1 và a  b(mod (m)) với a, b là các số tự nhiên, thì
c  c (modm) và suy ra (theo cách viết của các chuyên gia tin học) ta có:
a

b

c a mod m  c a mod ( m) mod m .
Thật vậy, a  b(mod (m)) nên a  b  k (m) , với k là một số nguyên nào đó, và
vì vậy c  c b k ( m )  c b .(c ( m ) ) k  c b .1(mod m) , theo định lý Euler.
a

Nhận xét: Hệ quả trên, trong rất nhiều trường hợp, giúp ta giảm nhẹ việc tính toán
đồng dư của lũy thừa bậc cao một cách đáng kể.
Ví dụ: Tính 21004(mod 15). Ta lưu ý rằng  (15)   (5). (3)  4.2  8 và
1004 4(mod8) , cho nên từ kết quả trên ta có ngay:
21004 (mod15)  2 4 (mod15)  16(mod15)  1 .

Hệ quả 2: Nếu e, d là các số nguyên thỏa mãn e.d  1(mod (m)) thì, với mọi số c

nguyên tố cùng nhau với m, ta có (c e ) d  c(mod m) .
Sinh viên thực hiện: Nguyễn Hoàng Tùng

Trang 7


Khóa luận tốt nghiệp

Ứng dụng chữ ký số trong thương mại điện tử

Rõ ràng, với a = ed và b = 1, từ Hệ quả 1 ta có ngay Hệ quả 2. Hệ quả này đóng
vai trò then chốt trong việc thiết lập các hệ mã mũ sau này (kể cả hệ mã RSA).
1.6. Tính toán đồng dƣ của lũy thừa bậc lớn:
Như đã thấy, Hệ quả 1 của Định lý Euler có thể giúp ta giảm nhẹ việc tính toán đồng
dư của lũy thừa (bậc cao) một cách rất đáng kể. Tuy nhiên nó chỉ thực sự hiệu quả khi a lớn
hơn hẳn  (m) , vì chỉ khi ấy thì b mới thực sự nhỏ hơn a. Trong thực tế tính toán cũng thường
đòi hỏi ta phải làm việc với những số m lớn, và cũng thường kéo theo  (m) khá lớn, thậm chí
lớn hơn a. Khi ấy người ta phải dùng các kỹ thuật khác, và một trong những cách hay được
dùng nhất là phương pháp bình phương liên tiếp sau đây.
Để hiểu rõ phương pháp này, ta chỉ cần đưa ra một ví dụ minh họa: Tính 8743(mod
103). Nếu làm xong phép tính lũy thừa rồi mới tính đồng dư thì không những sẽ phải làm việc
với những số rất lớn, mà còn gặp nguy hiểm ở chỗ “tràn bộ nhớ”. Muốn tránh điều này, trước
hết người ta tiến hành khai triển số mũ dưới dạng cơ số 2, tức là:
43 = 32 + 8 + 2 + 1 = 25 + 23 + 21 + 20,

(*)

rồi tính liên tiếp các đồng dư bình phương, như sau:
87 (mod 103) = 87,
872 (mod 103) = 50,

874 (mod 103) = 502 (mod 103) = 28,
878 (mod 103) = 282 (mod 103) = 63,
8716 (mod 103) = 632 (mod 103) = 55,
8732 (mod 103) = 552 (mod 103) = 38,
sau đó tổng hợp lại, căn cứ theo khai triển (*), ta lấy tích của các lũy thừa bậc
25,23,21,20 (rút gọn theo modulo 103) và sẽ thu được kết quả là:
8743 (mod 103) = 38.63.50.87 (mod 103) = 85.
Theo cách này, ta chỉ cần làm việc với những số vừa và nhỏ, không những nhanh mà
còn có thể làm việc cả trên máy tính bấm tay.
Phương pháp trên dễ dàng đưa ra thuật toán tổng quát, lập trình và tính toán với
những số lớn hơn rất nhiều.
2. Hàm một chiều và hàm một chiều có “cửa sập”:
Hàm f(x) được gọi là hàm một chiều (hay một phía), nếu tính y = f(x) là dễ, nhưng việc
tính ngược lại x  f 1 ( y ) là rất khó (theo nghĩa đòi hỏi thời gian tính toán cực lớn, đến mức
mà không máy tính nào đáp ứng nổi).
Ví dụ: Hàm f(x) = gx (mod p) (p là số nguyên tố, g là phần tử nguyên thủy theo
modulo p) là hàm một phía. Vì biết x tính f(x) là khá đơn giản, nhưng biết f(x) để tính x thì với
các thuật toán đã biết hiện nay đòi hỏi một khối lượng tính toán cỡ O(exp(lnplnlnp)112) phép
tính (nếu p là số nguyên tố cỡ 200 chữ số thập phân, thì với khối lượng tính toán trên đòi hỏi
một máy tính có tốc độ xử lý 1 tỷ phép tính/giây làm việc không nghỉ trong khoảng 3000
năm).
Hàm f(x) được gọi là hàm một chiều (hay một phía) có cửa sập, nếu tính y = f(x) là dễ,
tính x  f 1 ( y ) là rất khó, nhưng có cửa sập z để tính x  f 1 z ( y ) là dễ.

Sinh viên thực hiện: Nguyễn Hoàng Tùng

Trang 8


Khóa luận tốt nghiệp


Ứng dụng chữ ký số trong thương mại điện tử

Ví dụ: Cho n = pq là tích của hai số nguyên tố lớn, a là số nguyên, hàm f(x) = xa
(mod n) là hàm một chiều có cửa sập, nếu chỉ biết n và a thì tính x  f 1 ( y ) là rất khó, nhưng
nếu biết cửa sập, chẳng hạn hai thừa số của n, thì sẽ tính được f 1 ( y ) khá dễ.

II. Những khái niệm cơ bản về mã hóa:
1. Một số thuật ngữ:
Văn bản (plaintext) là một thông báo gốc cần chuyển, được ghi bằng hình ảnh, âm
thanh, chữ số, chữ viết,… Về sau, khi đưa ra các ví dụ, ta thường xem các văn bản được viết
bằng chữ viết, hoặc bằng chữ số. Tuy nhiên, ngày nay mọi tín hiệu (âm thanh, hình ảnh) đều
có thể được số hóa (thành các xâu ký tự số), cho nên việc nghiên cứu trên các văn bản số
không hạn chế các ứng dụng đa dạng của nó.
Mã hóa (encryption) là việc “ngụy trang” văn bản (thông tin nói chung) sang một dạng
khác để cho những người “ngoài cuộc” không thể đọc được, phục vụ cho nhu cầu trao đổi
thông tin, dữ liệu và các giao dịch tài chính, thương mại,… Quá trình “ngụy trang” văn bản
gọi là lập mã còn quá trình “khôi phục” lại văn bản nguồn (từ văn bản ngụy trang) gọi là giải
mã. Nguyên tắc chung của mã hóa là việc giải mã phải rất dễ dàng với “người trong cuộc”,
nhưng rất khó khăn (thậm chí là không thể thực hiện được) đối với “người ngoài cuộc”. Văn
bản gốc (trước khi mã hóa) thường được ký hiệu là PT (plaintext), hay đơn giản là P. Văn bản
mã (đã được cải trang) thường được ký hiệu là CT (ciphertext), hay đơn giản là C.
Hệ mã (cryptosystem) là một phương pháp ngụy trang văn bản. Nghệ thuật tạo ra và sử
dụng các hệ mã là thuật mã hóa hay mật mã học (cryptography).
Phân tích mã (cryptanalysis), hay thám mã, là nghệ thuật phá các hệ mã (nhìn xuyên
qua các phương pháp ngụy trang).
Công nghệ mã (cryptology) là việc nghiên cứu tổng hợp cả cryptography và
cryptanalysis.
Lập mã (encrypt) là việc biến văn bản nguồn thành văn bản mã.
Giải mã (decrypt) là việc đưa văn bản đã mã hóa trở về dạng văn bản nguồn.

Định mã (encode/decode) là việc định ra phép tương ứng giữa các chữ và số (việc này
không bao giờ được xem là bí mật, vì máy tính ngày nay dễ dàng tìm ra phép tương ứng này
trong một thời gian ngắn).
Mã dòng (stream cipher) là việc tiến hành mã hóa liên tục trên từng ký tự (hay từng bit).
Mã khối (block cipher) là việc tiến hành mã hóa trên từng khối văn bản.
Phép mã chuyển vị (transposition cipher) là việc tráo đổi vị trí giữa các ký tự (các bit)
trong văn bản.
Phép mã thay thế (substitution cipher) là việc thay thế một ký tự này bằng một ký tự
khác (mà không thay đổi vị trí).
Phép mã tích hợp (product cipher) là việc tiến hành xen kẽ 2 phép mã chuyển vị và thay
thế.
Chìa khóa mã (cipher key) là bí quyết lập mã và giải mã. Nếu như quy trình mã hóa
được xem là một hàm y = f(x,k), trong đó x là đầu vào (văn bản nguồn), y là đầu ra (văn bản
mã), f là phương pháp (hay thuật toán) mã hóa, còn k là một tham số điều khiển, thì bí quyết
trước đây thường bao gồm cả phương pháp f, và tham số k (nếu có). Nhu cầu của thực tiễn
hiện nay đã khiến công nghệ mã hóa hiện đại phải thay đổi quan điểm này. Phương pháp f là
cái thường không chỉ do một người nắm, nên không thể giữ được bí mật lâu, và do đó phải
Sinh viên thực hiện: Nguyễn Hoàng Tùng

Trang 9


Ứng dụng chữ ký số trong thương mại điện tử

Khóa luận tốt nghiệp

được xem là công khai. Tham số điều khiển k, có tác dụng làm thay đổi kết quả mã hóa (tùy
thuộc vào giá trị của nó), được xem là chìa khóa mã. Thông thường, nó là một xâu bit (hay
một con số nào đó) mà người ta có thể giữ riêng cho mình.
Hệ mã bí mật (secret key cryptosystem – SKC) hay hệ mã đối xứng (symmetric

cryptosystem) là hệ mã mà trong đó việc lập mã và giải mã cùng sử dụng chung một chìa
khóa mã (bí mật).
Hệ mã công khai (public key cryptosystem – PKC) hay hệ mã phi đối xứng
(assymmetric cryptosystem) là hệ mã mà trong đó việc lập mã và giải mã sử dụng 2 chìa khóa
mã riêng biệt, từ chìa này không thể tìm ra chìa kia một cách dễ dàng; chìa dùng để lập mã
thường được thông báo công khai, còn chìa dành cho việc giải mã phải luôn giữ bí mật,
thường được gọi là chìa khóa riêng.
2. Vì sao cần mã hóa?
Đó là một câu hỏi dễ trả lời, bởi vì trong mọi hoạt động của con người, nhu cầu trao đổi
thông tin mật giữa các thành viên trong một tổ chức nào đó là hết sức cần thiết. Mục đích của
mã hóa là che giấu thông tin để bảo vệ được sự bí mật của tài liệu, dữ liệu đặc biệt quan trọng.
Ngày nay, với sự phát triển không ngừng của các phương tiện kỹ thuật hiện đại thì việc bảo vệ
thông tin mật ngày càng trở nên hết sức khó khăn. Các hình ảnh trên mặt đất, các cuộc đàm
thoại thông qua vô tuyến hoặc hữu tuyến, các thông tin truyền qua mạng Internet,… đều có
thể dễ dàng bị đón bắt thông qua các thiết bị điện tử trên mặt đất hoặc thông qua các vệ tinh.
Vì vậy, phương pháp tốt nhất để giữ gìn bí mật thông tin là mã hoá chúng bằng một hệ mật
mã nào đó trước khi truyền đi.
Dĩ nhiên, việc mã hóa thông tin trước khi truyền đi và việc giải mã các thông tin nhận
được sẽ tạo nên một số khó khăn: giảm tốc độ truyền tin, tăng chi phí… Một hệ mã lý tưởng
là một hệ mã đảm bảo được các yêu cầu: thời gian mã hóa và giải mã nhanh, độ bảo mật cao
(gây khó khăn tối đa cho người thám mã). Các yêu cầu đó luôn mâu thuẫn nhau, và người sử
dụng cần hiểu rõ công nghệ mã hóa để có thể lựa chọn hệ mã thích hợp cho từng công việc và
mục đích.
Có nhiều phương pháp mật mã khác nhau, tuy vậy tất cả chúng có thể biểu thị bởi mô
hình tổng quát như mô tả bên dưới:

Hình 1: Các ký hiệu của phép mã hóa và phép giải mã

Trong đó: E (Encipherment): Hàm lập mã,
D (Decipherment): Hàm giải mã,

k (Key): Khóa mã.
Một cách tổng quát, người ta đã đưa ra định nghĩa về một hệ mật mã như sau: Một hệ
mật mã (cryptosystem) là một bộ năm thành phần (P, C, K, E, D) . Trong đó:
(1) P

là không gian bản rõ, tập hữu hạn các bản rõ có thể,

Sinh viên thực hiện: Nguyễn Hoàng Tùng

Trang 10


Ứng dụng chữ ký số trong thương mại điện tử

Khóa luận tốt nghiệp
(2) C

là không gian bản mã, tập hữu hạn các bản mã có thể,

(3) K

là không gian khóa, tập hợp hữu hạn các khóa có thể,

(4) Với mỗi khóa k  K, tồn tại luật mã hóa Ek  E và luật giải mã Dk  D tương ứng,
trong đó:

Ek: P

C


Dk: C

P

là 2 ánh xạ thỏa mãn Dk(Ek(x)) = x, với x  P.
Tính chất (4) là tính chất chính và quan trọng của một hệ thống mã hóa. Tính chất này
bảo đảm việc mã hóa một mẩu tin x  P bằng luật mã hóa Ek có thể được giải mã chính xác
bằng luật Dk.
3. Mã đối xứng và mã phi đối xứng:
Hai thuật ngữ này đã được đưa ra ở phần trên, nhưng ta cần làm rõ hơn các khái niệm
quan trọng này.
Khái niệm mã đối xứng được dùng để chỉ các hệ mã mà trong đó, khi biết khóa lập mã,
ta có thể tìm ra khóa giải mã, đồng thời, việc giải mã cũng đòi hỏi thời gian như việc lập mã.
Cho đến những năm cuối của thập niên 70 của thế kỉ 20, người ta mới chỉ biết đến một loại
mã như vậy. Đối với các hệ mã này, cần phải giữ bí mật khóa lập mã, vì để lộ nó cũng tức là
để lộ cách giải mã. Do đó, chỉ những người hoàn toàn chia sẻ mọi thông tin mật với nhau mới
có thể trao đổi với nhau bằng mật mã (thường chỉ được dùng trong quân sự, ngoại giao vì các
bên có cùng chung quyền lợi nên sẵn sàng bảo vệ bí mật cho nhau trong quá trình trao đổi
thông tin). Các hệ mã đối xứng đang được sử dụng phổ biến hiện nay là DES (Data
Encryption Standard), 3DES (Triple DES), IDEA (International Data Encryption Algorithm),
AES (Advanced Encryption Standard).
DES do hãng IBM đề xuất, lúc ban đầu được dùng trong nội bộ nhưng sau đó được chấp
nhận đưa ra dùng chung cho các ứng dụng khác. Thuật toán chuẩn DES được ứng dụng rộng
rãi trong việc bảo vệ thông tin mật. Độ mật của DES phụ thuộc vào không gian khoá. Nó sử
dụng 16 vòng lặp tương tự nhau, làm việc với các khối dữ liệu 64 bit, và sử dụng khóa ban
đầu có độ dài 56 bit để sinh 16 khóa con (với độ dài 48 bit). Người lập mã và người giải mã
đều dùng cùng một chìa.
Ban đầu, DES xem ra có vẻ như là vững chắc. Tuy nhiên, sau một thời gian dài sử dụng,
những điểm yếu của DES cũng đã dần bộc lộ. Với độ dài của chìa khóa chỉ vẻn vẹn có 56 bit,
số lượng chìa (có thể sinh ra) là không đủ nhiều so với số lượng chip và tốc độ xử lý của các

siêu máy tính ngày nay, nhất là các dàn máy song song chuyên dụng phục vụ cho việc giải
mã.
Năm 1992, người ta đã cải tiến hệ mã DES để đưa ra DES bội 3 (3DES), tức là mã hóa
mẩu tin 3 lần (với cùng chuẩn DES nhưng theo quy trình lập mã và giải mã xen kẽ với các
chìa khác nhau), độ bảo mật tăng lên nhiều.
Thuật toán mã hóa dữ liệu quốc tế IDEA có 8 vòng, sử dụng 52 chìa khóa con (được
sinh ra từ một chìa khóa ban đầu 128 bit). Mỗi chìa con có độ dài 16 bit. Tại mỗi vòng của
IDEA sử dụng tới 6 chìa con (4 cái dùng để “chỉnh trang” dữ liệu trước khi vào vòng, còn 2
cái dùng cho việc biến đổi bên trong của từng vòng) và sau vòng cuối cùng nó sử dụng thêm 4
chìa khóa con nữa (tổng cộng là 8 x (2 + 4) + 4 = 52). Mỗi khối dữ liệu trong IDEA có độ dài
64 bit được chia thành 4 phần, mỗi phần dài 16 bit.
 Nhược điểm của hệ mã đối xứng:
Sinh viên thực hiện: Nguyễn Hoàng Tùng

Trang 11


Khóa luận tốt nghiệp

Ứng dụng chữ ký số trong thương mại điện tử

- Nếu chìa khóa mà bị lộ thì địch thủ không những biết được các thông tin trao đổi
giữa các bên mà còn có thể giả làm “bên này” để tạo ra các thông tin giả đánh lừa “bên nọ”.
Vì vậy cần phải thay đổi chìa khóa thường xuyên.
- Chìa khóa phải được phân phối một cách tuyệt mật. Với các hệ mã sử dụng trên
mạng diện rộng thì đây là việc rất khó khăn (người ta phải “chuyền tay” các chìa đến nơi
nhận).
- Nếu cứ mỗi cặp 2 người sử dụng riêng một chìa thì việc trao đổi thông tin giữa n
người phải sử dụng tới C 2 n chìa (ví dụ với 10 người phải dùng 45 chìa, với 11 người phải
dùng 55 chìa,…) và như vậy số lượng chìa tăng lên rất nhanh theo số người trong hệ thống.

Mỗi cá thể phải nhớ và giữ bí mật quá nhiều khoá.
Sự phát triển của xã hội dẫn đến việc ngày nay mật mã không những chỉ được dùng
trong bí mật quân sự và ngoại giao, mà còn dùng, và có thể chủ yếu là dùng trong bí mật kinh
tế, tài chính, thương mại. Vì thế xuất hiện những đòi hỏi mới đối với các hệ mật mã hiện đại,
khác về nguyên tắc so với mật mã thường dùng trước đây. Mật mã có khóa công khai (mã phi
đối xứng) ra đời để khắc phục nhược điểm của mã đối xứng.

III. Mật mã có khóa công khai:
1. Giới thiệu về mật mã có khóa công khai:
Năm 1976, Diffie và Hellman công bố một phát kiến mới mang tên “Các hướng mới
trong mật mã” (New directions in cryptography). Công trình đề xuất một dạng mới của hệ
thống mật mã, trong đó người gửi và người nhận sử dụng các khoá mã khác nhau nhưng có
mối liên hệ với nhau, và một trong hai khoá mã đó được giữ bí mật. Bên nhận dữ liệu giữ một
khoá bí mật (khóa riêng) cho phép giải mã với khoá đó, còn bên gửi sử dụng một khoá khác
có liên hệ với khoá riêng trên để mã hoá dữ liệu, khoá đó gọi là khoá công khai. Hệ thống
dùng khoá như vậy gọi là “hệ thống không đối xứng” bởi vì nó bảo đảm bí mật cho việc
truyền tin chỉ một chiều, muốn thiết lập bí mật truyền tin theo chiều ngược lại phải sử dụng
một cặp khoá thứ hai.
Một hệ thống mật mã có khóa công khai có cái lợi là không cần phải truyền khóa bí mật
giữa A và B với sự thiết lập một kênh được bảo vệ. Việc truyền một khóa bí mật trên đường
truyền có thể có nhiều nguy hiểm không thể lường trước được và các thể thức của chúng cũng
phức tạp, rườm rà.
Cặp khoá công khai được tạo ra theo một phương pháp đặc biệt có quan hệ với nhau và
được chọn trong nhiều khoá có thể (trong đó nếu khoá này dùng để mã hoá thì khoá kia dùng
để giải mã). Hình bên dưới mô tả rõ ràng mối quan hệ đó.
Trong đó:
 ks (seed) là mầm khóa hay khóa khởi thảo được chọn theo phương pháp ngẫu
nhiên.
 Hai thuật toán F, G dùng để tính toán các khoá. Bên nhận dùng hai thuật toán F và
G cùng với mầm khoá ks để tạo ra hai khoá: khoá riêng kd dùng để giải mã được giữ lại sử

dụng riêng cho mình còn khóa ke được công khai cho bên gửi dùng để mã hóa thông tin gửi
cho bên nhận.
 E ke là thuật toán mã hóa với khóa công khai ke, Dkd là thuật toán giải mã với khóa
riêng kd (hai thuật toán E và D là đồng nhất, các kết quả mà chúng đưa ra khác nhau là bởi vì
chúng sử dụng các khóa khác nhau).

Sinh viên thực hiện: Nguyễn Hoàng Tùng

Trang 12


Ứng dụng chữ ký số trong thương mại điện tử

Khóa luận tốt nghiệp

Hình 2: Sơ đồ khối nguyên lý hoạt động của mật mã khoá công khai

Các công bố đầu tiên về mật mã khoá công khai của Diffie và Hellman chỉ đưa ra ý
tưởng là có thể thực hiện được với những hệ mật mã như vậy, chứ không chỉ rõ cách xây
dựng các hàm mã hoá E, giải mã D, thuật toán sinh khoá F, G thực hiện cụ thể như thế nào.
2. Nguyên tắc chung của mã hóa với khóa công khai:
Giả sử trong hệ thống đang xét có n cá thể cùng trao đổi các thông tin mật. Mỗi cá thể
chọn cho mình một khóa lập mã k và một công thức mã hóa Ek được thông báo công khai.
Như vậy có n khóa lập mã công khai k1, k2,…, kn. Khi cá thể thứ i muốn gởi thông báo cho cá
thể thứ j, thông báo này được chuyển thành số, nhóm thành từng “khối” với độ dài nào đó.
Sau đó mỗi khối P trong văn bản được mã hóa bằng khóa lập mã k j (đã được thông báo công
khai) thông qua công thức mã hóa Ek j của cá thể thứ j, và gởi đi dưới dạng:
C  Ek j (P) .

Để giải mã thông báo này, cá thể thứ j chỉ cần dùng khóa giải mã (bí mật riêng của

mình) Dk j :
Dk j (C )  Dk j Ek j ( P)  P ,

bởi vì Ek j và Dk j là các khóa lập mã và giải mã của cùng một cá thể thứ j. Các cá thể
khác trong hệ thống, nếu nhận được văn bản mật, cũng không thể nào giải mã, vì việc biết
khóa lập mã Ek j không cho phép tím ra khóa giải mã Dk j trong thời gian chấp nhận được.
Các nguyên tắc vừa trình bày trên đã được cụ thể hóa bằng hệ mã khóa công khai được
phát minh năm 1978 bởi Rivest, Shamir và Adleman (thường được gọi là hệ mã RSA).
3. Hệ mã RSA:
Thuật toán này được xây dựng dựa trên độ khó của việc phân tích các số lớn thành các
thừa số, nhất là các thừa số nguyên tố.
Thuật toán RSA có hai khóa: khóa công khai và khóa riêng (bí mật). Mỗi khóa là một
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 riêng 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 riêng mới có thể giải mã được.
Sinh viên thực hiện: Nguyễn Hoàng Tùng

Trang 13


Khóa luận tốt nghiệp

Ứng dụng chữ ký số trong thương mại điện tử

Theo sơ đồ ở hình 2, với khoá công khai ke, hàm E (là một hàm công khai) dùng tham
số đó để tạo ra bản mã C  Eke (P) , nhưng phải đảm bảo yêu cầu của phép mã hoá là không
thể để kẻ xâm nhập có thể tính được P từ C. Vậy Eke phải là hàm một chiều, khi đó hàm Dkd là
nghịch đảo của Eke . Nếu không biết được khoá bí mật kd thì không thể tính được Dkd , kd được
cấu thành như là một loại “cửa sập”. Vì vậy hàm mã hoá E là hàm một chiều có cửa sập.

3.1. Thuật toán:
 Thuật toán sinh khóa:
• Tóm lược: Mỗi cá thể tạo một khóa công khai và một khoá bí mật tương ứng.
• Các bước sinh khóa:
(1)

Sinh ngẫu nhiên hai số nguyên tố lớn p và q (p  q),

(2)

Tính tích n = p.q và  (n)  ( p 1)(q 1) là giá trị hàm Euler của n,

(3)

Chọn ngẫu nhiên một số nguyên e sao cho 1 < e <  (n) và (e,  (n) ) = 1,

(4)

Sử dụng thuật toán Euclide mở rộng để tính một số nguyên d duy nhất,
với 1 < d <  (n) thỏa mãn ed  1(mod (n)) ,

(5)

Khóa công khai là cặp số (n, e), khóa bí mật là cặp số (n, d).

• Lưu ý: Nên chọn e là số nguyên tố tuỳ ý không quá nhỏ. Số e được chọn nhất
thiết phải thoả mãn 2e > n. Nếu điều kiện này không thoả mãn thì có khả năng xảy ra trường
hợp Pe < n, và như vậy để tìm ra P chỉ cần thực hiện phép “khai căn thông thường” bậc e của
C vì khi ấy P e (mod n)  P e .
• Các số nguyên d và e trong thuật toán sinh khóa RSA được gọi là số mũ mã hóa

và số mũ giải mã. Số n được gọi là modulo.
 Thuật toán mã hóa:
• Giả sử A cần mã hoá một thông điệp P để gửi đến B.
• Các bước mã hóa (A phải làm như sau):
(1)

Thu nhận khóa công khai (n,e) của B,

(2)

Biểu diễn thông điệp P dưới dạng một số nguyên m trong khoảng [0,n - 1],

(3)

Tính C  m e (mod n) ,

(4)

Gởi bản mã C cho B.

 Thuật toán giải mã:
Để được bản rõ P từ C, B phải làm như sau: Dùng khóa riêng (n, d) của B tính
m  C (modn) , sau đó khôi phục thông điệp từ hàm ngược của hàm số hoá để có P.
d

 Ví dụ minh họa:
• Sinh khóa:
- Chọn ngẫu nhiên 2 số nguyên tố p = 43, q = 59,
- Ta có: n = pq = 43.59 = 2537,  (n) = 42.58 = 2436.
- Chọn e = 13 thỏa (e,  (n) ) = (13, 2436) = 1.

Sinh viên thực hiện: Nguyễn Hoàng Tùng

Trang 14


Ứng dụng chữ ký số trong thương mại điện tử

Khóa luận tốt nghiệp

- Tìm d là nghịch đảo của e = 13 mod 2436 tức là ed  1(mod 2436) .
Theo thuật toán Euclide mở rộng dễ dàng tính được d = 937.
- Vậy: khóa công khai là (2537, 13), khóa riêng là (2537, 937).
• Mã hóa:
Để mã hóa thông điệp P: PUBLIC KEY CRYPTOGRAPHY.
- Giả sử ta có bảng chữ cái ứng với các chữ số sau:
A

B

C

D

E

F

G

H


I

J

K

L

M

00

01

03

03

04

05

06

07

08

09


10

11

12

N

O

P

Q

R

S

T

U

V

W

X

Y


Z

13

14

15

16

17

18

19

20

21

22

23

24

25

- Từ thông điệp gốc (để thuận tiện ta loại bỏ đi các khoảng trắng) dựa vào bảng

trên ta tiến hành số hóa, nhóm lại thành từng khối 4 chữ số (để P được số hoá thành một số
nguyên m nằm trong khoảng [0,n - 1]), ta thu được:
1520 0111 0802 1004 2402 1724 1519 1406 1700 1507 2423
Khối cuối cùng chỉ có 2 chữ số, ta thêm một ký tự giả X = 23 vào cho
hoàn chỉnh một khối có 4 chữ số.
- Mã hóa riêng từng khối bằng hàm mã hóa C  m13 (mod 2537)
Ví dụ với khối đầu tiên (1520), ta thu được khối mã
C1 = (1520)13 mod 2537 = 95
Tương tự như vậy, ta thu được bản mã C của thông điệp:
0095 1648 1410 1299 0811 2333 2132 0370 1185 1457 1084
• Giải mã:
- Để giải mã khối thông điệp C, ta dùng hàm giải mã: m  C 937 (mod 2537)
Ví dụ với khối mã đầu tiên (0095), ta thu được khối rõ
m1 = (0095)937 mod 2537 = 1520
Tương tự như vậy, ta thu được bản rõ m (đã số hóa) của thông điệp:
1520 0111 0802 1004 2402 1724 1519 1406 1700 1507 2423
- Dựa vào bảng chữ cái trên ta có bản rõ P ban đầu (sau khi thêm vào khoảng
trắng và loại bỏ ký tự giả).
3.2. Độ an toàn của RSA:
Tính mật của RSA chủ yếu dựa vào việc bảo vệ khoá riêng d và giữ bí mật các số
nguyên tố p và q.
Nếu ta chọn các số p và q khoảng 100 chữ số thập phân, thì n sẽ có khoảng 200 chữ
số thập phân. Để phân tích một số nguyên lớn như thế, với các thuật toán nhanh nhất hiện nay
và với những máy tính hiện đại nhất, ta mất hàng tỉ năm.
Sau khi tìm ra hệ mã, Rivest, Shamir và Adleman có viết một bài báo công bố phát
minh mới dưới dạng một thông báo khoa học của MIT và, trên cột Martin Gradner’s của tờ
Sinh viên thực hiện: Nguyễn Hoàng Tùng

Trang 15



×