1. Trang chủ
  2. » Luận Văn - Báo Cáo

Một số loại chữ ký điện tử và ứng dụng

152 988 1

Đ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

Định dạng
Số trang 152
Dung lượng 2,18 MB

Nội dung

Để xác thực thông tin, gắn trách nhiệm của một thực thể nào đó với một thông tin, cũng như đảm bảo tính toàn vẹn, thông tin truyền đi không bị sửa đổi ngoài ý muốn, con người đã sáng tạo

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

ĐẠI HỌC QUỐC GIA HÀ NỘI

LUẬN VĂN THẠC SỸ

NGUYỄN TRỊNH ĐOÀN

Người hướng dẫn: PGS TS Trịnh Nhật Tiến

Hà Nội ngày 01 tháng 12 năm 2007

Trang 2

DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ

Viết tắt Thuật ngữ tiếng Anh Nghĩa tiếng Việt

BDS Blind Digital Signature Chữ ký số mù

CA Certificate Authority Nhà cung cấp chứng chỉ số CTF Central Tabulating Facility Phương tiện lập bảng trung tâm DEA Data Encryption Algorithm Thuật toán mật mã dữ liệu

DES Data Encryption Standard Chuẩn mã hóa dữ liệu

DSS Digital Signature Standard Chuẩn chữ ký số

GDS Group Digital Signature Chữ ký số nhóm

GBDS Group Blind Digital Signature Chữ ký số mù nhóm

IDEA International Data Encryption

SK Signature of Knowledge Chữ ký dựa trên tri thức

VSF Vote Submission Facility Phương tiện đệ trình phiếu

Trang 3

DANH MỤC CÁC HÌNH VẼ VÀ KÝ HIỆU

CÁC HÌNH VẼ

Hình 1: Minh họa mã hóa và giải mã 33

Hình 2: Minh họa sinh và thẩm tra chữ ký 48

Hình 3: Minh họa hàm băm và đại diện thông điệp 57

Hình 4: Minh họa chữ ký số sử dụng hàm băm 59

Hình 5: Mô hình ngân hàng điện tử phân tán 125

CÁC KÝ HIỆU

a R A Phần tử a đƣợc chọn ngẫu nhiên trong tập A

Zn Tập các số nguyên {0, 1,…, n-1}

Zn* Tập các số nguyên trong Zn mà nguyên tố với n

Định nghĩa 3.5.2 Định nghĩa thứ 2 trong mục 3.5

[2, 3, 5, 7, 33] Tài liệu tham khảo [2], [3], [5], [7], [33]

Trang 4

MỞ ĐẦU

1 Lý do chọn đề tài

Trong cuộc sống và trong các hoạt động của con người, việc trao đổi thông tin là một nhu cầu thiết yếu, con người trao đổi thông tin để tồn tại và phát triển trong quy luật vận động của tự nhiên và xã hội Thông tin thì đa dạng, phong phú được thể hiện dưới nhiều dạng thức khác nhau như văn bản, hình ảnh, âm thanh, số liệu,…Mặt khác việc trao đổi thông tin cũng diễn ra dưới nhiều hình thức và bằng các phương pháp khác nhau

Cùng với sự phát triển của công nghệ thông tin, các phương tiện và công nghệ truyền thông tiên tiến ra đời, trong đó mạng máy tính và đặc biệt là mạng Intenet đã giúp con người trao đổi thông tin hết sức thuận tiện, nhanh chóng Một vấn đề vô cùng quan trọng được đặt ra là sự bảo mật và an toàn trong việc trao đổi thông tin Các thông tin truyền đi phải đảm bảo tính chính xác, không bị sửa đổi và trong rất nhiều trường hợp cần được bảo đảm tính bí mật thông tin và cần xác thực đúng người gửi và người nhận Xuất phát từ thực tế này có nhiều biện pháp về an toàn thông tin ra đời

Một giải pháp hữu hiệu cho cho việc đảm bảo tính bí mật của thông tin

là mã hóa thông tin Mã hóa thông tin là sự biến đổi thông tin thành một dạng

khác với mục đích “che giấu” nội dung thông tin, chỉ những đối tượng có thẩm quyền mới có thể giải mã thông tin đã mã hóa (hủy bỏ sự “che giấu”) để lấy lại thông tin ban đầu

Để xác thực thông tin, gắn trách nhiệm của một thực thể nào đó với một thông tin, cũng như đảm bảo tính toàn vẹn, thông tin truyền đi không bị sửa

đổi ngoài ý muốn, con người đã sáng tạo ra chữ ký số

Vấn đề xưng danh và xác nhận danh tính của các thực thể cũng là các vấn đề rất cần thiết trong giao dịch điện tử

Trang 5

Các yêu cầu về an toàn và bảo mật truyền thông gồm:

1) Đảm bảo tin cậy: Thông tin được bí mật, không sao chép trái phép 2) Tính toàn vẹn: Nội dung thông tin không bị thay đổi

3) Tính xác thực: Thông tin được gửi và nhận hợp pháp, đúng các chủ

thể giao dịch, không mạo danh

4) Không thể chối bỏ trách nhiệm: Người gửi tin không thể chối bỏ

trách nhiệm về những thông tin đã gửi

Bằng các công nghệ mã hóa và chữ ký số chúng ta có thể thực hiện được các yêu cầu trên, sử dụng chữ ký số đảm bảo tốt ba yêu cầu sau cùng

Hiện nay người ta đã sử dụng chữ ký số trong các công việc: giao dịch các tài liệu điện tử, trao đổi thư tín, tiền điện tử, giao dịch ngân hàng,…, và ứng dụng trong nhiều lĩnh vực khác nhau như: quản lý hành chính, giáo dục, kinh tế, thương mại điện tử… Ở Việt Nam, luật giao dịch điện tử đã được Quốc hội khóa XI thông qua vào tháng 11 năm 2005 tại kỳ họp thứ 8 và có hiệu lực từ 01/03/2006, do đó đã tạo hành lang pháp lý thuận lợi cho giao dịch điện tử Trong tương lai không xa việc ứng dụng chữ ký điện tử sẽ trở thành phổ biến và đóng một vai trò quan trọng thúc đẩy sự phát triển kinh tế xã hội của đất nước

Xuất phát từ thực tế nêu trên, việc nghiên cứu các phương pháp an toàn thông tin nói chung, chữ ký số nói riêng là thiết thực và có ý nghĩa to lớn

Luận văn “MỘT SỐ LOẠI CHỮ KÝ ĐIỆN TỬ VÀ ỨNG DỤNG” được nghiên cứu dựa trên các vấn đề thực tiễn cuộc sống đòi hỏi như việc trao đổi thông tin hàng ngày giữa các tổ chức, cá nhân mà yêu cầu bảo mật và an toàn thông tin được đề ra

Trang 6

2 Nội dung nghiên cứu của luận văn

Luận văn tập trung nghiên cứu một số vấn đề chính sau đây:

1) Một số kiến thức toán học sử dụng trong khoa học mật mã

2) Tổng quan về mã hóa và chữ ký số (chữ ký điện tử)

3) Sơ đồ chữ ký RSA

4) Các sơ đồ chữ ký số mù, chữ ký số nhóm, chữ ký số mù nhóm 5) Ứng dụng của các sơ đồ chữ ký nói trên

Sơ đồ chữ ký RSA là một sơ đồ chữ ký thông dụng hiện nay vì sự cài đặt đơn giản và tính an toàn cao, làm cơ sở xây dựng nhiều loại chữ ký khác

Các sơ đồ chữ ký số mù, chữ ký số nhóm và chữ ký số mù nhóm là các

sơ đồ chữ ký đặc biệt có nhiều ứng dụng trong các lĩnh vực: Tiền điện tử, giao dịch ngân hàng, thương mại điện tử, bỏ phiếu trực tuyến,…Các loại chữ ký này được thiết kế để giải quyết các vấn đề: ẩn danh, làm việc theo nhóm và ký đại diện cho nhóm trong giao dịch điện tử

3 Phương pháp nghiên cứu

Luận văn được nghiên cứu dựa trên:

1) Học hỏi, xin ý kiến của thầy hướng dẫn và các đồng nghiệp 2) Nghiên cứu các tài liệu chuyên môn liên quan bằng tiếng Việt, tiếng Anh, tìm kiếm thông tin trên Internet

3) Tìm hiểu và quan sát thực tiễn

4) Thử nghiệm một số chương trình đơn giản

Trang 7

4 Tổ chức luận văn

Luận văn gồm 6 chương như sau:

Chương 1: Các kiến thức cơ sở

Chương 2: Tổng quan về mã hóa và chữ ký số

Chương 3: Chữ ký mù

Chương 4: Chữ ký nhóm

Chương 5: Chữ ký mù nhóm

Chương 6: Thử nghiệm chương trình

Vì thời gian có hạn, trong khi đề tài lại rất sâu rộng, mặt khác kiến thức

và kinh nghiệm của bản thân về lĩnh vực này còn hạn chế, bản luận văn không thể tránh khỏi các khiếm khuyết Rất mong nhận được sự góp ý và bổ xung của các thầy cô, bạn bè đồng nghiệp Hy vọng rằng đề tài này sẽ được tiếp tục nghiên cứu và phát triển để hoàn thiện hơn

Trang 8

Chương 1 CÁC KIẾN THỨC CƠ SỞ

Lý thuyết mật mã là một ngành khoa học được xây dựng dựa trên cơ sở

toán học, đặc biệt là lý thuyết số học Chương này tổng hợp một số kiến thức

toán học liên quan được sử dụng trong lý thuyết mật mã cũng như trong lĩnh

Ví dụ: a = 13, b = 5; 13 = 5.2 + 3 → q = 2, r = 3

1.1.1.2 Một số tính chất

Với a, b, c là các số nguyên ta có:

1) ±1\a, với mọi a; a\0, a\a, với mọi a ≠ 0

2) Nếu a\b và b\c thì a\c, với mọi a ≠ 0, b ≠ 0

3) Nếu a\b thì a\b.c, với mọi a ≠ 0

4) Nếu a\b và a\c thì a\(b+c) và a\(b-c), với mọi a ≠ 0

Trang 9

1.1.2 Ƣớc chung lớn nhất, bội chung nhỏ nhất

1.1.2.1 Định nghĩa 1.1.2

1) Một số nguyên d đƣợc gọi là ƣớc chung của các số nguyên a1, a2, …, an nếu

nó là ƣớc của tất cả các số đó

2) Một số nguyên m đƣợc gọi là bội chung của các số nguyên a1, a2, …, an

nếu nó là bội của tất cả các số đó

3) Một ƣớc chung d>0 của các số nguyên a1, a2, …, an sao cho mọi ƣớc chung của a1, a2, …, an đều là ƣớc của d, thì d đƣợc goi là ƣớc chung lớn nhất của

a1, a2, …, an và ký hiệu là d = gcd(a1, a2, …, an) Để cho gọn trong trình bày ta có thể ký hiệu là d = (a1, a2, …, an)

4) Nếu gcd(a1, a2, …, an) = 1 thì các số a1, a2, …, an đƣợc gọi là nguyên tố cùng nhau

5) Một bội chung m>0 của các số nguyên a1, a2, …, an sao cho mọi bội chung của a1, a2, …, an đều là bội của m, thì m đƣợc goi là bội chung nhỏ nhất của

2) m = lcm(a1, a2, …, an) khi và chỉ khi (m/a1, m/a2,…, m/an) =1

3) Nếu d là một ƣớc chung của a1, a2, …, an thì:

d = gcd(a1, a2, …, an) khi và chỉ khi gcd(a1/d, a2/d,…, an/d) =1

4) Nếu gcd(a,b) = 1 và b\ac thì b\c

Trang 10

5) Nếu gcd(a,b) = 1 thì gcd(ac,b) = gcd(c,b)

6) Nếu gcd(a, b) =1 thì lcm(a, b) = ab

Trang 11

1.1.2.4 Thuật toán Euclide mở rộng

1) Bài toán

 Dữ liệu vào: Cho hai số nguyên không âm a, b, a ≥ b

 Kết quả: d = gcd(a,b) và hai số x, y sao cho: ax + by = d

2) Thuật toán: (mô phỏng bằng ngôn ngữ Pascal)

q := a div b; r := a mod b; x := x2-q*x1; y := y2-q*y1;

a := b; b := r; x2 := x1; x1 := x; y2 := y1; y1 := y; End;

d := a; x := x2; y := y2;

writeln(d, x, y);

End;

Trang 12

Có một số phương pháp kiểm tra tính nguyên tố của một số nguyên bằng xác xuất như: Solovay-Strassen, Lehmann-Peralta, Miller-Rabin [5]

Trang 13

Giả sử k không là số nguyên tố Khi đó k = a.b với 1 < a, b < k, do đó

p = 2k -1 = 2ab -1 = (2a)b -1 = (2a -1).E (E là một biểu thức nguyên) mâu thuẫn giả thiết p là nguyên tố Vậy giả sử là sai, hay k là số nguyên tố

Trang 14

Ví dụ: 19 ≡ 7 (mod 3) vì 19 và 7 chia cho 3 có cùng số dư là 1

Các mệnh đề sau đây là tương đương:

2)→3) : m\a-b nên có t  Z sao cho a - b = mt hay a = b + mt

3)→1) : Lấy a chia cho m giả sử thương là qa và dư r: a = mqa + r (0 ≤ r <m),

do đó: b + mt = a = mqa + r hay b = m(qa - t) + r (0 ≤ r < m) Điều đó chứng tỏ khi chia a và b cho m được cùng số dư r hay a ≡ b(mod m)

1.1.4.2 Các tính chất

1) Quan hệ đồng dư theo modulo m là một quan hệ tương đương trong Z: (1) a ≡ a (mod m) với mọi a  Z ( phản xạ)

(2) Nếu a ≡ b (mod m) thì b ≡ a (mod m) (đối xứng)

(3) Nếu a ≡ b (mod m) và b ≡ c (mod m) thì a ≡ c (mod m) (bắc cầu)

Trang 15

2) Có thể cộng hoặc trừ từng vế nhiều đồng dƣ thức theo cùng một modulo m với nhau, ta đƣợc một đồng dƣ thức theo cùng modulo m tức là:

c) a ≡ b (mod m) → a+km ≡ b (mod m) với mọi k  Z

d) a ≡ b (mod m) → ac ≡ bc (mod m) với mọi c  Z

e) a ≡ b (mod m) → an ≡ bn (mod m) với mọi n  Z+.

f) c\a, c\b, (c,m)=1, a ≡ b (mod m) → a/c ≡ b/c (mod m)

g) a ≡ b (mod m), c > 0 → ac ≡ bc (mod mc) và

c\a, c\ b, c\m → a/c ≡ b/c (mod m/c)

h) a ≡ b (mod m) → a ≡ b (mod k) với k\m

i) a ≡ b (mod m) → gcd(a,m) = gcd(b,m)

Trang 16

1.1.4.3 Các lớp thặng dư

Quan hệ đồng dư theo modulo m trên tập Z là một quan hệ tương đương

vì có tính chất phản xạ, đối xứng, bắc cầu do đó nó tạo ra một phân hoạch trên tập các số nguyên Z thành ra các lớp tương đương: hai số nguyên thuộc cùng một lớp tương đương khi và chỉ khi chúng có cùng một số dư khi chia cho m

Mỗi lớp tương được đại diện bởi một số duy nhất trong tập hợp Zm = {0, 1, 2,…, m-1} là số dư khi chia các số trong lớp cho m, ký hiệu một lớp được đại diện bởi số a là [a]m hay với m mặc định nào đó ta viết tắt là [a], vậy:

[a]m = [b]m ↔ a ≡ b (mod m)

Vì vậy ta có thể đồng nhất Zm với tập các lớp tương đương theo modulo

m Tập Zm = {0, 1, 2,…, m-1} được gọi là tập các thặng dư đầy đủ theo modulo m Mọi số nguyên bất kỳ đều có thể tìm được trong Zm một số đồng

dư với mình theo modulo m [3, 33]

Trang 17

Hệ quả 1: Nếu gcd(c, m) = 1 và a ≡ b (mod (m)) với a, b là các số tự nhiên thì ca ≡ cb (mod m) và suy ra: ca mod m = ca mod (m) mod m

Nhận xét: Hệ quả trên giúp ta giảm nhẹ việc tính toán đồng dư của lũy thừa

bậc cao một cách đáng kể Ví dụ muốn tính 21004

(mod 15):

Ta thấy (15) = (5).(3) = 4.2 = 8 và 1004 ≡ 4 (mod 8), do đó:

21004 (mod 15) = 24 (mod 15) = 16 (mod 15) = 1

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

)d ≡ c (mod m)

Nhận xét: Với a = ed và b = 1, từ hệ quả 1 ta có hệ quả 2 Hệ quả này đóng

vai trò then chốt trong việc thiết lập các hệ mã mũ sau này (như RSA)

1.1.4.5 Tính toán đồng dư của các lũy thừa bậc lớn

Hệ quả 1 áp dụng hiệu quả trong trường hợp a lớn hơn hẳn (m) vì chỉ khi ấy b mới thực sự nhỏ hơn a Trong thực tế tính toán ta thường gặp m lớn

do đó (m) lớn thậm chí lớn hơn a khi ấy ta dùng kỹ thuật khác, sau đây trình cách bình phương liên tiếp [3]:

Trang 18

Tổng hợp lại, căn cứ theo khai triển (*) ta lấy tích của các lũy thừa bậc 25, 23,

21, 20 (rút gọn theo modulo 130) sẽ thu được kết quả là:

8743 (mod 103) = 38.63.50.87 (mod 103) = 85

Định lý 1.1.6 (Định lý Trung Quốc về số dư)

Cho tập số nguyên tố cùng nhau từng đôi một m1, m2,…mr Với mỗi bộ

số nguyên bất kỳ a1, a2,…ar hệ phương trình đồng dư:

x ≡ ai (mod mi) i = 1, 2, …, r luôn có nghiệm và duy nhất theo modulo

m = m1.m2.…mr Nghiệm này có thể tính theo công thức:

x = a1m2m3…mrb1 + m1a2m3…mrb2 + m1m2a3m3…mrb3 + … +

m1m2…mr-1arbr (mod m1.m2.…mr) trong đó bi = ( m1.m2…mi-1mi+1…mr)-1 (mod mi), với mọi i = 1, 2,…, r

Nhận xét

Định lý số dư Trung Quốc cho phép ta tính toán đồng dư theo modulo của một số lớn (tích của nhiều số nguyên tố cùng nhau) thông qua tính toán

đồng dư theo modulo các số nhỏ (từng thừa số)

Ví dụ: Tìm nghiệm của hệ phương trình

Vì các số 5353, 391, 247 nguyên tố cùng nhau nên theo định lý Trung Quốc

về số dư hệ có nghiệm duy nhất theo modulo m = 5353.391.247 = 516976681

Trang 19

1.1.5 Cấu trúc nhóm

1.1.5.1 Phép toán hai ngôi

1) Phép toán hai ngôi trong một tập hợp A là một ánh xạ f từ AxA vào A Trong lý thuyết số thường ký hiệu phép toán hai ngôi là (+), (.), (*) nhưng không nhất thiết được hiểu theo các phép cộng, nhân thông thường Phép (.) đôi khi không cần viết

2) Phép toán hai ngôi (.) trong tập A được gọi là kết hợp nếu: a.(b.c) = (a.b).c,

Nếu a’ là nghịch đảo của a thì

a là nghịch đảo của a’ Ta có (a.b)-1

= b-1.a-1

1.1.5.2 Nhóm

1) Định nghĩa 1.1.5

Nhóm: Nhóm là một tập hợp G cùng với phép toán hai ngôi (.) thỏa mãn

các điều kiện sau [33]:

(1) Tính đóng: với mọi a  G, b  G thì a.b  G

(2) Tính kết hợp: với mọi a, b, c  G thì a.(b.c) = (a.b).c

(3) Có phần tử đơn vị e: e.a = a.e = a vói mọi a  G

(4) Mọi phần tử a  G đều có phần tử nghịch đảo a-1 : a.a-1 = a-1.a = e

Trang 20

Nếu tập G có hữu hạn phần tử thì ta nói nhóm hữu hạn, số phần tử của

nhóm ký hiệu là G gọi là cấp của nhóm Nếu phép toán hai ngôi (.) trong

G có tính giao hoán thì ta gọi nhóm là nhóm abelian

Tính chất: (a) Nếu a.b = a.c, thì b = c

(b) Nếu a.c = b.c, thì a = b

Bậc của phần tử: cho a  G, nếu có một số nguyên dương n sao cho an =

e thì ta nói a có bậc hữu hạn, số nguyên dương n nhỏ nhất như vậy gọi là bậc của a, ký hiệu o(a) Nếu không tồn tại n sao cho an

tập các số thực khác 0), cùng với phép nhân (.) thông thường là một nhóm giao hoán, gọi là nhóm nhân các số hữu tỷ (số thực) khác 0

1.1.5.3 Nhóm con

1) Bộ phận ổn định: Một bộ phận B của tập A gọi là ổn định đối với phép

toán hai ngôi (.) trong A nếu a.b  B với mọi a, b  B Phép toán (.) của A

áp dụng trên các phần tử của B gọi là phép toán cảm sinh của A trên B

2) Định nghĩa 1.1.6 (Nhóm con) : Một bộ phận ổn định H của một nhóm G

là nhóm con của G nếu H cùng với phép toán cảm sinh của G trên H là một

nhóm [33]

3) Định lý 1.1.7: Một bộ phận H của một nhóm G là một nhóm con của G khi

và chỉ khi các điều kiện sau thỏa mãn:

(1) Với mọi a, b  H, thì ab  H

(2) e H với e là phần tử trung lập của G

Trang 21

Hệ quả: Giả sử H là một bộ phận khác rỗng của một nhóm G, các điều

kiện sau là tương đương:

(a) H là một nhóm con của G

(b) Với mọi a, b  H thì ab  H và a-1  H

(c) Với mọi a, b  H thì ab-1  H

4) Ví dụ: Bộ phận mZ gồm các số nguyên là bội của một số nguyên m là một

nhóm con của nhóm cộng các số nguyên Z: Thật vậy áp dụng hệ quả (c),

mZ là nhóm con vì: ma, mb  mZ → ma-mb = m(a-b)  mZ

1.1.5.4 Nhóm Cyclic

1) Định nghĩa 1.1.7

Cho một nhóm G và một phần tử nào đó thuộc G Tập hợp:

<a> = {x  G \ x = an với n  Z}

được gọi là nhóm con cyclic được sinh bởi a

Nhóm G được gọi là nhóm Cyclic nếu có một phần tử a  G sao cho

G = <a> Phần tử a như vậy gọi là phần tử sinh của G [33]

2) Ví dụ: Zn với phép toán cộng theo modulo n là nhóm Cyclic, nhưng nhóm nhân Z*n có thể không là nhóm Cyclic

Nhóm nhân Z*n là nhóm Cyclic khi và chỉ khi n có dạng: 2, 4, pk, hoặc 2pk

vói p là số nguyên tố lẻ

3) Định lý 1.1.8: Cho G là một nhóm, a  G ta có:

(1) Tập hợp <a> là một nhóm con của G

(2) Nếu K là nhóm con của G, a  K thì <a> K

4) Định lý 1.1.9: Nhóm con của một nhóm Cyclic là một nhóm Cyclic

Trang 22

5) Định lý 1.1.10: Cho a là một phần tử của nhóm G

(1) Nếu a có bậc vô hạn và ak = am với k, m  Z thì k = m

(2) Nếu a có bậc hữu hạn và k  Z thì: ak

= e ↔ o(a) \ k

(3) Nếu a có bậc hữu hạn o(a) = n thì với các số nguyên k, m ta có:

ak = am ↔ k ≡ m (mod n) và <a> = O(a)

6) Định lý 1.1.11 (Lagrange): Nếu H là nhóm con của nhóm hữu hạn G thì bậc của H là ƣớc của bậc của G

Hệ quả 1: Cho G là nhóm hữu hạn có bậc n, với mọi a  G ta có

Trang 23

Zn* = {a Zn : gcd(a, n) = 1} cùng với phép nhân (.): [a]n [b]n = [a.b]n

lập thành một nhóm gọi là nhóm nhân của Zn, phần tử đơn vị là [1]n

Ký hiệu (n) là số các số nguyên dương bé hơn n và nguyên tố với n, nếu p là số nguyên tố thì (p) = p-1 Do đó nhóm Zn* có cấp (n) và nếu p là

Phần tử a  Zn có nghịch đảo khi và chỉ khi (a,n) = 1

Nhận xét

Mọi phần tử trong Zn

*

đều có nghịch đảo Để tìm phần tử nghịch đảo ta

có thể dùng thuật toán Euclid mở rộng

Chứng minh

Nếu aa-1

≡ 1 (mod n) thì aa-1 = 1+kn ↔ aa-1-kn = 1 → (a,n) =1 Ngược lại, nếu (a,n) = 1 ta có aa-1

+kn = 1 → aa-1 = 1+kn, do đó aa-1 ≡ 1 (mod n)

Trang 24

Thuật toán Euclid mở rộng để tìm phần tử nghịch đảo

y := gi-1div gi; gi+1 := gi+1-y.gi;

ui+1 := ui+1-y.ui; vi+1 := vi+1-y.vi;

Trang 25

1.2 LÝ THUYẾT ĐỘ PHỨC TẠP TÍNH TOÁN

1.2.1 Thuật toán của một bài toán

1.2.1.1 Bài toán

Bài toán được cấu tạo bởi hai phần:

▪ Input : Các dữ liệu vào của bài toán

▪ Output: Các dữ liệu ra (kết quả)

Không mất tính chất tổng quát người ta giả thiết các dữ liệu đều là số nguyên

1.2.1.2 Định nghĩa thuật toán

Định nghĩa 1.2.1

▪ Bằng trực quan: Thuật toán của một bài toán được hiểu là một dãy hữu hạn

các qui tắc (chỉ thị, mệnh lệnh) mô tả một quá trình tính toán để từ Input ta

được Output của bài toán [7]

▪ Quan niệm toán học: Một cách hình thức người ta quan niệm thuật toán là một máy Turing

▪ Thuật toán đơn định (Deterministic): Là thuật toán mà kết quả của mọi

phép toán đều được xác định duy nhất

▪ Thuật toán không đơn định (NonDeterministic): Là thuật toán tồn tại ít

nhất một phép toán mà kết quả của phép toán đó là không duy nhất

1.2.1.3 Hai mô hình tính toán

Hai quan niệm về thuật toán ứng với hai mô hình tính toán

▪ Mô hình ứng dụng: Đơn vị nhớ : một ô nhớ chứa trọn vẹn một dữ liệu Đơn

vị thời gian: thời gian để thực hiện một phép tính số học hay logic cơ bản

▪ Mô hình lý thuyết: Đơn vị nhớ: một ô nhớ chứa một tín hiệu Đơn vị thời

gian: thời gian để thực hiện một bước chuyển hình trạng

Trang 26

1.2.2 Độ phức tạp thuật toán

1) Chi phí của thuật toán (tính theo một bộ dữ liệu vào)

Chi phí cho một quá trình tính toán gồm chi phí thời gian và bộ nhớ

▪ Chi phí thời gian của một quá trình tính toán là thời gian cần thiết để thực

hiện một quá trình tính toán

▪ Chi phí bộ nhớ của một quá trình tính toán là số ô nhớ cần thiết để thực hiện

một quá trình tính toán

Gọi A là một thuật toán, e là dữ liệu vào của bài toán đã được mã hoá bằng cách nào đó Thuật toán A tính trên dữ liệu vào e phải trả một giá nhất định Ta ký hiệu:

tA(e) là giá thời gian và lA(e) là giá bộ nhớ

2) Độ phức tạp về bộ nhớ (trong trường hợp xấu nhất)

LA(n) = max{ lA(e), với |e|  n }

3) Độ phức tạp thời gian (trong trường hợp xấu nhất)

TA(n) = max{ tA(e), với |e|  n }

4) Độ phức tạp tiệm cận : Độ phức tạp PT(n) được gọi là tiệm cận tới hàm

f(n), ký hiệu O(f(n)) nếu  các số n0 , c mà PT(n)  c.f(n) , n  n0

5) Độ phức tạp đa thức: Độ phức tạp PT(n) được gọi đa thức, nếu nó tiệm

cận tới đa thức p(n) Thuật toán được gọi là đa thức nếu độ phức tạp về thời gian trong trường hợp xấu nhất của nó là đa thức

1.2.3 Phân lớp bài toán theo độ phức tạp

1.2.3.1 Lớp bài toán P, NP

▪ P : Là lớp bài toán giải được bằng thuật toán đơn định, đa thức (Polynomial)

▪ NP : Là lớp bài toán giải được bằng thuật toán không đơn định, đa thức

Trang 27

1.2.3.2 Lớp bài toán NP-Hard, NP-Complete

1) Các khái niệm

▪ Khái niệm "Dẫn về được"

Bài toán B được gọi là "Dẫn về được” bài toán A một cách đa thức, ký

hiệu: B A, nếu có thuật toán đơn định đa thức để giải bài toán A thì cũng có

thuật toán đơn định đa thức để giải bài toán B

Nghĩa là: Bài toán A "khó hơn" bài toán B, hay B "dễ” hơn A, B được diễn

đạt bằng ngôn ngữ của bài toán A, hay có thể hiểu B là trường hợp riêng của

A Vậy nếu giải được bài toán A thì cũng sẽ giải được bài toán B

Quan hệ  có tính chất bắc cầu: Nếu C  B và B  A thì C  A

▪ Khái niệm "Khó tương đương"

Bài toán A gọi là “khó tương đương” bài toán B, ký hiệu A ~ B,

nếu : A  B và B  A

2) Bài toán NP-Hard

Bài toán A được gọi là NP-Hard (NP-Khó) nếu  L  NP thì L  A

Lớp bài toán NP-Hard bao gồm tất cả những bài toán NP-Hard

Bài toán NP-Hard có thể nằm trong hoặc ngoài lớp NP

3) Bài toán NP-Complete

Bài toán A được gọi là NP-Complete (NP-Đầy đủ) nếu A là NP-Hard

và A  NP

Bài toán NP-Complete là bài toán NP-Hard nằm trong lớp NP

Lớp bài toán NP-Complete bao gồm tất cả những bài toán NP-Complete

Lớp bài toán NP-Complete là có thực, vì Cook và Karp đã chỉ ra bài toán đầu

tiên thuộc lớp này, đó là bài toán SATISFYABILITY

Trang 28

1.2.4 Hàm một phía và hàm một phía có cửa sập

Việc phát hiện và sử dụng các hàm số có độ phức tạp tính toán rất lớn

có ý nghĩa hết sức quan trọng đối với việc xây dựng các giải pháp về mật mã

và an toàn thông tin [2, 5]

(2) Cho p là một số nguyên tố, α là một phần tử nguyên thủy mod p Hàm y = α x mod p từ Zp* vào Zp* là hàm một phía vì hàm ngƣợc của nó từ y tìm x = logαy là rất khó

2) Hàm một phía có cửa sập

Hàm số y = f(x) đƣợc gọi là hàm một phía có cửa sập, nếu biết x thì tính

y là dễ, việc tính ngƣợc từ y tìm x = f-1(y) là rất khó, nhƣng nếu có cửa sập z

để với sự trợ giúp của z thì việc tính x từ y lại trở thành dễ

Trang 29

1.2.5 Một số bài toán khó được sử dụng trong lý thuyết mật mã 1) Bài toán phân tích số nguyên thành thừa số nguyên tố

Xét trường hợp phân tích n = p.q, với p, q là các số nguyên tố lớn Đây là bài toán khó Hiện đang tranh cãi là bài toán mở hay đóng? Thuộc lớp P hay NP? Hơn 30 năm tồn tại, bài toán này hiện nay coi là thuộc lớp NP [5]

Bằng những phương tiện hiện đại nhất hiện nay, giả sử mỗi phép toán thực hiện trong 1 micro giây, ước lượng thời gian tính toán khi phân tích n:

Số chữ số của n Thời gian phân tích

Độ khó của bài toán này làm cơ sở an toàn cho hệ mật mã RSA

2) Bài toán RSA (Rivest-Shamit-Adleman)

Cho số nguyên dương n là tích của hai số nguyên tố lẻ khác nhau, một

số nguyên dương e sao cho gcd(e, φ(n)) = 1, và một số nguyên c; tìm một số nguyên m sao cho me ≡ c (mod n) [2]

Bài toán RSA có thể quy dẫn trong thời gian đa thức về bài toán phân tích số nguyên thành thừa số nguyên tố Tuy nhiên, cho đến nay chưa có chứng minh nào cho việc quy dẫn ngược lại Hai bài toán này là tương đương

về độ phức tạp

3) Bài toán Logarit rời rạc

Cho số nguyên tố p, một phần tử nguyên thủy α của Zp*, và một phần tử

β  Zp* Tìm số nguyên x (0 ≤ x ≤ p-1) sao cho αx

≡ β (mod p) hay x = logαβ (mod p-1) [2]

Trong trường hợp chung, cho đến nay chưa có thuật toán nào giải bài

Trang 30

Chương 2 TỔNG QUAN VỀ MÃ HÓA VÀ CHỮ KÝ SỐ

2.1 CÁC KHÁI NIỆM CƠ BẢN

2.1.1 Lý thuyết mật mã và an toàn thông tin

Trong việc trao đổi thông tin, sự an toàn là yêu cầu quan trọng, các thông tin truyền đi phải đảm bảo tính chính xác, tính toàn vẹn không bị sai lệch và không bị sửa đổi trong quá trình truyền tin và trong rất nhiều trường hợp thông tin phải được bảo đảm tính bí mật và cần được xác thực Xuất phát

từ thực tế này có nhiều ý tưởng về an toàn thông tin ra đời

Một giải pháp hữu hiệu cho cho việc đảm bảo tính bí mật của thông tin cần truyền là mã hóa thông tin Mã hóa là việc biến đổi thông tin đã cho thành một dạng khác mà chỉ có những người được phép mới có thể biết được nội dung thông tin, mục đích của việc mã hóa là để che giấu thông tin Các giao thức được quy ước giữa người gửi và người nhận để trao đổi thông tin an toàn được thiết lập, đó là cơ chế mã hóa và giải mã thông tin bằng các hệ mật mã

Để xác thực thông tin, gắn trách nhiệm của một thực thể nào đó với một thông tin cũng như đảm bảo tính toàn vẹn của thông tin con người đã sáng tạo

ra chữ ký số Vấn đề xưng danh và xác nhận danh tính của các thực thể là các yêu cầu cần thiết trong các giao dịch và trao đổi thông tin

Trong thực tiễn ta gặp các bài toán về an toàn thông tin sau [2]:

1) Bảo mật: Thông tin được giữ bí mật, trừ một số người có thẩm quyền

được đọc, biết thông tin đó

2) Toàn vẹn thông tin: Thông tin không bị thay đổi, sai lệch ngoài ý muốn bởi những đối tượng không có thẩm quyền

3) Nhận thực một thực thể: Xác nhận danh tính của một thực thể, ví dụ một

Trang 31

5) Chữ ký: Dùng gắn kết một thông tin với một thực thể, thường dùng trong

bài toán nhận thực, kiểm tra tính toàn vẹn thông tin

6) Ủy quyền: Chuyển cho một thực thể khác quyền được đại diện hoặc được

9) Làm chứng: Xác thực việc tồn tại một thông tin ở một thực thể khác với

người sở hữu thông tin đó

10) Không chối bỏ được: Ngăn ngừa việc chối bỏ trách nhiệm với một cam

Tất cả các vấn đề nêu trên thuộc lĩnh vực nghiên cứu của lý thuyết mật

mã và an toàn thông tin

Từ đây để thuận lợi trong việc trình bày các nội dung trong lý thuyết

mật mã ta thường quy ước gọi các thông tin cần trao đổi là thông điệp, thông

báo hoặc là văn bản, tài liệu

Trang 32

2.1.2 Hệ mã hóa

2.1.2.1 Định nghĩa 2.1.1

Người ta định nghĩa một hệ mã hóa như sau [2]:

Một sơ đồ hệ thống mã hóa là một bộ năm (P, C, K, E, D) Trong đó:

Với mỗi K  K ta xác định một hàm lập mã eK : P → C và một hàm giải mã

dK: C → P sao cho dK(eK(x)) = x với x  P

Khi đã chọn cố định một khóa K thì danh sách (P, C, K, eK, dK) gọi là một hệ

mã hóa thuộc sơ đồ đó

2.1.2.2 Các yêu cầu của một hệ mã hóa

1) Các hàm lập mã và giải mã phải hiệu quả với mọi khóa

Trang 33

2.1.2.3 Hệ mã hóa khóa đối xứng

Hệ mã hóa khóa đối xứng: là hệ mã mà cả bên nhận và bên gửi thông tin đều biết về khóa bí mật, cho phép mã hóa để chuyển thông tin từ A đến B hoặc từ B đến A, không phân biệt được A và B vì thế kênh truyền phải được bảo vệ từ hai phía Do đó vấn đề bí mật khi sử dụng mã hóa đối xứng là khóa

sử dụng (nếu khoá lập mã bị lộ thì người khác dễ dàng tìm ra khóa giải mã),

hệ thống thông tin sử dụng những cặp khoá như vậy gọi là “hệ thống đối xứng” Một số hệ mã hóa khóa đối xứng cổ điển như : hệ mã dịch chuyển, hệ

mã Vigenera, hệ mã hoán vị cục bộ, hệ mã Affine Các hệ mã khóa đối xứng đang được sử dụng phổ biến hiện nay như DES, 3DES, IDEA DES do hãng IBM đề xuất Thuật toán chuẩn DES được ứng dụng rộng rãi trong việc bảo vệ thông tin mật Độ mật của DES phụ thuộc vào không gian khoá Năm 1992 người ta đã cải tiến mã DES để đưa ra 3DES với khung chuẩn là 192 bit (liên kết 3 khối DES để có: 64*3=192) thích hợp với các đường trực tuyến có ghép kênh theo chuẩn Mỹ, độ bảo mật tăng lên nhiều IDEA là hệ mã dùng khoá 128-bit, mã hoá với đầu vào là bản rõ 64-bit cho ra khối mã 64-bit

Nhược điểm của hệ thống đối xứng là:

Với n người sử dụng cần trao đổi thông tin với nhau nếu dùng mã hóa đối xứng thì mỗi thực thể cần biết n-1 khóa mật Thế thì với n thực thể đòi hỏi phải có ít nhất là n*(n-1)/2 khoá Nếu số lượng người dùng lớn, với mã hóa đối xứng đòi hỏi số khóa mà mỗi thành viên cần giữ quá nhiều nên dễ mất an toàn, hơn nữa những người dùng cùng một chìa trong hệ mã đối xứng đều biết

bí mật của nhau Hệ mã hóa khóa công khai ra đời để khắc phục nhược điểm

đó của hệ mã hóa khóa đối xứng

Trang 34

2.1.2.4 Hệ mã hóa khóa công khai

Năm 1976, Diffie và Hellman đề xuất ý tưởng một dạng mới của hệ thống mật mã, trong đó người gửi và người nhận sử dụng các khoá mã khác nhau nhưng có mối liên hệ với nhau, và một trong hai khoá đó được giữ bí

mật Bên nhận dữ liệu giữ một khoá bí mật (khóa riêng) cho phép giải mã với khoá đó, còn bên gửi sử dụng một khoá khác tương ứng với khoá riêng trên để

mã hoá dữ liệu, khoá đó gọi là khoá công khai Hệ thống dùng khoá như vậy gọi là hệ thống không đối xứng hay hệ mã hóa khóa công khai

Khi thực thể A muốn gửi thông điệp cho thực thể B: thông điệp được số hoá và nhóm thành từng khối với độ dài nào đó Mỗi khối P được mã hoá bằng khoá công khai K của thực thể thứ B, dùng hàm mã hoá eK của B được bản mã C = eK(P) và gửi cho B

Để giải mã thông điệp này, thực thể B chỉ cần dùng khoá riêng K’ với hàm giải mã dK’ : dK’(C) = dK’(eK(P)) = P Bộ (K, K’) là cặp khoá của thực thể

B, K: là khoá lập mã (khoá công khai), K’: là khoá giải mã (khoá riêng)

(Bản rõ)

Khóa công khai củaB

Thuật toán giải mã

Bản

Thông điệp

(Bản rõ)

Trang 35

Như vậy, các thuật toán khoá công khai sử dụng một khoá để mã hoá và một khoá khác để giải mã, có các tính chất:

1) Không cần phải thiết lập một kênh bảo vệ với những thể thức phức tạp, rườm rà để truyền khoá như trong hệ mã hóa đối xứng

2) Cặp khoá riêng và khóa công khai được tạo ra theo một phương pháp đặc biệt có quan hệ với nhau, từ khóa riêng có thể dễ dàng tìm được khóa công khai, nhưng biết khóa công khai thì việc tìm ra khóa riêng là rất khó và đây cũng chính là vấn đề then chốt của sự an toàn

3) Khoá mã hoá được công khai nên bất kỳ ai cũng sử dụng đuợc Vì vậy, nguy cơ giả mạo là cao, do đó có hai vấn đề nảy sinh:

(1) Làm thế nào để chứng thực thông điệp đúng là của chủ thể cần gửi? Vấn đề này sẽ được giải quyết bằng việc sử dụng chữ ký số

(2) Làm thế nào để bên gửi chắc chắn đã dùng đúng khóa công khai của bên nhận Chứng chỉ số khoá công khai sẽ giải quyết vấn đề này

4) Giải thuật mã hóa đối xứng có ưu điểm là nhanh hơn mã hóa bất đối xứng rất nhiều (hàng nghìn lần), người ta dùng nó để mã hóa các dữ liệu cần trao đổi với nhau qua các môi trường không an toàn như Internet, nhược điểm của mã hóa đối xứng chính là nó không cho biết được tính xác thực cũng như sự toàn vẹn của dữ liệu và nó cũng bất tiện ở chỗ là khoá bí mật để mã

và giải mã dữ liệu cần phải được trao đổi riêng qua các phương tiện khác chứ không thể gửi đi cùng dữ liệu được, mã hóa bất đối xứng ra đời để giúp cho việc trao đổi các khoá bí mật được dễ dàng hơn

5) Mọi người trong hệ thống nếu nhận được bản mật C thì cũng không thể biết được bản rõ P Nếu biết khoá mã hoá Ke và thuật toán thì khó thể tìm

ra khoá giải mã Kd trong thời gian chấp nhận được

Trang 36

2.2 MỘT SỐ HỆ MÃ HÓA KHÓA CÔNG KHAI

2.2.1 Hệ mã hóa RSA

2.2.1.1 Giới thiệu

RSA là hệ mã hóa khóa công khai đầu tiên do Ron Rivest, Adi Shamir

và Len Adleman xây dựng và công bố năm 1977 [23] RSA được dùng bởi các

máy chủ web và trình duyệt web để bảo mật dữ liệu trên đường truyền, bảo đảm tính riêng tư và tính xác thực của E-mail, bảo đảm phiên đăng nhập từ xa

Hiện tại RSA được dùng trong nhiều hệ thống thương mại điện tử và thanh toán điện tử đảm bảo tính riêng tư và xác thực dữ liệu số Hiện nay sử dụng hệ mã hóa RSA là giải pháp tốt nhất để đảm bảo an toàn thông tin trong việc trao đổi thông tin trên mạng

Hệ mã hóa RSA được dùng cho cả hai bài toán: mã hóa và chữ ký số, sự

an toàn của nó dựa trên độ phức tạp của bài toán phân tích một số nguyên thành các thừa số nguyên tố

2.2.1.2 Sơ đồ hệ mã hóa RSA

1) Sinh khóa cho hệ mã hóa khoá công khai RSA

Mỗi thực thể giao dịch tạo một khóa công khai và một khoá riêng tương

ứng như sau:

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

(2) Tính n = p.q và ( )n = (p-1)(q-1)

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

(4) Tính số nguyên d với 1< d < ( ) n , sao cho e.d  1 (mod ( )n )

(5) Khoá công khai là (n; e), khoá riêng tương ứng là (n; d)

Trang 37

2) Thuật toán mã hoá khoá công khai RSA

Giả sử A cần mã hoá một thông điệp P để gửi đến B:

A làm như sau:

(1) Sử dụng khoá công khai của B là (n; e)

(2) Biểu diễn thông điệp dưới dạng số, giả sử là m  [0, n-1]

(Số hoá thông điệp và nhóm nó lại thành các khối với độ dài lớn nhất có thể, không vượt quá n-1)

(3) Tính c = me mod n

(4) Gửi bản mã c cho B

3) Giải mã, B làm như sau:

Dùng khoá riêng d của B tính m = cd

mod n, sau đó khôi phục thông điệp từ hàm ngược của hàm số hoá để có P

Trang 38

4) Quá trình gửi và nhận thông điệp:

(1) Mỗi thành viên sinh một bộ khoá, khoá công khai (n, e) dùng để mã hoá và khoá riêng (n, d) dùng để giải mã các thông điệp

(2) Mỗi thành viên công bố khoá công khai (n; e) cho các thành viên khác trong hệ thống biết (dùng để mã hóa thông điệp) Giữ bí mật (n; d) làm khoá

riêng (dùng để giải mã thông điệp)

(3) A gửi thông điệp cho B thì A mã hoá thông điệp bằng khoá công khai của

Tìm d sao cho e.d ≡ 1 (mod ( ) n ), ta đƣợc d = 6103

Vậy khoá công khai là (n; e) = (8023; 167);

khoá riêng là (n; d) = (8023; 6103)

Trang 39

2) Mã hóa: Chúng ta cần mã hoá thông điệp SONGIANG

Giả sử quy ước các ký tự được số hóa theo luật sau:

00 01 02 03 04 05 06 07 08 09 10 11 12

13 14 15 16 17 18 19 20 21 22 23 24 25

Thông điệp SONGIANG được số hóa là: 1814130608001306

Ta nhóm thành từng khối có 4 chữ số (trong khoảng 0 đến n-1), do đó thông

điệp bản rõ SONGIANG được số hóa thành các khối:

1814 1306 0800 1306

(Trường hợp nếu khối cuối cùng không đủ 4 chữ số thì ta bổ xung thêm một ký

tự giả nào đó để đảm bảo các khối đều có độ dài bằng nhau)

Bây giờ chúng ta lần lượt mã hoá mỗi khối bản rõ m đã số hóa thành khối bản

mã tương ứng c = m167 mod 8023, như sau:

1814167 mod 8023 = 5518

1306167 mod 8023 = 2208

0800167 mod 8023 = 7885

1306167 mod 8023 = 2208 Bản mã thu được: 5518 2208 7885 2208

3) Giải mã: Áp dụng công thức m = c6103 mod 8023 với mỗi khối bản mã c, ta thu được các khối bản rõ số hóa ban đầu: 1814 1306 0800 1306 Từ các khối bản rõ dạng số này ta dễ dàng chuyển thành thông điệp đã cho:

SONGIANG

Ngày đăng: 25/03/2015, 09:53

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w