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

BÀI TOÁN LOGARIT rời rạc và DIFFIE HELLMAN

65 12 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

Định dạng
Số trang 65
Dung lượng 154,57 KB

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

Nội dung

Tuy nhiên, nếu ta đang làm việc trong nhóm Fp và nếu ta coi phép nhân modulonhư một phép toán cơ bản, khi đó phép nhân modulo của hai số k-bit sẽ cần xấpxỉ 2k phép toán cơ bản, do đó nó

Trang 1

PHÂN VIỆN KHOA HỌC MẬT MÃ

Trang 2

VIỆN KHOA HỌC - CÔNG NGHỆ MẬT MÃ

PHÂN VIỆN KHOA HỌC MẬT MÃ

Trang 3

2 Bài toán logarit rời rạc

3 Bài toán logarit rời rạc khó đến đâu?

4 Trao đổi khóa Diffie-Hellman

6 Thuật toán va chạm cho bài toán logarit rời rạc

7.1 Giải các phương trình đồng dư với các modulo hợp số

Kết luận

Trang 4

MỤC LỤC MỤC LỤC

LỜI MỞ ĐẦU

Trao đổi khóa Diffie–Hellman là một phương pháp trao đổi khóa được phát minhsớm nhất trong mật mã học Phương pháp trao đổi khóa Diffie–Hellman cho phéphai bên (người, thực thể giao tiếp) thiết lập một khóa bí mật chung để mã hóa dữ liệu

sử dụng trên kênh truyền thông không an toàn mà không cần có sự thỏa thuận trước

về khóa bí mật giữa hai bên Khóa bí mật tạo ra sẽ được sử dụng để mã hóa dữ liệuvới phương pháp mã hóa khóa đối xứng Giao thức này được công bố đầu tiên bởiWhitfield Diffie và Martin Hellman vào năm 1976 Năm 2002, Hellman đề xuất thuậttoán nên được gọi là trao đổi khóa Diffie–Hellman–Merkle để ghi nhận sự đóng gópcủa Ralph Merkle trong phát minh lĩnh vực mật mã hóa khóa công khai Mặc dù giaothức trao đổi khóa Diffie–Hellman bản thân nó là giao thức trao đổi khóa ẩn danh(không xác thực), nó đã đưa ra một nền tảng cơ sở cho nhiều loại giao thức xác thực

và được sử dụng để tạo nên bí mật chuyển tiếp hoàn hảo trong chế độ ngắn hạn củagiao thức Transport Layer Security (EDH hoặc DHE tùy theo bộ mã hóa) Phươngpháp này được áp dụng sau đó cho thuật toán RSA

Tôi được lãnh đạo Phân viện giao tìm hiểu trong Chương 2 của cuốn "An duction to Mathematical Cryptography"của các tác giả Jeffrey Hoffstein, JillPipher, và J.H Silverman Báo cáo này tôi đã được giao tìm hiểu từ tháng 1 năm

intro-2020 và báo cáo vào giữa tháng 2 năm intro-2020 Tuy nhiên, do đợt dịch Covid-19nên phải đến tháng 5 tôi mới có thể báo cáo

Trong báo cáo này, tôi tìm hiểu về bài toán logarit rời rạc và tính khó của nó, từ đóchỉ ra tính bảo mật của trao đổi khóa Diffie-Hellman Tiếp theo tôi tìm hiểu về bài toánDiffie-Hellman và trao đổi khóa ElGamal, là hệ mã hóa công khai dựa trên tính khócủa bài toán Diffie-Hellman Sau đó tôi tìm hiểu về hai thuật toán để giải bài toánlogarit rời rạc là Thuật toán bước nhỏ-bước lớn của Shanks và Thuật toán Pohlig-Hellman giải bài toán logarit rời rạc dựa trên Định lý thặng dư Trung Hoa

Báo cáo này bao gồm 54 trang, được chia thành 9 phần, trong đó phần đầu làmột số kiến thức cơ bản về nhóm và những định lý trong Lý thuyết số cần thiết để

sử dụng trong các phần sau Phần 2 và phần 3 giới thiệu về bài toán logarit rờirạc và độ khó của bài toán DLP Phần 4 giới thiệu về trao đổi khóa Diffie-Hellman.Phần 5 giới thiệu về hệ mã hóa ElGamal Phần 6 và phần 8 đưa ra hai thuật toán

để giải bài toán logarit rời rạc là thuật toán của Shank và thuật toán Hellman Phần 9 là phần bài tập

Pohlig-Tôi xin cảm ơn lãnh đạo Phân viện đã cho tôi vào thực tập trong khoảng thờigian từ tháng 11 năm 2019 đến tháng 5 năm 2020 Tôi cũng xin cảm ơn các cán

bộ trong Phân viện cũng đã nhiệt tình giúp đỡ tôi trong quá trình làm báo cáo

2

Trang 5

1 Kiến thức cơ bản

1.1 Một số định lý cơ bản trong Lý thuyết số

Dưới đây là một số mệnh đề, định lý cần thiết sẽ sử dụng ở phần sau của báo cáo.

Định lý 1.1 (Thuật toán Euclid mở rộng) Cho a và b là các số nguyên dương Khi

đó phương trình

au + bv = gcd(a, b)

luôn có ít nhất một nghiệm nguyên u và v.

Nếu (u0, v0) là một nghiệm bất kỳ, thì khi đó mọi nghiệm đều có dạng

Định lý 1.3 (Định lý nghiệm nguyên thủy) Cho p là một số nguyên tố Khi đó, tồn

tại một phần tử g 2 Fp mà các lũy thừa của nó là các phần tử của Fp, nghĩa là

Fp = f1, g, g2, , gp 2

g

Các phần tử với tính chất này được gọi là các nghiệm nguyên thủy của Fp hoặc

các phần tử sinh của F p Chúng đều là các phần tử trong Fp và có cấp p 1.

Trang 6

1.2 Tổng quan về lý thuyết nhóm 1 KIẾN THỨC CƠ BẢN

• Mọi phần tử a 2 Fp có một phần tử nghịch đảo a 1 2 Fp thỏa mãn a a 1

= a 1 a = 1

• Phép nhân có tính kết hợp:

a (b c) = (a b) cvới mọi a, b, c 2 Fp

• Phép nhân có tính giao hoán:

a b = b avới mọi a, b 2 Fp

Giả sử thay vì phép nhân trong Fp, ta thay bằng phép cộng trong Fp Ta cũng sửdụng ký hiệu 0 thay cho 1 và a thay cho ký hiệu a 1 Khi đó, các tính chất vừa nêuvẫn đúng

Tập hợp và các phép toán thể hiện tương tự như với phép nhân hoặc phép cộng

và được biết đến rộng rãi Do đó, ta có thể đưa ra một khái niệm tổng quát về nhóm

Định nghĩa 1.4 Một nhóm gồm một tập hợp G, và một phép toán, được ký hiệu là ?, bằng cách kết hợp hai phần tử a, b 2 G để thu được phần tử a ? b 2 G Phép toán

? cần có các tính chất sau đây:

(a) Quy tắc phần tử trung hòa Tồn tại một phần tử e 2

G sao cho e ? a = a ? e = avới mọi a 2 G

(b) Quy tắc lấy nghịch đảo Với mỗi a 2 G, tồn tại (duy nhất) một phần

Trang 7

phần tử trong G, được ký hiệu là jGj hoặc #G.

4

Trang 8

1.2 Tổng quan về lý thuyết nhóm 1 KIẾN THỨC CƠ BẢN

Ví dụ 1.5 (i) Cho G = Fp và ? là phép nhân modulo thông thường Khi đó, phần

tử đơn vị là e = 1 Khi đó G là một nhóm hữu hạn cấp p 1

(ii) G = Z/nZ, và ? là phép cộng modulo Khi đó, phần tử đơn vị là e = 0

và nghịch đảo của a là a G là một nhóm hữu hạn cấp n

(iii) Một ví dụ về một nhóm không giao hoán là

G = c d

với phép nhân ma trận đã biết Phần tử đơn vị là e =

đảo được cho bởi công thức quen thuộc

Thông thường, nếu cộng như vậy ta sẽ viết x g Ta cũng có thể đưa ra định nghĩa

về gx khi x không phải số dương Do đó, nếu x là số nguyên âm, ta định nghĩa

gx = (g 1)jxj.Với x = 0, ta đặt g0 = e, là phần tử trung hòa

Định nghĩa 1.6 Cho G là một nhóm và cho a 2 G là một phần tử trong nhóm Giả sửtồn tại một số nguyên dương d với tính chất ad = e Số d nhỏ nhất thỏa mãn tínhchất trên được gọi là cấp của a Nếu không tồn tại số d, ta nói a có cấp vô hạn

TIếp theo, ta đưa ra hai mệnh đề minh họa các tính chất quan trọng của cấpcủa một phần tử trong nhóm

5

Trang 9

Mệnh đề 1.7 Cho G là một nhóm hữu hạn Khi đó, mọi phần tử của G đều có cấp

hữu hạn Hơn nữa, nếu a 2 G có cấp d và ak = e thì djk.

Mệnh đề 1.8 (Định lý Lagrange.) Cho G là một nhóm hữu hạn và cho a 2 G Khi

đó, cấp của a chia hết cấp của G.

Một cách chính xác hơn, cho n = jGj là cấp của G và d là cấp của a.

Khi đó an = e và djn.

Chứng minh Ta chỉ chứng minh với trường hợp G là một nhóm giao

hoán Do G là hữu hạn, ta có thể liệt kê các phần tử của nó

G = fg1, , gng.Nhân mỗi phần tử của G với a và ta thu được tập hợp mới là

Sa Sa = fa ? g1, , a ? gng

Ta thấy rằng các phần tử của Sa là phân biệt Thật vậy, giả sử rằng a ? gi = a ? gj.Khi đó, ta nhân về bên trái của đẳng thức với a 1 ta suy ra gi = gj Do đó, Sa chứa nphần tử phân biệt và số lượng phần tử bằng đúng số phần tử của G Vậy G = Sa.Khi đó, ta nhân tất cả các phần tử của Sa với nhau và nhân tất cả các phần tửcủa G với nhau Do đó

(a ? g1) ? ? (a ? gn) = g1 ? ? g n

Do tính giao hoán, ta có thể sắp xếp lại các thừa số trong phép nhân ở vế trái vàthu được

an ? g1 ? gn = g1 ? gn.Tiếp theo, nhân về bên phải của hai vế phần tử (g1 ? gn) 1 suy ra an = e

2 Bài toán logarit rời rạc

Bài toán logarit rời rạc là một bài toán toán học nổi lên trong quá trình mã hóacủa mật mã học, bao gồm phiên bản mod p được mô tả trong phần này và phiênbản đường cong elliptic Phép xây dựng khóa công khai được đề xuất bởi Diffie-

Hellman, nó dựa trên bài toán logarit rời rạc trong một nhóm hữu hạn Fp Ta nhắc

lại rằng Fp là một trường với số phần tử là số nguyên tố Để thuận tiện, ta sẽ sử

dụng ký hiệu Fp thay cho Z/pZ cho trường này, và ta sử dụng ký hiệu bằng nhau cho các phần tử của Fp và ký hiệu đồng dư cho các phần tử của Z/pZ.

Trang 10

2 BÀI TOÁN LOGARIT RỜI RẠCCho p là một số nguyên tố (đủ lớn) Định lý 1.3 cho ta biết rằng tồn tại một phần

tử nguyên thủy g: Mọi phần tử khác không của Fp là một lũy thừa của g Cụ thể,

gp 1 = 1 theo Định lý nhỏ Fermat (Định lý 1.2), và không có lũy thừa nào nhỏ hơncủa g bằng 1 Một cách tương đương, các phần tử

1, g, g2, , gp 2

2 Fp

là toàn bộ phần tử trong Fp

Định nghĩa 2.1 Cho g là một nghiệm nguyên thủy của Fp và h là một phần tử khác

không của Fp Bài toán logarit rời rạc (LRR) là bài toán tìm một lũy thừa x sao cho

gx h (mod p)

Số x được gọi là logarit rời rạc của h cơ số g và được ký hiệu là logg(h)

Nhận xét 2.2 Một khái niệm lâu đời hơn cho logarit rời rạc là chỉ số, được ký hiệu

bởi indg(h) Khái niệm chỉ số vẫn thường được dùng trong lý thuyết số Nó cũngvẫn thuận tiện nếu có sự nhầm lẫn giữa các logarit thông thường và các logaritrời rạc Ví dụ, đại lượng log2 thường được sử dụng trong báo cáo này

Nhận xét 2.3 Bài toán logarit rời rạc là bài toán được biết đến rộng rãi, ta tìm một

số lũy thừa nguyên x sao cho gx = h Tuy nhiên, nếu có một nghiệm, thì sẽ tồn tại

vô số nghiệm, bởi theo Định lý nhỏ Fermat (Định lý 1.2) thì gp 1 1(mod p) Do đónếu x là một nghiệm của bài toán gx = h thì x + k(p 1) cũng là một nghiệm với mọigiá trị của k, bởi

logg h = akhi đó, ta suy ra ga = gb(= h) Do đó ga

Suy ra jgj j a b

Tuy nhiên, ta lại có jgj = p 1, do đó (p

a b 0 (mod p 1)

7

Trang 11

Vậy ánh xạ trên được xác định duy nhất trong Z/(p 1)Z Trong một số trường hợp,

do tính rời rạc, ta nói đến logarit rời rạc là một số nguyên x nằm giữa 0 và p 2thỏa mãn đẳng thức đồng dư gx h(mod p)

Nhận xét 2.4 Ta cũng không khó khăn để chứng minh

logg(ab) = logg(a) + logg(b) với mọi a, b 2 Fp

Do đó ta gọi logg(a) là logarit cũng hợp lý, do nó chuyển phép nhân thành phépcộng theo cùng một cách như hàm logarit thông thường Trong thuật ngữ toánhọc, logarit rời rạc logg là một đẳng cấu nhóm từ Fp vào Z/(p 1)Z.

Nhận xét 2.5 Khẳng định của ta về bài toán logarit rời rạc bao gồm giả thiết rằng

g là một phần tử nguyên thủy modulo p, những điều này không thật sự cần thiết

Về mặt tổng quát, với mỗi g 2 Fp và mỗi h 2 Fp, bài toán logarit rời rạc là bài toánxác định một lũy thừa x thỏa mãn gx h(mod p), nếu x tồn tại

Tổng quát hơn, thay vì lấy các phần tử khác không của một trường hữu hạn Fp

và nhân chúng với nhau để tạo nên lũy thừa, ta có thể lấy các phần tử của nhómbất kỳ và sử dụng phép toán nhóm thay vì phép nhân Điều này dẫn đến dạngtổng quát nhất của bài toán logarit rời rạc

Định nghĩa 2.6 Cho G là một nhóm và phép toán nhóm được ký hiệu bởi ký hiệu

? Bài toán logarit rời rạc cho G là ta bài toán với mỗi hai phần tử g và h cho trước

trong G, ta tìm một số nguyên x thỏa mãn

g ? g ? ? g = h

x lần

3 Bài toán logarit rời rạc khó đến đâu?

Cho một nhóm G và hai phần tử g, h 2 G, bài toán logarit rời rạc yêu cầu tìmmột lũy thừa x sao cho gx = h Vậy khi ta nói về tính khó của bài toán này nghĩa làgì? Làm sao có thể định lượng được tính "khó"? Một phép đo tính khó tự nhiênnhất là xấp xỉ số lượng phép toán cần thiết để một người hoặc một máy tính giảibài toán trên sử dụng thuật toán hiệu quả nhất được biết đến hiện nay Ví dụ, giả

sử ta đếm quá trình tính toán gx như một phép toán Khi đó bằng cách tiếp cận

"vét cạn"để giải bài toán logarit rời rạc ta sẽ tính gx với mỗi x = 1, 2, 3, và sosánh giá trị đó với h Nếu g có cấp n, thì thuật toán này đảm bảo tìm được nghiệmtrong nhiều nhất n phép toán, nhưng nếu n lớn, ví dụ n > 280, khi đó thuật toántrên là không thực tế bằng cách tính lũy thừa với những công cụ hiện nay

Trang 12

3 BÀI TOÁN LOGARIT RỜI RẠC KHÓ ĐẾN ĐÂU?Trong thực tế, trừ khi ta có thể xây dựng một chiếc máy đặc biệt chỉ với mụcđích trên, quá trình tính gx sẽ không được đếm như một thuật toán cơ bản Sửdụng phương pháp lũy thừa nhanh, ta chỉ mất một bội nhỏ của log2(x) phép nhânmodulo để tính gx Giả sử n và x là các số có độ lớn k-bit, và do đó chúng xấp xỉ

2k Khi đó hướng tiếp cận theo phương pháp "vét cạn"sẽ cần đến k.2k phép nhân.Thật vậy, do bậc của g là n 2k, và ta cần log2(x) phép nhân modulo để tính được

gx, nên số phép toán cần thiết là

log2(x).n log2(2k).2k = k.2kbước.

Tuy nhiên, nếu ta đang làm việc trong nhóm Fp và nếu ta coi phép nhân modulonhư một phép toán cơ bản, khi đó phép nhân modulo của hai số k-bit sẽ cần (xấpxỉ) 2k phép toán cơ bản, do đó nó sẽ giải bài toán logarit rời rạc bằng thuật toán

"vét cạn"sẽ cần một bội nhỏ của

k2 log(2k).2k = k3.2kcác phép toán cơ bản

Tuy nhiên, cách nói "bội nhỏ"của 2k hoặc k.2k hoặc k2.2k vẫn chưa chính xáclắm Điều này xảy ra khi ta muốn biết một phép tính là thực hiện được, các sốnhư 3.2k và 10.2k và 100.2k có thể được coi là gần như nhau nếu k đủ lớn Tính

chất quan trọng là hệ số bội được cố định khi k tăng Ký hiệu cấp được đề xuất

để giúp điều nói ở trên được chính xác hơn

Định nghĩa 3.1 Cho f (x) và g(x) là các hàm của x nhận giá trị dương Ta nói rằng

" f là O- lớn của g"và viết

f (x) = O(g(x))nếu tồn tại số dương c và C sao cho

f (x) c.g(x)với mọi x C.

Cụ thể, ta viết f (x) = O(1) nếu f (x) bị chặn với mọi x C

Mệnh đề tiếp theo đưa ra một phương pháp có thể sử dụng để chứng minh rằng

Trang 13

Chứng minh Gọi L là giới hạn trên Theo định nghĩa của giới hạn, với mọi # > 0, tồn tại hằng số C# sao cho

f (x)g(x)

Cụ thể, lấy # = 1, ta thấy rằng

f (x)g(x)

lim x2

= 0

x ! ¥2xbằng cách sử dụng quy tắc L’Hospital 2 lần liên tiếp

Tuy nhiên, ta chú ý rằng ta vẫn có f (x) = O(g(x)) kể cả khi giới hạn g f ( ( x x ) )

không tồn tại Ví dụ, giới hạn

lim( x + 2 ) cos2 x

không tồn tại, tuy nhiên

(x + 2) cos2 x = O(x), do (x + 2) cos2 x x + 2 2x với mọi x 2.

Ký hiệu cấp cũng cho ta định nghĩa một số khái niệm cơ bản được sử dụng để

ký hiệu độ phức tạp tính toán của các bài toán toán học

Định nghĩa 3.4 Giả sử ta đang giải một dạng bài toán toán học nhất định với đầu

vào của bài toán là một số với mọi cỡ Như một ví dụ, ta xét Bài toán phân tích

thừa số nguyên tố, mà đầu vào là một số N và đầu ra là một phân tích nguyên tố

của N Ta quan tâm đến việc biết rằng mất bao lâu để giải bài toán dựa vào cỡđầu vào Ta đo cỡ đầu vào bằng số bit của nó, và từ đó xác định độ lớn của bộnhớ để ghi lại đầu vào Giả sử rằng có một hằng số A 0, độc lập với cỡ đầu vào,sao cho nếu đầu vào có độ dài O(k) bit, khi đó sẽ cần O(kA) bước để giải bài

toán Khi đó bài toán được gọi là giải được trong thời gian đa thức.

Trang 14

3 BÀI TOÁN LOGARIT RỜI RẠC KHÓ ĐẾN ĐÂU?

Nếu ta lấy A = 1, khi đó bài toán giải được trong thời gian tuyến tính, và nếu talấy A = 2, khi đó bài toán là giải được trong thời gian toàn phương Các thuật toánthời gian đa thức được coi là các thuật toán nhanh

Mặt khác, nếu tồn tại một hằng số c > 0 sao cho đầu vào có cỡ O(k) bit, và mộtthuật toán giải bài toán trong O(eck) bước, khi đó bài toán được gọi là giải được

trong thời gian lũy thừa Các thuật toán thời gian lũy thừa được coi là các thuật

toán chậm

Các thuật toán nằm giữa thời gian đa thức và thời gian lũy thừa là thời gian

gần lũy thừa Chúng có tính chất là với mọi # > 0, chúng giải bài toán trong

O#(e#k) bước Ký hiệu này nghĩa là các hằng số c và C xuất hiện trong định nghĩa

của ký hiệu cấp cho phép dựa vào #.

Một luật bất thành văn trong mật mã học là các bài toán giải được trong thờigian đa thức được coi là bài toán "dễ", và các bài toán cần thời gian lũy thừađược coi là "khó" Tuy nhiên, cần nhớ rằng các mô tả trên áp dụng được khi sốcác thể hiện rất lớn Dựa vào ký hiệu O, khi đó một bài toán thời gian lũy thừa cóthể dễ hơn bài toán thời gian đa thức

Ví dụ 3.5 Ta bắt đầu với bài toán logarit rời rạc gx = h trong G = Fp Nếu sốnguyên tố p được chọn giữa 2k và 2 k+1, thì g, h, và p yêu cầu ít nhất k bit, do đóbài toán được phát biểu trong O(k) bit (Chú ý rằng O(k) cũng tương tự nhưO(log2 p) do log2 p log2(2k) = k.)

Nếu ta giải bài toán logarit rời rạc bằng cách sử dụng phương pháp "vét cạn"đãđược nói đến ở trên, thì sẽ cần O(p) bước để giải bài toán

Thật vậy, do g là một phần tử nguyên thủy nên cấp của nó là p 1, vậy số lầnthử x sẽ là O(p 1) O(p)

Do O(p) = O(2 k), thuật toán này yêu cầu thời gian lũy thừa (Nếu ta coi phépcộng và phép nhân là các phép toán cơ bản thì thuật toán mất O(k.2k) hoặcO(k3.2k) bước, nhưng cách phân biệt vẫn không cần thiết; thời gian chạy vẫn làthời gian lũy thừa, ví dụ là O(3k).)

Tuy nhiên, có những cách nhanh hơn để giải bài toán logarit rời rạc trong Fp,một vài trong số đó rất nhanh nhưng chỉ áp dụng với một vài số nguyên tố, trongkhi những thuật toán còn lại chậm hơn, nhưng hoạt động với mọi số nguyên tố Ví

dụ, thuật toán Pohlig-Hellman mô tả trong phần sau chỉ ra rằng nếu p 1 phân tíchhoàn toàn thành tích của các số nguyên tố nhỏ, thì bài toán logarit rời rạc là khá

dễ giải Với số nguyên tố bất kỳ, thuật toán va chạm giải bài toán logarit rời rạctrong O(p

p log p) bước, nhanh hơn rất nhiều so với O(p), nhưng vẫn là lũy thừa.Tốt hơn nữa là thuật toán giải tích chỉ số giải bài toán logarit rời rạc trong

11

Trang 15

O(ec ( log p )( log log p )

) bước, do đó nó vẫn là một thuật toán thời gian gần lũy thừa.

Ví dụ 3.6 Ta xét bài toán logarit rời rạc trong nhóm G = Fp, với phép toán nhóm

là phép cộng Bài toán logarit rời rạc trong điều kiện này đòi hỏi một nghiệm x chophép đồng dư

x g h (mod p),

với g và h là các phần tử trong Z/pZ Ta có thể giải phép đồng dư này bằng cách

sử dụng thuật toán Euclid mở rộng (Định lý 1.1) để tính g 1 (mod p) và đặt

xg 1.h (mod p)

Việc tính g 1 (mod p) sẽ mất O(log p) bước, do khi sử dụng thuật toán Euclid mởrộng, thuật toán mất 2 log2(p) + 3 để tính gcd(g, p), do đó ta mất một bội nhỏ củalog2(p) để tính được nghịch đảo của g modulo p, do đó có một thuật toán thời

gian tuyến tính để giải bài toán logarit rời rạc trong nhóm cộng Fp Đây là một

thuật toán rất nhanh, do đó bài toán logarit rời rạc trong Fp với phép cộng khôngphải là một ứng cử viên tốt cho hàm một cửa trong mật mã học

Một lưu ý quan trọng là các bài toán logarit rời rạc trong các nhóm khác nhau thểhiện mức độ khó khác nhau cho lời giải của nó Do đó bài toán logarit rời rạc trong

Fpvới phép cộng có lời giải trong thời gian tuyến tính, trong khi thuật toán tổng quát

tốt nhất được biết đến giải bài toán logarit rời rạc trong Fp với phép nhân là

thời gian gần lũy thừa Bài toán logarit rời rạc cho các đường cong elliptic được cho

là thậm chí khó hơn cả bài toán logarit rời rạc trong Fp Cụ thể, nếu nhóm đườngcong elliptic được chọn cẩn thận và có N phàn tử, thì thuật toán tốt nhất giải bài ptoán logarit rời rạc trong O( N)

4 Trao đổi khóa Diffie-Hellman

Thuật toán trao đổi khóa Diffie-Hellman giải quyết khó khăn sau Alice và Bobmuốn chia sẻ một khóa bí mật chung để sử dụng trong mã hóa đối xứng, nhưngphương pháp liên lạc này không an toàn Mọi thông tin được trao đổi đều bị lộcho một kẻ tấn công Eve Vậy làm thế nào để Alice và Bob có thể chia sẻ mộtkhóa chung mà không bị lộ cho Eve? Thoạt nhìn, ta thấy Alice và Bob đang đốidiện với một nhiệm vụ bất khả thi Tuy nhiên, Diffie và Hellman thấy tính khó của

bài toán logarit rời rạc cho Fp cho ta một lời giải khả thi

Bước đầu tiên là Alice và Bob thống nhất một số nguyên tố lớn p và một số nguyên khác không g lấy modulo p Alice và Bob cho p và g là kiến thức công khai; ví dụ, họ có thể đăng các giá trị đó lên các trang web, do đó Eve cũng biết đến chúng Với

Trang 16

4 TRAO ĐỔI KHÓA DIFFIE-HELLMAN

nhiều lý do sẽ được bàn luận sau, cách tốt nhất là ta chọn g là phần tử trong Fp

có cấp nguyên tố cao nhất

Bước tiếp theo Alice chọn một số nguyên bí mật a mà không để lộ cho bất kì ai,cùng lúc đó Bob chọn một số nguyên b và cũng giữ bí mật Bob và Alice sử dụngcác số nguyên bí mật đó để tính các giá trị

A ga (mod p) và

|

Tiếp theo, họ sẽ trao đổi các giá trị được tính, Alice gửi A cho Bob và Bob gửi Bcho Alice Ta để ý rằng Eve thấy được các giá trị A và B, do chúng bị gửi qua kênhliên lạc không an toàn

Cuối cùng, Bob và Alice một lần nữa sử dụng các số nguyên bí mật của họ đểtính

A0

|

Với các giá trị họ đã tính, A0 và B0 thực ra là bằng nhau do

A0 Ba (gb)a gab (ga)b Ab B0 (mod p).Giá trị chung này là khóa được trao đổi

Ví dụ 4.1 Alice và Bob thống nhất sử dụng số nguyên tố p = 491 và nghiệmnguyên thủy g = 627 Alice chọn khóa bí mật a = 347 và tính A = 390 627347 (mod941) Tương tự, Bob chọn khóa bí mật b = 781 và tính B = 691 627781 (mod 941).Alice gửi Bob số 390 và Bob gửi Alice số 691 Cả hai quá trình trao đổi đều bịthực hiện trên một kênh không an toàn, do đó cả A = 390 và B = 691 đều bị coi làkiến thức công khai Các số a = 347 và b = 781 không bị trao đổi và do đó đượcgiữ bí mật Khi đó Alice và Bob đều tính được số

Trang 18

5 HỆ MÃ HÓA CÔNG KHAI ELGAMAL

Tất nhiên ví dụ trên sử dụng các số rất nhỏ để cho Alice và Bob sự an toànthực tế, do nó cần rất ít thời gian cho máy tính của Eve kiểm tra mọi lũy thừa cóthể của 627 modulo 941 Hướng dẫn trên đề xuất rằng Alice và Bob chọn một sốnguyên tố xấp xỉ 1000 bit (nghĩa là p 21000) và một phần tử g có cấp nguyên tố vàxấp xỉ p/2 Khi đó, Eve phải đối diện với một nhiệm vụ thật sự khó khăn

Tổng quát, khó khăn của Eve là như sau Cô ấy biết các giá trị A và B, do đóbiết các giá trị ga và gb Cô ấy cũng biết giá trị g và p, do đó nếu có thể giải bàitoán logarit rời rạc, cố ấy có thể tìm a và b, sau đó dễ dàng tính được bí mậtchung của Alice và Bob là gab Ta thấy rằng Alice và Bob được cung cấp sự antoàn khi Eve không thể giải bài toán logarit rời rạc, nhưng điều này không hẳn làđúng Dĩ nhiên một phương pháp để tìm giá trị chung của Alice và Bob là giải bàitoán logarit rời rạc, nhưng đó không phải là bài toán thật sự mà Eve cần giải Tínhbảo mật của khóa chung của Alice và Bob nằm trong tính khó của bài toán đượccoi là có tiềm năng dễ giải hơn dưới đây

Định nghĩa 4.2 Cho p là một số nguyên tố và g là một số nguyên Bài toán

Diffie-Hellman là bài toán tính giá trị của gab (mod p) khi biết các giá trị ga (mod p) và gb(mod p)

Dễ thấy rằng bài toán trên không khó hơn bài toán logarit rời rạc Nếu Eve có thểgiải bài toán logarit rời rạc, thì cô ấy có thể tính các lũy thừa bí mật a và b của Alice

và Bob bằng các lấy các giá trị A = ga và B = gb, và khi dó cô ấy dễ dàng tính đượckhóa chung gab (Thật ra, Eve chỉ cần tính một trong hai giá trị a hoặc b.) Tuy nhiênđiều ngược lại không hẳn đã chính xác Giả sử rằng Eve có một thuật toán giải bàitoán Diffie-Hellman một cách hiệu quả, thì liệu cô ấy có thể giải bài toán logarit rờirạc hiệu quả không? Câu trả lời là điều này chưa được biết chắc

5 Hệ mã hóa công khai ElGamal

Mặc dù thuật toán trao đổi khóa Diffie-Hellman cung cấp một phương pháp chia sẻcông khai một khóa bí mật ngẫu nhiên, nó không đạt được điều kiện để trở thànhmột hệ mã khóa công khai, không chỉ là một xâu bit ngẫu nhiên Hệ mã hóa côngkhai đầu tiên là hệ RSA của Rivest, Shamir, và Adleman được công bố năm 1978.RSA đã và vẫn đang là một phát hiện quan trọng Tuy nhiên, mặc dù về mặt lịch sửthì RSA xuất hiện trước, tuy nhiên sự phát triển tự nhiên nhất của một hệ mã hóacông khai trong báo cáo của Diffie-Hellman là một hệ thống được mô tả bởi TaherElGamal năm 1985 Thuật toán mã hóa công khai ElGamal được dựa trên bài toánlogarit rời rạc và liên hệ chặt chẽ với trao đổi khóa Diffie-Hellman ở phần trước.Trong phần này ta mô tả một phiên bản của hệ mã hóa công khai ElGamal mà được

14

Trang 19

dựa trên bài toán logarit rời rạc cho Fp, nhưng phép xây dựng hoạt động mộtcách khá tổng quát khi bài toán logarit rời rạc được áp dụng trên mỗi nhóm.

Hệ mã hóa công khai ElGamal là ví dụ đầu tiên về một hệ mã hóa công khai, sau

đó ta sẽ tiếp tục một cách từ từ và đưa vào mọi chi tiết Alice bắt đầu bằng cáchcông khai thông tin về một khóa công khai và một thuật toán Khóa công khai đơngiản là một số, và thuật toán là phương pháp mà Bob sẽ dùng để mã hóa thông điệpcủa anh ấy bằng cách sử dụng khóa công khai của Alice Alice không công khai một

số khác là khóa bí mật của cô ấy Khóa bí mật cho phép Alice, và chỉ cô ấy giải mãđược thông điệp mà đã được mã hóa bởi khóa công khai của cô ấy

Mặc dù điều này nghe vẫn chưa rõ ràng và áp dụng cho mọi hệ mã hóa côngkhai Với hệ mã hóa ElGamal, Alice cần một số nguyên tố lớn p để bài toán logarit

rời rạc trong Fp là khó, và cũng cần một phần tử g lấy modulo p có cấp nguyên tốlớn Cô ấy có thể chọn số p hoặc g, hoặc được chọn trước bởi một bên thứ bađáng tin cậy như tổ chức chính phủ

Alice chọn một số bí mật a, số này được coi là khóa bí mật của cô ấy và tínhđại lượng

A ga (mod p)

Để ý rằng bước này tương tự như trao đổi khóa Diffie-Hellman Alice cho mọingười biết khóa công khai A và giữ lại khóa bí mật a

Bây giờ, giả sử rằng Bob muốn mã hóa một thông điệp sử dụng khóa công khai

A của Alice Ta sẽ giả sử rằng thông điệp của Bob là m, là một số nguyên nằmgiữa 2 và p Để mã hóa m, đầu tiên Bob chọn ngẫu nhiên một số k khác và lấymodulo p Bob sử dụng k để mã hóa duy nhất một thông điệp, và sau đó loại bỏ

nó Số k được gọi là một khóa tức thời, do nó chỉ dùng duy nhất một lần với mụcđích là mã hóa một thông điệp

Bob lấy bản thông điệp chưa mã hóa m, khóa tức thời ngẫu nhiên k, và khóacông khai A của Alice và sử dụng chúng để tính hai đại lượng

c1gk (mod p) và c2 mAk (mod p)

(Chú ý rằng g và p là các tham số công khai, do đó Bob cũng biết các giá trị củachúng.) Bản thông điệp m được mã hóa của Bob là cặp số (c1, c 2), sẽ được gửicho Alice

Vậy làm thế nào Alice có thể giải mã bản thông điệp được mã hóa (c1, c2) củaBob? Do Alice biết a, do đó cô ấy có thể tính được đại lượng

x c1a (mod p),

và từ đó cũng tính được x 1 (mod p) Alice sau đó nhân c2 với x 1, và kết quả thu

Trang 20

5 HỆ MÃ HÓA CÔNG KHAI ELGAMAL

được là bản thông điệp m gốc chưa bị mã hóa Để biết lý do, ta tính

x 1.c2 (c1a) 1.c2

(gak) 1.(mAk)(gak) 1.(m(ga)k)m

Vậy Eve cần làm gì để có thể giải mã thông điệp? Eve biết tham số công khai p và

g, và cô ấy cũng biết giá trị A ga (mod p), do khóa công khai A của Alice là kiến thứccông khai Nếu Eve có thể giải bài toán logarit rời rạc, cô ấy có thể tìm được a và giải

mã thông điệp Ngược lại, Eve sẽ rất khó để có thể tìm được bản thông điệp gốc,mặc dù vẫn có khó khăn, ta sẽ nói về các khó khăn đó sau một vài ví dụ nhỏ

Ví dụ 5.1 Alice dùng số nguyên tố p = 467 và số nguyên thủy g = 2 Cô ấy chọn a

= 153 là khóa bí mật và tính khóa công khai

A ga 2153 224 (mod 467)

Bob chọn thông điệp m = 331 Sau đó chọn tiếp một khóa ngắn hạn ngẫu nhiên là

k = 197, và tính các đại lượng

c1 2197 87 (mod 467) và c2 331.224197 57 (mod 467)

Cặp số (c1, c2) = (87, 57) là bản mã Bob sẽ gửi cho Alice

Alice biết a = 153, cô ấy sẽ tính

x c1a 87153 367 (mod 467), và khi đó x 1 14 (mod 467)

Cuối cùng, Alice tính

c2x 1 57.14 331 (mod 467)

và đây chính là thông điệp m

Nhận xét 5.2 Trong hệ mã hóa ElGamal, thông điệp là một số nguyên m nằm

giữa 2 và p 1, trong khi bản mã chứa hai số nguyên c1, c2 cũng nằm trongkhoảng đó do c1 và c2 đều được lấy modulo p 1 sau khi tính

Do đó, về mặt tổng quát ta mất gấp đôi số bit để viết bản mã hóa so với ta viết

bản gốc Ta nói rằng ElGamal có một mở rộng thông điệp 2 đến 1.

Một câu hỏi quan trọng được đưa ra là khi Eve tấn công vào hệ ElGamal thì cókhó bằng giải bài toán Diffie-Hellman không? Tuy nhiên, khi ta giới thiệu cách mãhóa, liệu ta đã vô tình mở một cửa sau để khiến thông điệp dễ giải hơn và thậm chí

16

Trang 21

không cần giải bài toán Diffie-Hellman? Một trong các mục tiêu của mật mã hiệnđại là xác thực một bài toán khó đứng đằng sau một hệ mã hóa như bài toánDiffie-Hellman và chứng minh rằng một phép xây dựng mật mã như ElGamal ítnhất khó bằng bài toán đã cho

Trong trường hợp này, ta muốn chứng minh rằng bất kì ai có thể giải mã mộtbản mã bất kỳ được xây dựng bởi hệ mã hóa ElGamal, cũng phải giải được bàitoán Diffie-Hellman Cụ thể ta muốn chứng minh điều sau đây:

Mệnh đề 5.3 Cố định một số nguyên tố p và một phần tử g được sử dụng trong hệ mã

hóa ElGamal Giả sử Eve có thể truy cập vào một oracle giải mã một bản mã của hệ mã hóa ElGamal Khi đó, cô ấy có thể dùng oracle đó để giải bài toán Diffie-Hellman.

Chứng minh Thay vì đưa ra một chứng minh mang tính hình thức, ta sẽ đưa ra

một chứng minh dễ hiểu hơn và giải thích cách tiếp cận bài toán bằng cách sửdụng một oracle ElGamal để giải bài toán Diffie-Hellman Nhắc lại trong bài toánDiffie-Hellman, Eve biết các giá trị

A ga (mod p) và B gb (mod p),

và bài toán là tính giá trị của gab (mod p) Cần ghi nhớ rằng Eve biết cả hai giá trị

A và B, tuy nhiên lại không biết các giá trị a và b

Giả sử Eve có thể tham vấn một oracle ElGamal Điều này nghĩa là Eve có thểgửi cho oracle một số nguyên tố p, một phần tử cơ sở g, một khóa công khai A,một bản mã hóa (c1, c2) Khi đó, oracle sẽ trả lại đại lượng

(c1a) 1.c2 (mod p).Nếu Eve muốn giải được bài toán Diffie-Hellman, thì giá trị của c1 và c2 cần đượcchọn là bao nhiêu? Để ý ta thấy rằng c1 = B = gb và c2 = 1 là sự lựa chọn tốt, dovới đầu vào như trên, thì oracle sẽ trả lại giá trị

là A và bản mã là (B, c2) Khi đó, oracle sẽ trả lại bản thông điệp gốc m thỏa mãn

m (c1a) 1.c2 (Ba) 1.c2 (gab) 1.c2 (mod p).

Trang 22

6 THUẬT TOÁN VA CHẠM CHO BÀI TOÁN LOGARIT RỜI RẠCSau khi oracle cho Eve biết giá trị của m, ta tính

tiếp gab c2.m 1 (mod p)

để tìm giá trị của gab (mod p) Mặc dù, với sự trợ giúp của oracle, Eve đã tínhđược gab (mod p), Eve vẫn không biết bất kì giá trị nào của a hoặc b, do đó Evechỉ giải được bài toán Diffie-Hellman, chứ không phải bài toán logarit rời rạc

Nhận xét 5.4 Một tấn công mà trong đó Eve truy cập vào một oracle giải mã một

bản mã bất kỳ đã biết được gọi là một tấn công chọn bản mã Mệnh đề trên chỉ ra

rằng hệ ElGamal là an toàn đối với tấn công chọn bản mã Chính xác hơn, nó bảomật nếu bài toán Diffie-Hellman được giả sử là khó

6 Thuật toán va chạm cho bài toán logarit rời rạc

Trong phần này ta mô tả một thuật toán logarit rời rạc theo Shanks Nó là một

ví dụ của một va chạm, hoặc thuật toán "gặp ở giữa" Thuật toán của Shanks hoạt

đồng trong mọi nhóm, không chỉ Fp và chứng minh rằng nó không khó hơn trongbất kỳ nhóm nào, và ta phát biểu và chứng minh trong tổng quát

Mệnh đề 6.1 (Cận tầm thường cho bài toán logarit rời rạc) Cho G là một nhóm và

g 2 G là một phần tử cấp n Khi đó, bài toán logarit rời rạc

gx = h

có thể được giải trong O(n) bước, vói mỗi bước là phép nhân với g.

Chứng minh Ta lập một danh sách các giá trị của gx với x = 0, 1, 2, , n

rằng mỗi giá trị liên tiếp thu được bằng cách nhân phần tử trước với g Nếu tồn tạimột nghiệm cho gx = h thì h sẽ xuất hiện trong danh sách trên

Nhận xét 6.2 Nếu ta làm việc trong Fp, thì mỗi khi tính gx ( mod p) cần O((logp)k) phép toán trên máy tính, với hằng số k và ký hiệu "O"phụ thuộc vào máy tính

và thuật toán được sử dụng cho phép nhân modulo Khi đó, tổng số bước mà

máy tính thực hiện, hoặc thời gian chạy, là O(n(log p)k) Tổng quát, nhân tố đượctạo bởi O((log p)k) là không đáng kể, do đó ta sẽ bỏ qua nó và đơn giản gọi là thờigian chạy là O(n)

Ýtưởng đằng sau một thuật toán va chạm là lập hai danh sách và tìm mộtphần tử xuất hiện ở cả hai danh sách Với bài toán logarit rời rạc, thời gianchạy của một thuật toán va chạm nhiều hơn O(p

n) một số bước, tiết kiệmđược một lượng lớn so với O(n) nếu n lớn

18

Trang 23

Mệnh đề 6.3 (Thuật toán Bước nhỏ-Bước lớn của Shanks) Cho G là một nhóm và cho

g2 G là một phần tử có cấp N 2 Khi đó thuật toán sau giải bài toán

(3) Tìm một phần tử xuất hiện trong cả hai danh sách, giả sử gi = h.g jn.

(4) Khi đó x = i + jn là một nghiệm của bài toán gx = h.

Chứng minh Ta bắt đầu với một vài quan sát Đầu tiên, khi tạo ra Danh sách 2, ta

bắt đầu bằng việc tính đại lượng u = g n và lập Danh sách 2 bằng cách tính h, hu,

hu2, , hun Do đó tạo nên hai danh sách mất xấp xỉ 2n phép nhân Tiếp theo, giả

sử tồn tại phần tử trùng nhau ở cả 2 danh sách, ta có thể tìm một cặp trong một bộicủa log(n) bằng cách sử dụng các thuật toán sắp xếp tiêu chuẩn và thuật toán

truy tìm, do đó Bước (3) mất O(log n) bước Do đó tổng thời gian chạy của thuật ptoán là O(n log n) = O( N log N) Với bước cuối cùng này ta sử dụng n N, do đó

n log n p

N log p

N = 1

2 pN log N.

Để chứng minh tính đúng đắn của thuật toán, ta cần chỉ ra Danh sách 1 và 2 luôn

có ít nhất 1 phần tử trùng nhau Để chứng minh, giả sử x là nghiệm chưa biết của

Ví dụ 6.4 Ta sẽ mô tả phương pháp bước nhỏ-bước lớn của Shanks bằng cách

sử dụng thuật toán để giải bài toán logarit rời rạc

Trang 24

19

Trang 25

Do đó x = 1159 là nghiệm của bài toán 9704x = 13896 trong F17389.

7 Định lý thặng dư Trung Hoa

Định lý thặng dư Trung Hoa mô tả nghiệm của một hệ phương trình đồng dưtuyến tính Trường hợp đơn giản nhất là một hệ hai phương trình đồng dư

x a (mod m) và x b (mod n),với gcd(m, n) = 1 Khi đó, định lý thặng dư Trung Hoa nói rằng tồn tại duy nhấtmột nghiệm modulo mn thỏa mãn hệ trên

Phiên bản đầu tiên của một bài toán có dạng như trên xuất hiện trong một côngtrình toán học ở Trung Hoa từ cuối thế kỷ thứ III hoặc đầu thế kỷ thứ IV Bài toánban đầu phải giải quyết với bài toán khó hơn khi phải giải hệ 3 phương trình đồngdư

Ta có một số đồ vật, nhưng không biết chính xác là bao nhiêu Khi đếm chúngtheo 3 cái một thì thừa hai cái Khi đếm 5 cái một thì thừa 3 cái Nếu ta đếm theo

7 cái một thì thừa 2 cái Hỏi có bao nhiêu đồ vật?

[Sun Tzu Suan Ching, khoảng 300 năm sau Công nguyên.]

Định lý thặng dư Trung Hoa và tổng quát hóa của nó có nhiều ứng dụng trong lýthuyết số và nhiều lĩnh vực khác trong Toán học Ở Phần 13 ta sẽ chỉ ra nó được

sử dụng như nào để giải một số thể hiện nhất định của bài toán logarit rời rạc Ta

sẽ bắt đầu với một ví dụ mà ta giải hệ hai phương trình đồng dư Phương pháp

mà ta mô tả thực tế là một thuật toán cho phép tìm ra nghiệm

Ví dụ 7.1 Ta tìm một số nguyên x thỏa mãn đồng thời hai phép đồng dư

x 1 (mod 5) và x 9 (mod 11)

Trang 26

7 ĐỊNH LÝ THẶNG DƯ TRUNG HOA

Đẳng thức đồng dư đầu chỉ ra rằng x 1 (mod 5) Do đó, tập nghiệm của phươngtrình đầu là họ các số nguyên

y 9.8 72 6 (mod 11)

Cuối cùng, thay giá trị của y vào (7.3) ta thu được nghiệm

x = 1 + 5.6 = 31của bài toán ban đầu

Cách làm ở ví dụ trên có thể sử dụng để suy ra một công thức tổng quát cho nghiệm của hệ hai phương trình đồng dư

Định lý 7.2 (Định lý thặng dư Trung Hoa) Cho m1, , mk là họ các số nguyên

đôi một nguyên tố cùng nhau Điều này nghĩa là

gcd(mi, mj) = 1 với mọi i 6= j.

Cho a1, , ak là các số nguyên bất kỳ Khi đó hệ các phương trình đồng dư

x a1 (mod m1), x a2 (mod m2), , x ak (mod mk)

có nghiệm x = c Hơn nữa, nếu x = c và x = c0 đều là nghiệm, khi đó

c c0 (mod m1m2 mk)

Chứng minh Giả sử rằng với một giá trị nào đó của i ta đã tìm được nghiệm x =

ci cho hệ phương trình đồng dư

x a1 (mod m1), x a2 (mod m2), , x ai (mod mi)

Ví dụ, nếu i = 1, thì c1 = a1 Ta sẽ giải thích cách làm để tìm ra nghiệm cho mộtphương trình đồng dư nữa

x a1 (mod m1), x a2 (mod m2), , x ai+1 (mod mi+1)

21

Trang 27

Ý tường là ta sẽ tìm nghiệm dưới dạng

x = ci + m1 miy

Để ý rằng giá trị này của x vẫn thỏa mãn tất cả phương trình trong (7.7), do đó tacần chọn được y sao cho nó cũng thỏa mãn x ai+1 (mod mi+ 1) Nói cách khác, tacần tìm một giá trị của y thỏa mãn

ci + m1m2 miy ai+1 (mod mi+1).Việc gcd(mi+1, m1m2 mi) = 1 chỉ ra rằng ta luôn có thể làm được điều này Do đó

ta đã chỉ ra sự tồn tại nghiệm của hệ phương trình đồng dư đã cho

Chứng minh của Định lý thặng dư Trung Hoa dễ dàng chuyển thành một thuậttoán tìm nghiệm của một hệ phương trình đồng dư Ví dụ dưới đây được dùng để

mô tả phương pháp tổng quát

Ví dụ 7.3 Ta giải hệ phương trình đồng dư

x 2 (mod 3), x 3 (mod 7), x 4 (mod 16)

Định lý thặng dư Trung Hoa chỉ ra rằng tồn tại duy nhất một nghiệm modulo 336, do

336 = 3.7.16 Ta bắt đầu với nghiệm x = 2 cho phương trình đồng dư đầu tiên là

x 2 (mod 3) Ta sử dụng nó để tìm nghiệm tổng quát dưới dạng x = 2 + 3y và thay vào phương trình đồng dư thứ 2 ta có

2 + 3y 3 (mod 7)

Ta rút gọn còn 3y 1 (mod 7), và ta nhân cả hai vế với 5 (do 5 là nghịch đảo của 3 modulo 7) để thu được y 5 (mod 7) Khi đó, ta có giá trị

x = 2 + 3y = 2 + 3.5 = 17

là một nghiệm của hai phương trình đồng dư đầu trong (7.8)

Nghiệm tổng quát cho hai phương trình đầu là x = 21z + 17 Ta thay vào

phương trình đồng dư thứ ba ta thu được

21z + 17 4 (mod 16).Suy ra 5z 3 (mod 16) Ta nhân hai vế với 13, là nghịch đảo của 5 modulo 16, thu được

Trang 28

7.1 Giải các phương trình đồng dư với các modulo hợp số 7 ĐỊNH LÝ THẶNG DƯ TRUNG HOA

7.1 Giải các phương trình đồng dư với các modulo hợp số

Thông thường cách dễ nhất để giải một phương trình đồng dư với một modulohợp số bằng cách giải các phương trình đồng dư modulo các số nguyên tố (hoặclũy thừa của số nguyên tố) và sau đó kết hợp nghiệm bằng cách sử dụng Định lýthặng dư Trung Hoa Ta sẽ minh họa quy tắc đó trong phần này bằng cách đưa rabài toán tìm căn bậc 2 modulo m Việc tính căn bậc hai của một số modulonguyên tố khá dễ dàng Thật vậy, với các số nguyên tố đồng dư 3 modulo 4, việctìm căn bậc hai rất dễ

Mệnh đề 7.4 Cho p là một số nguyên tố thỏa mãn p 3 ( mod 4) Cho a là một số

nguyên sao cho x2 a (mod p) có nghiệm, nghĩa là a có một căn bậc hai modulo p Khi

đó

p+1

b a 4 (mod p)

là một nghiệm thỏa mãn b2a (mod p)

Chứng minh Cho g là một phần tử nguyên thủy modulo p Khi đó a là một lũy

thừa của g, và việc a có căn bậc hai modulo p nghĩa là a là một lũy thừa chẵn của

g, giả sử là a g2k (mod p) Khi đó, ta tính

)ka

( mod p) theo định nghĩa của b,

Do đó b là một căn bậc hai của a modulo p

Ví dụ 7.5 Một căn bậc hai của a = 2201 modulo p = 4127 là

23

Trang 29

Ví dụ 7.6 Ta tìm nghiệm của phép đồng dư

x2 197 (mod 437).Phép phân tích cho ta 437 = 19.23 Do đó, đầu tiên ta giải hệ hai phương trìnhđồng dư

Ta tìm được x 236 (mod 437), do đó tìm được nghiệm của bài toán ban đầu

Nhận xét 7.7 Nghiệm của bài toán trên là không duy nhất Ban đầu ta hoàn toàn

có thể chọn số âm

236 201 (mod 437),

để thu được căn bậc hai thứ hai của 197 modulo 437 Nếu các modulo là các sốnguyên tố, thì chỉ có duy nhất hai căn bậc hai như trên Tuy nhiên, do 437=19.23 làhợp số, do đó có thêm hai số nữa Để tìm chúng, ta thấy hoặc 8 hoặc 6 là số âm Từ

đó tính ra được x = 144 và x = 293, do đó 197 có bốn căn bậc hai modulo 437

Nhận xét 7.8 Ta thấy rằng từ Ví dụ (7.6) khá dễ dàng tính được các căn bậc hai

modulo m nếu ta biết cách phân tích m thành tích các lũy thừa của các số nguyên tố.Tuy nhiên, giả sử m quá lớn và ta không thể phân tích nó Khi đó bài toán tìm cănbậc hai modulo m là rất khó Thật vậy, theo một nghĩa nào đó việc tìm căn bậc haimodulo m khó tương đương với việc phân tích m thành thừa số nguyên tố

Thật ra, nếu m là một số nguyên lớn và không biết phân tích thừa số nguyên tốcủa nó, khi đó rất khó để xác định một số nguyên a cho trước có căn bậc haimodulo m, kể cả không yêu cầu tính căn bậc hai

8 Thuật toán Pohlig-Hellman

Ngoài việc là một định lý và một thuật toán, Định lý thặng dư Trung Hoa đượccoi là một điều hiển nhiên Nếu

m = m1 m2 m t

Trang 30

8 THUẬT TOÁN POHLIG-HELLMAN

là một tích của các số nguyên đôi một nguyên tố cùng nhau, khi đó Định lý thặng

dư Trung Hoa nói rằng việc giải một phương trình modulo m không dễ hơn việcgiải một hệ phương trình modulo mi với mỗi i, do nó cho ta biết cách kết hợp cácnghiệm để thu được nghiệm của phương trình modulo m

Trong bài toán logarit rời rạc, ta cần giải phương

trình gx h (mod p)

Trong trường hợp này, modulo p là số nguyên tố, do đó việc sử dụng Định lýthặng dư Trung Hoa là không khả thi Tuy nhiên, nhắc lại rằng nghiệm x được xác

định chỉ với modulo p 1, do đó ta có thể xem nghiệm nằm ở trong Z/(p 1)Z Điều

này gợi ý phân tích p 1 thành tích các thừa số nguyên tố có thể đóng một vai trò

quan trọng trong việc xác định tính khó của bài toán logarit rời rạc trong Fp Tổngquát hơn, nếu G là một nhóm bất kỳ và g 2 G là một phần tử có cấp N, thì nghiệmcủa gx = h trong G được xác định duy nhất modulo N, do đó việc phân tích Nthành thừa số nguyên tố là cần thiết Đây chính là ý tưởng của thuật toán Pohlig-Hellman

Định lý 8.1 (Thuật toán Pohlig-Hellman) Cho G là một nhóm, và ta có bài toán logarit

rời rạc trong G với mọi phần tử có cấp là một lũy thừa của một số nguyên tố Với tính rời rạc, nếu g 2 G có cấp qe và giả sử ta có thể giải gx = h trong O(S q e ) bước.

Cho g 2 G là một phần tử có cấp N, và giả sử N phân tích được thành tích của

lũy thừa các số nguyên tố

N = q1e1 q2e2 qett

Khi đó bài toán logarit rời rạc gx = h có thể được giải trong

!

O å Sqeii + log N bước bằng cách sử dụng thủ tục sau:

(1) Với mỗi 1 i t, ta đặt

Chú ý rằng gi có lũy thừa nguyên tố cấp qiei , do đó sử dụng thuật toán đã

cho để giải bài toán logarit rời rạc

giy = hi

Cho y = yi là một nghiệm của (8.2).

25

Trang 31

(2) Sử dụng Định lý thặng dư Trung Hoa để giải hệ phương trình đồng dư

x y1 (mod q1e1 ), x y2 (mod q2e2 ), ,x yt (mod qett ) (8.3)

Chứng minh Thời gian chạy khá rõ ràng, do Bước (1) mất O(å S ei ) bước, và Bước

q i

(2), theo Định lý thặng dư Trung Hoa, mất O(log N) bước Trong thực hành, việctính toán theo Định lý thặng dư Trung Hoa thông thường là không đáng kể so vớicác tính toán logarit rời rạc

Ta vẫn phải chỉ ra Bước (1) và (2) cho ta nghiệm của gx = h Cho x là mộtnghiệm của hệ phương trình đồng dư (8.3) Khi đó, với mỗi i ta có thể viết

x = yi + qiei ziKhi đó ta có thể tính

gi, theo (8.2)theo định nghĩa của hi

Trang 32

q 1e126

Ngày đăng: 15/02/2022, 19:44

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