Top Banner
12/29/21 1 Mật mã khóa công khai Giáo viên: Nguyễn Hiếu Minh Bộ môn: An ninh mạng
155

Bài 4_ Mật mã khóa công khai

Jan 03, 2016

Download

Documents

Anh Phan

HHHHH
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Bài 4_ Mật mã khóa công khai

04/20/23 1

Mật mã khóa công khai

Giáo viên: Nguyễn Hiếu Minh

Bộ môn: An ninh mạng

Page 2: Bài 4_ Mật mã khóa công khai

04/20/23 2

Các vấn đề trình bày

Các nguyên tắc chung xây dựng các thật toán mật mã khóa công khai.

Các vấn đề RSA và logarit rời rạc. Hệ mật RSA. Hệ mật Elgamal. Mật mã với việc sử dụng vành Elliptic. Các phương pháp tấn công các hệ

mật khóa công khai.

Page 3: Bài 4_ Mật mã khóa công khai

04/20/23 3

1. Giới thiệu chung

Mật mã với khoá công khai được đánh giá là bước tiến quan trọng có tính cách mạng trong lịch sử mật mã. .

Trước hết, mật mã khoá công khai sử dụng các hàm toán học không phải là phép thay thế và phép chuyển vị.

Quan trọng hơn là nó là loại mã không đối xứng, tức là hệ thống sử dụng hai khoá khác nhau khi mã và giải mã.

Page 4: Bài 4_ Mật mã khóa công khai

04/20/23 4

Nhận xét

Việc sử dụng hai khoá làm thay đổi sâu sắc trong các vấn đề như:

bảo mật tin tức, phân phối khoá, thủ tục xác thực.

Page 5: Bài 4_ Mật mã khóa công khai

04/20/23 5

Vấn đề thứ nhất

Nhận xét về một số ý kiến phát biểu: Cho rằng mật mã với khoá công khai có độ

an toàn cao hơn đối với thám mã so với mật mã truyền thống.

Thực ra vấn đề an toàn của bất kỳ loại mật mã nào phụ thuộc vào độ dài khoá, độ phức tạp của thuật toán và phụ thuộc vào khối lượng cần phải tính toán khi thám mã.

Page 6: Bài 4_ Mật mã khóa công khai

04/20/23 6

Nhận xét

Về nguyên tắc không có sự phân biệt giữa mật mã truyền thống và mật mã với khoá công khai.

Page 7: Bài 4_ Mật mã khóa công khai

04/20/23 7

Vấn đề thứ hai

Có ý kiến sai lầm cho rằng mật mã với khoá công là một xu thế vạn năng, rằng mật mã truyền thống trở nên lỗi thời không cứu vãn nổi.

Thực ra ngược lại, mật mã truyền thống và mật mã khoá công khai cùng song song tồn tại.

Page 8: Bài 4_ Mật mã khóa công khai

04/20/23 8

Vấn đề thứ ba

Vấn đề cuối cùng có ý nghĩ sai lầm cho rằng trong hệ thống mật mã công khai thì bài toán phân phối khoá trở thành bài toán tầm thường.

Thực ra trong hệ thống mật mã khoá công khai thì bài toán phân phối khoá có nhiều phát triển.

Page 9: Bài 4_ Mật mã khóa công khai

04/20/23 9

Nhận xét

Cần phải thiết lập các thủ tục đặc biệt, nói chung phải xây dựng trung tâm phân phối khoá, phải ứng dụng các thủ tục không đơn giản hơn, cũng như không hiệu quả hơn so với mật mã truyền thống.

Page 10: Bài 4_ Mật mã khóa công khai

04/20/23 10

2. Nguyên tắc xây dựng hệ mật khóa công khai

Ý tưởng của việc xây dựng đã được phát sinh từ việc cố gắng giải quyết hai vấn đề phức tạp nhất khi sử dụng mật mã truyền thống.

Vấn đề 1: Phân phối khóa. Vấn đề 2: Chữ ký số.

Page 11: Bài 4_ Mật mã khóa công khai

04/20/23 11

Vấn đề 1

Vấn đề phân phối khoá khi sử dụng mật mã truyền thống đòi hỏi khi hai người tham giam truyền số liệu cho nhau thì hoặc là: một phía phải có khóa chung để từ đó phát sinh khoá

phiên, rồi thực hiện trao đổi khoá phiên cho phía kia, hoặc khoá phiên được phát sinh, rồi được phân phối cho

cả hai phía từ một trung tâm được uỷ quyền. Diffie và Hellman là hai người sáng lập ra mật mã

khoá công khai cho rằng yêu cầu thứ hai đã chống lại chính bản chất của mã mật là khả năng bảo đảm độ mật hoàn toàn khi trao đổi khoá.

Page 12: Bài 4_ Mật mã khóa công khai

04/20/23 12

Vấn đề 2

Được hình thành bởi Diffe hoàn toàn không quan hệ với vấn đề thứ nhất. Đó là vấn đề "chữ ký số".

Page 13: Bài 4_ Mật mã khóa công khai

04/20/23 13

2.1. Hệ mật với khóa công khai

Các thuật toán mật mã với khoá công khai phụ thuộc vào một khoá để mã hoá, còn khoá thứ hai liên hệ chặt chẽ với khoá thứ nhất là khoá để giải mã.

Page 14: Bài 4_ Mật mã khóa công khai

04/20/23 14

Các đặc điểm quan trọng

Với quan điểm tính toán, việc xác định khoá giải mã là không thực tiễn, khi chỉ được biết thuật toán sử dụng và khoá mã hoá.

Ngoài ra với một vài thuật toán (chẳng hạn RSA) có đặc tính sau:

Bất kì khoá nào từ cặp khoá phát sinh, có thể dùng để mã hoá, còn khoá kia dùng để giải mã.

Page 15: Bài 4_ Mật mã khóa công khai

04/20/23 15

Mật mã với khóa công khai

Page 16: Bài 4_ Mật mã khóa công khai

04/20/23 16

Mô tả quá trình hoạt động

1. Mỗi một hệ thống cụ thể trong mạng phát sinh cặp khoá để mã hoá và giải mã các tin tức nhận được.

2. Mỗi người trong hệ thống công bố một khoá để mã hoá, khoá này được truyền công khai trên mạng, gọi là khoá công khai. Khoá thứ hai, tạo thành cặp phù hợp với khoá công khai, được gọi là khoá riêng.

Page 17: Bài 4_ Mật mã khóa công khai

04/20/23 17

(tiếp)

3. Nếu người sử dụng A muốn gửi tin tức cho người sử dụng B, thì khi mã hoá tin tức anh ta phải sử dụng khoá công khai của B.

4. Khi người sử dụng B nhận được tin tức, anh ta giải mã bằng khoá riêng của mình. Những người sử dụng khác không có khả năng giải mã, bởi vì khoá riêng của B chỉ có B biết.

Page 18: Bài 4_ Mật mã khóa công khai

04/20/23 18

Nhận xét

Tất cả người tham gia truy nhập tới các khoá công khai, còn khoá riêng được phát sinh tại chỗ của mỗi người tham gia.

Chừng nào hệ thống còn lưu giữ được các khoá riêng ở dạng mật thì chừng đó tin tức được bảo mật.

Bất kỳ thời điểm nào người sử dụng hệ thống cũng có thể thay đổi khoá riêng và công bố khoá công khai trên mạng để thay thế cho khoá công khai cũ.

Page 19: Bài 4_ Mật mã khóa công khai

04/20/23 19

So sánh một vài đặc trưng quan trọng của hai loại mật mã

Mật mã truyền thống Mật mã với khoá công khai

Cần thiết để thực hiện

1. Một thuật toán với chỉ một khoá vừa để mã hoá, vừa để giải mã

2. Người gửi và người nhận sử dụng cùng thuật toán và khoá

Cần thiết để thực hiện

1. Một thuật toán với hai khoá, một khoá để mã hoá, khoá khác để giải mã

2. Người gửi và người nhận, mỗi người có một cặp khoá phù hợp

Page 20: Bài 4_ Mật mã khóa công khai

04/20/23 20

(tiếp)Cần thiết để an toàn

1. Khoá cần phải được lưu giữ mật

2. Không có khả năng thực tiễn để giải mã tin tức, khi không có những thông tin bổ xung.

3. Biết thuật toán và có những mẫu văn bản mã, cần phải không có khả năng khôi phục khoá.

Cần thiết để an toàn

1. Một khoá cần phải được lưu giữ mật, còn khoá kia để công khai.

2. Không có khả năng thực tiễn, để giải mã tin tức, khi không có những thông tin bổ xung

3. Biết thuật toán và một khoá, đồng thời có những mẫu văn bản mã, cần phải không có khả năng khôi phục khoá còn lại.

Page 21: Bài 4_ Mật mã khóa công khai

04/20/23 21

Vấn đề bảo mật

Page 22: Bài 4_ Mật mã khóa công khai

04/20/23 22

Các phần tử cơ bản

Bản rõ X. Bản mã Y. Cặp khóa công khai và riêng (KUB,

KRb).

Mã hóa: Y = EKUb(X)

Giải mã: X = DKRb(Y)

Page 23: Bài 4_ Mật mã khóa công khai

04/20/23 23

Vấn đề xác thực

Page 24: Bài 4_ Mật mã khóa công khai

04/20/23 24

Vấn đề bảo mật và xác thực

Page 25: Bài 4_ Mật mã khóa công khai

04/20/23 25

2.2. Ứng dụng hệ mật khóa công khai

Tuỳ thuộc vào mục đích sử dụng, người gửi có thể sử dụng

khoá riêng của mình, hoặc khoá công khai của người nhận, hoặc cả hai nếu đòi hỏi một chức năng

đặc biệt của hệ thống mật mã.

Page 26: Bài 4_ Mật mã khóa công khai

04/20/23 26

Ứng dụng

Mã/giải mã: Người gửi mã hoá tin tức với việc sử dụng khóa công khai của người nhận.

Chữ ký số: Người gửi ký xác nhận tin tức gửi bằng khóa riêng của mình.

Trao đổi khoá: Hai phía cần trao đổi tin tức, cần phải trao đổi khóa phiên với nhau.

Page 27: Bài 4_ Mật mã khóa công khai

04/20/23 27

Các ứng dụng của các hệ mật mã với khoá công khai

Thuật toán Mã/giải mã

Chữ ký số Trao đổi khóa

RSA Có Có Có

Diffie-Hellmal

Không Không Có

DSS Không Có Không

Page 28: Bài 4_ Mật mã khóa công khai

04/20/23 28

2.3. Điều kiện ứng dụng các phương

pháp mật mã với khoá công khai

Diffie và Hellman không chứng minh, nhưng chỉ ra các điều kiện cần phải có để thoả mãn ở các thuật toán như thế:

1. Phía B: phát sinh cặp khoá (khoá công khai KUb và khoá riêng KRb) không cần đòi hỏi các tính toán khó khăn.

2. Phía A: không đòi hỏi các phép tính khó khăn trong quá trình tạo văn bản mã khi có khoá công khai và tin tức M, đòi hỏi phải mã hoá:

C = EKUb(M).

Page 29: Bài 4_ Mật mã khóa công khai

04/20/23 29

(tiếp)

3. Phía B: không đòi hỏi các phép tính khó khăn trong khi giải mã các văn bản mã nhận được từ khoá riêng của mình với mục đích dễ khôi phục tin tức gốc:

M = DKRb(C) = DKRb{EKUb(M)]. 4. Thám mã: không có khả năng khôi phục

khoá riêng KRb khi có trong tay khoá công khai KUb.

Page 30: Bài 4_ Mật mã khóa công khai

04/20/23 30

(tiếp)

5. Thám mã: không có khả năng khôi phục bản tin gốc M, khi có trong tay khoá chung KUb và văn bản mã C.

6. Chức năng mã hoá và chức năng giải mã có thể ứng dụng theo trình tự bất kỳ:

M = EKUb [DKRb(M)].

Page 31: Bài 4_ Mật mã khóa công khai

04/20/23 31

Nhận xét

Để thực hiện được tất cả các đòi hỏi trên là điều rất phức tạp.

Đã trải qua vài chục năm của việc phát triển hệ mật mã khoá công khai nhưng chỉ có một vài thuật toán được sử dụng rộng rãi.

Page 32: Bài 4_ Mật mã khóa công khai

04/20/23 32

Giải thích nguyên nhân

Những đòi hỏi trên dẫn đến điều cần thiết phải tìm ra hàm một chiều (one-way function) với bẫy sập.

Hàm được gọi là hàm một chiều nếu nó ánh xạ đối số của mình trong một giải giá trị nào đó, mà mỗi giá trị của hàm có duy nhất một giá trị ngược.

Page 33: Bài 4_ Mật mã khóa công khai

04/20/23 33

(tiếp)

Giá trị của hàm tính toán dễ dàng, còn giá trị ngược thì thực tế không có khả năng tính.

Y = f(X) tính toán dễ dàng, X = f-1(Y) thực tế không có khả năng

tính toán.

Page 34: Bài 4_ Mật mã khóa công khai

04/20/23 34

(tiếp)

Trong trường hợp chung thuật ngữ “dễ dàng tính toán” có nghĩa rằng vấn đề có thể được giải quyết trong thời gian đa thức, được xem xét như một hàm độ dài của giá trị đầu vào.

Ví dụ: độ dài của giá trị đầu vào bằng n bit, thì thời gian đòi hỏi để tính toán hàm tỉ lệ với na, ở đây a là một giá trị cố định nào đó. Các thuật toán như vậy được gọi là thuật toán thuộc lớp P.

Page 35: Bài 4_ Mật mã khóa công khai

04/20/23 35

(tiếp)

Thuật ngữ “thực tế không có khả năng tính toán được” để chỉ khái niệm trừu tượng hơn.

Trong trường hợp chung, có thể chỉ ra rằng hàm không có khả năng tính toán được là hàm mà khối lượng tính toán tăng nhanh hơn thời gian đa thức theo độ dài của giá trị đầu vào.

Page 36: Bài 4_ Mật mã khóa công khai

04/20/23 36

(tiếp)

Chẳng hạn nếu giá trị đầu vào có giá trị n bit thì thời gian đòi hỏi để tính toán hàm tỉ lệ 2n, những hàm như vậy thực tế coi là không có khả năng tính toán.

Page 37: Bài 4_ Mật mã khóa công khai

04/20/23 37

Nhận xét

Đối với mỗi thuật toán cụ thể thực không đơn giản để làm sáng tỏ vấn đề thuật toán đó phức tạp đến mức nào.

Để làm điều đó, thường xác định mức độ phức tạp của thuật toán trong trường hợp xấu nhất, hoặc trong trường hợp trung bình.

Đối với mật mã các đánh giá này là vô ích, vì mật mã yêu cầu không thể tính toán hàm ngược hầu như đối với tất cả các giá trị đầu vào, chứ không phải chỉ đối với giá trị trung bình hay giá trị xấu nhất .

Page 38: Bài 4_ Mật mã khóa công khai

04/20/23 38

(tiếp)

Hàm một chiều: dễ dàng tính toán với một phía và thực tế không thể tính toán được đối với phía ngược lại, khi không có thêm các thông tin bổ xung.

Khi có thêm các thông tin bổ sung thì hàm ngược có thể tính toán được sau một thời gian nhất định.

Page 39: Bài 4_ Mật mã khóa công khai

04/20/23 39

(tiếp)

Y = fk(X) Tính toán dễ dàng nếu biết k và X.

X = fk-1(Y) Tính toán dễ dàng nếu biết k và

Y X = fk

-1(Y) Thực tế hàm này không có khả năng tính được nếu biết Y, mà không biết k

Để có thể thực hiện được mật mã với khoá công khai cần phải tìm được hàm một chiều với bẫy sập.

Page 40: Bài 4_ Mật mã khóa công khai

04/20/23 40

2.4. Thám mã hệ mật khóa công khai

Cũng như trong trường hợp mật mã truyền thống, sơ đồ mật mã với khoá công khai, vấn đề dễ tổn thương theo quan điểm thám mã là phương pháp thử tất cả các khả năng của khoá.

Để chống lại điều đó, ở đây phải sử dụng khoá dài.

Page 41: Bài 4_ Mật mã khóa công khai

04/20/23 41

(tiếp)

Mật mã với khoá công khai phụ thuộc vào một vài hàm toán học ngược, có đặc tính đặc biệt.

Sự phức tạp của tính toán các hàm đó không tỷ lệ tuyến tính với số lượng bit khoá mà tăng rất nhanh.

Page 42: Bài 4_ Mật mã khóa công khai

04/20/23 42

Nhận xét

Như vậy, độ dài khoá phải chọn đủ lớn để việc thử chọn tất cả các khả năng của khoá thực tiễn là không thể thực hiện được.

Tuy nhiên lại phải đủ nhỏ để có thể sử dụng các toán tử mã hoá và giải mã trong một khoảng thời gian chấp nhận đối với mọi ứng dụng.

Page 43: Bài 4_ Mật mã khóa công khai

04/20/23 43

Trường hợp 2

Thử tìm khả năng tính toán khoá riêng, khi biết khoá công khai.

Thực tiễn chưa có một chứng minh nào của toán học là không thể thực hiện được khả năng đó đối với hệ mật với khoá công khai.

Page 44: Bài 4_ Mật mã khóa công khai

04/20/23 44

Trường hợp 3

Thử tất cả với các khả năng của khóa công khai.

Page 45: Bài 4_ Mật mã khóa công khai

04/20/23 45

3. Thuật toán RSA

Diffie và Hellman là người đầu tiên xây dựng nguyên lí mật mã khoá công khai vào năm 1976.

Tuy nhiên, trước đó vào những năm 1960 những tác giả ở NSA đã xây dụng ý tưởng về xu thế của mật mã khoá với công khai.

Vào năm 1977 Ron Rivest, Adi Shamir, Len Adleman công tác ở MTI đã xây dựng thuật toán mật mã với khoá công khai.

Page 46: Bài 4_ Mật mã khóa công khai

04/20/23 46

Mô tả

Sơ đồ RSA là sơ đồ mật mã khối, trong đó cả văn bản rõ và văn bản mã là các số nguyên trong dải từ 0 đến n-1 đối với một giá trị n nào đó.

Page 47: Bài 4_ Mật mã khóa công khai

04/20/23 47

(tiếp)

Văn bản rõ được mã hoá bởi các khối, mỗi khối có giá trị nhị phân nhỏ hơn một giá trị n đã cho nào đó.

Điều đó có nghĩa rằng độ dài khối cần phải nhỏ hơn hoặc bằng log2(n). Trong thực tiễn độ dài khối chọn bằng 2k bit, ở đây 2k < n 2k+1.

Page 48: Bài 4_ Mật mã khóa công khai

04/20/23 48

(tiếp)

Mã hoá với khối văn bản rõ M và mã hoá với khối văn bản mã C, có thể trình bày dưới dạng công thức:

C = Me mod n,

M = Cd mod n = (Me)d mod n = Med mod n.

Page 49: Bài 4_ Mật mã khóa công khai

04/20/23 49

(tiếp)

Cả người gửi, người nhận đều phải biết giá trị n. Người gửi biết giá trị của e, còn chỉ có người nhận biết giá trị của d.

Như vậy, sơ đồ này là thuật toán mật mã với khoá công khai: KU = {e, n} và khoá riêng KR = {d, n}.

Page 50: Bài 4_ Mật mã khóa công khai

04/20/23 50

Các đòi hỏi

1. Cần phải tồn tại các giá trị: e, d và n để Med = M mod n, đối với tất cả M < n.

2. Cần phải tương đối dễ tính toán Me, Cd đối với tất cả các giá trị M < n.

3. Cần phải trên thực tế không có khả năng xác định d khi biết e và n.

Page 51: Bài 4_ Mật mã khóa công khai

04/20/23 51

Xét yêu cầu 1

Từ định lí Euler, với hai số nguyên tố p và q và hai số nguyên m, n với n = p q và 0 < m < n, và tích với số nguyên k được thực hiện theo quan hệ sau:

mk(n)+1 = mk(p-1)(q-1)+1 m mod n,

Page 52: Bài 4_ Mật mã khóa công khai

04/20/23 52

(tiếp)

Ơ' đây, (n) là hàm Euler, giá trị của (n) = (p-1)(q-1) là số nguyên dương, nhỏ hơn n và quan hệ nguyên tố cùng nhau với n.

Page 53: Bài 4_ Mật mã khóa công khai

04/20/23 53

(tiếp)

Như vậy, đòi hỏi quan hệ nhận được với điều kiện:

ed = k(n) +1

Hay: ed mod (n) = 1

Tương đương:

ed 1 mod (n),

d e-1 mod (n).

Page 54: Bài 4_ Mật mã khóa công khai

04/20/23 54

(tiếp)

Có nghĩa là e và d là hai số có quan hệ nghịch đảo theo modul (n).

Khi chú ý tới các qui tắc số học trong lớp số dư, điều đó có nghĩa rằng chỉ khi d (và cả e) là nguyên tố cùng nhau với (n).

Viết một cách tương đương có quan hệ gcd(d, (n)) = 1 (gcd = ước số chung lớn nhất).

Page 55: Bài 4_ Mật mã khóa công khai

04/20/23 55

Mô tả sơ đồ RSA

Page 56: Bài 4_ Mật mã khóa công khai

04/20/23 56

Ví dụ

Chọn hai số nguyên tố, chẳng hạn p = 11, q = 17.

Tính tích: n = p q = 11 17 = 187. Tính (n) = (p-1) (q-1) =10 16 = 160. Chọn e là số nguyên tố cùng nhau với (n)

=160 và phải nhỏ hơn (n). Trong trường hợp này chọn e = 7.

Xác định d để de = 1 mod 160 và d < 160. Giá trị phù hợp để chọn là d = 23 , bởi vì 23 7 = 161 = 1 160 + 1.

Page 57: Bài 4_ Mật mã khóa công khai

04/20/23 57

Mô tả

Page 58: Bài 4_ Mật mã khóa công khai

04/20/23 58

3.1. Phương diện tính toán

Xem xét vấn đề phức tạp tính toán, được sử dụng trong thuật toán RSA.

tính toán khóa, tính toán trong mã hoá/ giải mã.

Page 59: Bài 4_ Mật mã khóa công khai

04/20/23 59

a) Mã hoá và giải mã

Trong thuật toán RSA cả mã hoá và giải mã đều sử dụng phép tính nâng lên luỹ thừa của một số nguyên theo số mũ nguyên so sánh theo mod n.

Nếu sử dụng phép tính trực tiếp nâng lên luỹ thừa nguyên rồi sau đó mới tính theo mod n, thì các giá trị trung gian sẽ rất cồng kềnh.

Page 60: Bài 4_ Mật mã khóa công khai

04/20/23 60

(tiếp)

Có thể sử dụng các đặc tính của số học trong lớp số dư:

[(a mod n) (b mod n) ] mod n = (a b) modn.

Như vậy, có thể tính toán kết quả trung gian theo mod n. Điều này tạo ra các khả năng thực tiễn tính toán.

Page 61: Bài 4_ Mật mã khóa công khai

04/20/23 61

(tiếp)

Một vấn đề khác là hiệu quả của việc thực hiện các phép tính nâng lên luỹ thừa nguyên theo số mũ nguyên, là bởi vì khi sử dụng thuật toán RSA chúng ta cần phải thực hiện với các số mũ lớn.

Page 62: Bài 4_ Mật mã khóa công khai

04/20/23 62

(tiếp)

Chẳng hạn cần tính x16. Ta có thể tính trực tiếp bằng cách nhân x với 15 lần như sau:

x16 = x x x x x x x x x x x x x x x x.

Tuy nhiên, ta có thể thực hiện bằng phép tính bình phương bốn lần của số: x2, x4, x8, để được x16.

Page 63: Bài 4_ Mật mã khóa công khai

04/20/23 63

(tiếp)

Trong trường hợp chung, chúng ta cần phải tính am với a, m là các số nguyên dương. Nếu trình bày m dưới dạng số nhị phân bk, bk-1, …, bo, thì ta có:

Page 64: Bài 4_ Mật mã khóa công khai

04/20/23 64

(tiếp)

Page 65: Bài 4_ Mật mã khóa công khai

04/20/23 65

(tiếp)

Kết quả tính toán của thuật toán để tính nhanh nâng lên luỹ thừa đối với ab mod n, khi a=7, b=560=1000110000, n = 561.

Page 66: Bài 4_ Mật mã khóa công khai

04/20/23 66

Thuật toán

Page 67: Bài 4_ Mật mã khóa công khai

04/20/23 67

b) Tính toán khóa

Trước hết chúng ta nên nhớ rằng đối với hệ mật mã với khoá công khai, mỗi một người tham gia cần phát sinh một cặp khoá. Có nghĩa là phải thực hiện bài toán sau:

Xác định hai số nguyên tố p và q; Chọn một trong hai số hoặc e hoặc d

và tính toán số còn lại.

Page 68: Bài 4_ Mật mã khóa công khai

04/20/23 68

Khảo sát thủ tục chọn số p và q

Giá trị n = p q công khai, để tránh tìm p và q đơn giản → thì p và q phải là các số nguyên tố có giá trị lớn.

Đồng thời các phương pháp tìm ra tập hợp các số p và q có giá trị lớn phải có tính hiệu quả thực tiễn.

Page 69: Bài 4_ Mật mã khóa công khai

04/20/23 69

(tiếp)

Thử nghiệm. Các thử nghiệm mang đặc trưng xác

xuất → chỉ xác định số đã chọn là số nguyên tố theo xác suất.

Page 70: Bài 4_ Mật mã khóa công khai

04/20/23 70

Thủ tục chọn số nguyên tố

1. Chọn một số nguyên lẻ n một cách ngẫu nhiên (chẳng hạn sử dụng sự phát sinh các số giả ngẫu nhiên).

2. Chọn một số nguyên a < n theo một cách ngẫu nhiên nào đó.

3. Thực hiện thử nghiệm xác suất trên số nguyên tố, chẳng hạn thử nhiệm Miller- Rabin. Nếu n không chịu đựng được các cuộc thử nghiệm, thì loại bỏ số n này và quay lại bước 1.

4. Nếu n chịu đựng được hàng loạt các thử nghiệm lặp lại, thì coi n xứng đáng là số nguyên tố. Nếu chưa tin tưởng, thì quay lại bước thứ 2.

Page 71: Bài 4_ Mật mã khóa công khai

04/20/23 71

Chọn e tính d hoặc ngược lại

Trong trường hợp thứ nhất, cần thiết chọn giá trị e sao cho gcd ((n), e) = 1 và sau đó tính toán giá trị d e-1 mod (n).

Thuật toán để tính đồng thời gcd của hai số nguyên và nếu gcd bằng 1, thì cho phép xác định nghịch đảo đối với một từ các số nguyên theo modul của số kia (thuật toán Euclide).

Page 72: Bài 4_ Mật mã khóa công khai

04/20/23 72

3.2. Độ an toàn của RSA

Có ba khả năng dẫn đến thám mã RSA như sau: Phép chọn đơn giản: Trong trường hợp này thực

hiện kiểm tra tất cả các khả năng của khoá riêng. Phép phân tích toán học: Tồn tại một vài xu thế

của loại này, nhưng tất cả chúng theo bản chất đều tương đương với bài toán xác định thừa số của tích của hai số nguyên tố.

Phép phân tích thời gian tiêu tốn: Dựa vào phép phân tích thời gian cần thiết thực hiện thuật toán giải mã.

Page 73: Bài 4_ Mật mã khóa công khai

04/20/23 73

Lựa chọn đơn giản

Độ an toàn chống lại phép chọn đơn giản trong trường hợp thuật toán RSA, cũng như đối với mọi hệ thống mật mã khác, là sử dụng không gian khoá lớn.

Với quan điểm này số bit trong e và d càng lớn càng tốt.

Tuy nhiên, vì sự khá phức tạp khi phát sinh khoá, cũng như khi mã/giải mã, thì kích thước khoá càng lớn dẫn đến hệ thống làm việc càng chậm.

Page 74: Bài 4_ Mật mã khóa công khai

04/20/23 74

Vấn đề phân giải ra thành thừa số

Có thể phân chia ra thành ba xu thế toán học khác nhau trong thám mã thuật toán RSA:

Phân giải n ra thành hai thừa số nguyên tố của nó. Điều đó dẫn đến tính được (n) = (p-1)(q-1) và trên cơ sở đó có thể xác định được d e-1 mod (n).

Xác định trực tiếp (n), chứ không phải ngay từ đầu xác định p và q. Điều đó cũng cho phép xác định d e-1 mod (n).

Xác định trực tiếp d, chứ không phải ngay từ đầu xác định (n).

Page 75: Bài 4_ Mật mã khóa công khai

04/20/23 75

Nhận xét

Bài toán xác định (n) theo n, tương đương bài toán phân giải số n thành thừa số nguyên tố.

Ngày nay, cũng đã chứng tỏ rằng thuật toán xác định d khi biết e và n, nó cũng đòi hỏi tiêu tốn thời gian như bài toán phân giải n thành hai thừa số nguyên tố.

Page 76: Bài 4_ Mật mã khóa công khai

04/20/23 76

(tiếp)

Như vậy, vấn đề thời gian tiêu tốn cho giải bài toán phân tích n ra thành thừa số nguyên tố, được sử dụng làm chỉ tiêu định lượng đánh giá độ an toàn của thuật toán RSA.

Page 77: Bài 4_ Mật mã khóa công khai

04/20/23 77

Ví dụ

Vào năm 1977 khi thuật toán RSA mới ra đời, các độc giả của tờ tạp chí “Scientific American” đã nhận được một văn bản mã được trình bày trong mục “trò chơi toán học” của Martin Gardner. Ai giải được văn bản mã đó sẽ được nhận 100 đôla.

Theo đánh giá, bài toán này không có thể giải sớm hơn 40 triệu lũy thừa bốn năm.

Page 78: Bài 4_ Mật mã khóa công khai

04/20/23 78

(tiếp)

Nhưng vào tháng giêng năm 1994 một nhóm sử dụng internet đã cùng cộng tác với nhau để giải bài toán này trong vòng tám tháng.

Bài toán này đã sử dụng khoá công khai dài 129 con số trong hệ 10 (độ dài của n) và bằng khoảng 428 bit.

Page 79: Bài 4_ Mật mã khóa công khai

04/20/23 79

Phương pháp sử dụng φ(n)

Giả sử người tấn công biết được giá trị φ(n).

Khi đó việc xác định giá trị p, q được đưa về việc giải hai phương trình sau:

n = p q

(n) = (p-1)(q-1)

Page 80: Bài 4_ Mật mã khóa công khai

04/20/23 80

(tiếp)

Thay q = n/p, ta được phương trình bậc hai:

p2 – (n - (n) + 1)p + n = 0 p, q chính là hai nghiệm của phương

trình bậc hai này.

Page 81: Bài 4_ Mật mã khóa công khai

04/20/23 81

Sự tiến bộ trong việc giải quyết vấn đề phân giải ra các thừa số

Số lượng con số hệ 10

Gần đúng số lượng

bit

Ngày thực hiện

Yêu cầu số MIPS

năm

Thuật toán sử

dụng

100 332 4-1991 7 Sàng bậc 2

110 365 4-1992 75 Sàng bậc 2

Page 82: Bài 4_ Mật mã khóa công khai

04/20/23 82

(tiếp)

120 398 6-1993 830 Sàng bậc 2

129 428 4-1994 5000 Sàng bậc 2

130 431 4-1996 500 Sàng trong

trường số dạng chung

Page 83: Bài 4_ Mật mã khóa công khai

04/20/23 83

Nhận xét

Nguy cơ đối với khoá có độ dài lớn có hai mặt:

liên tục tăng khối lượng tính toán của các máy tính hiện đại.

liên tục phải hoàn thiện thuật toán phân giải ra các thừa số nguyên tố.

Page 84: Bài 4_ Mật mã khóa công khai

04/20/23 84

So sánh hai phương pháp

Page 85: Bài 4_ Mật mã khóa công khai

04/20/23 85

Chọn n

Việc chọn p và q phải có những hạn chế sau: Giá trị p và q cần phải khác nhau theo độ dài đến

vài bậc. Chẳng hạn các p và q cần rơi vào khoảng từ 1075 đến 10100

Cả (p - 1) cũng như (q - 1) cần có thừa số nguyên tố lớn.

gcd(p -1, q - 1) cần phải đạt được càng nhỏ. Ngoài ra, như đã chứng minh rằng nếu e < n và d < n1/4, thì d có thể xác định được dễ dàng.

Page 86: Bài 4_ Mật mã khóa công khai

04/20/23 86

Phân tích chi phí thời gian

Như đã được xác nhận bởi chuyên gia hiệu đính về mật mã Paul Kocher: đối phương có thể nhận được khả năng xác định khoá riêng nhờ phân tích chi phí thời gian cần thiết cho máy tính để giải mã tin tức.

Page 87: Bài 4_ Mật mã khóa công khai

04/20/23 87

Nhận xét

Phân tích chi phí thời gian có thể sử dụng không chỉ trong trường hợp RSA, mà còn đối với các hệ mật mã với khoá công khai khác.

Các cuộc tấn công loại này thể hiện sự nguy hiểm theo hai nguyên nhân: chúng có thể dẫn ra hướng không chờ đợi nhất, và tính toán trước sự phân tích chỉ có văn bản mã.

Page 88: Bài 4_ Mật mã khóa công khai

04/20/23 88

(tiếp)

Phương pháp phân tích chi phí thời gian trong chừng mực nào đấy tương tự như xu hướng bẻ khoá, đoán đúng ra tổ hợp ổ khoá của két sắt, sẽ đòi hỏi bao nhiêu thời gian để xoay vặn thiết bị khoá từ số này đến số kia.

Page 89: Bài 4_ Mật mã khóa công khai

04/20/23 89

Các phương pháp phòng chống

Thực hiện toán tử nâng lên luỹ thừa với thời gian không đổi: thực hiện thay đổi thuật toán sao cho tất cả các phép nâng lên luỹ thừa chiếm cùng khoảng thời gian kể từ khi bắt đầu thực hiện cho đến khi đạt tới kết quả.

Làm điều đó đơn giản, nhưng khi đó sẽ làm tăng thời gian thực hiện thuật toán nói chung.

Page 90: Bài 4_ Mật mã khóa công khai

04/20/23 90

(tiếp)

Các giữ chậm ngẫu nhiên: có ảnh hưởng nhỏ đến thời gian chung của sự thực hiện gây ra bởi sự bổ xung trong thuật toán nâng luỹ thừa do các giữ chậm ngẫu nhiên, dẫn đến giảm nhỏ tác dụng của thám mã dựa trên phân tích chi phí thời gian.

Nhưng đồng thời như nhận xét của Kocher, nếu sự phòng vệ do bổ sung các giữ chậm ngẫu nhiên không hoàn hảo, thì đối phương vẫn còn khả năng phân tích, ngay cả trong trường hợp có ảnh hưởng của các giữ chậm ngẫu nhiên này.

Page 91: Bài 4_ Mật mã khóa công khai

04/20/23 91

(tiếp)

Che dấu: Nhân văn bản mã với một số ngẫu nhiên như là thực hiện nâng lên luỹ thừa.

Điều này không cho phép đối phương biết các bit như thế nào của văn bản mã đã được gia công bổ xung và đồng thời không tạo cho đối phương dẫn ra sự phân tích theo loạt, đây là xu thế riêng được thực hiện dựa trên sự phân tích chi phí thời gian.

Page 92: Bài 4_ Mật mã khóa công khai

04/20/23 92

Ví dụ

Page 93: Bài 4_ Mật mã khóa công khai

04/20/23 93

4. Hệ mật Elgamal

Page 94: Bài 4_ Mật mã khóa công khai

04/20/23 94

Nhận xét

Page 95: Bài 4_ Mật mã khóa công khai

04/20/23 95

Hình thành khóa

Page 96: Bài 4_ Mật mã khóa công khai

04/20/23 96

Quá trình mã hóa

Page 97: Bài 4_ Mật mã khóa công khai

04/20/23 97

Quá trình giải mã

Page 98: Bài 4_ Mật mã khóa công khai

04/20/23 98

(tiếp)

Page 99: Bài 4_ Mật mã khóa công khai

04/20/23 99

5. Phương pháp ECC

Hệ thống mã hóa khóa công cộng dựa trên việc sử dụng các bài toán khó giải quyết. Vấn đề khó ở đây chính là việc số lượng phép tính cần thiết để tìm ra một lời giải cho bài toán là rất lớn.

Trong lịch sử 30 năm của ngành mã hóa bất đối xứng đã có nhiều đề xuất khác nhau cho dạng bài toán như vậy, tuy nhiên chỉ có hai trong số các đề xuất đó còn tồn tại vững đến ngày này.

Page 100: Bài 4_ Mật mã khóa công khai

04/20/23 100

Hai bài toán đó bao gồm:

bài toán logarit rời rạc (discrete logarithm problem)

và bài toán phân tích thừa số của số nguyên.

Page 101: Bài 4_ Mật mã khóa công khai

04/20/23 101

(tiếp)

Cho đến năm 1985, hai nhà khoa học Neal Koblitz và Victor S. Miller đã độc lập nghiên cứu và đưa ra đề xuất ứng dụng lý thuyết toán học đường cong elliptic (elliptic curve) trên trường hữu hạn.

Đường cong elliptic – cũng như đại số hình học – được nghiên cứu rộng rãi trong vòng 150 năm trở lại đây và đã đạt được một số kết quả lý thuyết có giá trị.

Page 102: Bài 4_ Mật mã khóa công khai

04/20/23 102

(tiếp)

Page 103: Bài 4_ Mật mã khóa công khai

04/20/23 103

Nhận xét

Tính bảo mật của hệ thống mã hóa sử dụng đường cong elliptic dựa trên điểm mấu chốt là độ phức tạp của bài toán logarit rời rạc trong hệ thống đại số.

Bài toán logarit rời rạc trên đường cong elliptic chưa có thuật toán nào có thời gian thực hiện nhỏ hơn cấp lũy thừa.

Page 104: Bài 4_ Mật mã khóa công khai

04/20/23 104

5.1. Công thức Weierstrasse và đường cong elliptic

Gọi K là một trường hữu hạn hoặc vô hạn. Một đường cong elliptic được định nghĩa trên trường K bằng công thức Weierstrass: y2 + axy + by = x3 + cx2 + dx + e, ở đây a, b, c, d, e là các số thỏa mãn một vài điều kiện đơn giản nào đó và thuộc K.

Page 105: Bài 4_ Mật mã khóa công khai

04/20/23 105

Ví dụ về đường cong elliptic

Page 106: Bài 4_ Mật mã khóa công khai

04/20/23 106

5.2. Đường cong elliptic trên trường R2

Đường cong elliptic E trên trường số thực R là tập hợp các điểm (x, y) thoả mãn công thức:

cùng với một điểm đặc biệt O được gọi là điểm tại vô cực (cũng là phần tử identity).

Page 107: Bài 4_ Mật mã khóa công khai

04/20/23 107

(tiếp)

Cặp giá trị (x, y) đại diện cho một điểm trên đường cong elliptic và tạo nên mặt phẳng tọa độ hai chiều (affine) R × R.

Đường cong elliptic E trên R2 được gọi là định nghĩa trên R, ký hiệu là E(R).

Page 108: Bài 4_ Mật mã khóa công khai

04/20/23 108

Phép cộng

Page 109: Bài 4_ Mật mã khóa công khai

04/20/23 109

(tiếp)

Phép cộng điểm (ESUM) được định nghĩa trên tập E(R) của các điểm (x, y).

Điểm tại vô cực O là điểm cộng với bất kỳ điểm nào cũng sẽ ra chính điểm đó.

Page 110: Bài 4_ Mật mã khóa công khai

04/20/23 110

(tiếp)

Page 111: Bài 4_ Mật mã khóa công khai

04/20/23 111

Phép công trên đường cong elliptic

Page 112: Bài 4_ Mật mã khóa công khai

04/20/23 112

Nhận xét

Page 113: Bài 4_ Mật mã khóa công khai

04/20/23 113

(tiếp)

Page 114: Bài 4_ Mật mã khóa công khai

04/20/23 114

Thuật toán cộng điểm

Page 115: Bài 4_ Mật mã khóa công khai

04/20/23 115

(tiếp)

Page 116: Bài 4_ Mật mã khóa công khai

04/20/23 116

Phép nhân đôi

Page 117: Bài 4_ Mật mã khóa công khai

04/20/23 117

(tiếp)

Xét phép nhân đôi (EDBL): nếu cộng hai điểm P, Q E(R) với P = Q thì đường thẳng L sẽ là tiếp tuyến của đường cong elliptic tại điểm P.

Trường hợp này điểm –R sẽ là giao điểm còn lại của L với E. Lúc đó R = 2P.

Page 118: Bài 4_ Mật mã khóa công khai

04/20/23 118

5.3. Đường cong elliptic trên trường hữu hạn

Đường cong elliptic được xây dựng trên các trường hữu hạn. Có hai trường hữu hạn thường được sử dụng: trường hữu hạn Fq với q là số nguyên tố hoặc q là 2m (m là số nguyên).

Page 119: Bài 4_ Mật mã khóa công khai

04/20/23 119

(tiếp)

Tùy thuộc vào trường hữu hạn Fq, với mỗi bậc của q, tồn tại nhiều đường cong elliptic.

Do đó, với một trường hữu hạn cố định có q phần tử và q lớn, có nhiều sự lựa chọn nhóm đường cong elliptic.

Page 120: Bài 4_ Mật mã khóa công khai

04/20/23 120

5.4. Đường cong elliptic trên trường Fp (p là số nguyên tố)

Định nghĩa Cho p là số nguyên tố (p > 3), cho a, b

Fp sao cho 4a3 + 27b2 ≠ 0 trong trường Fp. Một đường cong elliptic E(Fp) trên Fp (được định nghĩa bởi các tham số a và b) là một tập hợp các cặp giá trị (x, y) (x, y Fp) thỏa mãn công thức: y2 = x3 + ax + b,

Page 121: Bài 4_ Mật mã khóa công khai

04/20/23 121

(tiếp)

cùng với điểm O đặc biệt gọi là điểm vô cực và có thể biểu diễn dưới dạng O = (x, ∞).

Số lượng điểm của E(Fp) là #E(Fp) thỏa mãn định lý Hasse.

Page 122: Bài 4_ Mật mã khóa công khai

04/20/23 122

Chú ý

Độ phức tạp của thuật toán xây dựng trên nhóm đường cong Elliptic phụ thuộc vào số điểm trên đường cong đó.

Page 123: Bài 4_ Mật mã khóa công khai

04/20/23 123

Định lý Hasse

Số các điểm trên đương cong Elliptic thỏa mãn bất đẳng thức sau:

ppFEpp p 21)(#21

Page 124: Bài 4_ Mật mã khóa công khai

04/20/23 124

Bậc của điểm

Cho điểm P(x, y) thuộc đường cong elliptic. Bậc n của điểm P(x, y) là số nguyên dương thỏa mãn biểu thức:

OnP

Page 125: Bài 4_ Mật mã khóa công khai

04/20/23 125

Tập hợp các điểm tạo thành nhóm

Page 126: Bài 4_ Mật mã khóa công khai

04/20/23 126

5.5. Đường cong elliptic trên trường

Định nghĩa Một đường cong elliptic E( ) được

định nghĩa bởi các tham số a, b (với b ≠ 0) là tập các điểm P(x, y) với x , y thỏa mãn công thức:

y2 + xy = x3 + ax2 + b,

mF2

Page 127: Bài 4_ Mật mã khóa công khai

04/20/23 127

(tiếp)

Page 128: Bài 4_ Mật mã khóa công khai

04/20/23 128

5.6. Các phép toán trên đường cong elliptic trong hệ tọa độ affine

Page 129: Bài 4_ Mật mã khóa công khai

04/20/23 129

(tiếp)

Page 130: Bài 4_ Mật mã khóa công khai

04/20/23 130

Thuật toán cộng điểm trong hệ tọa độ affine

Page 131: Bài 4_ Mật mã khóa công khai

04/20/23 131

(tiếp)

Page 132: Bài 4_ Mật mã khóa công khai

04/20/23 132

Các phép toán trên hệ tọa độ chiếu

Page 133: Bài 4_ Mật mã khóa công khai

04/20/23 133

Chuyển đổi giữa hệ tọa độ affine và hệ tọa độ chiếu

Page 134: Bài 4_ Mật mã khóa công khai

04/20/23 134

Các phép toán trong hệ tọa độ chiếu

Page 135: Bài 4_ Mật mã khóa công khai

04/20/23 135

(tiếp)

Page 136: Bài 4_ Mật mã khóa công khai

04/20/23 136

(tiếp)

Page 137: Bài 4_ Mật mã khóa công khai

04/20/23 137

So sánh

Page 138: Bài 4_ Mật mã khóa công khai

04/20/23 138

Thuật toán nhân điểm trong tọa độ affine

Page 139: Bài 4_ Mật mã khóa công khai

04/20/23 139

Thuật toán nhân điểm trong tọa độ chiếu

Page 140: Bài 4_ Mật mã khóa công khai

04/20/23 140

Bài toán logarit rời rạc trên đường cong elliptic

Page 141: Bài 4_ Mật mã khóa công khai

04/20/23 141

(tiếp)

Hiện nay chưa có thuật toán nào được xem là hiệu quả để giải quyết bài toán này.

Để giải bài toán logarit rời rạc trên đường cong ellipse, cần phải kiểm tra tất cả các giá trị m[2.. n - 2]. Nếu điểm P được chọn lựa cẩn thận với n rất lớn thì việc giải bài toán ECDLP xem như không khả thi.

Page 142: Bài 4_ Mật mã khóa công khai

04/20/23 142

Nhận xét

Việc giải bài toán ECDLP khó khăn hơn việc giải quyết bài toán logarit rời rạc trên trường số nguyên thông thường.

Page 143: Bài 4_ Mật mã khóa công khai

04/20/23 143

5.6. Áp dụng lý thuyết đường cong elliptic vào mã hóa

Đường cong elliptic đã được sử dụng trong

quy trình mã hóa dữ liệu, trao đổi khóa ký nhận điện tử.

Page 144: Bài 4_ Mật mã khóa công khai

04/20/23 144

Mã hóa dữ liệu

Người gửi và người nhận cần phải sở hữu một cặp khóa công cộng – khóa riêng.

Các giá trị sau được quy ước chung giữa người gửi và người nhận, gọi là các tham số chung của hệ thống mã hóa:

Đường cong elliptic curve E. Điểm P, P E. Điểm P có bậc n (n × P =

O).

Page 145: Bài 4_ Mật mã khóa công khai

04/20/23 145

Quá trình tạo khóa

Chọn một số nguyên bất kỳ d, d [2, n − 2].

Đây chính là khóa riêng. Tính giá trị của điểm Q = d × P E. Đây chính là khóa công cộng.

Page 146: Bài 4_ Mật mã khóa công khai

04/20/23 146

Thao tác mã hóa

Page 147: Bài 4_ Mật mã khóa công khai

04/20/23 147

Nhận xét

Page 148: Bài 4_ Mật mã khóa công khai

04/20/23 148

Giải mã

Page 149: Bài 4_ Mật mã khóa công khai

04/20/23 149

5.6. Kết luận

Hệ thống mã hóa khóa công cộng ra đời đã giải quyết các hạn chế của mã hóa quy ước.

Mã hóa khóa công cộng giúp tránh bị tấn công khi trao đổi khóa do khóa để giải mã (khóa riêng) không cần phải truyền hoặc chia sẻ với người khác.

Page 150: Bài 4_ Mật mã khóa công khai

04/20/23 150

(tiếp)

Ngoài ra, mỗi người chỉ cần sở hữu một cặp khóa công cộng – khóa riêng và người gởi thông tin chỉ cần giữ khóa công cộng của người nhận do đó số lượng khóa cần phải quản lý giảm khá nhiều.

Mỗi người chỉ cần lưu trữ bảo mật một khóa riêng của chính mình.

Page 151: Bài 4_ Mật mã khóa công khai

04/20/23 151

So sánh kích thước khóa giữa mã hóa quy ước và mã hóa khóa công cộng với cùng mức độ bảo mật

Page 152: Bài 4_ Mật mã khóa công khai

04/20/23 152

So sánh kích thước khóa RSA và ECCvới cùng mức độ an toàn

Page 153: Bài 4_ Mật mã khóa công khai

04/20/23 153

So sánh mức độ bảo mật giữa ECC với RSA / DSA

Page 154: Bài 4_ Mật mã khóa công khai

04/20/23 154

Hạn chế

Việc chọn sử dụng các tham số đường cong và điểm quy ước chung như thế nào để thật sự đạt được độ bảo mật cần thiết.

Hầu hết các đường cong được đưa ra đều thất bại khi áp dụng vào thực tiễn. Do đó hiện nay số lượng đường cong thật sự được sử dụng không được phong phú.

Page 155: Bài 4_ Mật mã khóa công khai

04/20/23 155

(tiếp)

NIST đề xuất một số đường cong elliptic curve đã được kiểm định là an toàn để đưa vào sử dụng thực tế trong tài liệu FIPS 186-2.