Upload
le-dac-nhuong-dac-nhuong-le
View
380
Download
1
Embed Size (px)
DESCRIPTION
Lê Đắc Nhường - Đại học hải Phò[email protected]
Citation preview
GV. Lê Đắc Nhường
An toàn thông tinInformation Sercurity
CHƯƠNG 2
Lê Đắc Nhường
Khoa Toán Tin - Trường Đại học Hải PhòngE-mail: [email protected]
Cell Phone: 0987.394.900
CƠ SỞ TOÁN HỌC CỦA LÝ THUYẾT MẬT MÃ
GV. Lê Đắc Nhường
Nội dung chương 2
2.1 Lý thuyết số
2.1.1 Khái niệm đồng dư modulo
2.1.2 Định nghĩa số học modulo
2.1.3 Phần tử nghịch đảo
2.1.4 Khái niệm nhóm
2.1.5 Bài toán Logarit rời rạc
2.2 Lý thuyết về độ phức tạp tính toán
2.3 Hàm một phía và hàm cửa sập một phía
GV. Lê Đắc Nhường
2.1 Lý thuyết số
2.1.1 Khái niệm đồng dư modulo
Giả sử a và b là các số nguyên và m là một số nguyên dương.
Khi đó ta viết ab(mod m) nếu m chia hết cho b-a.
Mệnh đề ab(mod m) được gọi là “a đồng dư với b theo mođun m”.
GV. Lê Đắc Nhường
2.1.1 Khái niệm đồng dư modulo
Giả sử chia a và b cho m và ta thu được thương nguyên và phần
dư, các phần dư nằm giữa 0 và m-1. Nghĩa là:
a = q1m + r1 và b = q2
m + r2
trong đó 0r1m-1 và 0r2m-1.
Khi đó có thể dễ dàng thấy rằng:
a b(mod m) khi và chỉ khi r1 = r2
GV. Lê Đắc Nhường
Ta sẽ dùng ký hiệu a mod m để xác định phần dư khi a được chia
cho m (chính là giá trị r1 ở trên).
Như vậy: ab(mod m) khi và chỉ khi:
(a mod m) = (b mod m). Nếu thay giá trị của a bằng giá trị (a mod m) thì ta nói a được rút
gọn theo modulo m.
2.1.1 Khái niệm đồng dư modulo
GV. Lê Đắc Nhường
Ví dụ:
2 ≡ 5 mod 3 với a=2, b=5, m=3
3 chia hết cho (5-2)
2 = 0*3 + 2
5 = 1*3 +2
Khi đó nói: 2 đồng dư với 5 theo modulo 3
2.1.1 Khái niệm đồng dư modulo
GV. Lê Đắc Nhường
Chú ý:
Nhiều ngôn ngữ lập trình của máy tính xác định a mod m là
phần dư trong dải -m+1,…,m-1 có cùng dấu với a.
Ví dụ -18 mod 7 = –4,
Giá trị này khác với giá trị 3 là giá trị được xác định theo công
thức trên (vì phần bù: 7 – 4 = 3)
Tuy nhiên, để thuận tiện ta sẽ xác định a mod m luôn là một
số không âm
2.1.1 Khái niệm đồng dư modulo
GV. Lê Đắc Nhường
Định nghĩa số học mođun m:
Zm được coi là tập hợp {0,1,…,m-1} có trang bị hai phép toán
cộng và nhân.
Việc cộng và nhân trong Zm được thực hiện giống như cộng và
nhân các số thực ngoại trừ một điểm là các kết quả được rút
gọn theo mođun m.
2.1.2 Định nghĩa số học modulo
GV. Lê Đắc Nhường
Ví dụ:
Z26 được coi là tập hợp {0,1, 2…,25} có trang bị hai phép toán
cộng và nhân.
25+7 = 32 mod 26 = 6 ( ví dụ K=7, ‘Z’ ‘H’)
5*9 = 45 mod 26 = 19
2.1.2 Định nghĩa số học modulo
GV. Lê Đắc Nhường
Định lý về đồng dư thức
Đồng dư thức ax b (mod m) chỉ có một nghiệm duy nhất x Zm
với mọi bZm khi và chỉ khi UCLN(a,m) =1.
Chứng minh:
Ta giả sử rằng, UCLN(a,m) = d >1.
Với b = 0 thì đồng dư thức ax0 (mod m) sẽ có ít nhất hai nghiệm
phân biệt trong Zm là x = 0 và x = m/d.
2.1.2 Định nghĩa số học modulo
GV. Lê Đắc Nhường
Ví dụ 1: a=7, b=5, m=11
Đồng dư thức 7x 5 (mod 11) , kiểm tra: UCLN(7, 11) =1
Có một nghiệm duy nhất x=7 vì 7*7 mod 11 = 49 mod 11 = 5
Để giải phương trình đồng dư thức áp dụng công thức sau:
7x – 5 phải chia hết cho 11
Ví dụ 2: giải phương trình 5x 7 mod 11
KQ x=8
2.1.2 Định nghĩa số học modulo
GV. Lê Đắc Nhường
Khái niệm phần tử nghịch đảo
Giả sử a Zm.
Phần tử nghịch đảo (theo phép nhân) của a là phần tử a-1 Zm
sao cho:
aa-1 a-1a1 (mod m)
2.1.3 Phần tử nghịch đảo
GV. Lê Đắc Nhường
Tính chất
a có nghịch đảo theo mođun m khi và chỉ khi UCLN(a,m) = 1,
Nếu nghịch đảo tồn tại thì phải là duy nhất.
Nếu b = a-1 thì a = b-1.
Nếu m là số nguyên tố thì mọi phần tử khác không của Zm
đều có nghịch đảo.
2.1.3 Phần tử nghịch đảo
GV. Lê Đắc Nhường
Thuật toán Euclide tìm phần tử nghịch đảo
Cho hai số tự nhiên a,n.
Ký hiệu
(a, n) là ước số chung lớn nhất của a,n;
(n) là số các số nguyên dương n và nguyên tố với n.
Giả sử n a.
Thuật toán Euclide tìm UCLN (a,n) được thực hiện bằng một
dãy các phép chia liên tiếp sau đây
2.1.3 Phần tử nghịch đảo
GV. Lê Đắc Nhường
Thuật toán UCLN (a, n)
Đặt r0 = n, r1 = a,
r0 = q1r1 + r2 , 0 r2 r1
r1 = q2r2 + r3 , 0 r3 r2
………………………
rm-2 = qm-1rm-1 + rm , 0 rm rm-1
rm-1 = qmrm
Thuật toán phải kết thúc ở một bước thứ m nào đó. Ta có:
(n,a) = (r0,r1) = (r1,r2) = …… = (rm-1,rm) = rm
2.1.3 Phần tử nghịch đảo
GV. Lê Đắc Nhường
Mở rộng thuật toán để tìm phần tử nghịch đảo
Vậy ta tìm được rm = (n,a). Mở rộng thuật toán Euclide bằng cách
xác định thêm dãy số t0, t1,…,tm :
t0 = 0,
t1 = 1,
tj = tj-2 – qj-1tj-1 mod r0 , nếu j 2 ,
ta dễ chứng minh bằng qui nạp rằng: rj tjr1 (mod r0)
Do đó, nếu (n,a) = 1, thì tm = a-1 mod n
2.1.3 Phần tử nghịch đảo
GV. Lê Đắc Nhường
Bước 1: Xây dựng bảng (gồm 6 cột) như sau:
Trên mỗi dòng, ta có: r0 = r1 q + r2
Bước 2: Điền giá trị vào dòng đầu tiên r0 = n, r1 = a, t0 = 0, t1 = 1
Dòng r0 r1 r2 q t0 t1
Dòng r0 r1 r2 q t0 t1
0 n a 0 1
2.1.3 Phần tử nghịch đảo – Thuật toán Euclide mở rộng
GV. Lê Đắc Nhường
Bước 3: Trên dòng i đang xét, tính giá trị
r2 = r0 mod r1,
q = r0 / r1
Dòng r0 r1 r2 q t0 t1
… … … … … … …
i r0 mod r1 r0 / r1
2.1.3 Phần tử nghịch đảo – Thuật toán Euclide mở rộng
GV. Lê Đắc Nhường
Bước 4: Tính giá trị t1 (của dòng i) từ giá trị q, t0 và t1 của dòng i-1.
Dòng r0 r1 r2 q t0 t1
… … … … … … …
i -1 X Y Z
i Y-XZ mod n
2.1.3 Phần tử nghịch đảo – Thuật toán Euclide mở rộng
GV. Lê Đắc Nhường
Bước 5: Trên dòng i đang xét:
Nếu r2 = 0 thì:
Nếu r1= 1 thì giá trị t1 (của dòng đang xét) là phần tử nghịch đảo của a
trong Zn
Ngược lại (tức là r1 1) thì không tồn tại phần tử nghịch đảo của a
trong Zn. Rõ ràng trường hợp này chỉ xảy ra khi USCLN(a, n) 1
Chấm dứt thuật toán
Ngược lại (tức là r2 0) thì sang bước 6Dòng R0 r1 r2 q t0 t1
… … … … … … …
i r1= 1? r2 = 0?
2.1.3 Phần tử nghịch đảo – Thuật toán Euclide mở rộng
GV. Lê Đắc Nhường
Bước 6: Sao chép giá trị sang dòng tiếp theo theo quy tắc dưới đây, sau đó, trở lại bước 3:
Dòng r0 r1 r2 q t0 t1
i
2.1.3 Phần tử nghịch đảo – Thuật toán Euclide mở rộng
GV. Lê Đắc Nhường
2.1.3 Phần tử nghịch đảo – Thuật toán Euclide mở rộng
Y- (X*Z) Mod n= 0 –(4*1) mod 101=0-4 mod 101 = 97
GV. Lê Đắc Nhường
2.1.3 Phần tử nghịch đảo – Thuật toán Euclide mở rộng
GV. Lê Đắc Nhường
2.1.3 Phần tử nghịch đảo – Thuật toán Euclide mở rộng
GV. Lê Đắc Nhường
Khái niệm nhóm
Nhóm là một cặp (G,*) trong đó G là tập hợp khác rỗng và * là
phép toán hai ngôi trên G thỏa mãn ba điều kiện sau:
Có tính kết hợp:(x*y)*z=x*(y*z) với mọi x,y,z G
Có phần tử trung lập eG: x*e=e*x=x với mọi
xG
Với mọi xG, có phần tử nghịch đảo x’G:
x*x’=x’*x=e
2.1.4 Khái niệm nhóm
GV. Lê Đắc Nhường
Khái niệm nhóm Cyclic
Nhóm G được gọi là nhóm Cyclic nếu nó được sinh ra bởi một
trong các phần tử của nó. Tức là có phần tử gG mà mọi phần
tử aG đều tồn tại số nN để gn=a.
Khi đó g được gọi là phần tử sinh hay phần tử nguyên thủy
của nhóm G.
Khi đó nhóm Cyclic còn có định nghĩa khác
Nhóm G được gọi là nhóm Cyclic nếu tồn tại số g sao cho mọi
phần tử trong G đều là một lũy thừa nguyên nào đó của g.
2.1.4 Khái niệm nhóm
GV. Lê Đắc Nhường
Ký hiệu Zn={0,1,2,…,n-1}. Tức là tập Zn là tập số nguyên không âm < n.
Tập này cùng với phép cộng lập thành nhóm Cyclic có phần tử sinh là
1. Đó là nhóm hữu hạn có cấp n.
Zn*={eZn, e là nguyên tố cùng nhau với n}.
Tức là e khác 0 và USCLN(e,n)=1.
Đó là tập các số nguyên dương <n và nguyên tố cùng nhau với n.
Zn* được gọi là tập thặng dư thu gọn theo mod n.
2.1.4 Khái niệm nhóm
GV. Lê Đắc Nhường
Bài toán Logarit rời rạc
Chúng ta sẽ bắt đầu bằng việc mô tả bài toán khi thiết lập môi
trường hữu hạn Zp, p là số nguyên tố.
Nhóm nhân Zp* là nhóm cyclic và phần tử sinh của Zp
* được gọi
là phần tử nguyên thủy
2.1.5 Bài toán Logarit rời rạc
GV. Lê Đắc Nhường
Bài toán Logarit rời rạc
Đặc trưng của bài toán: I = (p,,) trong đó p là số nguyên tố, Zp là
phần tử nguyên thủy, Zp*
Mục tiêu: Hãy tìm một số nguyên duy nhất a, 0 a p-2 sao cho:
a (mod p)Ta sẽ xác định số nguyên:
a = log (mod p)
2.1.5 Bài toán Logarit rời rạc
GV. Lê Đắc Nhường
Một vài vấn đề khác:
Thặng dư bậc hai và ký hiệu Ledendre
Thuật toán kiểm tra tính nguyên tố
Solovay_Strassen
Solovay_Strassen (cải tiến bởi Lehmann)
Sinh viên tự nghiên cứu tài liệu
GV. Lê Đắc Nhường
Phân loại bài toán
2.2 Lý thuyết về độ phức tạp tính toán
Các Bài toán
Bài toán chưa có lời giải
Bài toán đã có lời giải
Bài toán không giải được
Bài toán giải được
Bài toán “dễ“ giải
Bài toán “khó” giải
GV. Lê Đắc Nhường
Lý thuyết thuật toán và các hàm tính ra đời từ những năm 30 đã đặt nền
móng cho các nghiên cứu về các vấn đề “tính được”, “giải được”, và
đã thu được nhiều kết quả rất quan trọng.
Nhưng từ cái “tính được” một cách trừu tượng, tiềm năng đến việc tính
được trong thực tế của khoa học tính toán bằng máy tính điện tử là một
khoảng cách rất lớn.
Lý thuyết về độ phức tạp tính toán được nghiên cứu bắt đầu từ những
năm 60 đã bù đắp cho khoảng trống đó, cho ta nhiều tri thức cơ bản,
đồng thời có nhiều ứng dụng thực tế rất phong phú.
2.2 Lý thuyết về độ phức tạp tính toán
GV. Lê Đắc Nhường
Độ phức tạp (về không gian hay thời gian) của một quá trình tính toán là số
ô nhớ hay số các phép toán được thực hiện trong quá trình tính toán đó.
Độ phức tạp tính toán của một thuật toán: được hiểu là một hàm số f, sao
cho với mỗi n, f(n) là là số ô nhớ hay số các phép toán tối đa mà thuật toán
thực hiện quá trình tính toán của mình trên các dữ liệu vào có độ lớn n.
Độ phức tạp tính toán của một bài toán (của một hàm) được định nghĩa là
độ phức tạp của một thuật toán tốt nhất có thể tìm được để giải bài toán (hay
tính hàm) đó
2.2 Lý thuyết về độ phức tạp tính toán
GV. Lê Đắc Nhường
Các lớp phức tạp
P (Polynomial) là lớp các bài toán có độ phức tạp thời gian là đa thức (tức
lớp các bài toán mà đối với chúng có thuật toán giải bài toán đó trong thời
gian đa thức).
NP là lớp các bài toán mà đối với chúng có thuật toán không đơn định để
giải trong thời gian đa thức. Thuật toán không đơn định là một mô hình tính
toán trừu tượng, được giả định là sau mỗi bước có thể có một số hữu hạn
bước được lựa chọn đồng thời tiếp sau.
2.2 Lý thuyết về độ phức tạp tính toán
GV. Lê Đắc Nhường
Các lớp phức tạp
Nhiều bài toán được chứng tỏ là thuộc lớp NP, nhưng chưa ai chứng minh
được là chúng thuộc lớp P hay không. Và một vấn đề cho đến nay vẫn còn
mở, chưa có lời giải là: NP = P ?
Một cách trực giác, lớp NP bao gồm các bài toán khó hơn phức tạp hơn các
bài toán thuộc lớp P, nhưng điều có vẻ hiển nhiên trực giác đó vẫn chưa
được chứng minh hay bác bỏ.
2.2 Lý thuyết về độ phức tạp tính toán
GV. Lê Đắc Nhường
Các lớp phức tạp
Giả sử NP P, thì trong NP có một lớp con các bài toán được gọi là NP-
Complete, đó là những bài toán mà bản thân thuộc lớp NP, và mọi bài toán
bất kỳ thuộc lớp NP đều có thể qui dẫn về bài toán đó bằng một hàm tính
được trong thời gian đa thức.
Cho đến nay, người ta đã chứng minh được hàng trăm bài toán thuộc nhiều
lĩnh vực khác nhau là NP_đầy đủ. Bài toán đồng dư bậc hai kể trên là
NP_đầy đủ, bài toán hợp số không là NP_đầy đủ, nhưng chưa tìm được một
thuật toán làm việc trong thời gian đa thức giải nó
NP-Hard là bài toán NP khó
2.2 Lý thuyết về độ phức tạp tính toán
GV. Lê Đắc Nhường
2.3 Hàm một phía và hàm cửa sập một phía
Hàm một phía
Hàm f(x) được gọi là hàm một phía, nếu:
Tính y = f(x) là dễ,
Nhưng việc tính ngược x = f-1(y) là rất khó.
GV. Lê Đắc Nhường
2.3 Hàm một phía và hàm cửa sập một phía
Ví dụ: Hàm f(x) = gx (mod p) (p là số nguyên tố, g là phần tử
nguyên thủy theo mođun p) là hàm một phía.
Biết x tính f(x) là khá đơn giản
Biết f(x) để tính x thì với các thuật toán đã biết hiện nay đòi hỏi
một khối lượng tính toán cỡ lớn (với máy tính mạnh nhất hiện
nay mất khoảng 3000 năm)
GV. Lê Đắc Nhường
Hàm cửa sập một phía
Hàm f(x) được gọi là hàm cửa sập một phía, nếu:
Tính y = f(x) là dễ,
Tính x = f-1(y) là rất khó
Nhưng có cửa sập z để tính x = fz-1(y) là dễ
2.3 Hàm một phía và hàm cửa sập một phía
GV. Lê Đắc Nhường
Ví dụ: n = pq là tích của hai số nguyên tố lớn,a là số
nguyên, hàm f(x)=xa(mod n) là hàm cửa sập một phía.
Nếu chỉ biết n và a thì tính x = f-1(y) là rất khó,
Nếu biết cửa sập, chẳng hạn hai thừa số của n,
thì sẽ tính được f-1(y) khá dễ
2.3 Hàm một phía và hàm cửa sập một phía