1. Trang chủ
  2. » Giáo Dục - Đào Tạo

đề tài tìm hiểu về chữ ký điện tử và xây dựng ứng dụng tạo và xác thực chữ ký điện tử

51 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đề Tài Tìm Hiểu Về Chữ Ký Điện Tử Và Xây Dựng Ứng Dụng Tạo Và Xác Thực Chữ Ký Điện Tử
Tác giả Nguyễn Văn Quang, Đào Chiến Thắng
Người hướng dẫn Mình Thiền Lý
Trường học Trường Đại Học Công Nghiệp Thông Tin TP. Hồ Chí Minh
Chuyên ngành Kỹ Thuật An Toàn Thông Tin
Thể loại Đồ án môn học
Năm xuất bản 2021
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 51
Dung lượng 1,05 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ch°¡ng 5: Xây dąng āng dāng t¿o và xác thąc chă ký số Trong ch°¡ng này chúng ta sẽ ti¿n hành chắt lọc nhăng tinh hoa vÁ chă ký số và t¿o ra một ch°¡ng trình có khả năng xác t¿o ra chă ký

Trang 1

TR¯ÞNG Đ¾I HàC CÔNG NGHIÞP THĂC PHÆM

TP HCM

KHOA CÔNG NGHà THÔNG TIN

Ngành An Toàn Thông Tin

-o0o -

Đà ÁN MÔN HàC

ĐÀ TÀI : TÌM HIÂU VÀ CHĀ KÝ ĐIÞN Tþ VÀ XÂY

ĐIÞN Tþ

Sinh viên th ąc hián:

Gi ảng viên h°ớng dẫn: M ¿nh Thiên Lý

TP Hồ Chí Minh, Tháng 6 năm 2021

Trang 2

L ÞI CÀM ¡N

Chúng em xin chân thành gāi lßi cảm ¡n sâu sắc tới cô M¿nh Thiên Lý - ng°ßi luôn chỉ bảo, nhắc nhá, h°ớng dẫn, cung cấp nhăng tài liáu quý giá, ki¿n thāc bổ ích

và dẫn dắt tāi em hoàn thành đồ án này

Chúng em cũng xin gāi lßi cảm ¡n các thầy cô giáo trong khoa Công nghá thông tin - tr°ßng Đ¿i học Công nghiáp Thąc phẩm TP HCM và gia đình đã t¿o điÁu kián giúp đỡ vÁ vật chất và tinh thần đà chúng em có thà tập trung và có động ląc đà hoàn thành tốt đồ án này

Sinh viên thąc hián

Nguyßn Văn Quang Đào Chi¿n Thắng

Trang 3

NH ¾N XÉT CĂA GIÁO VIÊN H¯àNG DÈN

Nhóm sinh viên gồm : 1 Nguyßn Văn Quang MSSV: 2033181060

2 Đào Chi¿n Thắng MSSV: 2033181066 Nhận xét

: ………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

ĐiÃm đánh giá: ………

………

………

………

………

………

………

………

Ngày ……….tháng ………….năm 2021

( Ký tên, ghi rõ họ và tên)

Trang 4

M ĀC LĀC

L ÞI CÀM ¡N 2

NH ¾N XÉT CĂA GIÁO VIÊN H¯àNG DÈN 3

M ĀC LĀC 4

DANH M ĀC HÌNH ÀNH 7

THU ¾T NGĀ VI¾T TÀT 8

L ÞI NÓI ĐÄU 9

T ÞNG QUAN VÀ CÁC LO¾I MÃ HOÁ 11

CH¯¡NG 1. 1.1 Giới thiáu vÁ mật mã học 11

Mật mã học là gì? 11

1.1.1 Các thành phần mật mã học 11

1.1.2 Quy trình c¡ bản cÿa mật mã học 12

1.1.3 1.2 Phân lo¿i há mã hoá 12

Há mã dòng - Stream Cipher 12

1.2.1 Há mã khối - Block Cipher 13

1.2.2 Há mã hoá đối xāng 14

1.2.3 Há mã hoá bất đối xāng 20

1.2.4 Há mã hoá RSA 21

1.2.5 HÀM BM (HASH) 26

CH¯¡NG 2. 2.1 S¡ l°ÿc vÁ hàm băm 26

2.2 Khái niám hàm băm 26

2.3 Tính chất cÿa hàm băm 26

2.4 Thuộc tính cần thi¿t 26

2.5 Cách ho¿t động cÿa hàm băm 27

2.6 Các lo¿i hàm băm phổ bi¿n 28

MD5 (Message - Digest Algorithm 5) 28 2.6.1

Trang 5

SHA (Secure Hashing Algorithm) 29

2.6.2 2.7 Āng dāng cÿa hàm băm 30

LÝ THUY ¾T VÀ CHĀ KÝ SÞ 32

CH¯¡NG 3. 3.1 Giới thiáu vÁ chă ký số 32

3.2 Khái niám chă ký số 32

3.3 Các °u điÃm cÿa chă ký số 32

3.4 Quy trình t¿o và xác thąc chă ký số 34

Thuật toán t¿o khoá 34

3.4.1 T¿o chă ký và ký vào thông điáp 34

3.4.2 KiÃm tra và xác thąc chă ký số 34

3.4.3 M ÞT SÞ QUY ĐÞNH, THÔNG T¯ VÀ CHĀ KÝ SÞ 37

CH¯¡NG 4. 4.1 Quy định vÁ ký số, kiÃm tra chă ký số trên văn bản đián tā trong c¡ quan nhà n°ớc viát nam 37

Quy định vÁ giá trị pháp lý cÿa chă ký số 37

4.1.1 Quy định vÁ điÁu kián t¿o chă ký số đảm bảo an toàn đối với các đ¡n vị 4.1.2 cung cấp 37 4.2 Chāng th° số, chă ký số n°ớc ngoài t¿i viát nam 38

Đối t°ÿng sā dāng chāng th° số n°ớc ngoài 38

4.2.1 Đối t°ÿng sā dāng chāng th° số n°ớc ngoài 38

4.2.2 Ph¿m vi ho¿t động và thßi h¿n giấy phép sā dāng chāng th° số n°ớc ngoài 4.2.3 t¿i Viát Nam 38

Đối với thuê bao sā dāng chāng th° số n°ớc ngoài t¿i Viát Nam: 38

4.2.4 Đối với tổ chāc cung cấp dịch vā chāng thąc chă ký số n°ớc ngoài có 4.2.5 chāng th° số đ°ÿc công nhận t¿i Viát Nam 39

XÂY D ĂNG ĄNG DĀNG T¾O VÀ XÁC THĂC CHĀ KÝ CH¯¡NG 5 S Þ 40

5.1 Giới thiáu vÁ phần mÁm 40

5.2 Thąc hián t¿o khóa bí mật và khóa công khai 41

Trang 6

5.3 Thąc hián t¿o chă ký số bằng giải thuật RSA 43 5.4 Thąc hián giải mã đà xác thąc cho chă ký đ°ÿc t¿o bằng giải thuật RSA

45

K ¾T LU¾N 48

PH Ā LĀC 49 TÀI LI ÞU THAM KHÀO 51

Trang 7

DANH M ĀC HÌNH ÀNH

Hình 1.1 Mô hình mã hoá dă liáu c¡ bản 12

Hình 1.2 Mô hình vÁ há mã hoá dòng Stream Cipher 13

Hình 1.3 Mô hình vÁ há mã hoá khối Block Cipher 14

Hình 1.4 Bảng ví dā sắp x¿p thuật toán mã hoá thay th¿ 15

Hình 1.5 Bảng mã dịch chuyÃn 17

Hình 1.6 Cách ho¿t động cÿa playfair 18

Hình 1.7 Cách x¿p ma trận khóa cÿa playfair 19

Hình 1.8 K¿t quả trả vÁ khi dùng playfair 19

Hình 1.9 Quy trình mã hoá RSA 23

Hình 2.1 S¡ đồ ho¿t động hàm băm 27

Hình 2.2 Ví dā vÁ hàm băm 28

Hình 2.3 Ví dā vÁ hàm băm MD5 bằng công cā HashCalc 29

Hình 3.1 Quy trình t¿o và xác thąc chă ký số 35

Hình 5.1 Giao dián started cÿa phần mÁm 40

Hình 5.2 Các độ dài khóa mà ch°¡ng trình hỗ trÿ 41

Hình 5.3 Code truyÁn giá trị độ dài khoá vào đối t°ÿng RSA 41

Hình 5.4 Code t¿o khoá công khai và bí mật 42

Hình 5.5 Khóa bí mật và khoá công khai 43

Hình 5.6 Giao dián t¿o chă ký số 43

Hình 5.7 Tuỳ chọn nén file sau khi t¿o thành công chă ký 45

Hình 5.8 Giao dián xác thąc chă ký số 46

Hình 5.9 Chă ký giống với văn bản 46

Hình 5.10 Chă ký không giống với văn bản 47

Trang 8

THU ¾T NGĀ VI¾T TÀT Tên vi¿t tÁt Tên ti¿ng anh Tên ti¿ng viát

DES Data Encryption Standard Chuẩn mã hoá dă liáu

RSA Rivest - Shamir - Adleman Há mã hoá khoá công khai RSA

MAC Message Authentication Code Mã xác thąc thông báo

MD Message - Digest Algorithm Thuật toán tóm tắt hóa thông điáp

Trang 9

L ÞI NÓI ĐÄU

Tÿ thuá xa x°a, trong các ho¿t động giao dịch giăa các bên đÁu cần các bián pháp xác thąc đà đảm bảo tính an toàn cÿa giao dịch, và đà có thà chāng thąc hay xác minh ta có rất nhiÁu cách, trong số đó chă ký vi¿t tay là hình thāc đ¡n giản và an toàn nhất Nh°ng trong thßi đ¿i hián nay chă ký vi¿t tay ngày càng kém hiáu quả, vì nó hoàn toàn có thà bị làm giả và są bất tián cÿa viác phải đồng thßi có są hián dián cÿa hai bên đà có thà ký k¿t hÿp đồng Nhất là thßi gian gần đây khi dịch bánh ngày càng hoành hành và con ng°ßi phải h¿n ch¿ ti¿p xúc với nhau khi¿n điÁu đó càng trá nên khó khăn

à thßi điÃm công nghá phát triÃn nh° bây giß, viác giao dịch trên m¿ng trá nên khá quen thuộc với mỗi ng°ßi, và trong các cuộc giao dịch yêu cầu cần có các hÿp đồng thì l¿i đặt ra các vấn đÁ lớn vÁ tính xác thąc và an toàn cÿa hÿp đồng vì nó có thÃ

bị lÿi dāng bái <bên thā ba= hoặc cả hai bên thąc hián giao dịch cho các māc đích xấu

Tÿ nhăng vấn đÁ vÁ trên, chă ký đián tā đã đ°ÿc cho ra đßi đà giải quy¿t chúng Bản thân chă ký đián tā mang một số nét t°¡ng đồng với chă ký vi¿t tay nh°ng bảo mật an toàn h¡n vì có sā dāng các công nghá mã hóa, chāng thąc và hàm băm Đó cũng là lý do t¿i sao mà chúng em chọn đÁ tài đồ án môn học: <TÌM HIÂU VÀ CHĂ

KÝ ĐIàN TĀ VÀ XÂY DĄNG ĀNG DĀNG T¾O VÀ XÁC THĄC CHĂ KÝ ĐIàN TĀ= cùng với māc tiêu nắm văng đ°ÿc ki¿n thāc vÁ chă ký số và t¿o ra một āng dāng trên nÁn tảng Window có thà t¿o và xác thąc chă ký số, góp phần cống hi¿n cho đßi sống thành quả tÿ nhăng kinh nghiám và ki¿n thāc thu đ°ÿc sau khi thąc hián đồ án này

Ngoài phần má đầu và k¿t luận, đồ án này bao gồm 5 ch°¡ng

Ch°¡ng 1: Tổng quan vÁ các lo¿i mã hoá

Trong ch°¡ng này chúng ta sẽ đ°ÿc bi¿t thêm vÁ các khái niám mã hoá, một số các ph°¡ng pháp mã hoá, các dẫn chāng, ví dā cā thà và giới thiáu chi ti¿t vÁ thuật

toán khoá công khai RSA

Trong ch°¡ng này chúng ta sẽ tìm hiÃu khái niám vÁ chă ký số và các quy trình

đà t¿o và xác thąc chă ký số áp dāng tÿ ki¿n thāc á ch°¡ng 1 và 2

Ch°¡ng 4: Một số luật và quy định vÁ dịch vā chă ký số

Trang 10

Trong ch°¡ng này chúng ta tìm hiÃu và nắm rõ đ°ÿc một số thông t°, nghị định, luật đ°ÿc Nhà n°ớc ban hành vÁ chă ký số, āng dāng thąc t¿ trong giao dịch giăa các quốc gia

Ch°¡ng 5: Xây dąng āng dāng t¿o và xác thąc chă ký số

Trong ch°¡ng này chúng ta sẽ ti¿n hành chắt lọc nhăng tinh hoa vÁ chă ký số

và t¿o ra một ch°¡ng trình có khả năng xác t¿o ra chă ký số cũng nh° có thà xác thąc chă ký số đã t¿o bằng các thuật toán mã hoá RSA và hàm băm

Trang 11

TÞNG QUAN VÀ CÁC LO¾I Mà HOÁ CH¯¡NG 1.

Mật mã học đi liÁn với quá trình mã hoá (Cryptography) - cách thāc chuyÃn đổi nội dung cÿa một văn bản, một tập tin sang một d¿ng dă liáu khác (bản mờ), khi¿n chúng khó có thà đọc đ°ÿc bái nhăng truy cập bất hÿp pháp đ¿n dă liáu đ°ÿc truyÁn

đi - và quá trình giải mã (Cryptanalysis) - quá trình chuyÃn đổi bản mß đã qua mã hoá

thành d¿ng văn bản gốc có thà đọc đ°ÿc (bản gốc) Hai quá trình này đảm bảo tính bí mật cho các thông tin, dă liáu quan trọng chẳng h¿n nh° trong quân są, tình báo, ngo¿i giao, kinh t¿, th°¡ng m¿i, …

Vào các năm gần đây, ph¿m vi āng dāng cÿa mật mã hóa đ°ÿc má rộng vô cùng rộng rãi Mật mã hóa hián đ¿i cung cấp c¡ ch¿ cho nhiÁu ho¿t động trong đßi sống sinh ho¿t h¡n là chỉ duy nhất có công dāng giă bí mật và có một lo¿t các āng dāng nh°: Các giao dịch tài chính, chuyÃn khoản, mua sắm hàng hoá, th° tÿ, tài liáu, chāng thąc khóa công khai, bầu cā đián tā hay tiÁn đián tā, … Mọi thā đ°ÿc thąc hián nhiÁu qua môi tr°ßng m¿ng đòi hỏi dă liáu phải đ°ÿc bảo mật tốt dẫn đ¿n viác tất cả quá trình trao đổi đó đÁu phải đ°ÿc mã hoá Thậm chí nhăng ng°ßi không có nhu cầu

vÁ tính bí mật cũng sā dāng các công nghá mật mã hóa, th°ßng đ°ÿc các kỹ s° thi¿t k¿

và thi¿t lập sẵn trong các c¡ sá h¿ tầng cÿa công nghá tính toán và liên l¿c vißn thông

Các thành phần mật mã học

1.1.2

M ột hệ mã hoá bao gồm các yếu tố quan trọng sau:

 Thông báo, văn bản gốc M: Là một chuỗi hău h¿n các ký hiáu lấy tÿ một bảng chă cái Z nào đó và đ°ÿc ký hiáu là M

 Mã hoá: Là quy trình bi¿n đổi văn bản gốc khi¿n nó không thà đọc đ°ÿc đối với bất kỳ ng°ßi khác ngoài ng°ßi nhận đ°ÿc mong muốn

 Phép mã hoá th°ßng đ°ÿc ký hiáu là e (M), với M là thông báo cần mã hoá

 Khoá K: Là một thông số đầu vào cÿa phép mã hoá hoặc giải mã Khoá dùng đÃ

mã hoá ký hiáu là Ke, khoá dùng đà giải mã ký hiáu là Kd

 Chuỗi mật mã, bản mß C: Là dă liáu bản gốc đã đ°ÿc mã hoá, ký hiáu là:

c = e (m, ke)

Trang 12

 Giải mã: Là quá trình ng°ÿc l¿i với mã hoá, dùng khoá K đà chuyÃn dă liáu bản

mß C vÁ l¿i dă liáu gốc M, ký hiáu là:

d (c, kd) = m

Quy trình cơ bản của mật mã học

1.1.3

Ví d ụ 1.1 về quy trình cơ bản cÿa mật mã học

A (ng°ßi gāi) muốn gāi cho B (ng°ßi nhận) một thông báo m (bản rõ), A dùng thuật toán phép mã hoá e k¿t hÿp khoá K (key) đà bi¿n thông báo m thành chuỗi mật

mã c (bản mß) và gāi cho B Bản c đ°ÿc truyÁn đi qua bằng các kênh truyÁn bình th°ßng, giả sā có bị một ng°ßi xấu hay một hacker bắt đ°ÿc gói tin c thì cũng không thà đọc đ°ÿc vì thông báo đã bị mã hoá, còn khoá K, A gāi cho B bằng một thuật toán truyÁn khoá bí mật Đ¿n n¡i, B thu thập khoá K và chuỗi mật mã c l¿i, sā dāng thuật toán phép giải mã d k¿t hÿp khoá K đà chuyÃn chuỗi mật mã c trá vÁ thông báo gốc m Vậy là thông báo đã đ°ÿc truyÁn đi một cách an toàn tÿ A đ¿n tay B

Hình 1.1 Mô hình mã hoá d ữ liệu cơ bản

1.2 PHÂN LO¾I HÞ MÃ HOÁ

Mật mã học đ°ÿc chia ra thành hai ph°¡ng pháp mã hoá dă liáu, đó là hệ mã

hoá khoá đối xāng và há mã hoá khoá công khai Trong đó, mã hoá khoá công khai

đóng góp một phần lớn không thà thi¿u trong viác t¿o lập và xác thąc chă ký số Tr°ớc khi chúng ta đi vào phần tìm hiÃu hai há mã hoá trên thì chúng ta sẽ nghiên cāu qua lý thuy¿t vÁ há mã dòng và há mã khối

Hệ mã dòng - Stream Cipher

1.2.1

Với các há mã dòng (stream cipher), chúng ta sẽ thąc hián xā lý trên tÿng bit cÿa bản rõ ĐiÃn hình nhất cho một há mã dòng đã rất nổi ti¿ng đó là One Time Pad (OTP), chú ý OTP này khác với One Time Password Ta có m và khóa k có cùng độ dài (bit), One - Time - Pad đ°ÿc xác định nh° sau:

Trang 13

E (m, k) = m XOR k = c

D (c, k) = c XOR k = (m XOR k) XOR k = m

Hình 1.2 Mô hình về hệ mã hoá dòng Stream Cipher

Với OTP, khóa k phải đáp āng đÿ 3 điÁu kián sau đây:

 Độ dài cÿa khóa phải bằng kích th°ớc bản rõ

 Khóa phải đ°ÿc chọn hoàn toàn ngẫu nhiên (truly random)

 Và khóa chỉ đ°ÿc sā dāng một lần

N¿u thỏa mãn 3 điÁu kián trên, há mã OTP sẽ đ°ÿc xem là an toàn tuyát đối (perfect security) theo định lý cÿa Claude Shannon, tāc là kẻ tấn công sẽ không thà bi¿t đ°ÿc thông tin gì cÿa bản rõ m chỉ tÿ bản mã c

Bái vì các hàm mã hóa / giải mã chỉ đ¡n giản là thąc hián phép toán XOR trên các bit cÿa dă liáu đầu vào, do đó OTP cho ta tốc độ tính toán rất nhanh

Vì độ dài khoá và bản rõ bằng nhau, nên chúng ta th°ßng truyÁn 2 thā đó chung

với nhau một cách bí mật Đây cũng nh°ÿc điÃm cÿa OTP Trong thąc t¿, ng°ßi ta th°ßng t¿o ngẫu nhiên khoá K có kích th°ớc ngắn h¡n độ dài bản rõ, sau đó dùng một hàm t¿o số ngẫu nhiên (Pseudo Random Generator - PRG) đà tăng độ dài cÿa khóa k

đó

Vì vậy, thąc tißn cÿa OTP đ°ÿc sā dāng nh° sau:

E'(m, k) = E(m, PRG(k)) = m XOR PRG(k) = c

D'(c, k) = D(c, PRG(k)) = (m XOR PRG(k)) XOR PRG(k) = m, trong đó, k có kích th°ớc nhỏ h¡n rất nhiÁu so với m

Hệ mã khối - Block Cipher

1.2.2

Với các há mã khối, giống nh° tên gọi cÿa chúng, là các há mã hoá chia dă liáu đầu vào thành các khối bit có kích th°ớc cố định và thąc hián tính toán và mã hoá trên tÿng khối đó, kích th°ớc thông th°ßng là 64 hoặc 128 bit Vì lý do đó, khi đầu vào bản

rõ có độ dài không phải là bội số cÿa khối, ta cần phải thąc hián thao tác đám (padding) sao cho số bit cÿa đầu vào sau khi đám phải là bội số cÿa khối

Trang 14

Hình 2.3 Mô hình v ề hệ mã hoá khối Block Cipher

Các há mã khối nổi ti¿ng đó là DES có kích th°ớc khối là 64 bit (tāc là mỗi lần

mã hóa một khối bản rõ 64 bit và cho ra khối bản mã 64 bit) và kích th°ớc khóa là 56 bit; AES có kích th°ớc khối là 128 bit và kích th°ớc khóa là 128, 192 hoặc 256 bit

Thông th°ßng các há mã hoá khối chậm h¡n so với các há mã hoá dòng, nh°ng làm viác tốt với nhăng khối dă liáu đã bi¿t tr°ớc kích th°ớc, ví dā mã hóa file, mã hóa tin nhắn trên giao thāc nh° là HTTP

Hệ mã hoá đối xứng

1.2.3

Trong mật mã học, các thuật toán khóa đối xāng (symmetric - key algorithms)

là một lớp các thuật toán mật mã hóa trong đó các khóa dùng cho viác mật mã hóa và giải mã là một Khoá cÿa há mã hoá này đ°ÿc dùng chung cho cả hai ng°ßi và đ°ÿc thống nhất với nhau tr°ớc mỗi giao dịch

Há mã hoá đối xāng phát triÃn thành hai giai đo¿n, giai đo¿n sā dāng các giải thuật mã hoá cổ điÃn và giai đo¿n sā dāng các giải thuật mã hoá hián đ¿i

1.2.3.1 Hệ mã hoá cổ điển

Các tính ch Ãt c¢ bÁn căa các giÁi thu¿t m¿t mã hoá là

 Phải có tính bảo mật cao

 Thuật toán phải dß dàng ti¿p cận nh°ng vẫn bảo mật, không phā thuộc vào giải thuật mà chú trọng vÁ khoá

 Có thà áp dāng vào các āng dāng trên các thi¿t bị đián tā

M ßt sß giÁi thu¿t mã hoá cß điÃn

Mã thay thế đơn giản (Substitution Cipher)

Là ph°¡ng pháp mà tÿng ký tą (hay tÿng nhóm ký tą) trong thông tin gốc đ°ÿc thay th¿ bằng một ký tą (hay một nhóm ký tą) khác t¿o ra bản mã hoá Bên nhận khi

Trang 15

nhận đ°ÿc bản mß chỉ cần đảo ng°ÿc quá trình thay th¿ á trên đà có đ°ÿc thông tin gốc ban đầu

Khoá th°ßng đ°ÿc biÃu dißn bằng một chuỗi 26 ký tą Có 26! (≈ 4.1026) hoán

vị (khoá)

• Ví dụ 1.2:

Khoá là chuỗi dlryvohezxwptbgfjqnmuskaci

Dąa vào khoá này chúng ta thay th¿ ký hiáu A trong thông báo bằng d, ký hiáu

B sẽ đ°ÿc thay bằng l, … cā th¿ đ¿n khi h¿t khoá

Cho một đo¿n thông tin gốc là MATMAHOC

Chúng ta tìm ra bản mß bằng cách thay th¿ các ký tą t°¡ng āng trong bảng d°ới đây

Hình 3.4 B ảng ví dụ sắp xếp thuật toán mã hoá thay thế

Tÿ đó chúng ta thu đ°ÿc k¿t quả: tdmtdegr

Mã thay thế n - gram

Mã thay th¿ n – gram là d¿ng mã hoá cao cấp h¡n mã thay th¿, thay vì thay th¿

ký tą, ng°ßi ta thay th¿ bản gốc cho tÿng cām 2 ký tą (diagram) hoặc cām 3 ký tą (trigram) hoặc thay th¿ tổng quát cho tÿng cām n ký tą (n - gram)

Với bảng chă cái gồm 26 ký tą ti¿ng Anh thì phép thay th¿ n - gram sẽ có khoá

là một hoán vị cÿa 26 n - gram khác nhau

Trong tr°ßng hÿp diagram thì chúng ta có thà biÃu dißn bằng một dãy 2 chiÁu

26 x 26 trong đó các hàng ngang biÃu dißn ký hiáu đầu tiên, các cột dọc biÃu dißn ký hiáu thā hai, nội dung cÿa các ô biÃu dißn chuỗi thay th¿ āng với các cột và hàng ngang cÿa bảng

Trang 16

B BO SC

Mã hoán vị bậc d (Permutation Cypher)

Đối với một số nguyên d°¡ng d bất kỳ, mã hoán vị bậc d sẽ thąc hián chia thông báo m thành tÿng khối có chiÁu dài d Rồi lấy một hoán vị h cÿa 1, 2,3, …, d và

áp dāng h vào mỗi khối

• Ví dụ 1.3: N¿u d = 5 và h = (4 1 3 2 5), hoán vị (1 2 3 4 5) sẽ đ°ÿc thay th¿

bằng hoán vị mới (4 1 3 2 5)

• Ví dụ 1.4: Ta có thông báo

m = JOHN IS A GOOD ACTOR

Qua phép mã hoá này m sẽ trá thành chuỗi mật mã c sau:

c = NJHO AI S DGOO OATCR

Mã dịch chuyển (Shift Cypher)

• Trong ph°¡ng pháp Vigenère, khoá bao gồm một chuỗi có d ký tą Chúng đ°ÿc vi¿t lặp l¿i bên d°ới thông báo và đ°ÿc cộng modulo 26 Các ký tą trắng đ°ÿc giă nguyên không cộng

• N¿u d = 1 thì khoá chỉ là một ký tą đ¡n và đ°ÿc gọi là ph°¡ng pháp Caesar (đ°ÿc đ°a ra sā dāng đầu tiên bái Julius Caesar)

Trang 17

Hình 4.5 B ảng mã dịch chuyển

Ví d ụ 1.5:

Tÿ khoá: CHIFFRE

Mã hoá: VIGENERE

K¿t quả thu đ°ÿc dąa trên bảng mã: XPOJSVVG

Mã tuyến tính (Affine Cipher)

Ph°¡ng pháp mã tuy¿n tính là một d¿ng mã hoá có d¿ng nh° sau:

e(x) = ax + b (mod 26), với a, b �㔖 ý26

Mã Playfair là một há mã hoá đa ký tą (mỗi lần mã hoá 2 ký tą liên ti¿p nhau),

sā dāng giải thuật dąa trên một ma trận các chă cái cố định d¿ng n × n (đối với bảng chă cái ti¿ng anh là 26 ký tą thì n = 5 hoặc bằng chă cái ti¿ng anh kèm theo 10 ký tą

số thì n = 6) đ°ÿc xây dąng tÿ một khóa (chuỗi các ký tą)

Xây dựng ma trận khóa:

Trang 18

 Chúng ta thąc hián thêm lần l°ÿt các ký tą cÿa khoá vào ma trận theo chiÁu tÿ trên xuống, trái sang phải

 N¿u khoá đã h¿t mà ma trận ch°a đÿ các ô, thąc hián thêm các ký tą còn l¿i trong bảng chă cái vào ma trận theo thā tą A – Z (bỏ qua nhăng ký tą đã có)

 Ký tą I và J xem nh° 1 ký tą và x¿p vào cùng 1 ô cÿa ma trận (đối với ma trận

n = 5)

 Các ký tą trong ma trận khoá không đ°ÿc trùng nhau

Giải thuật mã hóa:

 Mã hóa tÿng cặp 2 ký tą liên ti¿p nhau

 N¿u d° 1 ký tą, thêm ký tą <X= vào cuối

 N¿u 2 ký tą nằm trên một dòng, thay th¿ bằng 2 ký tą bên phải cÿa 2 ký tą t°¡ng āng N¿u đ¿n cột cuối cùng thì ký tą đ°ÿc thay bằng ký tą cÿa cột đầu tiên

 N¿u 2 ký tą nằm trên cùng một cột, thay th¿ bằng 2 ký tą bên d°ới t°¡ng āng

N¿u đ¿n hàng cuối cùng thì ký tą đ°ÿc thay bằng ký tą cÿa hàng đầu tiên

 Tr°ßng hÿp còn l¿i (2 ký tą sẽ t¿o thành 2 góc cÿa hình chă nhật) sẽ đ°ÿc thay th¿ bằng 2 ký tą t°¡ng āng trên cùng dòng á hai góc còn l¿i

Hình 5.6 Cách ho ạt động cÿa playfair

Trang 19

Hình 6.7 Cách x ếp ma trận khóa cÿa playfair

Hình 7.8 K ết quả trả về khi dùng playfair

Mã Hill

Gi ải thuật mã hóa của mã hill:

• Sā dāng m ký tą liên ti¿p cÿa plaintext và thay th¿ bằng m ký tą trong ciphertext với một ph°¡ng trình tuy¿n tính trên các ký tą đ°ÿc gán giá trị lần l°ÿt là A

= 01, B = 02, …

Z = 26

• Chọn ma trận vuông Hill (ma trận H) làm khoá

• Mã hoá tÿng chuỗi n ký tą trên plaintext (vector P) với n là kích th°ớc ma trận vuông Hill

• C = HP mod 26

• P = �㔻21C mod 26

¯u điÃm cÿa tất cả các ph°¡ng pháp mã hoá trên là tốc độ mã hoá và giải mã rất nhanh, bù l¿i nh°ÿc điÃm là khoá phải đ°ÿc truyÁn trên kênh truyÁn đảm bảo an toàn nên chi phí tốn kém, không kịp thßi và độ bảo mật kém

1.2.3.2 Hệ mã hóa hiện đại

Thßi đ¿i cÿa há mã hoá hián đ¿i bắt đầu khi tiêu chuẩn mật mã hóa dă liáu (Data Encryption Standard) - một ph°¡ng thāc mã hoá - đ°ÿc công bố t¿i Mỹ vào ngày 17/03/1975 Với chiÁu dài khoá chỉ là 56 bit, DES đã bị chāng minh là không đÿ sāc chống l¿i nhăng tấn công kiÃu vét c¿n (brute force attack - tấn công dùng b¿o ląc)

Có khá là nhiÁu thuật toán mã hoá khác đ°ÿc đÁ xuất đà thay th¿ cho DES Cā th¿, vào năm 2001, há mã hoá DES đã chính thāc đ°ÿc thay th¿ bái há mã hoá AES (Advanced Encryption Standard - Tiêu chuẩn mã hóa tiên ti¿n)

Tr°ớc đây, đa số các thuật toán mật mã hóa hián đ¿i đÁu chỉ là nhăng thuật toán

khóa đối xāng (symmetric key algorithms), bắt buộc cả ng°ßi gāi và ng°ßi nhận phải

dùng chung một khóa, và cả hai ng°ßi đÁu phải giă bí mật và ghi nhớ khóa này cho tÿng giao dịch, điÁu này dẫn đ¿n nhiÁu bất tián trong viác ghi nhớ và l°u tră khoá

Trang 20

Chính vì th¿, một lần năa há mã hoá hián đ¿i đã chuyÃn mình sang một ch°¡ng mới đó

là há mã hoá dùng khoá công khai (hệ mã hoá bất đối xāng) VÁ há mã hoá bất đối xāng, chúng ta t¿o ra hai khoá bí mật và công khai, có quan há toán học đà dùng trong thuật toán, một dùng đà mã hóa và một dùng đà giải mã Ng°ßi ta chỉ còn cần phải nhớ một khoá bí mật cÿa họ và khoá còn l¿i sẽ đ°ÿc công khai cho mọi ng°ßi Phổ bi¿n nhất trong há mật mã này là há mã hoá RSA, chúng ta cùng tìm hiÃu trong māc ti¿p theo

Hệ mã hoá bất đối xứng

1.2.4

Há mã hóa bất đối xāng (asymmetric cryptography) hay còn gọi là há mã hóa

khoá công khai, là một há mã hóa sā dāng một cặp key đà mã hóa và giải mã: public key (khóa công khai) dùng đà mã hóa và private key (khóa bí mật) đà giải mã

Khi chúng ta sā dāng, bất cā ng°ßi gāi nào cũng có thà sā dāng khoá công khai cÿa ng°ßi nhận đà mã hóa bản tin và gāi cho ng°ßi nhận Nh°ng một điÁu hiÃn nhiên

là ng°ßi sá hău khoá bí mật sẽ giă nó cho riêng mình, và do đó, chỉ chÿ sá hău nó mới

có thà giải mã và đọc đ°ÿc thông điáp

Thông th°ßng thì cặp khóa đ°ÿc sinh này sẽ cố gắng đảm bảo rằng tÿ public key rất khó (gần nh° là không thÃ) truy ra đ°ÿc private key Vì vậy, bất cā kẻ tấn công nào n¿u có đ°ÿc public key (điÁu này khá dß dàng) cũng không thà có đ°ÿc private key đà giải mã

1.2.4.3 Một vài hệ mã hoá khoá công khai tiêu biểu

Hệ mật mã RSA

Đây là há mã hoá đã đánh dấu są ti¿n bộ v°ÿt bậc trong lĩnh vąc mật mã khoá công khai, đ°ÿc āng dāng nhiÁu trong thąc tißn Chúng ta sẽ tìm hiÃu sâu h¡n vÁ há

mã hoá này á māc 1.2.5

Hệ mật mã xếp ba lô Merkle - Hellman

Há mã hoá Merkle - Hellman và các há liên quan dąa trên tính phāc t¿p cÿa bài toán tổng hÿp các tập con (bài toán này là bài toán NP (nondeterministic polynomial time) đầy đÿ - là một lớp khá lớn các bài toán không có giải thuật đ°ÿc bi¿t trong thßi gian đa thāc) Tuy nhiên cho tới nay tất cả các há mật mã x¿p ba lô khác nhau đÁu đã

bị chāng tỏ là không bảo mật (ngo¿i trÿ há Chor-Rivest)

Hệ mật mã McEliece

McEliece là há mã hoá dąa trên lý thuy¿t vÁ ma trận sinh và không gian chiÁu vector gồm ba quá trình là t¿o khoá, mã hoá và giải mã Há mật mã McEliece dąa trên bài toán giải mã cho các mã tuy¿n tính (cũng là một bài toán NP đầy đÿ) và có ch°a thà thay th¿ đ°ÿc cho các há mã hoá công khai hián nay nh° RSA vì tính chất mã hoá chỉ dąa trên một vài vấn đÁ trong lý thuy¿t số

Trang 21

Hệ mật mã Elgamal

Há mật mã Elgamal là há mật mã khoá công khai do ông Taher Elgamal ng°ßi

Ai Cập đÁ xuất vào năm 1984 Đặc điÃm cÿa há mã hoá này là phā thuộc vào độ phāc t¿p cÿa bài toán logarit và là bi¿n thà s¡ đồ phân phối cÿa giao thāc trao đổi khoá Diffie-Hellman

Hệ mã hoá RSA

1.2.5

Trong phần này, chúng ta sẽ tìm hiÃu vÁ hệ mã hoá RSA - một há mã hoá đóng góp vai trò không hÁ nhỏ trong viác t¿o chă ký số ĐÃ nắm bắt, giải đ°ÿc bài toán RSA, chúng ta cần phải hiÃu bi¿t nhiÁu công thāc toán học, trong đó quan trọng nhất

là phải nắm văng các lý thuy¿t vÁ toán học sau đây

1.2.5.1 Định nghĩa số nguyên tố

Số nguyên tố là các số tą nhiên chỉ chia h¿t cho 1 và chính nó Hay nói cách khác, số nguyên tố là một số tą nhiên lớn h¡n 1, n¿u nh° ngoài bản thân nó và 1 ra, nó không chia h¿t cho số nào khác năa thì nó là số nguyên tố Có một l°u ý là số 0 và 1 không đ°ÿc coi là số nguyên tố

Chúng ta có một số ví dā vÁ số nguyên tố nh°: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29,…

1.2.5.2 Định lý Euler

Định lý Euler là định lý c¡ bản trong các há thống mã hoá RSA, tuy nhiên đ°ÿc cho là không đÿ và không thật są cần thi¿t đối với viác kiÃm tra tính hÿp lá trong RSA Nội dung cÿa định lý nh° sau:

Cho p là một số nguyên tố:

(1) Định lý Euler: N¿u a ∈ Zn* thì þΦ(n) ≡ 1 (mod n)

(2) N¿u n là tích cÿa các số nguyên khác nhau và n¿u r ≡ s (mod Φ(n)) thì

þÿ ≡ þĀ(mod n) đối với mọi số nguyên a Nói một cách khác khi làm viác với modulo

n thì các số mũ có thà đ°ÿc rút gọn theo modulo Φ(n)

1.2.5.3 Định lý Euclid mở rộng

Định lý Euclid má rộng có nhiám vā giải ph°¡ng trình vô định nguyên có d¿ng

ax + by = c N¿u cho tr°ớc 2 số nguyên x, y thì tồn t¿i hai số nguyên a,b thoả

Trang 22

1.2.5.4 Mã hoá RSA - Rivest Shamir Adleman

RSA là một há mã hóa bất đối xāng mang đầy đÿ các tính chất, āng dāng cÿa

há mật mã này Cha đẻ cÿa há mã hoá RSA là Ron Rivest, Adi Shamir và Leonard Adleman (tên cÿa nó cũng chính là tên vi¿t tắt cÿa 3 tác giả này) và đ°ÿc āng dāng đặc biát vào công tác mã hoá thông tin và chă ký đián tā (chă ký số) Đây là há mã hoá đầu tiên phù hÿp trong viác t¿o chă ký số đồng thßi với viác mã hoá và đang sā dāng phổ bi¿n trong giao dịch đián tā, đ°ÿc cho là đảm bảo an toàn với điÁu kián độ dài khoá đÿ lớn RSA đ°ÿc xây dąng dąa trên độ khó cÿa bài toán phân tích thÿa số nguyên tố (bài toán RSA) và định lý Euclid má rộng Trong há mã hóa này, khoá công khai có thà chia sẻ công khai cho tất cả mọi ng°ßi, còn khoá bí mật sẽ đ°ÿc ng°ßi chÿ

sá hău giă kín, vì th¿ không ai khác có thà đọc đ°ÿc dă liáu đã đ°ÿc mã hoá tÿ khoá công khai trên ngo¿i trÿ dùng khoá bí mật đà giải mã Ho¿t động cÿa RSA dąa trên ba b°ớc chính: sinh khóa, mã hóa và giải mã

Trang 23

Hình 8.9 Quy trình mã hoá RSA

Sinh khóa

Mấu chốt c¡ bản cÿa viác sinh khóa trong RSA là tìm đ°ÿc bộ 3 số tą nhiên e, d và n sao cho: ÿþý ≡ ÿ mod Ā và một điÃm không thà bỏ qua là cần bảo mật cho d sao cho dù bi¿t e, n hay thậm chí cả m cũng không thà tìm ra d đ°ÿc

Cā thÃ, khóa cÿa RSA đ°ÿc sinh nh° sau:

1) T¿o 2 số nguyên tố lớn ngẫu nhiên và khác nhau p và q, p và q có độ lớn

xấp xỉ nhau (số nguyên tố yêu cầu tối thiÃu 10 chă số đà đảm bảo tính bảo mật)

2) Tính n = p * q và Φ(n) = (p −1) * (q −1)

3) Chọn một số nguyên ngẫu nhiên e, 1 < e < Φ, sao cho ¯CLN(e, Φ) = 1 4) Sā dāng thuật toán Euclide má rộng đà tính một số nguyên d duy nhất, 1

< d < Φ thoả mãn e.d ≡ 1(mod Φ)

5) Khoá công khai là cặp số (n, e) Khoá riêng bí mật là d

Trong đó các số nguyên d và e trong thuật toán khoá RSA đ°ÿc gọi là số mũ mã hoá và số mũ giải mã Số n đ°ÿc gọi là số modulus Chúng ta cần giă private key thật cẩn thận cũng nh° các số nguyên tố p và q vì tÿ đó có thà tính toán các khóa rất dß dàng

Māc độ bảo mật cÿa RSA phā thuộc rất lớn vào khả năng phân tích thÿa số nguyên tố cÿa các số lớn Bái vì chúng ta cung cấp public một cách rộng rãi, n¿u viác phân tích thÿa số nguyên tố đ¡n giản, thì viác bị lộ private là không thà tránh khỏi

Vì vậy, khi sinh khóa, chúng ta cần chọn các số nguyên tố p và q một cách ngẫu nhiên Bản thân hai số nguyên tố này cũng rất lớn, và đà viác phân tích thÿa số nguyên

tố khó khăn h¡n, hai số nguyên tố này sẽ không có cùng độ dài Trong t°¡ng lai gần,

Trang 24

có lẽ vẫn ch°a có một ph°¡ng pháp hiáu quả nào cho phép thąc hián điÁu này với các máy tính cá nhân

Ví d ụ 1.7:

Sau đây là một ví dā với nhăng số cā thà à đây chúng ta sā dāng nhăng số nhỏ

đà tián tính toán còn trong thąc t¿ phải dùng các số có giá trị đÿ lớn

Lấy:

 p = 29: Số nguyên thā nhất (giă bí mật hoặc phải huỷ sau khi t¿o khoá)

 q = 71: Số nguyên thā hai (giă bí mật hoặc phải huỷ sau khi t¿o khoá)

 Tính n = p.q = 2059 và Φ(n) = (p −1)(q −1) = 1960

 Chọn ngẫu nhiên e sao cho °ớc chung lớn nhất (e, Φ) = 1, ví dā lấy e = 3

 Dąa vào định lý Euclid má rộng, Φ và khoá công khai e á trên, chúng ta tìm ra khoá bí mật d = 1307

Mã hóa và giải mã

Trong phần này, chúng ta sẽ tìm hiÃu cách mã hóa với public key (n, e) và giải

mã với private key (n, d)

Ví d ụ 1.8:

Bob muốn mã hoá và gāi thông báo m cho Alice

Bob cần thąc hián:

(1) Thu nhận khoá công khai (n, e) cÿa Alice

(2) BiÃu dißn bản tin d°ới d¿ng một số nguyên m trong khoảng [0 , n - 1]

(3) Tính c = ÿþ mod n

(4) Gāi bản mã c cho Alice

ĐÃ khôi phāc bản rõ m tÿ c, Alice phải thąc hián phép tính sau bằng cách dùng khoá riêng m = ýý mod n

Chāng minh ho¿t động giải mã:

Vì e.d = 1 (mod Φ) nên luôn tồn t¿i một số nguyên k sao cho

e.d = 1 + k Φ Bây giß n¿u (m, p) = 1 theo định lý Fermat ta có:

ÿý21 = 1 (mod p)

Lũy thÿa cả hai v¿ cÿa đồng d° thāc trên với số mũ k (q - 1) và rồi nhân cả hai v¿ với m ta có:

Trang 25

ÿ1 + �㕘(þ21)(ý21) ≡ ÿ (ÿāþ Ă)

Mặt khác n¿u ¯CLN (m, p) = p thì đồng d° thāc cuối cùng á trên vẫn đúng vì mỗi v¿ đÁu đồng d° với 0 mod p Bái vậy, trong mọi tr°ßng hÿp ta đÁu có:

ÿþý ≡ ÿ (ÿāþ Ă)

Bằng lập luận t°¡ng tą ta l¿i có: ÿþý = m (mod p)

Cuối cùng vì p và q là các số nguyên tố khác nhau nên ÿþý = m (mod n) và bái

vậy ýý ≡ (ÿþ)ý ≡ ÿ (ÿāþ Ā)

Ví d ụ 1.9: T¿o khóa

 Alice chọn các số nguyên tố p = 2357, q = 2551 và tính n = p.q = 6012707 và Φ = (p - 1)(q - 1)= 6007800

 Alice chọn e = 3674911 và dùng thuật toán Euclide má rộng đà tìm đ°ÿc d =

422191 thỏa mãn ed = 1(mod Φ) Khóa công khai cÿa Alice là cặp số (n =

6012707, e = 3674911), khóa bí mật cÿa Alice là d = 422191

 Đà mã hóa thông báo m = 5234673, Bob sā dāng thuật toán lấy lũy thÿa theo modulo đà tính c = ÿþ ÿāþ Ā = 5234673 3674911 mod 6012707 = 3650502 rồi gāi c cho Alice

 ĐÃ giải mã bản mã c, Alice tính ýý mod n = 3650502422191 mod 6012707 = m

Cả hai phép tính trên đÁu có thà đ°ÿc thąc hián hiáu quả nhß giải thuật bình ph°¡ng và nhân Vấn đÁ cốt lõi cÿa há mã hoá RSA đó là viác chọn số nguyên tố p, q

đÿ lớn đà đảm bảo an toàn cho bản mã, n¿u đà kẻ thám mã mà bi¿t đ°ÿc số nguyên tố

p, q thì dß dàng tính đ°ÿc khoá bí mật d tÿ khoá công khai (e, n) do đó bản mã sẽ bị lộ, bái vì với są phát triÃn cÿa công nghá, các siêu máy tính xuất hián ngày càng nhiÁu Cùng với chúng ta máy tính l°ÿng tā cho phép tính toán với tốc độ cao h¡n rất nhiÁu

có thà sẽ phá vỡ są bảo mật cÿa RSA

Ngày đăng: 17/08/2022, 17:57

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w