37
1 BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP.HCM KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN XÂY DỰNG PHẦN MỀM ỨNG DỤNG ĐỀ TÀI: Tìm hiểu về chữ ký điện tử và viết ứng dụng minh họa GVHD : Mạnh Thiên Lý Nhóm SVTH : 1. Nguyễn Huy Lân - 2001110104 2. Lê Minh Luận - 2001110025 TP. HỒ CHÍ MINH – 2014

[Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

Embed Size (px)

DESCRIPTION

[Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

Citation preview

Page 1: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

1

BỘ CÔNG THƯƠNG

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP.HCM KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN XÂY DỰNG PHẦN MỀM

ỨNG DỤNG

ĐỀ TÀI: Tìm hiểu về chữ ký điện tử và viết ứng dụng minh họa

GVHD : Mạnh Thiên Lý

Nhóm SVTH : 1. Nguyễn Huy Lân - 2001110104 2. Lê Minh Luận - 2001110025

TP. HỒ CHÍ MINH – 2014

Page 2: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

2

MỤC LỤC

Chương 1: Chữ ký điện tử ........................................................................................... 5

1.1 Giới thiệu........................................................................................................... 5

1.2 Khái niệm về chữ ký điện tử .............................................................................. 5

1.3 So sánh chữ ký điện tử với chữ ký thông thường trên văn bản ........................... 6

1.4 Vị trí, vai trò của chữ ký số điện tử .................................................................... 6

1.5 Sơ đồ tống quan của một hệ thống chữ ký số điện tử ......................................... 7

1.6 Quy trình sử dụng chữ ký điện tử ....................................................................... 8

2.1 Hàm băm ......................................................................................................... 11

2.1.1 Tính chất của hàm băm .................................................................................... 11

2.1.2 Hàm băm MD5 ................................................................................................ 12

Hình 2.1: Sơ đồ vòng lặp chính của MD5 ................................................................. 14

2.2 Thuật toán RSA ............................................................................................... 18

2.2.1 Khái niệm hệ mật mã RSA ............................................................................... 19

2.2.2 Phân phối khoá công khai trong RSA ............................................................... 20

2.2.2.1 Mã hóa ................................................................................................ 22

2.2.2.2 Giải mã ............................................................................................... 22

2.3 Một số tính chất của hệ RSA .................................................................... 26

2.4 Độ an toàn của hệ RSA ............................................................................ 27

2.5 Một số biến thể của hệ mã hóa RSA ........................................................ 28

2.6 Đánh giá RSA .......................................................................................... 28

Chương 3 : Hướng dẫn cài đặt và sử dụng phần mềm ............................................... 31

3.1 Cài đặt ............................................................................................................. 31

Hình 3.1 . Giao diện cài đặt phần mềm. .................................................................... 31

Hình 3.2 . Chọn “I accept the agreement” và nhấn next ............................................ 31

Hình 3.3 . Tiếp tục chọn next cho đến khi cài đặt xong. ............................................ 32

Hình 3.2 Hướng dẫn sử dụng phần mềm .................................................................. 32

Hình 3.5 Giao diện ký văn bản .................................................................................. 33

Hình 3.6 Giao diện xác nhận văn bản ........................................................................ 33

Page 3: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

3

DANH MỤC HÌNH ẢNH

Hình 1: Tạo chữ ký và kiểm tra chữ ký ............................................................. 11

Hình 2.1: Sơ đồ vòng lặp chính của MD5 ......................................................... 15

Hình 2.2: Sơ đồ các bước thực hiện mã hoá theo thuật toán RSA ...................... 21

Hình 2.3: Mô tả thực hiện RSA ....................................................... 24

Hình 3.1 . Giao diện cài đặt phần mềm ............................................................. 30

Hình 3.2 . Chọn “I accept the agreement” và nhấn next .................................... 30

Hình 3.3 . Tiếp tục chọn next cho đến khi cài đặt xong ..................................... 31

Hình 3.4. Giao diện phần tạo khóa .................................................................... 32

Hình 3.5 Giao diện ký văn bản .......................................................................... 33

Hình 3.6 Giao diện xác nhận văn bản ................................................................ 33

Page 4: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

4

MỞ ĐẦU

Với sự bùng nổ của mạng Internet hiện nay, 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à 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. Để giải quyết vấn đề xác nhận chữ ký truyền thống (ký

tay) trong kinh doanh mua bán, việc áp dụng công nghệ thông tin thay đổi và

giúp tối ưu việc xử lý và bảo mật hơn ở các văn bản giao dịch. Người ta đưa ra

một cách giải quyết hiệu quả và đó chính là áp dụng chữ ký điện tử vào công

việc.

Đề tài “Tìm hiểu về chữ ký điện tử và viết ứng dụng minh họa” sẽ tìm hiểu

vấn đề nêu trên và cài đặt chương trình ký số minh họa.

Những vấn đề nhóm chúng em tìm hiểu và viết ứng dụng minh họa bao gồm:

Tìm hiểu về chữ ký điện tử.

Tìm hiểu phương pháp mã hóa bất đối xứng ứng dụng trong chữ ký điện tử.

Tìm hiểu về hàm băm MD5.

Tìm hiểu về hệ mã hóa công khai RSA.

Page 5: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

5

Chương 1: Chữ ký điện tử

1.1 Giới thiệu

Trong đời sống hàng ngày, chữ ký trên một văn bản là một minh chứng về

“bản quyền” hoặc ít nhất cũng là sự “tán đồng”, thừa nhận các nội dung trong văn

bản của việc mua bán, ký kết trong xã hội. Chữ ký viết tay trên văn bản thì được

dùng để xác nhận người ký. Những yếu tố nào làm nên sức thuyết phục, về mặt lý

tưởng thì bao gồm:

Chữ ký là bằng chứng thể hiện người ký có chủ định khi ký văn bản.

Chữ ký thể hiện “chủ quyền”, nó làm cho người nhận văn bản biết rằng ai đích

thị là người đã ký văn bản.

Chữ ký không thể “tái sử dụng”, tức là nó là một phần của văn bản mà không

thể sao chép sang các văn bản khác.

Văn bản đã ký không thể thay đổi được.

Chữ ký không thể giả mạo và cũng là thứ không thể chối bỏ ( người đã ký văn

bản không thể phủ định việc mình đã ký văn bản và người khác không thể tạo

ra chữ ký đó ).

Để có được những đặc tính như trên, giao thức “ký trong thế giới điện tử”

cần phải có sự hỗ trợ của công nghệ mã hóa. Sơ đồ chữ ký số là phương pháp ký

một thông báo được lưu dưới dạng điện tử:

Người gửi (chủ nhân của văn bản) ký văn bản bằng cách mã hóa nó với khóa bí

mật của mình.

Người gửi chuyển văn bản đã ký cho người nhận.

Người nhận văn bản kiểm tra chữ ký bằng việc sử dụng chìa khóa công khai

của người gửi để giải mã văn bản.

1.2 Khái niệm về chữ ký điện tử

Chữ ký điện tử là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh, video…)

nhằm mục đích xác nhận người chủ của dữ liệu đó. Chữ ký điện tử được sử dụng

trong các giao dịch điện tử. Xuất phát từ thực tế, chữ ký điện tử cũng cần đảm bảo

các chức năng: xác định được người chủ của một dữ liệu nào đó.

Page 6: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

6

1.3 So sánh chữ ký điện tử với chữ ký thông thường trên văn bản

Chữ ký điện tử và chữ ký thường có nhiều điểm khác nhau:

Về tài liệu được ký: Với tài liệu thông thường, nó là một phần vật lý của tài

liệu. Ngược lại, chữ ký điện tử không phải theo kiểu vật lý gắn vào thông báo

nên không nhìn thấy trên bức điện.

Về vấn đề kiểm tra chữ ký: Chữ ký thông thường được kiểm tra bằng cách so

sánh nó với các chữ ký xác thực khác (chữ ký mẫu). Điểm yếu của chữ ký

thông thường là không an toàn, và dễ có thể giả mạo. Ngược lại, chữ ký điện

lại được kiểm tra nhờ dùng thuật toán kiểm tra công khai, bất kỳ ai cũng có thể

kiểm tra được. Việc dùng một sơ đồ chữ ký an toàn có thể ngăn chặn được giả

mạo.

1.4 Vị trí, vai trò của chữ ký số điện tử

Xu hướng quốc tế hóa và toàn cầu hóa đã và đang ảnh hưởng đến sự phát triển

của thế giới. Việc trao đổi thông tin cũng từ đó yêu cầu nhanh gọn, chính xác

và đặc biệt là phải an toàn. Việc trao đổi thông tin, chứng thực thông tin theo

phong cách truyền thống làm giảm tốc độ, cũng như sự chính xác của thông tin.

Những cộng việc đó mang tính chất thủ công gây ra sự chậm trễ và thiếu chính

xác trong trao đổi.

Chính khó khăn đã nảy sinh sự phát triển mạnh mẽ của công nghệ thông tin và

công nghệ mã hóa. 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à nhu cầu bảo mật thông tin được đặt lên hàng đầu.

Điển hình là việc mã hóa bảo mật các thông tin số của doanh nghiệp, dùng chữ

ký số xác thực email trao đổi thông tin, kiểm soát truy cập vào các sàn thương

mại điện tử và các đơn đặt hàng, ngân hàng điện tử, mua sắm trực tuyền… mà

vai trò chủ yếu là chữ ký số điện tử.

Trên thực tế, chữ ký điện tử không chỉ được thực hiện cho các giao dịch điện tử

trên mạng Internet mà còn qua hệ thống mạng viễn thông di động. Đặc biệt,

hiện nay nhiều nước trên thế giới không chỉ triển khai ứng dụng chữ ký điện tử

trên mạng máy tính mà còn áp dụng trên mạng điện thoại di động để thực hiện

Page 7: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

7

các giao dịch điện tử. Hướng đi này giúp đẩy nhanh giao dịch, đơn giản hóa

mua sắm trực tuyến và giúp người dùng có thể truy cập mọi lúc, mọi nơi.

Sự ra đời của chữ ký điện tử khẳng định được lợi ích to lớn về chiến lược và

kinh tế, đồng thời các vấn đề liên quan đến chữ ký điện tử cũng là nhưng chủ

đề quan trọng nhất của mật mã học.

1.5 Sơ đồ tống quan của một hệ thống chữ ký số điện tử

Một sơ đồ chữ ký điện tử là bộ 5 (P,A,K,S,V) thỏa mãn các điều kiện dưới

đây:

- P là tập hữu hạn các bức điện (thông điệp, bản rõ) có thể.

- A là tập hữu hạn các chữ ký có thể.

- K là tập hữu hạn các khóa có thể.

- S là tập các thuật toán ký.

- V là tập các thuật toán xác minh.

Với mỗi khoá K € k tồn tại một thuật toán ký SigK € S và một thuật toán xác

minh VerK € V. Mỗi Sigk: P → A và verK: P x A → {TRUE, FALSE} là những

hàm sao cho mỗi bức điện x € P và mỗi chữ ký y € A thoả mãn phương trình dưới

đây:

True nếu y = sig(x)

Ver (x, y) =

False nếu y ≠ sig(x).

Với mỗi k thuộc K, hàm SigK và VerK là các hàm thời gian đa thức, Verk là

hàm công khai còn Sigk là hàm mật.

- Ý nghĩa của sơ đồ:

Khi một người dùng muốn ký lên một thông báo x thì người đó dùng thuật toán

an toàn để tạo ra chữ ký y = sig(x) nhận được và gửi cho người nhận. Người nhận

nhận được chữ ký sig(x) thì dùng thuật toán xác minh ver(x,y) để xác định tính

đúng đắn của chữ ký số (trả về true hoặc false).

Page 8: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

8

1.6 Quy trình sử dụng chữ ký điện tử

Chữ ký điện tử hoạt động dựa trên hệ thống mã hóa khóa công khai. Hệ thống

mã hóa này gồm hai khóa, khóa bí mật và khóa công khai. Mỗi chủ thể co một cặp

khóa như vậy, chủ thể đó sẽ giữ khóa bí mật, còn khóa công khai của chủ thể sẽ

được đưa ra công cộng để bất kỳ ai cũng có thể biết. Nguyên tắc của hệ thống mã

hóa khóa công khai đó là nếu mã hóa bằng khóa bí mật thì chỉ khóa công khai mới

giải mã đúng thông tin được và ngược lại, nếu mã hóa bằng khóa công khai, thì chỉ

có khóa bí mật mới giải mã đúng được.

Ngoài ra, chữ ký còn đảm bảo phát giác được bất kỳ sự thay đổi nào trên dữ

liệu đã được “ký”. Để ký lên một văn bản, phần mềm ký sẽ nghiền dữ liệu để gói

gọn bằng một vài dòng, được gọi là thông báo tóm tắt, bằng một tiến trình được gọi

là “kỹ thuật băm”, rồi tạo thành chữ ký điện tử. Cưới cùng, phần mềm ký tên sẽ

gắn chữ ký điện tử này vào văn bản.

Ví dụ: Giả sử bên A có tài liệu P cần ký. Bên A sẽ thực hiện băm văn bản thành

một bản tóm lược X, sau đó dùng khóa bí mật của mình ký lên bản tóm lược X để

được văn bản chữ ký điện tử Y, say đó gửi tài liệu P kèm theo chữ ký Y cho A.

Giả sử B muốn xác nhận tài liệu P là của A, với chữ ký là bản mã Y. Bên B sẽ

dùng khóa công khai của A để xác nhận chữ ký Y của A ký trên văn bản P gửi có

đúng hay không, nếu xác nhận đúng thì chữ ký Y chính là A ký trên văn bản P,

ngược lại thì không phải hoặc bản ký đã được thay đổi.

Một số trường hợp xảy ra với chữ ký điện tử, cũng giống như các trường hợp

xảy ra với chữ ký truyển thống. Ví dụ: Khi tài liệu của A bị thay đổi (dù chỉ một ký

tự, một dấu chấm, hay một ký hiệu bất kỳ), thì B xác nhận, anh ta sẽ thấy bản giải

mã khác với tài liệu của anh A. B sẽ kết luận rằng tài liệu đó đã bị thay đổi, không

phải là tài liệu của A đã ký.

Trường hợp khác, nếu A để lộ khóa bí mật, nghĩa là văn bản tài liệu của A có

thể ký bởi người khác có khóa bí mật của A. Khi một ai đó xác nhận tài liệu được

cho là của A ký, chữ ký vẫn là hợp lệ, mặc dù không phải chính A ký. Như vậy,

chữ ký của A sẽ không còn giá trị pháp lý nữa. Do đó, việc giữ khóa bí mật là tuyệt

đối quan trọng trong hệ thống chữ ký điện tử.

Page 9: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

9

Trong trường hợp ví dụ trên, A có một cặp khóa để có thể ký trên văn bản, tài

liệu số. Tương tự như vậy, B hay bất kỳ ai sử dụng chữ ký điện tử, đều có một cặp

khóa như vậy. Khóa bí mật được giữ riêng, còn khóa công khai được đưa ra công

cộng. Vậy vấn đề đặt ra là làm thế nào để biết một khóa công khai thuộc về A, B

hay một người nào đó.

Hơn nữa, giả sử trong môi trường giao dịch trên Internet, cần sự tin cậy cao, A

muốn giao dịch với một nhân vật X. X và A cần trao đổi thông tin cá nhân cho

nhau, các thông tin đó gồm họ tên, địa chỉ, số điện thoại, email… Vậy làm sao để

A có thể chắc chắn rằng mình đang giao dịch với nhân vật X chứ không phải là ai

khác giả mạo X? Chứng chỉ số được tạo ra để giải quyết vấn đề này! Chứng chỉ số

có cơ chế để xác nhận thông tin chính xác về các đối tượng sử dụng chứng chỉ số.

Thông tin giữa A và X sẽ được xác nhận bằng một bên trung gian mà A và X tin

tưởng.

Bên trung gian đó là nhà cung cấp chứng chỉ số CA (Certificate Authority). CA

có một chứng chỉ số của riêng mình, CA sẽ cấp chứng chỉ số cho A và X cũng như

những đối tượng khác.

Trở lại vấn đề trên, A và X sẽ có cách kiểm tra thông tin của nhau dựa trên

chứng chỉ số như sau: khi A giao dịch với X, họ sẽ chuyển chứng chỉ số cho nhau,

đồng thời họ cũng có chứng chỉ số của CA, phần mềm tại máy tính của A có cơ chế

để kiểm tra chứng chỉ số của X có hợp lệ không, phần mềm sẽ kết hợp chứng chỉ số

của nhà cung cấp CA và chứng chỉ của X để thông báo cho A về tính xác thực của

đối tượng X.

Nếu phần mềm kiểm tra và thấy chứng chỉ của X là phù hợp với chứng chỉ CA,

thì A có thể tin tưởng vào X.

Cơ chế chữ ký điện tử và chứng chỉ số sử dụng các thuật toán mã hóa đảm bảo

không thể giả mạo CA để cấp chứng chỉ không hợp pháp, mọi chứng chỉ giả mạo

đều có thể dễ dàng bị phát hiện.

Trở lại với việc ký văn bản, tài liệu, khóa bí mật sẽ dùng để ký các văn bản, tài

liệu của chủ sở hữu. Như đã đề cập trong ví dụ ở trên, giả sử A muốn gửi một văn

Page 10: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

10

bản kèm với chữ ký của mình trên văn bản đó, A sẽ dùng khóa bí mật để mã hóa

thu được bản mã văn bản, bản mã đó chính là chữ ký điện tử của A trên văn bản.

Khi A gửi văn bản và chữ ký, để người khác có thể xác nhận văn bản của mình

với thông tin đầy đủ về chủ sở hữu, A sẽ gửi cả chứng chỉ của mình đi kèm với văn

bản.

Giả sử X nhận được văn bản A gửi kèm với chứng chỉ, khi đó X có thể dễ dàng

xác nhận tính hợp pháp của văn bản đó.

Hình 1: Tạo chữ ký và kiểm tra chữ ký.

Page 11: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

11

Chương 2: Tìm hiểu thuật toán

Qua những phần tìm hiểu nhóm chúng em đã đi đến quyết định lựa chọn hàm

băm MD5 và thuật toán RSA để áp dụng vào phần viết chương trình ứng dụng

minh họa cho đề tài của nhóm.

2.1 Hàm băm

Hàm băm là các thuật toán không sử dụng khóa để mã hóa (ở đây ta dùng thuật

ngữ “băm” thay cho “mã hóa”), nó có nhiệm vụ “lọc” (băm) thông điệp được đưa

vào theo một thuật toán h một chiều nào đó, rồi đưa ra một bản băm gọi là văn bản

đại diện có kích thước cố định. Do đó người nhận không biết được nội dung hay độ

dài ban đầu của thông điệp đã được băm bằng hàm băm.

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.

2.1.1 Tính chất của hàm băm

Tính đụng độ: Theo nguyên lý Diricle: nếu có (n+1) con thỏ được bỏ vào n cái

chuồng thì phải tồn tại ít nhất một cái chuồng mà trong đó có ít nhất là hai con thỏ

ở chung. Rõ ràng với không gian giá trị Băm nhỏ hơn rất nhiều so với không gian

tin về mặt kích thước thì chắc chắn sẽ tồn tại đụng độ, nghĩa là có hai tin x # x’ mà

giá trị Băm của chúng là giống nhau, tức h(x) = h(x’).

Sau đây chúng ta sẽ xét các dạng tấn công có thể có, từ đó rút ra các tính chất

của hàm Băm:

Tính chất 1: Hàm băm không va chạm yếu

Hàm băm h là không va chạm yếu nếu khi cho trước một bức điện x, không thể

tiến hành về mặt tính toán để tìm ra một bức điện x’ x mà h(x’) = h(x). [1 - tr110]

Ví dụ: Người A gửi cho B (x, y) với y = SigA(h(x)). Nhưng trên đường truyền,

tin bị lấy trộm. Tên trộm, bằng cách nào đó tìm được một bản thông điệp x’ có

h(x’) = h(x) mà x’ x. Sau đó, tên trộm đưa x’ thay thế x rồi truyền tiếp cho người

B. Người B nhận được và vẫn xác thực được thông tin đúng đắn.

Page 12: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

12

Để tránh tấn công trên, hàm băm phải không va chạm yếu.

Tính chất 2: Hàm băm không va chạm mạnh

Hàm băm h là không va chạm mạnh nếu không có khả năng tính toán để tìm ra

hai bức thông điệp x và x’ mà x x’ và h(x) = h(x’).

Ví dụ: Đầu tiên, tên giả mạo tìm ra được hai bức thông điệp x’ và x (x’ x) mà

có h(x’) = h(x) (ta coi bức thông điệp x là hợp lệ, còn x’ là giả mạo). Tiếp theo,

tên trộm đưa cho ông A và thuyết phục ông này kí vào bản tóm lược h(x) để nhận

được y. Khi đó (x’, y) là bức điện giả mạo nhưng hợp lệ.

Để tránh kiểu tấn công này, hàm h phải thỏa mãn tính không va chạm mạnh

Tính chất 3: Hàm băm một chiều

Hàm băm h là một chiều nếu khi cho trước một bản tóm lược thông báo z,

không thể thực hiện về mặt tính toán để tìm bức điện x sao cho h(x) = z.

Việc giả mạo các chữ kí trên bản tóm lược thông báo z ngẫu nhiên thường xảy

ra với sơ đồ chữ kí. Giả sử tên giả mạo tính chữ kí trên bản tóm lược thông báo z

ngẫu nhiên như vậy. Sau đó anh ta tìm x sao cho z = h(x). Nếu làm được như vậy

thì (x,y) là bức điện giả mạo hợp lệ. Để tránh được tấn công này, h cần thoả mãn

tính chất một chiều:

2.1.2 Hàm băm MD5

MD5 (Message Digest).

Ronald Rivest là người đã phát minh ra các hàm Băm MD2, MD4 (1990) và

MD5 (1991). Do tính chất tương tự của các hàm Băm này, sau đây chúng ta sẽ xem

xét hàm Băm MD5, đây là một cải tiến của MD4 và là hàm Băm được sử dung

rộng rãi nhất, nguyên tắc thiết kế của hàm băm này cũng là nguyên tắc chung cho

rất nhiều các hàm băm khác.

Miêu tả MD5:

Page 13: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

13

Đầu vào là những khối 512 bit, được chia cho 16 khối con 32 bit. Đầu ra của

thuật toán là một thiết lập của 4 khối 32 bit để tạo thành một hàm Băm 128 bit duy

nhất.

Đầu tiên, ta chia bức điện thành các khối 512 bit, với khối cuối cùng (đặt là x

và x < 512bit) của bức điện, chúng ta cộng thêm một bit 1 vào cuối của x, theo sau

đó là các bit 0 để được độ dài cần thiết (512 bit). Kết quả là bức điện vào là một

chuỗi M có độ dài chia hết cho 512, vì vậy ta có thể chia M ra thành các N khối

con 32 bit (N khối này sẽ chia hết cho 16).

Bây giờ, ta bắt đầu tìm cốt của bức điện với 4 khối 32 bit A, B, C và D (được

xem như thanh ghi) :

A = 0x01234567

B = 0x89abcdef

C = 0xfedcba98

D = 0x76543210.

Người ta thường gọi A, B, C, D là các chuỗi biến số (chaining variables).

Bức điện được chia ra thành nhiều khối 512 bit, mỗi khối 512 bit lại được chia

ra 16 khối 32 bit đi vào bốn vòng lặp của MD5. Giả sử ta đặt a, b, c và d thay cho

A, B, C và D đối với khối 512 bit đầu tiên của bức điện. Bốn vòng lặp trong MD5

đều có cấu trúc giống nhau. Mỗi vòng thực hiện 16 lần biến đổi: thực hiện với một

hàm phi tuyến của 3 trong 4 giá trị a, b, c và d; sau đó nó cộng kết quả đến giá trị

thứ 4, tiếp đó cộng với một khối con 32 bit và một hằng số. Sau đó, nó dịch trái

một lượng bit thay đổi và cộng kết quả vào một trong 4 giá trị a, b, c hay d. Kết quả

cuối cùng là một giá trị mới được thay thế một trong 4 giá trị a, b, c hay d.

Page 14: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

14

Hình 2.1: Sơ đồ vòng lặp chính của MD5

Có bốn hàm phi tuyến, mỗi hàm này được sử dụng cho mỗi vòng:

F(X,Y,Z ) = (X and Y) or ((not X) and Z)

G(X,Y,Z ) = ((X and Z) or (Y and (not Z)))

H(X,Y,Z ) = X xor Y xor Z

I(X,Y,Z ) = Y xor (X or (not Z)).

Những hàm này được thiết kế sao cho các bit tương ứng của X, Y và Z là độc

lập và không ưu tiên, và mỗi bit của kết quả cũng độc lập và ngang bằng nhau.

Nếu Mj là một biểu diễn của khối con thứ j (j = 16) và <<<s là phép dịch trái của

s bit, thì các vòng lặp có thể biểu diễn như sau:

FF(a,b,c,d,Mj,s,ti) được biểu diễn a = b + ((a + F(b,c,d) + Mj + ti) <<< s)

GG(a,b,c,d,Mj,s,ti) được biểu diễn a = b + ((a + G(b,c,d) + Mj + ti) <<< s)

HH(a,b,c,d,Mj,s,ti) được biểu diễn a = b + ((a + H(b,c,d) + Mj + ti) <<< s)

II(a,b,c,d,Mj,s,ti) được biểu diễn a = b + ((a + I(b,c,d) + Mj + ti) <<< s).

Bốn vòng (64 bước) sẽ thực hiện như sau:

Vòng 1:

Khối của bức điện

Vòng

1

Vòng

2

Vòng

3

Vòng

4

A

B

C

D

A

B

C

D

Page 15: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

15

FF (a, b, c, d, M0, 7, 0x76aa478)

FF (d, a, b, c, M1, 12, 0xe8c7b756)

FF (c, d, a, b, M2, 17, 0x242070db)

FF (b, c, d, a, M3, 22, 0xc1bdceee)

FF (a, b, c, d, M4, 7, 0xf57c0faf)

FF (d, a, b, c, M5, 12, 0x4787c62a)

FF (c, d, a, b, M6, 17, 0xa8304613)

FF (b, c, d, a, M7, 22, 0xfd469501)

FF (a, b, c, d, M8, 7, 0x698098d8)

FF (d, a, b, c, M9, 12, 0x8b44f7af)

FF (c, d, a, b, M10, 17, 0xffff5bb1)

FF (b, c, d, a, M11, 22, 0x895cd7be)

FF (a, b, c, d, M12, 7, 0x6b901122)

FF (d, a, b, c, M13, 12, 0xfd987193)

FF (c, d, a, b, M14, 17, 0xa679438e)

FF (b, c, d, a, M15, 22, 0x49b40821).

Vòng 2:

GG (a, b, c, d, M1, 5, 0x61e2562)

GG (d, a, b, c, M6, 9, 0xc040b340)

GG (c, d, a, b, M11, 14, 0x265e5a51)

GG (b, c, d, a, M0, 20, 0xe9b6c7aa)

GG (a, b, c, d, M5, 5, 0xd62f105d)

GG (d, a, b, c, M10, 9, 0x02441453)

Page 16: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

16

GG (c, d, a, b, M15, 14, 0xd8a1e681)

GG (b, c, d, a, M4, 20, 0xe7d3fbc8)

GG (a, b, c, d, M9, 5, 0x21e1cde6)

GG (d, a, b, c, M14, 9, 0xc33707d6)

GG (c, d, a, b, M3, 14, 0xf4d50d87)

GG (b, c, d, a, M8, 20, 0x455a14ed)

GG (a, b, c, d, M13, 5, 0xa9e3e905)

GG (d, a, b, c, M2, 9, 0xfcefa3f8)

GG (c, d, a, b, M7, 14, 0x676f02d9)

GG (b, c, d, a, M12, 20, 0x8d2a4c8a).

Vòng 3:

HH (a, b, c, d, M5, 4, 0xfffa3942)

HH (d, a, b, c, M8, 11, 0x8771f681)

HH (c, d, a, b, M11, 16, 0x6d9d6122)

HH (b, c, d, a, M14, 23, 0xfde5380c)

HH (a, b, c, d, M1, 4, 0xa4beea44)

HH (d, a, b, c, M4, 11, 0x4bdecfa9)

HH (c, d, a, b, M7, 16, 0xf6bb4b60)

HH (b, c, d, a, M10, 23, 0xbebfbc70)

HH (a, b, c, d, M13, 4, 0x289b7ec6)

HH (d, a, b, c, M0, 11, 0xeaa127fa)

HH (c, d, a, b, M3, 16, 0xd4ef3085)

HH (b, c, d, a, M6, 23, 0x04881d05)

Page 17: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

17

HH (a, b, c, d, M9, 4, 0xd9d4d039)

HH (d, a, b, c, M12, 11, 0xe6db99e5)

HH (c, d, a, b, M15, 16, 0x1fa27cf8)

HH (b, c, d, a, M2, 23, 0xc4ac5665).

Vòng 4:

II (a, b, c, d, M0, 6, 0xf4292244)

II (d, a, b, c, M7, 10, 0x432aff97)

II (c, d, a, b, M14, 15, 0xab9423a7)

II (b, c, d, a, M5, 21, 0xfc93a039)

II (a, b, c, d, M12, 6, 0x655b59c3)

II (d, a, b, c, M3, 10, 0x8f0ccc92)

II (c, d, a, b, M10, 15, 0xffeff47d)

II (b, c, d, a, M1, 21, 0x85845dd1)

II (a, b, c, d, M8, 6, 0x6fa87e4f)

II (d, a, b, c, M15, 10, 0xfe2ce6e0)

II (c, d, a, b, M6, 15, 0xa3013414)

II (b, c, d, a, M13, 21, 0x4e0811a1)

II (a, b, c, d, M4, 6, 0xf7537e82)

II (d, a, b, c, M11, 10, 0xbd3af235)

II (c, d, a, b, M2, 15, 0x2ad7d2bb)

II (b, c, d, a, M9, 21, 0xeb86d391).

Những hằng số ti được chọn theo quy luật sau: ở bước thứ i giá trị ti là phần

nguyên của 232*abs(sin(i)), trong đó i = [0..63] được tính theo radian.

Page 18: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

18

Sau tất cả những bước này a, b, c và d lần lượt được cộng với A, B, C và D để

cho kết quả đầu ra, và thuật toán tiếp tục với khối dữ liệu 512 bit tiếp theo cho đến

hết bức điện. Đầu ra cuối cùng là một khối 128 bit của A, B, C và D, đây chính là

hàm Băm nhận được.

Tính bảo mật trong MD5:

Ron Rivest đã phác hoạ những cải tiến của MD5 so với MD4 như sau:

- Vòng thứ 4 được thêm vào (còn MD4 chỉ có 3 vòng).

- Mỗi bước được cộng thêm một hằng số duy nhất.

- Hàm G ở vòng 2 thay đổi từ ((X and Y) or (X and Z) or (Y and Z)) thành

((X and Z) or (Y and (not Z))) nhằm giảm tính đối xứng của G (giảm tính tuyến

tính).

- Mỗi bước được cộng kết quả của bước trước nó, làm các quá trình có tính

liên kết, phụ thuộc lẫn nhau.

- Việc các khối con bị thay đổi khi vào vòng 2 và vòng 3 làm cho khuôn

dạng cấu trúc vòng lặp thay đổi theo.

- Số lượng lượng bit dịch trái của mỗi vòng được tối ưu và các bước dịch ở

mỗi vòng là khác nhau.

Năm 1993, den Boer và Bosselaers đã tìm ra đụng độ trong việc sử dụng hàm

nén (vòng 2 và 3) của MD5. Điều này phá vỡ quy luật thiết kế MD5 là chống lại sự

đụng độ, nhưng MD5 vẫn là hàm Băm được sử dụng rộng rãi hiện nay.

Với những lý do trên vì vậy chúng em lựa chọn hàm băm MD5 để áp dụng vào

viết ứng dụng minh họa.

2.2 Thuật toán RSA

Với đề tài xây dựng thư viện các hàm mã hoá dùng cho việc bảo mật thông tin

trao đổi trong mô hình Client/Server, thì cần thiết một phương pháp mã hoá để áp

dụng, thuật toán mã hoá công khai đã được lựa chọn cho giải pháp này.

Với nhiều lựa chọn về thuật giải mã hóa công khai thì nhóm chúng em đã lựa

chọn thuật giải RSA để sử dụng cho phần viết chương trình ứng dụng minh họa.

o Khái niệm hệ mật mã RSA.

Page 19: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

19

o Phân phối khoá công khai trong RSA.

o Độ an toàn của hệ RSA.

o Một số tính chất của hệ RSA.

2.2.1 Khái niệm hệ mật mã RSA

Khái niệm hệ mật mã RSA đã được ra đời năm 1976 bởi các tác giả R.Rivets,

A.Shamir, và L.Adleman. Hệ mã hoá này dựa trên cơ sở của hai bài toán :

Bài toán Logarithm rời rạc (Discrete logarith)

Bài toán phân tích thành thừa số

Trong hệ mã hoá RSA các bản rõ,các bản mã và các khoá (public key và

private key) là thuộc tập số nguyên ZN = {1, . . . , N-1}. Trong đó tập ZN với

N=p×q là các ốs nguyên tố khác nhau cùng với phép cộng và phép nhân .

Modulo N tạo ra modulo số học N.

Khoá mã hoá EKB là cặp số nguyên (N,KB) và khoá giải mã D kB là cặp số

nguyên (N,kB), các số là rất lớn, số N có thể lên tới hàng trăm chữ số.

Các phương pháp mã hoá và giải mã là rất dễ dàng.

Công việc mã hoá là sự biến đổi bản rõ P (Plaintext) thàn h bản mã C

(Ciphertext) dựa trên cặp khoá công khai KB và bản rõ P theo công thức sau đây

Công việc giải mã là sự biến đổi ngược lại bản mã C thành bản rõ P dựa trên

cặp khoá bí mật kB , modulo N theo công thức sau:

Dễ thấy rằng, bản rõ ban đầu cần được biến đổi một cách thích hợp thành bản

mã, sau đó để có thể tái tạo lại bản rõ ban đầu từ chính bản mã đó:

Thay thế (1) vào (2) ta có :

Page 20: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

20

Trong toán học đã chứng minh được rằng, nếu N là số nguyên tố thì công thức

(4) sẽ có lời giải khi và chỉ khi KB.kB = 1 (mod N-1), áp dụng thuật toán ta thấy

N=p×q với p, q là số nguyên tố, do vậy (4) sẽ có lời giải khi và chỉ khi:

KB.kB ≡1 (mod γ(N)) (5)

trong đó γ(N) = LCM(p-1,q-1).

LCM (Lest Common Multiple) là bội số chung nhỏ nhất.

Nói một cách khác, đầu tiên người nhận B lựa chọn một khoá công khai KB một

cách ngẫu nhiên. Khi đó khoá bí mật kB được tính ra bằng công thức (5). Điều

này hoàn toàn tính được vì khi B biết được cặp số nguyên tố (p, q)

thì sẽ tính được γ(N).

Hình 2.2: Sơ đồ các bước thực hiện mã hoá theo thuật toán RSA

2.2.2 Phân phối khoá công khai trong RSA

Mỗi bên tự tạo ra một cặp khóa công khai-khóa riêng theo các bước sau:

Page 21: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

21

B1.Chọn ngẫu nhiên 2 số nguyên tố đủ lớn p#q

B2.Tính n=pq

B3.Tính .

B4.Chọn ngẫu nhiên khóa mã hóa e sao cho và là số nguyên tố

cùng nhau với .

B5.Tính khóa giải mã: d <= n sao cho .

Một số lưu ý:

Các số nguyên tố thường được chọn bằng phương pháp thử xác suất.

Các bước 4 và 5 có thể được thực hiện bằng giải thuật Euclid mở rộng (xem

thêm: số học môđun).

Bước 5 có thể viết cách khác: Tìm số tự nhiên sao cho

cũng là số tự nhiên. Khi đó sử dụng giá trị

.

Từ bước 3, PKCS#1 v2.1 sử dụng thay cho

.

Công bố khóa mã hóa công khai KU={e,n} trong đó:

e : Số mũ công khai hay số mũ mã hóa

n :Modul

Giữ khóa bí mật giải mã riêng KR={d,n} trong đó:

n :Modul

d :Số mũ bí mật hay số mũ giả mã

Các mã bí mật p,q bị hủy bỏ

Một dạng khác của khóa bí mật bao gồm:

o p, q :2 số nguyên tố chọn ban đầu

o d mod(p-1) và d mod(q-1)

o (1/q) mod p (thường gọi là iqmp)

Page 22: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

22

Dạng này cho phép thực hiện giả mã và ký nhanh hơn với việc sử dụng Định lý

số dư Trung Quốc.Ở dạng này tất cả các thành phần của khóa bí mật phải được giữ

bí mật.

Alice gửi khóa công khai cho Bob, và giữ bí mật khóa cá nhân của mình. Ở

đây, p và q giữ vai trò rất quan trọng. Chúng là các phân tố của n và cho phép tính

d khi biết e. Nếu không sử dụng dạng sau của khóa bí mật (dạng CRT) thì p và q sẽ

được xóa ngay sau khi thực hiện xong quá trình tạo khóa.

2.2.2.1 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 < n theo một hàm có thể đảo ngược (từ m có thể xác định lại M)

được thỏa thuận trước.

Lúc này Bob có m và biết n cũng như e do Alice gửi. Bob sẽ tính c là bản mã

hóa của m theo công thức:

Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ (theo môđun)

bằng (thuật toán bình phương và nhân) Cuối cùng Bob gửi c cho Alice.

2.2.2.2 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:

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ó :

.

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

.

Page 23: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

23

.

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ó:

.

hay:

Tạo khóa RSA

o Chọn 2 số nguyên tố p=17 và q=11

o Tính n=pq=17*11=187

o Tính =16*10=160

o Chọn e=gcd(e,160)=1 và 1<e<160; lấy e=7

o Xác định d: de = 1 mod 160 và d<=187

o Giá trị d=23 vì 23*7=161=1*160+1

o Công bố khóa công khai KU={7,187}

o Giữ bí mật khóa riêng KR={23,187}

o Hủy bỏ các giá trị bí mật p=17 và q=11

*/ Thực hiện RSA

Hình 2.3: Mô tả thực hiện RSA

Page 24: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

24

*/ Lưu ý về việc chọn tham số trong mã hóa RSA:

Cần chọn p, q đủ lớn

Thường chọn e nhỏ

Thường có thể chọn cùng giá trị của e cho tất cả người dung

Trước đây ta hay lấy giá trị của e là 3nhưng hiện nay thì nó lại được

coi là quá nhỏ

Thường chọn e= 216-1=65535

Giá trị của d sẽ lớn và khó đoán

Xét ví dụ sau :

p= 61 <- số nguyên tố đầu tiên

q = 53 <- số nguyêntố thứ hai

p và q phải được giữ bí mật .

m=p*q = 3233

e = 17

e và m được thông báo công khai .

ta tìm được nghịch đảo của 17 modulo Φ(3233) là

d = 2753

d phải được giữ bí mật .

Chìa khóa công cộng là (e ,m).

Chìa khóa riêng là (e,m).

Hàm số mã hóa là:

mã hoá(P) ≡ (P^e) mod m ≡ (P^17) mod 3233

Hàm số giải mã là: giải mã(C) ≡ (C^d) mod m ≡ (C^2753) mod 3233

Để mã hoá số “123”, làm như sau: mã hoá(123) ≡ (123^17) (mod 3233 )≡

337587917446653715596592958817679803 (mod 3233 ) ≡ 855

Như thế “123” được mã hóa thành “855”

Để giải mã “855”, làm như sau: giải mã(855) ≡ (855^2753) ( mod 3233 )≡ 123

Viết kết quả ngay ra đây, thì các bạn thấy qúa dễ dàng.

Vấn đề ở chỗ là tìm ra trị số của 855 khi được nâng lên luỹ thừa 2753.

Page 25: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

25

Đây là chỗ mà ta áp dụng phương pháp bình phương liên tiếp: ta có 2753 =

1010110000012

2753 = 1 + 2^6 + 2^7 + 2^9 + 2^11= 1 + 64 + 128 + 512 + 2048

Xét bản luỹ thừa sau đây của 855: 855^1 ≡ 855 (mod 3233) 855^2 ≡ 367 (mod

3233)

855^4 ≡ 367^2 (mod 3233) ≡ 2136 (mod 3233)

855^8 ≡ 2136^2 (mod 3233) ≡ 733 (mod 3233)

855^16 ≡ 733^2 (mod 3233) ≡ 611 (mod 3233)

855^32 ≡ 611^2 (mod 3233) ≡ 1526 (mod 3233)

855^64 ≡1526^2 (mod 3233) ≡ 916 (mod 3233)

855^128 ≡ 916^2 (mod 3233) ≡ 1709 (mod 3233)

855^256 ≡ 1709^2 (mod 3233) ≡ 1282 (mod 3233)

855^512 ≡ 1282^2 (mod 3233) ≡ 1160 (mod 3233)

855^1024 ≡ 1160^2 (mod 3233) ≡ 672 (mod 3233)

855^2048 ≡ 672^2 (mod 3233) ≡ 2197 (mod 3233)

Vậy:

855^2753 (mod 3233) ≡ 855^(1 + 64 + 128 + 512 + 2048) (mod 3233)

≡ 855^1 * 855^64 * 855^128 * 855^512 * 855^2048 (mod 3233)

≡ 855 * 916 * 1709 * 1160 * 2197 (mod 3233)

≡ 794 * 1709 * 1160 * 2197 (mod 3233)

≡ 2319 * 1160 * 2197 (mod 3233)

≡ 184 * 2197 (mod 3233)

≡ 123 (mod 3233)

≡ 123

Ưu điểm của nó là không bao giờ phải làm việc với nhũng số lớn hơn (m-1)^2.

Nếu các bạn có một chương trình điện toán như “bc” có sẵn trong Linux, bạn có

thể tính 855^2753 mod 3233 trực tiếp như sau: 855^2753 mod 3233

Đây là kết quả: 855^2753 mod 3233 ≡

50432888958416068734422899127394466631453878360035

Page 26: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

26

509315554967564501055628612082559978744245428110054383498654289336

384930246451441507851720917966547826353070996380353873265008966860

747718297458229503429504079035818459409563779385865989368838083602

840132509768620766977396…..542349304247490536939927761142617964071

001276432804287060835315945823059463268278612702033569803461432456

97021484375 mod 3233≡ 123 Kết quả là một số với 8072 chữ số.

Đó mới chỉ với hai số P =61 và Q =53

2.3 Một số tính chất của hệ RSA

- Trong các hệ mật mã RSA, một bản tin có thể được mã hoá trong thời gian

tuyến tính.

Đối với các bản tin dài, độ dài của các số được dùng cho các khoá có thể được coi

như là hằng. Tương tự như vậy, nâng một số lên luỹ thừa được thực hiện

trong thời gian hằng, các số không được phép dài hơn một độ dài hằng. Thực ra

tham số này che dấu nhiều chi tiết cài đặt có liên quan đến việc tính toán với các

con số dài, chi phí của các phép toán thực sự là một yếu tố ngăn cản sự phổ biến

ứng dụng của phương pháp này. Phần quan trọng nhất của việc tính toán có

liên quan đến việc mã hoá bản tin. Nhưng chắc chắn là sẽ không có hệ mã hoá nào

hết nếu không tính ra được các khoá của chúng là các số lớn.

- Các khoá cho hệ mã hoá RSA có thể được tạo ra mà không phải tính toán quá

nhiều.

Một lần nữa, ta lại nói đến các phương pháp kiểm tra số nguyên tố. Mỗi số nguyên

tố lớn có thể được phát sinh bằng cách đầu tiên tạo ra một số ngẫu nhiên lớn, sau

đó kiểm tra các số kế tiếp cho tới khi tìm được một số nguyên tố. Một phương pháp

đơn giản thực hiện một phép tính trên một con số ngấu nhiên, với xác suất 1/2 sẽ

chứng minh rằng số đ ược kiểm tra không phải nguyên tố. Bước cuối cùng là tính p

dựa vào thuật toán Euclid.

Như phần trên đã trình bày trong hệ mã hoá công khai thì khoá

giải mã (private key) kB và các thừa số p,q là được giữ bí mật và sự thành công

của phương pháp là tuỳ thuộc vào kẻ địch có khả năng tìm ra được giá trị của k B

Page 27: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

27

hay không nếu cho trước N và KB. Rất khó có thể tìm ra được kB từ KB cần biết

về p và q, như vậy cần phân tích N ra thành thừa số để tính p và q.

Nhưng việc phân tích ra thừa số là một việc làm tốn rất nhiều thời gian,

với kỹ thuật hiện đại ngày nay thì cần tới hàng triệu năm để phân tích một số có

200 chữ số ra thừa số.

Độ an toàn của thuật toán RSA dựa trên cơ sở những khó khăn của việc xác

định các thừa số nguyên tố của một số lớn. Bảng dưới đây cho biết các thời gian dự

đoán, giả sử rằng mỗi phép toán thực hiện trong một micro giây.

2.4 Độ an toàn của hệ RSA

Một nhận định chung là tất cả các cuộc tấn công giải mã đều mang

mục đích không tốt. Trong phần độ an toàn của hệ mã hoá RSA sẽ đề cập đến

một vài phương thức tấn công điển hình của kẻ địch nhằm giải mã trong

thuật toán này. Chúng ta xét đến trường hợp khi kẻ địch nào đó biết được modulo

N, khoá công khai KB và bản tin mã hoá C, khi đó kẻ địch sẽ tìm ra bản tin gốc

(Plaintext) như thế nào. Để làm được điều đó kẻ địch thường tấn vào hệ

thống mật mã bằng hai phương thức sau đây:

Phương thức thứ nhất :

Trước tiên dựa vào phân tích thừa số modulo N. Tiếp theo sau chúng sẽ tìm

cách tính toán ra hai số nguyên tố p và q, và có khả năng thành công khi đó sẽ tính

được λ(N) và khoá bí mật k B. Ta thấy N cần phải là tích của hai số nguyên tố, vì

nếu N là tích của hai số nguyên tố thì thuật toán phân tích thừa số đơn giản cần tối

đa N bước, bởi vì có một số nguyên tố nhỏ hơn N.

Mặt khác, nếu N là tích của n số nguyên tố, thì thuật toán phân tích thừa số

đơn giản cần tối đa N1/n bước.

Một thuật toán phân tích thừa số có thể thành phức tạp hơn, cho phép phân tích

một số N ra thành thừa số trong O( P ) bước, trong đó p là số chia nhỏ nhất của N,

việc chọn hai số nguyên tố là cho thuật toán tăng hiệu quả.

Phương thức thứ hai:

Phương thức tấn công thứ hai vào hệ mã hoá RSA là có thể khởi đầu bằng cách

giải quyết trường hợp thích hợp của bài toán logarit rời rạc. Trường hợp này

Page 28: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

28

kẻ địch đã có trong tay bản mã C và khoá công khai KB tức là có cặp (KB,C) Cả

hai phương thức tấn công đều cần một số bước cơ bản, đó là : O(exp lnNln(lnN) ),

trong đó N là số modulo.

2.5 Một số biến thể của hệ mã hóa RSA

Hệ mã RSA là một hệ mã có tính an toàn rất cao . Nhưng nó có một nhược

điểm lớn là tốc độ mã hóa chậm (nhất là so với các hệ mã đối xứng có cùng độ an

toàn ). Bởi vậy nó chỉ được sử dụng với các văn bản ngắn , và thường dùng trong

giao thức xác nhận chủ thể mà ta sẽ nói qua dưới đây.

Xác nhận chủ thể là việc đảm bảo khi người nhận có được mật thư thì biết chắc

chắn ai là tác giả bức thư đó . Và cũng đảm bảo việc không ai có thể mạo danh

người khác để gửi thư.

Để làm được điều đó , khi anh U muốn gửi bức thư P cho anh V . Đầu tiên anh

U dùng khóa lập mã Ev (được công khai của anh V) để mã hóa P thu được Ev (P).

Sau đó dùng khóa giải mã của mình là Du (bí mật) để tính Du (Ev (P)) = C và gửi

đi.

Sau khi nhận được mật thư C , anh V sẽ dùng khóa lập mã của anh U là Eu (công

khai) đế tính Eu (C) = Eu (Du (Ev ( P ))) = Ev ( P ) (do Eu là hàm ngược của Du)

Cuối cùng dùng khóa giải mã bí mật Dv để tính ra Dv (Ev ( P )) = P chính là bức

thư ban đầu.

Rõ ràng với cách này chúng ta chỉ có thể áp dụng với những văn bản ngắn ,còn

khi văn bản dài chúng ta phải áp dụng một phương pháp biến thể từ phương pháp

trên , đó là sử dụng hàm băm . Ở đây ta chỉ nói sơ qua về hàm băm vì nó vượt quá

nội dung của bài này.

Ta chỉ biết đó là một hàm đựơc công khai trên toàn hệ thống. Khi cần gửi văn

bản, người ta sẽ gửi kèm theo bản giá trị băm của văn bản, sau khi nhận được

người ta sẽ băm văn bản lại lần nữa và so sánh với giá trị băm của bên gửi, nếu

trùng khớp thì có thể khẳng định văn bản đã không bị thay đổi trên đường đi …

2.6 Đánh giá RSA

RSA đơn giản, dễ hiểu, dễ cài đặt.

Page 29: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

29

Hiệu suất hoạt động: RSA chạy chậm do việc phát sinh khóa công khai - khóa

bí mật hay quá trình mã hóa-giải mã tốn nhiều thời gian vì phải tính toán trên

các số nguyên dương cực lớn, có chiều dài vượt quá khả năng chứa của thanh

ghi nên phải giả lập, thực hiện lại nhiều lần và sử dụng nhiều đến bộ xử lý. Do

đó, Rsa không được sử dụng vào mục đích mã hóa các khối lượng dữ liệu lớn

mà chỉ ứng dụng trong chữ ký điện tử để mã hóa thông điệp ngắn đã qua hàm

băm, giả thuật trao đổi khóa bí mật (khóa dùng cho các hệ thống mã hóa đối

xứng - hay khóa riêng), hay chỉ mã hóa một lượng dữ lệu nhỏ.

Tính bảo mật: Như đã trình bày ở trên , độ an toàn của RSA dựa tren bài toán

phân tích ra thừa số nguyên tố. Do đó, chiều dài số càng lớn thì càng khó phân

tích ra thừa số nguyên tố.

Dù là hệ mã công khai xuất hiện đầu tiên, nhưng cho đến nay hệ mã RSA vẫn

cho thấy làmột hệ mã rất an toàn. Tính an toàn của nó dựa trên bài toán Phân

tích số nguyên.

Mà thuật toán phân tích một số nguyên m thành thừa số lại cần đến một thời

gian tăng theo cấp số luỹ thừa so với chiều dài của m. Nghĩa là nếu chỉ thêm

cho m vài ký tự, thời gian cần để đặt m thành thừà số sẽ tăng gấp đôi. Vì khi

thêm vài ký tự vào R là làm cho nó lớn thêm hàng trăm hay ngàn lần nhiều

hơn, tức là gia tăng danh sách các cặp thừa số có thề dùng làm p và q.

Vậy nếu giả như bất ngờ có ai tìm ra được một kỹ thuật mới giúp cho việc đặt

thành thừa số có thể thực hiện hàng tỷ tỷ lần nhanh hơn, thì ta chỉ cần chọn một

số m khác dài hơn chừng mười ký tự, tình trạng sẽ trở lại như ban đầu.

Thuật toán RSA chỉ bị phá vỡ khi tìm được một cách nào đó cho ta trực tiếp

các thừa số nguyên tố của một số. Cho đến bây giờ việc đó chưa được chứng

minh là bất khả. Nhưng nếu chúng ta biết rằng các số nguyên tố đã được

nghiên cứu từ cả ngàn năm nay, và trong vòng vài thập niên qua được nghiên

cứu rầm rộ trở lại. thì câu trả lời có vẻ còn rất xa vời. Nhưng nếu tìm ra được

một phương pháp như thế, thì thuật toán mã hoá sẽ bị thay đổi toàn diện.

Sau khi hệ mã RSA xuất hiện, đã có rất nhiều hệ mã công khai khác được ra

đời với rất nhiều cải tiến. Và với sự phát triển của mật mã khóa công khai, có lẽ

sẽ có lúc việc mã hóa không còn là việc xa lạ với mọi người nữa, mà có thể mã

Page 30: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

30

hóa sẽ được áp dụng rộng rãi trong đời sống chúng ta. Có thể lúc đó, trong

danh thiếp của mỗi người, ngoài số điện thoại và địa chỉ, còn có thêm khóa lập

mã của họ.

Page 31: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

31

Chương 3 : Hướng dẫn cài đặt và sử dụng phần mềm

3.1 Cài đặt

Hình 3.1 . Giao diện cài đặt phần mềm.

Hình 3.2 . Chọn “I accept the agreement” và nhấn next

Page 32: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

32

Hình 3.3 . Tiếp tục chọn next cho đến khi cài đặt xong.

3.2 Hướng dẫn sử dụng phần mềm

Hình 3.4. Giao diện phần tạo khóa.

Page 33: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

33

Bước 1 : Tại giao diện tạo khóa chúng ta nhấn vào phần tạo khóa để sinh ra khóa

công khai và khóa bí mật.

Hình 3.5 Giao diện ký văn bản

Bước 2 : Tại gia diện ký văn bản ta lần lượt thực hiện các bước sau

- Tải văn bản cần ký.

- Ký vào văn bản đó.

- Sau khi đã ký xong thì lưu lại chữ ký.

Hình 3.6 Giao diện xác nhận văn bản

Page 34: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

34

Bước 3 : Tại giao diện xác nhận văn bản ta thực hiện các bước

- Tải văn bản đã ký và cần xác nhận lên.

- Tải chữ ký kèm theo đã được ký ở văn bản.

- Xác nhận chữ ký

+ Nếu văn bản đã được chỉnh sửa hoặc chữ ký kèm theo không chính xác

sẽ xuất ra thông báo là văn bản đã được chỉnh sửa hoặc chữ ký không chính

xác.

+ Nếu văn bản và chữ ký đều chính xác thì chương trình sẽ thông báo chữ

ký đã chính xác.

Page 35: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

35

Kết Luận

Chữ ký điện tử là một trong những vấn đề khó trong lĩnh vực mật mã học. Nó là

một vấn đề không mới, đang được phát triển ở nước ta hiện nay và có nhiều công

việc cần giải quyết nếu muốn xây dựng một hệ thống ký số điện tử đạt tiêu chuẩn

quốc gia. Hướng tiếp cận theo mật mã học khóa công khai là hướng tiếp cận dựa

vào yêu cầu thực tế công nghệ là công khai và khóa mới là cái bí mật, độ an toàn

của hệ thống không dựa vào độ an toàn của công nghệ mà chính là khóa. Qua tìm

hiểu và nghiên cứu viết ứng dụng minh họa. Mặc dù chương trình mới ở mức đơn

giản nhưng ứng dụng xác thực khóa công khai ta có thể mở rộng ứng dụng sát với

thực tế yêu cầu.

+ Kết quả đạt được:

- Hiểu được khái niệm về chữ ký số điện tử, mô hình cũng như vai trò của chữ

ký điện tử

- Hiểu được các thuật toán mã hóa trong đó có : hàm băm MD5và thuật toán

RSA.

- Phần mềm ứng dụng chữ ký điện tử.

+ Hạn chế:

- Phần mềm chưa được tối ưu về tốc độ mã hóa.

- Phân mềm còn hạn chế chỉ đọc được một số file nhất định. VD : Chỉ đọc được

File *.doc, *.docx, *.txt.

- Giao diện chưa thân thiện đối với người dùng.

- Tính năng phần mềm chưa đa dạng.

+ Hướng phát triển:

- Phần mềm sẽ tách biệt giữa các phần chức năng riêng biệt ra các form khác

nhau.

- Thêm một số tính năng có thể kết hợp socket để thực hiện kiểm tra chữ ký

thông qua internet.

- Thiết kế giao diện gần gũi với người dùng.

Page 36: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

36

Tài liệu tham khảo: Tiếng việt

[1] Bảo mật thông tin và mô hình ứng dụng – Nguyễn xuân dũng.

[2] Thương mại điện tử - TS. Nguyễn Hoài Anh & ThS. Ao Thu Hoài.

Tiếng anh

[3] RSA and PUBLIC-KEY CRYPTOGRAPHY by Richard A. Mollin.

[4] Cryptography: Theory and Practice by Douglas Stinson.

Website

[5] http://chukysovnpt.com.vn/chu-ky-so/ .

[6] http://vi.wikipedia.org/wiki/Hàm_băm_mật_mã_học .

[7] http://www.phpvn.org/index.php?topic=143.0

Page 37: [Nguyễn Huy Lân] - Tìm Hiểu Chữ Ký Điện Tử

37

Nhận xét của GV:

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................