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

Nghiên cứu các công nghệ xác thực chữ ký số, áp dụng trong việc quản lý công văn tại trường đại học kỹ thuật y tế hải dương

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.18 MB, 78 trang )

BỘ GIAO THÔNG VẬN TẢI

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM

KS. ĐỖ TRỌNG TIẾN

NGHIÊN CỨU CÁC CÔNG NGHỆ XÁC THỰC CHỮ KÝ
SỐ, ÁP DỤNG TRONG VIỆC QUẢN LÝ CÔNG VĂN TẠI
TRƯỜNG ĐẠI HỌC KỸ THUẬT Y TẾ HẢI DƯƠNG

LUẬN VĂN THẠC SĨ KỸ THUẬT

HẢI PHÒNG, 2016


BỘ GIAO THÔNG VẬN TẢI

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM

KS. ĐỖ TRỌNG TIẾN

NGHIÊN CỨU CÁC CÔNG NGHỆ XÁC THỰC CHỮ KÝ
SỐ, ÁP DỤNG TRONG VIỆC QUẢN LÝ CÔNG VĂN TẠI
TRƯỜNG ĐẠI HỌC KỸ THUẬT Y TẾ HẢI DƯƠNG

LUẬN VĂN THẠC SĨ KỸ THUẬT


NGÀNH: CÔNG NGHỆ THÔNG TIN

MÃ SỐ: 60480201

CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN

Người hướng dẫn khoa học: TS. Hồ Thị Hương Thơm

HẢI PHÒNG, 2016


LỜI CAM ĐOAN
Học viên - Đỗ Trọng Tiến cam đoan luận văn “Nghiên cứu các công nghệ
xác thực chữ ký số, áp dụng trong việc quản lý công văn tại Trường Đại học Kỹ
thuật Y tế Hải Dương” là nghiên cứu của riêng học viên.
Kết quả nghiên cứu trình bày trong luận văn là trung thực, không phải là sao
chép toàn văn của bất kỳ công trình nào khác.

Ngày 12 tháng 9 năm 2016
Học viên

Đỗ Trọng Tiến

i


LỜI CẢM ƠN
Để hoàn thành bản luận văn tốt nghiệp này, học viên xin bày tỏ lòng biết ơn
chân thành và sâu sắc đến Tiến sỹ Hồ Thị Hương Thơm đã trực tiếp hướng dẫn và
giúp đỡ học viên trong suốt quá trình triển khai, nghiên cứu và hoàn thành đề tài

nghiên cứu của mình.
Học viên xin chân thành cảm ơn các thầy, cô giáo tại khoa Công nghệ thông
tin đã luôn tận tình truyền đạt các kiến thức về lĩnh vực công nghệ thông tin cho
học viên trong toàn khóa học.
Mặc dù có nhiều cố gắng trong quá trình thực hiện đề tài này tuy nhiên vẫn
không thể tránh khỏi sai sót. Học viên rất mong nhận được sự góp ý của Quý thầy,
cô để đề tài được hoàn chỉnh hơn.
Xin chân thành cảm ơn!

ii


MỤC LỤC
LỜI CAM ĐOAN....................................................................................................... i
LỜI CẢM ƠN ...........................................................................................................ii
MỤC LỤC ................................................................................................................iii
DANH MỤC CÁC CHỮ VIẾT TẮT VÀ KÝ HIỆU ............................................... v
DANH MỤC CÁC HÌNH ........................................................................................ vi
MỞ ĐẦU ................................................................................................................... 1
CHƯƠNG 1. TỔNG QUAN VỀ MÃ HÓA VÀ CHỮ KÝ SỐ................................ 4
1.1. Lý thuyết mật mã và mã hóa .......................................................................... 4
1.1.1. Giới thiệu .......................................................................................... 4
1.1.2. Phân loại........................................................................................... 4
1.2. Chữ ký số........................................................................................................ 6
1.3. Ký số RSA................................................................................................... 10
1.3.1. Giới thiệu sơ lược RSA.................................................................... 10
1.3.2. Tạo khoá cho hệ mật RSA ............................................................... 10
1.3.3. Tính bảo mật của RSA..................................................................... 12
1.3.4. Một số phương thức mã hóa nâng cao............................................ 14
1.4. Hàm băm ...................................................................................................... 14

1.5. Hạ tầng khóa công khai (PKI)...................................................................... 18
1.5.2. Cấu trúc và vai trò của PKI trong chương trình ............................ 19
1.5.3. Chứng chỉ số X.509......................................................................... 20
1.5.4. Tạo khóa cho chứng chỉ số ............................................................. 21
1.6. Giao thức trao đổi khoá PGP ....................................................................... 23
1.6.1. Khái niệm về PGP........................................................................... 23
1.6.2. Hoạt động của PGP ........................................................................ 23
1.6.3. Tính bảo mật của PGP.................................................................... 26
1.7. Giao thức trao đổi khoá GPG....................................................................... 27
1.7.1. Khái niệm về GPG .......................................................................... 27
1.7.2. Tính năng của GPG ........................................................................ 27

iii


CHƯƠNG 2. QUẢN LÝ CÔNG VĂN TẠI TRƯỜNG ĐẠI HỌC KỸ THUẬT Y
TẾ HẢI DƯƠNG .................................................................................................... 28
2.1. Hệ thống quản lý công văn tại Trường ........................................................ 28
2.1.1. Cơ sở pháp lý .................................................................................. 28
2.1.2. Phương thức quản lý công văn tại Trường..................................... 29
2.2. Áp dụng PGP và GPG trong quản lý văn bản của Trường Đại học Kỹ thuật Y tế
Hải Dương............................................................................................................ 32
2.2.1. Tạo và quản lý khóa .......................................................................... 32
2.2.2. Mã hóa và gửi văn bản ................................................................... 33
2.2.3. Nhận và giải mã văn bản ................................................................ 33
2.3. Xây dựng bài toán quản lý văn bản điện tử nội bộ ...................................... 33
2.3.1. Thiết kế chương trình ........................................................................ 35
2.3.2. Xây dựng các chức năng chính của chương trình .......................... 39
CHƯƠNG 3. ÁP DỤNG CHỮ KÝ SỐ TRONG QUẢN LÝ CÔNG VĂN TẠI
TRƯỜNG ĐẠI HỌC KỸ THUẬT Y TẾ HẢI DƯƠNG ....................................... 45

3.1. Quy trình thực hiện trong quản lý văn bản, công văn.................................. 45
3.2. Áp dụng chữ ký số trong quản lý văn bản, công văn số................................. 46
3.3. Cài đặt chương trình..................................................................................... 47
3.3.1. Chương trình PortablePGP ............................................................. 47
3.3.2. Chương trình GPG4WIN phiên bản 2.3.3 ...................................... 51
3.3.3. Chương trình Demo Quản lý văn bản điện tử sử dụng chữ ký số .. 54
3.3.4. Đánh giá kết quả............................................................................. 62
KẾT LUẬN ............................................................................................................. 65
TÀI LIỆU THAM KHẢO....................................................................................... 68

iv


DANH MỤC CÁC CHỮ VIẾT TẮT VÀ KÝ HIỆU
Chữ viết tắt

Giải thích

RSA

Rivest Shamir Adleman

SHA

Secure Hash Algorithm

NIST

National Institute of Standards and Technology


NSA

National Security Agency

MD

Message Digest

CA

Certificate Authority

PKCS

Public Key Cryptography Standards

OAEP

Optimal Asymmetric Encryption Padding

ANSI

American National Standards Institute

ISO

International Organization for Standardization

IEC


International Electrotechnical Commission

PFX

Personal Information Exchange

CER

Certificate

PKI

Public Key Infastructure

CKĐT

Chữ ký điện tử

GCD

Ước chung lớn nhất

CBVC

Cán bộ viên chức

HSSV

Học sinh sinh viên


v


DANH MỤC CÁC HÌNH
Số hình

Tên hình

Trang

1.1

Sơ đồ hoạt động của mã hóa đối xứng

5

1.2

Sơ đồ hoạt động của mã hóa bất đối xứng

6

1.3

Sơ đồ tạo chữ ký số

9

1.4


Sơ đồ thẩm định chữ ký số

9

1.5

Sơ đồ biểu diễn thuật toán RSA

11

1.6

Sơ đồ ký số RSA

11

1.7

Các thông điệp khác nhau qua các thuật toán băm tạo thành các
chuỗi có độ dài cố định

15

1.8

Sơ đồ tổng thể của SHA1

18

1.9


Các thành phần của chứng chỉ số X.509 v3

21

1.10

Mô hình mã hoá và giải mã theo PGP

25

2.1

Mô hình Client – Server

33

2.2

Các thao tác xử lý với văn bản

36

2.3

Biểu đồ Use Case của người quản trị

40

2.4


Biểu đồ Use Case của người dùng

41

2.5

Sổ theo dõi công văn đến

42

2.6

Sổ quản lý văn bản nội bộ

42

2.7

Các thành phần cơ bản của một văn bản số

43

3.1

Biểu đồ trình tự quản lý văn bản

45

3.2


Ví dụ về luồng văn bản

46

3.3

Tạo khoá bằng PGP

48

vi


3.4

Mã hóa một văn bản dùng PGP

49

3.5

Văn bản đã được mã hóa

49

3.6

Giải mã văn bản


50

3.7

Xác thực văn bản đã được ký số bằng PGP

50

3.8

Quản lý khoá trong GPG

51

3.9

Tạo và quản lý chứng chỉ số trong GPG

52

3.10

Thực hiện ký số 1 file văn bản theo GPG

53

3.11

Giải mã và xác thực văn bản đã được ký số


53

3.12

Hình ảnh minh họa một USB Key

55

3.13

Giao diện chương trình quản lý văn bản điện tử

56

3.14

Giao diện đăng nhập chương trình

57

3.15

Giao diện luồng văn bản

58

3.16

Văn bản chờ xử lý


58

3.17

Lựa chọn mẫu văn bản

59

3.18

Mẫu quyết định (qui định trực tiếp)

59

3.19

Gửi văn bản

60

3.20

Duyệt nội dung văn bản

60

3.21

Kiểm tra và phát hành văn bản


61

3.22

Thông báo khi sai người ký hoặc văn bản đã bị sửa đổi

61

vii


MỞ ĐẦU
1. Lý do chọn đề tài
Nhu cầu về bảo đảm an toàn lưu trữ và truyền đạt thông tin đã xuất hiện từ
rất sớm, khi con người biết trao đổi thông tin cho nhau. Để giữ bí mật nội dung
thông tin người ta đã nghĩ ra các cách để che giấu thông tin hoặc làm biến đổi nội
dung thông tin để người ngoài không thể hiểu được, quá trình đó được gọi là mã
hoá. Đồng thời, tại phía người nhận thông tin sẽ được khôi phục lại nguyên trạng
ban đầu bằng một phương thức nào đó gọi là giải mã. Các phép biến đổi mã hoá và
giải mã thông tin đã được ứng dụng rất nhiều trong các hoạt động chính trị, quân
sự, ngoại giao.v.v.
Ngày nay, khi công nghệ thông tin ngày càng phát triển. Việc ứng dụng
công nghệ thông tin trong cải cách hành chính là một yêu cầu cấp thiết, bắt buộc
đối với các cơ quan, đơn vị. Một trong các ứng dụng quan trọng đó là hệ thống
quản lý công văn, giấy tờ trên môi trường mạng giúp tiết kiệm tài nguyên và công
sức lưu trữ trong cơ quan. Tuy nhiên, vấn đề đặt ra là làm thế nào để đảm bảo an
toàn, bảo mật thông tin cho các văn bản điện tử khi truyền đưa trên môi trường
mạng và làm thế nào để xác thực một cách chính xác nguồn thông tin nhận được là
của một người mà ta biết cũng như đảm bảo rằng thông tin đó chính xác, chưa hề
bị sửa chữa, tổn hại?

Giải pháp cho 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.
Đề tài “Nghiên cứu các công nghệ xác thực chữ ký số, áp dụng trong
việc quản lý công văn tại Trường Đại học Kỹ thuật Y tế Hải Dương” sẽ tìm
hiểu vấn đề nêu trên và cài đặt chương trình ký số minh họa.
2. Mục đích nghiên cứu
Tìm hiểu cơ sở lý thuyết của mã hóa và giải mã, chữ ký số.
Tìm hiểu các chức năng và yêu cầu cần thiết cho một hệ thống quản lý công
văn đi và đến.
Cài đặt chương trình ký số kết hợp RSA và hàm Băm.
1


3. Mục tiêu của đề tài
- Nghiên cứu cơ sở lý luận về chứng thực thông tin.
- Tìm hiểu về chữ ký số.
- Tìm hiểu về các phương thức mã hóa dữ liệu cơ bản.
- Tìm hiểu phương thức mã hóa bất đối xứng sử dụng cho chữ ký số.
- Tìm hiểu về hàm băm.
- Thử nghiệm một số chương trình mã hóa và giải mã văn bản
- Khảo sát, phân tích thiết kế và xây dựng hệ thống quản lý công văn đi đến
tại Trường Đại học Kỹ thuật Y tế Hải Dương, cài đặt chương trình minh họa.
4. Đối tượng nghiên cứu
- Lý thuyết mật mã và mã hóa.
- Thuật toán ký số RSA.
- Hàm băm kết hợp chữ ký số cho công văn
5. Phạm vi nghiên cứu
Nghiên cứu nghiệp vụ quản lý văn bản nhà nước, lý thuyết về chứng thực
thông tin, hệ mã hóa khóa công khai RSA, hàm băm SHA và cài đặt chương trình
minh họa.

6. Phương pháp nghiên cứu
- Nghiên cứu cơ sở lý thuyết, tham khảo tài liệu, xây dựng cài đặt chương
trình, tiến hành thử nghiệm đánh giá đưa ra được ưu nhược điểm của chương trình.
7. Bố cục luận văn
Nội dung của luận văn gồm 3 chương và phần kết luận với bố cục như sau:
- Chương 1: Tổng quan về mã hoá và chữ ký số
Chương này giới thiệu tổng quan về mật mã, các loại mã hoá và chữ ký số;
ứng dụng hàm băm SHA1 và giải thuật ký số RSA trong mã hoá và giải mã văn
bản điện tử.
- Chương 2: Quản lý công văn tại Trường Đại học Kỹ thuật Y tế Hải Dương

2


Trình bày phương thức quản lý công văn tại Trường và các quy trình thực
hiện.
Xác định yêu cầu của bài toán quản lý công văn điện tử và phân tích, thiết
kế xây dựng hệ thống.
- Chương 3: Áp dụng chữ ký số trong hệ thống quản lý công văn Tại Trường
Đại học Kỹ thuật Y tế Hải Dương.
Đề mô chương trình thử nghiệm các chức năng cơ bản cho công tác quản lý
văn bản điện tử thông qua hệ thống mạng đồng thời cũng xử lý được các vấn đề và
yêu cầu bảo mật cho hệ thống đặc biệt là chương trình chữ ký số.

3


CHƯƠNG 1. TỔNG QUAN VỀ MÃ HÓA VÀ CHỮ KÝ SỐ
1.1. Lý thuyết mật mã và mã hóa
1.1.1. Giới thiệu

Mật mã học là một ngành khoa học nghiên cứu về các cách thức để bảo vệ
sự an toàn và bảo mật thông tin. Xét về lịch sử, mật mã gắn liền với quá trình mã
hóa. Mã hóa là phương thức để biến đổi nội dung thông tin từ dạng này sang dạng
khác, từ một dạng dễ hiểu sang dạng không thể hiểu hay không nhận biết được [1].
Các cơ chế để thực hiện mã hóa là các hệ mã mật, hàm băm, hệ thống chữ ký số và
các giao thức mật mã. Quá trình mã hóa được thực hiện để đảm bảo tính bảo mật
của thông tin quan trọng, chẳng hạn như trong quân sự, chính trị, ngoại giao, cũng
như kinh tế và thương mại. Các hệ thống mã hoá phổ biến nhất thuộc một trong hai
loại sau:
* Mã hoá với khoá đối xứng
* Mã hoá với khoá công khai
Hệ mật mã hiện đại cần đảm bảo được hai yêu cầu sau:
- Đảm bảo tính bảo mật: Ngăn không để người lạ thực hiện việc trích chọn,
sửa đổi thông tin từ các bản mã được gửi trên các kênh truyền phổ biến (thường
không an toàn).
- Đảm bảo tính xác thực: Đảm bảo chỉ có người nhận đúng mới có thể giải
mã nội dung bản mã, đồng thời cũng đảm bảo người gửi không thể phủ nhận nội
dung đã gửi.
1.1.2. Phân loại
1.1.2.1. Mã hóa đối xứng
Mật mã khóa đối xứng hay còn gọi là mật mã khoá bí mật. Trong mật mã
khoá đối xứng các bên trao đổi thông tin với nhau sử dụng chung một khoá bí mật
để mã hoá và giải mã. Do đó, khi bị mất khóa bí mật này thì tính bảo mật của hệ
mã bị phá vỡ.

4


Ban đầu, bản rõ được người gửi A mã hóa với khóa k. Sau đó bản mã được
gửi tới người nhận B. Khi nhận được bản mã, người B sử dụng khóa k giải mã để

thu được bản rõ. Do đó, nếu một người khác có được khóa k thì hệ thống mã hóa
này sẽ bị tấn công.

Hình 1.1 – Sơ đồ hoạt động của mã hóa đối xứng
Hạn chế của các thuật toán mã hóa khóa đối xứng là các bên trao đổi thông
tin phải giữ một bản sao của khóa bí mật. Điều quan trọng là khả năng bị phát hiện
bởi các đối tượng thám mã do đó chúng phải được bảo đảm an toàn trong quá trình
phân phối và sử dụng.
Để đảm bảo trao đổi thông tin bí mật, an toàn của tất cả mọi người trong một
nhóm n người, số lượng các khoá cần thiết là n(n-1)/2.
Các khóa đối xứng thuật toán mã hóa không thể được sử dụng cho các mục
đích xác thực hay chống chối bỏ.
1.1.2.2. Mã hóa khóa công khai (mã hóa bất đối xứng)
Mật mã khóa công khai, hoặc mật mã không đối xứng, là một hệ thống mật
mã có sử dụng cặp khóa : khóa công khai có thể được phổ biến rộng rãi kết hợp
với các khoá riêng chỉ được biết bởi chủ sở hữu. Các cặp khóa có một mối quan hệ
đối ứng đặc biệt thông qua các hàm toán học để mỗi khoá chỉ có thể được sử dụng
kết hợp với khoá khác trong cặp.
Trong một hệ thống mã hóa khóa công khai, bất kỳ người nào cũng có thể
mã hóa một thông điệp bằng khóa công khai của người nhận, nhưng chỉ có thể
được giải mã bằng khóa riêng của người nhận. Khóa riêng phải được giữ bí mật
(để giải mã), trong khi các khóa công khai (để mã hóa) là công khai. Điều quan

5


trọng đối với hệ thống mã hóa này là không thể tìm thấy chìa khóa bí mật nếu chỉ
biết khóa công khai.

Hình 1.2- Sơ đồ hoạt động của mã hóa bất đối xứng

Hệ thống mật mã khoá công khai có thể sử dụng cho các mục đích như: mã
hoá, tạo chữ ký số và thoả thuận khoá.
1.2. Chữ ký số
1.2.1. Giới thiệu chung
Chữ ký là một đặc điểm sinh trắc học của con người giống như tròng mắt,
vân tay… dùng để xác thực danh tính của mỗi người. Chữ ký viết tay thông thường
trên một văn bản được dùng để xác định người ký văn bản đó. Một chữ ký thường
sẽ là một phần vật lý gắn liền với văn bản cần ký nhằm đạt được hai mục đích
chính đó là nhằm xác định nguồn gốc của thông điệp và để văn bản có tính hiệu
lực.
Tuy nhiên, trong thế giới máy tính thì vấn đề ký không giống như trong thực
tế: nội dung thông tin trên máy tính có thể được chuyển đổi một cách dễ dàng từ
văn bản này sang văn bản khác. Do đó, phương thức ký trong thế giới máy tính cần
áp dụng công nghệ mã hóa.
Sơ đồ chữ ký điện tử là phương pháp ký một văn bản được lưu trữ dưới dạng
điện tử. Phương thức thực hiện chữ ký điện tử dựa trên ý tưởng của Diffie và
Hellman:
- Người gửi sẽ dùng khoá riêng của mình để thực hiện mã hoá văn bản.
- Người gửi gửi văn bản đã ký cho người nhận.

6


- Người nhận văn bản dùng khóa công khai của người gửi để giải mã văn
bản và xác thực chữ ký.
Một chữ ký điện tử “lý tưởng” cần đáp ứng được các đặc điểm sau:
- Tính xác thực: đảm bảo rằng người ký là người tạo ra nó.
- Tính toàn vẹn: người nhận không thể sáng tạo hoặc sửa đổi một tài liệu có
chữ ký của người khác.
- Không thể dùng lại: không thể dùng cùng một chữ ký điện tử cho các văn

bản khác nhau.
- Tính không chối bỏ: khi một người đã ký thì không thể chối bỏ chữ ký đó.
- Tính hiệu quả: ký và xác thực nhanh chóng dễ dàng.
1.2.2. Khái niệm chữ ký số
Chữ ký số hay chữ ký điện tử là một định danh điện tử (một con số) gắn với
mỗi văn bản do máy tính sử dụng nhằm đạt được hiệu quả giống như chữ ký
thường. Quá trình thực hiện chữ ký số bao gồm hai bước: tạo chữ ký và xác thực
chữ ký.
1.2.3. Phân loại
Chữ ký số có thể được chia thành hai loại: loại thứ nhất chữ ký số là một
phần đính vào thông điệp gửi đi và loại thứ hai là loại chữ ký mà từ đó có thể khôi
phục các thông điệp ban đầu trước khi ký.
Luận văn này học viên chủ yếu tập trung vào loại thứ nhất, chữ ký số được
đính kèm theo thông điệp được sử dụng cho quá trình xác minh thông điệp. Những
đặc điểm cơ bản của loại chữ ký này là :
- Chữ ký số được đính kèm với thông điệp ban đầu
- Cần có thông điệp ban đầu cho quá trình kiểm tra chữ ký số
- Sử dụng hàm băm như: SHA, MD-5…
- Dựa trên thuật toán mã hóa.

7


1.2.4. Quy trình hoạt động
Chữ ký số hoạt động dựa trên hệ thống mã hóa khóa công khai. Trong đó,
khoá riêng được sử dụng để tạo ra chữ ký số cho một tài liệu cụ thể còn khoá công
khai được sử dụng để xác thực chữ ký.
1.2.5. Sơ đồ ký số
Một sơ đồ chữ ký số thường chứa hai thành phần: thuật toán ký và thuật toán
xác minh. Một sơ đồ chữ ký số là bộ năm (P, A, K, S, V) thỏa mãn các điều kiện

sau:
- P là một tập hữu hạn các văn bản (thông điệp, bản rõ).
- A là một tập các chữ ký.
- K là tập không gian khóa.
- S là tập các thuật toán mã hoá.
- V là tập các thuật toán giải mã.
Với mỗi k ϵ K, tồn tại một thuật toán mã hóa sig k ϵ S và một thuật toán xác
minh verk ϵ V, trong đó sig k và verk là các ánh xạ : sig k là một ánh xạ từ P sang A
và verk là một ánh xạ từ A sang tập biểu diễn {True, False} là những hàm sao cho
mỗi bức điện x ϵ P và mỗi chữ ký y ϵ A thỏa mãn phương trình dưới đây:

(1.1)

Với mỗi k ϵ K, hàm sig k và verk là các hàm đa thức thời gian. Hàm verk sẽ là
hàm công khai còn hàm sig k là bí mật [3].

8


Hình 1.3 – Sơ đồ tạo chữ ký số

Hình 1.4 – Sơ đồ thẩm định chữ ký số

9


1.3. Ký số RSA
1.3.1. Giới thiệu sơ lược RSA
Thuật toán RSA được đặt tên sau khi 3 nhà khoa học Ron Rivest, Adi
Shamir và Leonard Adleman phát minh ra nó vào năm 1977. RSA là thuật toán mã

hoá khoá công khai được sử dụng rộng rãi trên thế giới. Nó có thể được sử dụng để
mã hóa một thông điệp mà không cần phải trao đổi một khóa bí mật riêng.
Cơ sở của thuật toán RSA là: có thể dễ dàng nhân hai số nguyên tố lớn
ngẫu nhiên nhưng việc xác định số nguyên tố gốc từ tích của chúng là không khả
thi do sẽ mất rất nhiều thời gian ngay cả với các siêu máy tính hiện nay.
1.3.2. Tạo khoá cho hệ mật RSA
Để cài đặt RSA ban đầu mỗi người dùng sinh khóa công khai và khóa riêng
của mình bằng cách:


chọn hai số nguyên tố lớn ngẫu nhiên khác nhau p và q



tính N = p*q và (N) = (p-1)*(q-1)



chọn ngẫu nhiên một số nguyên tố e, 1  e  (N) thoả mãn

gcd(e, (N)) = 1, e được gọi là số mã hoá


tìm phần tử ngược của e trên vành module (N), d là số giải mã, 1  d

 (N) thoả mãn ed  1(mod (N)


khóa công khai là Kp = (e, N)




khóa riêng (bí mật) là Ks = K-1P = (d, p, q)

Việc thiết lập khóa này được thực hiện 1 lần khi một người dùng thiết lập
(thay thế) khóa công khai của họ. Mũ e thường là khá nhỏ (để mã hóa nhanh), và
phải là nguyên tố cùng nhau với (N). Các giá trị thường được chọn cho e là 3
hoặc 216 + 1 = 65537. Tuy nhiên khi e nhỏ thì d sẽ tương đối lớn. Khoá bí mật là
(d, p, q). Các số p và q thường có giá trị xấp xỉ nhau nhưng không được bằng nhau.
Chú ý là việc để lộ một trong các thành phần trên sẽ làm cho hệ mã hóa trở thành
không an toàn.

10


Sơ đồ biểu diễn thuật toán RSA [2] :

Hình 1.5 – Sơ đồ biểu diễn thuật toán RSA
Các bước thực hiện ký số RSA:

Hình 1.6 – Sơ đồ ký số RSA

* Ký (Mã hóa):
Giả sử có văn bản cần ký M. Tạo ra một bản tóm của văn bản M với mLúc này ta muốn ký lên văn bản M với số tương ứng là m. Ta sẽ tính toán c
là bản ký của m theo công thức:
C  Sig k (m)  m d mod n ( Trong đó d là khóa bí mật của người cần ký)

11


(1.2)


Ta có bản ký c hay bản chữ ký số và gửi cho đối tác.
* Xác nhận (Giải mã):
Sau khi nhận được bản chữ ký số, người nhận cần phải xác nhận chữ ký trên
văn bản là đúng người ký bằng cách xác nhận bản ký với khóa công khai của
người ký với công thức sau.
Verk (m, c)  TRUE  m  c e (mod n) với x, y € Z n .

(1.3)

Hoạt động giải mã diễn ra vì
C e  (m d )e  m de (mod n) ;

(1.4)

Do: ed  1(mod p  1) và ed  1(mod q  1) , nên:
m de  m(mod p ) ;

(1.5)


m de  m(mod q ) ;

(1.6)

Bởi vì p và q là hai số nguyên tố cùng nhau, áp dụng định lý phần dư Trung
Hoa, ta có:
m de  m(mod pq ) ;


(1.7)

hay:
C e  m(mod n) ;

(1.8)

Thông thường, chữ ký được kết hợp với hàm mã hoá công khai. Giả sử A
muốn gửi một bức điện đã được mã hoá và đã được ký đến cho B. Với bản rõ x
cho trước, A sẽ tính toán chữ ký của mình y = Sig A (m) sau đó mã hoá cả x và y sử
dụng khoá công khai eB của B, kết quả nhận được là z = eB (m, c) . Bản mã z sẽ được
gửi tới B, khi B nhận được z, đầu tiên anh ta giải mã với hàm giải mã d B của mình
để nhận được (m, c). Sau đó anh ta dùng hàm xác minh công khai của A để kiểm
tra xem VerA (m, c)  TRUE hay không.
1.3.3. Tính bảo mật của RSA
Bài toán bảo mật của hệ chữ ký RSA là tránh trường hợp người ngoài có
thể tính ra giá trị d bí mật (giá trị ký hay mã hóa) khi biết được giá trị xác nhận e
(công khai).
12


Sự an toàn của hệ mật RSA dựa trên hai vấn đề toán học: các vấn đề về phân
tích ra thừa số nguyên tố các số nguyên lớn và các bài toán RSA . Giải mã đầy đủ
một một bản mã RSA được cho là không khả thi trên giả định rằng cả hai vấn đề
trên rất khó, tức là, không có thuật toán hiệu quả tồn tại để giải quyết chúng [3].
Các bài toán RSA được xác định là nhiệm vụ của việc tính căn bậc e của mô
đun n. Tìm số m mà c  me (mod n) , trong đó (n, e) là một khóa công khai RSA
và c là một bản mã RSA . Hiện nay, phương pháp hứa hẹn nhất để giải quyết bài
toán RSA là phân tích mô đun n ra thừa số nguyên tố. Với khả năng phân tích ra

thừa số nguyên tố của n, kẻ tấn công có thể tính toán số mũ bí mật d từ một khóa
công khai (n, e), sau đó giải mã c sử dụng đúng các quy trình của thuật toán. Để
thực hiện điều này, một kẻ tấn công sẽ phân tích n thành hai số p và q, và tính (p 1) (q - 1) cho phép xác định d từ e. Chưa có phương pháp tính toán tối ưu nào
trong thời gian đa thức để phân tích n ra thừa số nguyên tố được tìm thấy trên máy
tính, nhưng nó cũng không được chứng minh rằng không tồn tại. [13]
Năm 2009, Benjamin Moody đã phân tích một khoá RSA-512 bit trong 73
ngày chỉ sử dụng phần mềm công cộng (GGNFS) và máy tính để bàn của mình
(với chíp dual-core Athlon64 1.900 MHz). Chỉ yêu cầu dưới 5 gigabyte ổ cứng và
khoảng 2,5 GB RAM cho quá trình phân tích. Trong khi đó để phân tích một khoá
RSA-512 lần đầu tiên vào năm 1999 yêu cầu tương đương với 8.400 MIPS trong
thời gian khoảng 7 tháng.
Như năm 2010, số RSA lớn nhất có thể phân tích ra thừa số nguyên tố là 768
bit (232 chữ số thập phân) với phương pháp phân tán với khoảng 1500 máy tính
hoạt động trong suốt 2 năm. Không có khóa RSA lớn hơn được công bố đã được
phân tích ra thừa số nguyên tố. Trong thực tế, các khóa RSA thường dài từ 10244096 bit. Một số chuyên gia tin rằng khóa 1024-bit có thể dễ bị phá vỡ trong tương
lai gần hoặc có thể đã được phá vỡ bởi một kẻ tấn công được hỗ trợ đầy đủ (mặc
dù điều này vẫn đang được tranh luận); hiện chưa thể thấy bất kỳ cách nào để khoá
4096 bit bị phá vỡ trong tương lai gần. Do đó, RSA được coi là an toàn nếu n là đủ
lớn. Nếu n là 300 bit hoặc ngắn hơn, nó có thể bị phá vỡ trong một vài giờ với

13


một máy tính cá nhân, sử dụng phần mềm tự do có sẵn. Khoá 512 bit đã được thực
tế chứng minh là dễ vỡ vào năm 1999 khi RSA-155 được phân tích bằng cách sử
dụng vài trăm máy tính và phân tích trong một vài tuần sử dụng phần cứng thông
thường. Một thiết bị phần cứng trên lý thuyết có tên Twirl và được mô tả bởi
Shamir và Tromer vào năm 2003 đã đặt dấu hỏi về bảo mật của khoá 1024 bit. Vậy
nên độ dài khoá hiện nay được khuyến cáo là dài ít nhất 2048 bit [13].
1.3.4. Một số phương thức mã hóa nâng cao

Để tăng cường tính an toàn, bảo mật khi thực hiện mã hoá, tránh những dạng
tấn công tinh vi người ta đã đưa ra một số phương thức mã hoá nâng cao, ví dụ
như :
- RSAES-PKCS #1v1.5
- RSAES-OAEP
- RSASSA-PSS
- Công thức ký X9.31
- ISO/IEC 9796
Trong luận văn này học viên tập trung sử dụng phương pháp RSAES-PKCS
#1v1.5, được xây dựng để biến đổi thông tin trước khi mã hoá bằng RSA. RSAESPKCS #1v1.5 là kỹ thuật mã hóa nâng cao của PKCS1 (các tiêu chuẩn PKCS # 1
định nghĩa các phương thức toán học và tính chất mà khoá công khai và khoá riêng
RSA cần phải có) và được sử dụng phổ biến nhất hiện nay trên hầu hết các thư
viện RSA.
1.4. Hàm băm
1.4.1. Sơ lược về hàm băm
Hàm băm là một hàm toán học có thể chuyển đổi một thông điệp đầu vào có
độ dài tùy ý tới đầu ra là các chuỗi có chiều dài cố định. Giá trị trả về bởi một hàm
băm được gọi là tóm lược thông điệp hoặc đơn giản chỉ là giá trị băm. Hàm băm
được sử dụng nhiều trong mã hoá và có nhiều loại hàm băm khác nhau.

14


Hàm băm có thể được sử dụng trong việc mã hoá và giải mã chữ ký số. Các
hàm băm biến đổi chữ ký số trên văn bản, sau đó cả hai giá trị băm và chữ ký được
gửi đến người nhận. Người nhận sử dụng hàm băm tương tự để tạo ra các giá trị
băm và sau đó so sánh nó với thông điệp nhận được. Nếu các giá trị băm là như
nhau có nghĩa là thông điệp nhận được là không có lỗi.
Giá trị của hàm băm là duy nhất, và không thể suy ngược lại được nội dung
thông điệp từ giá trị băm này.

Một hàm băm được xem là bảo mật và an toàn phải đảm bảo các tính chất:
- Có thể áp dụng với thông báo đầu vào có độ dài bất kỳ.
- Tạo ra giá trị băm y = h(x) có độ dài cố định.
- h(x) dễ dàng tính được với bất kỳ x nào.
-

Tính một chiều : Với mọi đầu ra y cho trước không thể tìm được x’ sao

cho h(x’) bằng giá trị y cho trước.
1.4.2. Lý do sử dụng hàm băm trong chữ ký số

Hình 1.7 – Các thông điệp khác nhau qua các thuật toán băm tạo thành các chuỗi
có độ dài cố định
Các sơ đồ ký số thường chỉ được sử dụng để ký các văn bản có dung lượng
nhỏ và sau khi ký, bản ký số có dung lượng lớn hơn văn bản ban đầu (gấp đôi).
Trong thực tế, các văn bản cần ký thường có dung lượng rất lớn lên đến hàng
Megabytes, khi văn bản đã được ký số và gửi tới người nhận thì ta phải gửi kèm cả
chữ ký số lẫn đoạn thông điệp gốc để xác nhận, điều này làm cho dung lượng

15


thông tin truyền qua mạng trở nên rất lớn. Một cách để giải quyết vấn đề trên là
chia văn bản thành nhiều đoạn nhỏ, và sau đó ký lên từng đoạn nhỏ đó. Nhưng sử
dụng biện pháp này lại tạo ra một số vấn đề khác của chữ ký số:
- Không giải quyết được vấn đề kích thước truyền lớn.
- Hầu hết các hệ chữ ký đều rất chậm.
- Rất nhiều đoạn được ký như vậy sẽ dẫn đến khi sắp xếp lại văn bản có thể
bị xáo trộn hoặc có một vài đoạn bị bỏ đi do đó mất đi tính toàn vẹn [3].
Để giải quyết các vướng mắc này thì người ta sử dụng hàm băm.

- Hàm băm tạo ra một đoạn chuỗi băm có độ dài duy nhất, giúp giảm kích
thước cần tính toán do đó giảm cả thời gian thực hiện và dung lượng truyền.
- Tăng tính bảo mật cho chương trình, mỗi đoạn văn bản chỉ có thể tạo ra
một chuỗi băm duy nhất không trùng lặp.
- Tránh trùng lặp thông điệp (tuy hiếm xảy ra) khi ký trên các đoạn văn bản
khác nhau.
Ngoài ra, các phương pháp ký hiện đại được nâng cao từ RSA tùy theo các
phương pháp băm được sử dụng để thêm vào các ký tự đặc biệt hoặc các chuỗi
ngẫu nhiên vào chuỗi mã hóa khi ký để tăng thêm tính bảo mật.
Hiện nay, do sự phát triển của máy tính khiến cho người ta phải phát triển
các phương pháp băm SHA với độ dài lớn hơn nhưng SHA-1 vẫn là hàm băm
được ưa chuộng trong các chương trình phổ thông nhờ tốc độ xử lý tốt mà vẫn
đảm bảo tính bảo mật.
1.4.3. Hàm băm SHA-1
1.4.3.1. Khái niệm
Năm 1995, Viện Tiêu chuẩn và Công nghệ (NIST) cùng NSA đã thiết kế ra
thuật toán hàm băm an toàn SHA sử dụng cho chuẩn chữ ký số và được quy định
trong tiêu chuẩn bảo mật băm (SHS, FIPS 180). SHA-1 là một phiên bản tiếp theo
cho phiên bản này và đã được xuất bản vào năm 1994. Nó cũng được mô tả trong
tiêu chuẩn ANSI X9.30 (phần 2). SHA-1 tạo ra các đoạn thông điệp có kích thước
160-bit. Mặc dù chậm hơn so với MD5, tuy nhiên với việc phân chia các phần với
16


×