You are on page 1of 40

An toàn thông tin

Information Sercurity

CHƯƠNG 2

CƠ SỞ TOÁN HỌC CỦA LÝ THUYẾT MẬT MÃ

Lê Đắc Nhường
Khoa Toán Tin - Trường Đại học Hải Phòng
E-mail: Nhuongld@yahoo.com
Cell Phone: 0987.394.900

GV.
GV. Lê
Lê Đắc
Đắc Nhường
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.
GV. Lê
Lê Đắc
Đắc Nhường
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 ab(mod m) nếu m chia hết cho b-a.
 Mệnh đề ab(mod m) được gọi là “a đồng dư với b theo mođun m”.

GV.
GV. Lê
Lê Đắc
Đắc Nhường
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 = q2m + r2
trong đó 0r1m-1 và 0r2m-1.
 Khi đó có thể dễ dàng thấy rằng:

a  b(mod m) khi và chỉ khi r1 = r2

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.1 Khái niệm đồng dư modulo

 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: ab(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.

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.1 Khái niệm đồng dư modulo

 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

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.1 Khái niệm đồng dư modulo

 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

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.2 Định nghĩa số học modulo

 Đị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.

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.2 Định nghĩa số học modulo

 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

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.2 Định nghĩa số học modulo

 Đị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 bZm 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 ax0 (mod m) sẽ có ít nhất hai nghiệm
phân biệt trong Zm là x = 0 và x = m/d.

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.2 Định nghĩa số học modulo

 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

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.3 Phần tử nghịch đảo

 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-1a1 (mod m)

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.3 Phần tử nghịch đảo

 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.

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.3 Phần tử nghịch đảo

 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

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.3 Phần tử nghịch đảo

 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

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.3 Phần tử nghịch đảo

 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

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.3 Phần tử nghịch đảo – Thuật toán Euclide mở rộng

 Bước 1: Xây dựng bảng (gồm 6 cột) như sau:

Dòng r0 r1 r2 q t0 t1

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
0 n a 0 1

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.3 Phần tử nghịch đảo – Thuật toán Euclide mở rộ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

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.3 Phần tử nghịch đảo – Thuật toán Euclide mở rộ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-XZ
mod n

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.3 Phần tử nghịch đảo – Thuật toán Euclide mở rộ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 6
Dòng R0 r1 r2 q t0 t1
… … … … … … …
i r1= 1? r2 = 0?

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.3 Phần tử nghịch đảo – Thuật toán Euclide mở rộ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

GV.
GV. Lê
Lê Đắc
Đắc Nhường
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.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.3 Phần tử nghịch đảo – Thuật toán Euclide mở rộng

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.3 Phần tử nghịch đảo – Thuật toán Euclide mở rộng

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.4 Khái niệm nhóm

 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 eG: x*e=e*x=x với mọi xG


Với mọi xG, có phần tử nghịch đảo x’G: x*x’=x’*x=e

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.4 Khái niệm nhóm

 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ử gG mà mọi phần
tử aG đều tồn tại số nN để 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.

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.4 Khái niệm nhóm

 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*={eZn, 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.

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.5 Bài toán Logarit rời rạc

 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

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.1.5 Bài toán Logarit rời rạc

 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)

GV.
GV. Lê
Lê Đắc
Đắc Nhường
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.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.2 Lý thuyết về độ phức tạp tính toán

 Phân loại bài toán

Bài toán chưa


có lời giải

Các Bài Bài toán không


toán giải được Bài toán “dễ“
giải

Bài toán đã có Bài toán giải Bài toán “khó”


lời giải được giải

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.2 Lý thuyết về độ phức tạp tính toán

 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ú.

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.2 Lý thuyết về độ phức tạp tính toán

 Độ 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) đó

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.2 Lý thuyết về độ phức tạp tính toán

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.

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.2 Lý thuyết về độ phức tạp tính toán

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ỏ.

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.2 Lý thuyết về độ phức tạp tính toán

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ó

GV.
GV. Lê
Lê Đắc
Đắc Nhường
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.
GV. Lê
Lê Đắc
Đắc Nhường
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.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.3 Hàm một phía và hàm cửa sập một phía

 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ễ

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường
2.3 Hàm một phía và hàm cửa sập một phía

 Ví dụ: n = pq 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ễ

GV.
GV. Lê
Lê Đắc
Đắc Nhường
Nhường

You might also like