CHƯƠNG 3 MỘT SỐ THUẬT TOÁN
Tính căn bậc hai trong Zp


Thuật toán tìm căn bậc hai modulo số nguyên tố p
–
–

VÀO: số nguyên tố lẻ p và số nguyên a, 1 ≤ a ≤ p – 1
RA: hai căn bậc hai của a modulo p, giả thiết rằng a là thặng dư
bình phương modulo p.
a

 a

Tính kí hiệu Legendre  p . Nếu   = − 1 thì trả về “a không có căn bậc
 
 p
 
 
hai modulo p) và dừng
 Chọn ngẫu nhiên b, 1 ≤ b ≤ p – 1 cho đến khi tìm được b với  b  = − 1 (b
 
 p
 
là không thặng dư bình phương modulo p)
 Bằng cách chia liên tiếp cho 2, viết p – 1 = 2st với t lẻ
 Tính a-1 mod p bằng thuật toán Ơcơlit mở rộng
 c ← bt mod p và r ← a(t+1)/2 mod p

Tính căn bậc hai trong Zp
 For
–
–
–

i from 1 to s – 1 do
2

−1 2 s −i −1

mod p
Tính d = ( r .a )
If d ≡ -1 (mod p) then r ← r.c mod p
Set c ← c2 mod p

 Return

(r, -r)
Tính căn bậc hai trong Zp


Thuật toán tính căn bậc hai modulo p khi p ≡ 3 (mod 4)
– VÀO: số nguyên tố lẻ p với p ≡ 3 (mod 4) và a ∈ Qp
–

RA: hai căn bậc hai của a mod p
 Tính

r = a(p+1)/4 mod p
 Trả về (r, - r)
Tính căn bậc hai trong Zp


Thuật toán tính căn bậc hai modulo p khi p ≡ 5 (mod 8)
– VÀO: số nguyên tố lẻ p với p ≡ 5 (mod 8) và a ∈ Qp
–

RA: hai căn bậc hai của a mod p
 Tính

d = a(p+1)/4 mod p
 If d = 1 then r = a(p+3)/8 mod p
 If d = -1 then r = 2a(4a) (p-5)/8 mod p
 Return (r, - r)
Tính căn bậc hai trong Zp


Thuật toán tính căn bậc hai modulo n, với n là hợp số
–

VÀO: số nguyên n, các nhân tử nguyên tố của nó p và q, a ∈ Qn

–

RA: bốn căn bậc hai của a mod n
Tìm căn bậc hai của a modulo p là r và –r (theo thuật toán ở trên)
 Tìm hai căn bậc hai của a modulo q là s và –s
 Sử dụng thuật toán Ơcơlit mở rộng để tìm các số nguyên c và d sao cho
cp+dq = 1
 x ← (rdq + scp) mod n và y ← (rdq - scp) mod n
 Return (±x mod n, ±y mod n)

Tính căn bậc hai trong Zp


Ví dụ áp dụng:
–
–
–
–

Trong hệ mật Rabin, giả sử p = 199, q = 211.
Xác định 4 căn bậc hai của 1 mod n, trong đó n = p.q.
Tính bản mã của 32767.
Xác định 4 bản giải mã có thể của bản mã trên

MATMA - Chuong3 thuat toan

  • 1.
    CHƯƠNG 3 MỘTSỐ THUẬT TOÁN
  • 2.
    Tính căn bậchai trong Zp  Thuật toán tìm căn bậc hai modulo số nguyên tố p – – VÀO: số nguyên tố lẻ p và số nguyên a, 1 ≤ a ≤ p – 1 RA: hai căn bậc hai của a modulo p, giả thiết rằng a là thặng dư bình phương modulo p. a  a Tính kí hiệu Legendre  p . Nếu   = − 1 thì trả về “a không có căn bậc    p     hai modulo p) và dừng  Chọn ngẫu nhiên b, 1 ≤ b ≤ p – 1 cho đến khi tìm được b với  b  = − 1 (b    p   là không thặng dư bình phương modulo p)  Bằng cách chia liên tiếp cho 2, viết p – 1 = 2st với t lẻ  Tính a-1 mod p bằng thuật toán Ơcơlit mở rộng  c ← bt mod p và r ← a(t+1)/2 mod p 
  • 3.
    Tính căn bậchai trong Zp  For – – – i from 1 to s – 1 do 2 −1 2 s −i −1 mod p Tính d = ( r .a ) If d ≡ -1 (mod p) then r ← r.c mod p Set c ← c2 mod p  Return (r, -r)
  • 4.
    Tính căn bậchai trong Zp  Thuật toán tính căn bậc hai modulo p khi p ≡ 3 (mod 4) – VÀO: số nguyên tố lẻ p với p ≡ 3 (mod 4) và a ∈ Qp – RA: hai căn bậc hai của a mod p  Tính r = a(p+1)/4 mod p  Trả về (r, - r)
  • 5.
    Tính căn bậchai trong Zp  Thuật toán tính căn bậc hai modulo p khi p ≡ 5 (mod 8) – VÀO: số nguyên tố lẻ p với p ≡ 5 (mod 8) và a ∈ Qp – RA: hai căn bậc hai của a mod p  Tính d = a(p+1)/4 mod p  If d = 1 then r = a(p+3)/8 mod p  If d = -1 then r = 2a(4a) (p-5)/8 mod p  Return (r, - r)
  • 6.
    Tính căn bậchai trong Zp  Thuật toán tính căn bậc hai modulo n, với n là hợp số – VÀO: số nguyên n, các nhân tử nguyên tố của nó p và q, a ∈ Qn – RA: bốn căn bậc hai của a mod n Tìm căn bậc hai của a modulo p là r và –r (theo thuật toán ở trên)  Tìm hai căn bậc hai của a modulo q là s và –s  Sử dụng thuật toán Ơcơlit mở rộng để tìm các số nguyên c và d sao cho cp+dq = 1  x ← (rdq + scp) mod n và y ← (rdq - scp) mod n  Return (±x mod n, ±y mod n) 
  • 7.
    Tính căn bậchai trong Zp  Ví dụ áp dụng: – – – – Trong hệ mật Rabin, giả sử p = 199, q = 211. Xác định 4 căn bậc hai của 1 mod n, trong đó n = p.q. Tính bản mã của 32767. Xác định 4 bản giải mã có thể của bản mã trên