Tải bản đầy đủ (.pdf) (14 trang)

trình bày về hệ mã hoá rabin

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (270.35 KB, 14 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
ĐẠI HỌC CÔNG NGHỆ









BÀI TẬP LỚN
AN TOÀN VÀ BẢO MẬT DỮ LIỆU


Trình bày về hệ mã hoá Rabin












Giảng viên: PGS, TS. Trịnh Nhật Tiến
Học viên:
Trần Đại Long


Lớp: Cao học K10T3





Hà Nội 6/2005
Page of 14
1
Một đặc điểm quan trọng đáng mong muốn của bất kỳ lược đồ mã hoá nào là nó phải được
chứng minh là việc phá khoá khó tương đương với việc giải một bài toán nào đó đã biết, mà
người ta tin tưởng là rất khó, như việc phân tích ra thừa số hay giải bài toán logarit rời rạc.
Hệ mã hoá RSA, mặc dù được người ta tin là việc phá khoá khó tương đương với việc phân
tích ra thừa số module n, nhưng s
ự tương đương đó lại chưa được chứng minh. Hệ mã hoá
công khai Rabin là một ví dụ đầu tiên về một lược đồ khoá công khai đã được chứng minh về
tính an toàn. Khó khăn mà một người tấn công thụ động gặp phải khi giải mã là khó tương
đương về mặt tính toán với việc phân tích ra thừa số.


I. Sơ đồ hệ mã hoá Rabin

Sơ đồ hệ mật mã khóa công khai Rabin được cho bởi :
S = (P, C, K, E, D)
Trong đó:
- P = C = Zn, trong đó n là một số nguyên Blum, n = p.q, với p và q là 2 số
nguyên tố có tính chất p ≡ 3 mod 4, q ≡ 3 mod 4.

- K = {(K’, K”): K’ (khóa công khai) = (n, B), K” (khóa bí mật)
= (p, q), 0 <= B <= n-1}


- Các thuật toán E và D được xác định bởi:
E(K’, x) = y = x (x + B) mod n,


n
B
y
B
y mod
24
"D
2








−+ = ) ,Κ(

Trong một mạng truyền tin bảo mật với sơ đồ mật mã Rabin, mỗi người tham gia chọn
cho mình các yếu tố n, B, p, q để lập nên khoá công khai và khoá bí mật của mình.

Thuật toán giải mã d
K”
= D(K”, .):
Đặt C = B

2
/ 4 + y, ta có d
K”
(y) = n
B
C mod
2






− , do đó ta cần tính nC mod , tức cần
giải phương trình
Z
2
≡ C mod n. Theo định lý số dư Trung quốc thì phương trình đó
tương đương hệ hai phương trình sau đây:

Z
2
≡ C mod p

Z
2
≡ C mod q
(2)

Page of 14

2

Định lý Fermat: nếu p là số nguyên tố thì:
C
(p-1)
≡ 1 mod p
Theo tiêu chuẩn Euler: khi p là số nguyên tố thì số a là thặng dư bậc 2 mod p nếu và chỉ
nếu
a
(p-1)/2
≡ 1 mod p .

Vì p là số nguyên tố và C là thặng dư bậc 2 mod p nên ta có:
C
(p-1)/2
≡ 1 mod p
Tuơng tự, vì q là số nguyên tố và C là thặng dư bậc 2 mod q nên ta có:
C
(q-1)/2
≡ 1 mod q.
Do đó:
C
(p-1)/2+1
=

C
(p+1)/2
≡ C mod p
C
(q-1)/2+1

= C
(q+1)/2
≡ C mod q.
Theo giả thiết, p ≡ 3 mod 4 và q ≡
3 mod 4 nên (p+1)/4 và (q+1)/4 là các số nguyên, và ta
có:
(±C
(p+1)/4
)
2
≡ C mod p,
(±C
(q+1)/4
)
2
≡ C mod q
Do đó, phương trình Z
2
≡ C mod n, hay hệ phương trình (2) có 4 nghiệm theo mod n,
tương ứng với 4 hệ phương trình sau đây:

Z ≡
C
(p+1)/4
mod p

Z ≡ C
(q+1)/4
mod q
(1)


Z ≡
C
(p+1)/4
mod p

Z ≡ -C
(q+1)/4
mod q
(2)


Z ≡
-C
(p+1)/4
mod p

Z ≡ C
(q+1)/4
mod q
(3)

Z ≡
-C
(p+1)/4
mod p

Z ≡ -C
(q+1)/4
mod q

(4)


Cả 4 nghiệm của 4 hệ phương trình đó theo mod n đều được viết chung dưới 1 ký hiệu là
C mod n, vì vậy thuật toán giải mã d
K”
(y) thực tế sẽ cho ta 4 giá trị khác nhau theo mod n
mà bản rõ là 1 trong 4 giá trị đó. Việc chọn giá trị nào trong 4 giá trị tìm được làm bản rõ
tuỳ thuộc vào những đặc trưng khác của bản rõ mà người giải mã nhận biết.

A. Giải thuật tạo khoá cho hệ mã hoá Rabin:

Mỗi bên tạo 1 khoá công khai và 1 khoá bí mật tương ứng. Bên A phải làm các việc sau:
1.
Tạo 2 số ngẫu nhiên lớn và khác nhau p và q, p gần bằng q.
2.
Tính n = pq.
3.
Khoá công khai của A là n, khoá bí mật của A là (p, q).
Page of 14
3

B. Giải thuật mã hoá công khai Rabin:

Tóm tắt: B mã hoá 1 thông điệp m gửi cho A, dùng khoá công khai của A để mã hoá, A sẽ
giải mã bằng khoá bí mật tương ứng của mình.

1. Mã hoá:
B cần làm các việc sau:
a) Nhận khoá công khai đã được xác thực của A là n.

b)
Giả sử thông điệp là 1 số nguyên m trong khoảng [0, 1, …, n-1]
c)
Tính c = m
2
mod n
d)
Gửi bản mã hoá c cho A.

2. Giải mã:
A có khoá bí mật là p và q, với n= pq, để nhận được bản rõ m từ c, A phải làm các
việc sau:


a) Sử dụng giải thuật 3.44 để tìm 4 căn bậc 2 của c theo module n
là m
1
, m
2
, m
3
, m
4
.
b)
Bức thông điệp ban đầu có thể là m1, m2, m3, hoặc m4. Một đặc điểm nào đó sẽ
cho biết cái nào là bản rõ.

Nếu p và q được chọn để cả
p ≡ q ≡ 3 mod 4 thì thuật toán để tìm 4 căn bậc 2 của

c mod n có thể đơn giản như sau:
1.
Dùng thuật toán Euclide mở rộng tìm 2 số nguyên a và b thoả mãn:
ap + bq = 1.
2.
Tính r = c
(p+1)/4
mod p
3.
Tính s = c
(q+1)/4
mod q
4.
Tính x = (aps + bqr) mod n.
5.
Tính y = (aps - bqr) mod n.
6.
Bốn căn bậc 2 của c mod n là x, -x mod n, y và –y mod n.


C. Các giải thuật và định lý có liên quan đến việc tính toán

1. Giải thuật 3.44
:

Tìm căn bậc 2 modulo n biết các thừa số nguyên tố của nó là p và q.

Page of 14
4
Input: 1 số nguyên n, các thừa số nguyên tố p và q của nó (n = pq), và 1 số a ∈ Q

n
.
Output: 4 căn bậc 2 của a theo modulo n.
1.
Sử dụng giải thuật 3.39 ( hoặc giải thuật 3.36 hoặc 3.37, nếu có thể) để tìm 2
căn bậc 2 của a theo modulo p là r và –r
.
2.
Sử dụng giải thuật 3.39 ( hoặc giải thuật 3.36 hoặc 3.37, nếu có thể) để tìm 2
căn bậc 2 của a theo modulo q là s và –s
.
3.
Sử dụng giải thuật Euclidean mở rộng để tìm các số nguyên c và d thoả mãn:
cp + dq = 1.
4.
Đặt x = (rdq + scp) mod n và y = (rdq - scp) mod n.
5.
Trả về (±x mod n, ±y mod n).

Giải thuật 3.44 có độ phức tạp O((lg p)
3
) .
Giải thuật 3.44 cho thấy nếu n có thể bị phân tích thành các thừa số nguyên tố thì bài toán
tìm căn bậc 2 (SQROOT) là dễ. Chính xác hơn là SQROOT ≤ ρ FACTORING. Điều
ngược lại cũng đúng.

2. Định lý 3.46. SQROOT ≤ ρ FACTORING.

Nghĩa là bài toán FACTORING được đưa về bài toán SQROOT trong thời gian đa thức.
Do SQROOT ≤ ρ FACTORING nên bài toán SQROOT và bài toán FACTORING là

phức tạp tương đương nhau về mặt tính toán.

Chứng minh:

Giả sử
có 1 giải thuật thời gian đa thức A để giải bài toán
SQROOT. Giải thuật này có thể dùng để phân tích ra thừa số nguyên
tố 1 số nguyên n cho trước như sau:

1.
Chọn 1 số nguyên x ngẫu nhiên thoả mãn gcd(x, n) = 1. Tính a = x
2

mod n
.
2.
Chạy giải thuật A với input là a và n, tìm được căn bậc 2
của a mod n là y.
3.
Nếu y ≡ ±x mod n thì phép thử thất bại. Thủ tục trên được lặp lại
với 1 số x mới được chọn ngẫu nhiên.
Page of 14
5
4.
Ngược lại, nếu y ≢ ±x mod n thì gcd(x-y, n) được đảm bảo là 1 thừa
số không tầm thường của n (theo 3.18), gọi là p và q.
Vì a có 4 căn bậc 2 modulo n, (±x và ±z, với ±z
≢ ±x mod n), khả năng thành công của
mỗi lần thử là ½. Vì vậy số lần thử để tìm ra thừa số của n là 2. Vì vậy giải thuật chạy
trong thời gian đa thức.


3. Định lý 3.47. Nhấn mạnh 3.46.

Việc chứng minh ở mục 3.46 có thể dễ dàng sửa đổi để nhận được kết quả mạnh hơn sau
đây:
Gọi c
≥ 1 là 1 hằng số bất kỳ. Nếu có 1 giải thuật A mà, cho biết số n, có thể tìm căn bậc
2 modulo n trong thời gian đa thức với 1 tỷ lệ 1/ (lg n)
c
của tất cả các phần dư bậc 2 a ∈
Q
n
, thì giải thuật A có thể được dùng để phân tích ra thừa số số n trong thời gian đa thức.
Kết luận này cũng có nghĩa rằng nếu bài toán phân tích ra thừa số số n là khó thì với phần
lớn tất cả a ∈ Q
n
, bài toán tìm căn bậc 2 modulo n là khó.

Sự tương đương về mặt tính toán của bài toán SQROOT và FACTORING là cơ sở của
lược đồ chữ ký số và mã hoá công khai “được chứng minh an toàn” đầu tiên.

4. Định lý 3.18.

Gọi x, y và n là các số nguyên.
Nếu x
2
≡ y
2
mod n nhưng x ≢ ±y mod n
thì gcd(x – y, n) là 1 thừa số không tầm thường của n.

Phương pháp bình phương ngẫu nhiên cố gắng tìm các số nguyên x và y 1 cách ngẫu
nhiên mà x
2
≡ y
2
mod n. Như chỉ ra trong 3.19, khả năng 50% là x ≢ ±y mod n , do đó
gcd(x-y, n) sẽ sinh ra các thừa số không tầm thường của n.

5. Định lý 3.19.

Gọi n là 1 hợp số lẻ (n không phải là số nguyên tố) mà có thể chia hết bởi k số nguyên tố
lẻ khác nhau. Nếu a ∈ Z
*
n
thì nhóm đồng dư x
2
≡ a
2
mod n có chính xác 2
k
nghiệm mod
n, 2 trong số đó là x = a và x = -a.

3.20. Ví dụ:

Giả sử n = 35. Khi đó có 4 nghiệm với nhóm đồng dư x
2
≡ 4 mod 35 là x
1
= 2, x

2
= 12, x
3

= 23 và x
4
= 33.
Như vậy y
2
= 4 Æ y = 2.
gcd(x
1
- y, n) = gcd(2 – 2, 35) = gcd(0, 35) = 1
gcd(x
2
- y, n) = gcd(12 – 2, 35) = gcd(10, 35) = 5
gcd(x
3
- y, n) = gcd(23 – 2, 35) = gcd(21, 35) = 7
gcd(x
4
- y, n) = gcd(33 – 2, 35) = gcd(31, 35) = 1
Page of 14
6

Như vậy 35 đã được phân tích thành 2 thừa số 5 và 7.
Có 1 giải thuật để tìm 2 số x và y ngẫu nhiên thoả mãn x
2
≡ y
2

mod n.

6. Giải thuật 3.39

Tìm căn bậc 2 của số a theo modulo số nguyên tố p.

Input: 1 số nguyên tố lẻ p và 1 số nguyên a ∈ Q
p
.
Output: 2 căn bậc 2 của a modulo p.
1.
Chọn ngẫu nhiên b ∈ Z
p
cho đến khi b
2
– 4a là 1 số không dư bậc 4 modulo p
(a quadratic non-residue modulo p), nghĩa là
(b
2
– 4a) / p = -1
2.
Gọi f là 1 đa thức f = x
2
– bx + a trong Z
p
[x].
3.
Tính r = x
(p+1)/2
mod f (giải thuật 2.227) (r sẽ là 1 số nguyên).

4.
Trả lại (r, -r).

7. Giải thuật 3.36

Tìm căn bậc 2 modulo số nguyên tố p của số a trường hợp p ≡ 3 mod 4.

Input: 1 số nguyên tố lẻ p thoả p ≡ 3 mod 4 và 1 số nguyên a ∈ Q
p
.
Output: 2 căn bậc 2 của a theo modulo p.
1.
Tính r = a
(p+1)/4
mod p (giải thuật 2.143) (r sẽ là 1 số nguyên).
2.
Trả lại (r, -r).


8. Giải thuật 3.37

Tìm căn bậc 2 modulo số nguyên tố p của số a trường hợp p ≡ 5 mod 8.

Input: 1 số nguyên tố lẻ p thoả p ≡ 5 mod 8 và 1 số nguyên a ∈ Q
p
.
Output: 2 căn bậc 2 của a modulo p.
1.
Tính d = a
(p-1)/4

mod p (giải thuật 2.143) (r sẽ là 1 số nguyên).
2.
Nếu d = 1 thì tính r = a
(p+3)/8
mod p.
3.
Nếu d = p-1 thì tính r = 2a(4a)
(p-5)/8
mod p.
4.
Trả lại (r, -r).

Giải thuật 3.36 và 3.37 có thời gian chạy là O((lg p)
3
) thao tác bít.


9. Giải thuật 3.34
Page of 14
7

Tìm căn bậc 2 của số a theo modulo số nguyên tố p.

Input: 1 số nguyên tố lẻ p và 1 số nguyên a thoả 1 ≤ a ≤ p-1.
Output: 2 căn bậc 2 của a theo modulo p, với điều kiện a là số dư bậc 4 theo modulo p (a
is a quadratic residue modulo p).
1.
Tính giá trị Legendre (a/p) sử dụng giải thuật 2.149. Nếu (a/p) = -1 thì trở về và
kết thúc (a không có căn bậc 2 theo modulo p).
2.

Chọn 1 số nguyên b, 1 ≤ b ≤ p-1, ngẫu nhiên cho đến khi (b/p) = -1 (b là số không
dư bậc 4 modulo p) (b is a quadratic non-residue modulo p).
3.
Lặp lại phép chia cho 2, có p-1 = 2
s
t, trong đó t là 1 số lẻ.
4.
Tính a
-1
mod p bằng thuật toán Euclidean mở rộng.
5.
Đặt c = b
t
mod p và r = a
(t+1)/2
mod p (giải thuật 2.143).
6.
For i = 1 to s-1 do{
6.1
Tính d = r
2
. a
-1
)
t
mod p, với t = 2
s-i-1
.
6.2
Nếu d ≡ -1 mod p thì đặt r = r . c mod p.

6.3
Đặt c = c
2
mod p.
}
7.
Trả lại (r, -r).

Giải thuật 3.34 là 1 giải thuật ngẫu nhiên vì cách b là số không dư bậc 4 modulo p được
tìm ở bước 2. Người ta chưa tìm được giải thuật đơn định trong thời gian đa thức nào để
tìm b.

Giải thuật 3.34 có thời gian chạy là O((lg p)
4
) thao tác bít.


Page of 14
8
II. Các điểm đặc trưng của hệ mã hoá Rabin

1. Tính an toàn của hệ mã hoá Rabin

(i) Một người tấn công bị động cần phục hồi bản rõ m từ bản mã c. Đây chính là giải bài
toán căn bậc 2 ở mục 3.5.2. Vấn đề phân tích ra thừa số số n và tính căn bậc 2 theo
module n là tương đương về mặt tính toán.Vì vậy giả sử việc phân tích ra thừa số số n là
khó về mặt tính toán thì lược đồ mã hoá công khai Rabin được chứng minh là an toàn đối
với m
ột người tấn công bị động.


(ii) Trong khi được chứng minh là an toàn đối với một người tấn công bị động, lược đồ
mã hoá công khai Rabin lại không chống nổi một cuộc tấn công bản mã lựa chọn
(chosen-ciphertext) (xem Note 8.14(ii)). Một cuộc tấn công như vậy có thể mô tả như
sau: người tấn công chọn 1 số nguyên
m ∈ Z
*
n

và tính c = m
2
mod n. Người
tấn công sau đó đưa c đến máy giải mã của A, giải mã c và trả lại 1 bản rõ
y nào đó. Vì
A không biết m, và m được chọn ngẫu nhiên, bản rõ y không nhất thiết phải giống hệt m.
Với khả năng ½,
y ≢ ± m mod n, khi đó gcd(m-y, n) là một trong các thừa
số của n. Nếu y ≡ ±m mod n, người tấn công lại lặp lại với một số m mới.

(iii) Lược đồ mã hoá công khai Rabin dễ bị thương tổn bởi những cuộc tấn công tương tự
như với các trường hợp của hệ mã hoá RSA mô tả ở mục 8.2.2(ii). Giống như hệ RSA,
các cuộc tấn công (ii) và (iii) có thể bị thất bại bằng cách biến
đổi (salting) bản rõ, trong
khi các cuộc tấn công (v) có thể tránh được bằng cách thêm dư thừa dữ liệu trước khi mã
hoá.


2. Sử dụng dư thừa dữ liệu

(i) Một nhược điểm của hệ mã hoá công khai Rabin là người nhận phải có nhiệm vụ chọn
bản rõ đúng từ 4 khả năng. Sự nhầm lẫn trong việc giải mã có thể vượt qua một cách dễ

dàng bằng cách thêm dư thừa dữ liệu vào bản rõ gốc một cách xác định trước khi mã hoá.
(ví dụ: 64 bit cuối cùng của thông điệp có thể được lặp lại). Với khả năng cao, ch
ỉ 1 trong
4 căn bậc 2 của bản mã c là m1, m2, m3, m4 có được dư thừa đó. Người giải mã sẽ chọn
bản này làm bản rõ. Nếu không có căn bậc 2 nào của c có dư thừa này, người nhận sẽ từ
chối c, vì nó là giả mạo.
(ii) Nếu sử dụng dư thừa dữ liệu như trên, lược đồ Rabin sẽ không còn dễ bị thương tổn
bởi các cuộc tấn công bản mã lựa ch
ọn như nói ở trên. Nếu người tấn công chọn 1 thông
điệp m có dư thừa dữ liệu như yêu cầu và đưa
c = m
2
mod n vào máy giải mã của
A, khả năng rất cao là máy sẽ trả lại
bản rõ m cho người tấn công (vì 3 căn bậc 2 của
c kia sẽ có khả năng rất cao là không chứa dư thừa dữ liệu như yêu cầu), không đưa ra
thông tin mới nào. Mặt khác, nếu người tấn công chọn một thông điệp m mà không có dư
thừa dữ liệu cần thiết, khả năng cao là cả bốn căn bậc 2 của c mod n đều không có dư
Page of 14
9
thừa dữ liệu cần thiết. Trường hợp này máy giải mã sẽ thất bại việc giải mã c và không
trả lời người tấn công. Chú ý rằng việc chứng minh tính tương đương của việc phá khoá
lược đồ cải tiến này bởi một người tấn công thụ động với việc phân tích ra thừa số không
còn giá trị nữa. Tuy nhiên, nếu giả sử rằng việc giải mã Rabin gồm hai giai đ
oạn, giai
đoạn thứ nhất là tìm bốn căn bậc 2 của c mod n, và giai đoạn thứ hai là lựa chọn căn bậc
2 làm bản rõ thì vẫn chứng minh được tính tương đương. Vì vậy lược đồ mã hoá khoá
công khai Rabin, được sửa đổi một cách thích hợp bằng cách thêm dư thừa dữ liệu, là rất
được quan tâm ứng dụng.



3. Tính hiệu quả

Việc mã hoá Rabin là cực kỳ nhanh vì nó chỉ liên quan đến việc tính một bình phương
theo module duy nhất. Để so sánh, mã hoá của hệ RSA với e = 3 cần một phép nhân
module và một phép bình phương module. Giải mã Rabin chậm hơn mã hoá, nhưng có
thể sánh được với tốc độ giải mã của hệ RSA.
Page of 14
10
III. Ví dụ


1. Tạo khóa:

A chọn số nguyên tố
p = 331, q = 311 có p ≡ q ≡ 3 mod 4 và tính
n = pq = 102941.
Khóa công khai của A là
n = 102941, khoá bí mật của A là (p = 331, q =
311).


2. Mã hoá:

Giả sử
6 bít cuối cùng của thông điệp ban đầu cần phải được lặp lại trước khi mã hoá.
Để mã hoá thông điệp 10 bit
m = 633
(10)
= 1001111001

(2)
, B lặp lại 6 bit cuối
cùng của m để nhận được thông điệp 16 bit
m = 1001111001111001
Theo hệ 10 thì
m = 40569.
B sau đó tính:
c = m
2
mod n = 40569
2
mod 102941 = 23053
và gửi c cho A.


3. Giải mã:

1.
Dùng thuật toán Euclide mở rộng tìm 2 số nguyên a và b thoả mãn:
ap + bq = 1
Tìm được
a = 140, b = -149

2.
Tính r = c
(p+1)/4
mod p = 23053
(331+1)/4
mod 331 = 144
3.

Tính s = c
(q+1)/4
mod q = 23053
(311+1)/4
mod 311 = 139
4.
Tính x = (aps + bqr) mod n

x = (140*331*139 + -149*311*144) mod 102941 = -25674

5.
Tính y = (aps - bqr) mod n.

y = (140*331*139 - -149*311*144) mod 102941 = 40569
Page of 14
11

Bốn căn bậc 2 của c mod n là
x, -x mod n, y và –y mod n.


m1 = 25674
(10)
= 644A
(H)
= 0110010001001010
(2)

m2 = 77267
(10)

=2DD3
(H)
= 0010110111010011
(2)

m3 = 40569
(10)
= 9E79
(H)
= 1001111001111001
(2)

m4 = 62372
(10)
= F3A4
(H)
= 1111001110100100
(2)


Vì chỉ có
m3 có dư thừa dữ liệu yêu cầu, A giải mã c thành m3 (bỏ 6 bit lặp cuối
cùng) và phục hồi bản rõ ban đầu là
m = 1001111001
(2)
= 633
(10)




IV. Chương trình

Page of 14
12

Page of 14
13
Tài liệu tham khảo


1.
GS.TS Phan Đình Diệu: Lý thuyết mật mã & An toàn thông tin - Đại học Công
nghệ - Đại học quốc gia Hà Nội.
2.
PGS.TS Trịnh Nhật Tiến: Các bài giảng về An toàn và bảo mật dữ liệu - Lớp Cao
học K10T3 - Đại học Công nghệ - Đại học quốc gia Hà Nội.
3.
Handbook of Applied Cryptography by A. Menezes, P. van Oorschot and S.
Vanstone

×