Một số hệ PKC khác Rabin

Một phần của tài liệu Giáo trình an toàn bảo mật thông tin TS nguyễn khanh văn (đh bách khoa hà nội) (Trang 54)

Rabin

Hệ Rabin cũng xây dựng trên việc lấy n=pq làm bí mật. N được coi là khoá công khai (PK) còn (p,q)là khoá bí mật (SK).

Mã hoá là việc thực hiện:

Y=X2(mod n) còn giải mã là việc tính căn bậc hai:

X= (mod n) (*)

Có thể thấy, nếu biết n=pq thì dễ dàng tìm được nghiệm cho phương trình này, còn nếu

không thì việc tìm nghiệm là khó tương đương với bài toán PTTSNT số n.

Khi biết N=pqthì (*) được giải ra có bốn nghiệm2, do đó để xác định được đâu là bản rõ gốcphải có mẹo để chọn được đúng giá trị cần thiếttrong số 4 nghiệm đó

Hệ Rabin có một số ưu điểm so với RSA:

+ Tính an toàn được chứng minh hoàn toàn tương đương với bài toán PTTSNT, nói cách khác tính ATBM của Rabin là có thể chứng minh được (provable)

+ Ngoại trừ trường hợp RSA hoạt động với enhỏ còn thuật toán sinh mã của Rabin nhanh hơn nhiều so với RSA là hệ đòi hỏi phải tính luỹ thừa. Thời gian giải mã thì tương đương

nhau

Nhược điểm: Vì phương trình giải mã cho 4 nghiệm nên làm khó dễ việc giải mã. Thông

thường, bản rõtrước khi được mã hoá cần được nối thêm vào đuôi một chuỗi số xác định để làm dấu vết nhận dạng (chẳng hạn nối thêm 20 số 0 –như vậy trong số 4 nghiệm giảira, chuỗi nào tận cùng bằng 20 con 0 thì đúng là bản rõ cần nhận).

Vì lý do này nên Rabin thường được dùng chủ yếu cho chứng thực (chữ ký điện tử).

El-Gamal

Tạo khoá: Alice chọn một số nguyên tố p và hai số nguyên ngẫu nhiên g và u, cả hai đều

nhỏ hơn p. Sau đó tính

y =gu(mod p)

Bây giờ khóa công khai của Alice được lấy là (p,g,y), khoá mật là u. Sinh mã:

1. Nếu Bob muốn mã hoá một tin Xđể truyền cho Alice thì trước hết anh ta chọn một số

ngẫu nhiên ksao cho (k,p-1) =1 2. Tính

a=gk (mod p) b=ykX (mod p)

Mã là Y=(a,b)và có độ dài gấp đôi bản rõ.

Giải mã: Alice nhận được Y= (a,b) và giải ra X theo công thức sau:

(mod p)

Ví dụ 3.9: p=11, g=3, u=6. Thế thì y=36=3 (mod 11). Khoá công khai là (p,g,y)=(11,3,3) còn khoá bí mật là u=6.

Để mã hoá cho tin X=6, Bob chọn ngẫu nhiên k=7 và tính

a=37=9(mod 11), b=376 = 10 (mod 11) Mã là (a,b) = (9,10)

Bây giờ Alice nhận được (a,b) sẽ giải mã như sau

X = b/(au) = 10/(97) = 10 5 =6 (mod 11)

BÀI TẬP CHƯƠNG

1. Hãy hoàn thiện nốt một chứng minh tính đúng đắn của thuật toán GCD với phần

bắt đầu như sau:

Chú ý rằng tại mỗi bước lặp thứ ita có thể biểu diễn các giá trị hiện thời như sau (chỉ số i

viết trên là chỉ giá trị tại bước lặp thứ i)

1 = 1× 1 1× 2

2 = 2× 1 2× 2

Lấy đẳng thức trên trừ đi q lần đẳng thức dưới, trong đó q là thương số của phép chia giá

trị hiện thời (vòng lặp i) của n1và n2, ta được:

2+1= 1− ( )× 2Chú ý rằng: 1+1= 2 Chú ý rằng: 1+1= 2 Từ đó sẽ suy ra: 2+1= 1− ( )× 2 … u a b X

2. Chọnmột số ngẫu nhiên M trong khoảng từ 5 đến 20. Thực hiện các công việc

sau:

a) Bạn hãy xây dựng một vector siêu tăng có 5thành phần trong đó có một thành phần có

giá trị đúng bằng M của bạn và thành phần cuối cùng là 60. Hãy cho xem các phép

tính để kiểm tra tính siêu tăng.

b) Dựa trên vector này bạn hãy xây dựng một hệ khoá công khai theo phương pháp của

Merkle-Hellman (nguyên tắc từ bài toán đóng thùng). Hãy sử dụng thuật toán GCD mở

rộng để tính giá trị nghịch đảo đồng dư.

c) Viết Mcủabạn dưới dạng nhị phân và gọi Xlà giá trị5 bit cuối cùng. Bạn hãy sử dụng

hệ khóa công khai vừa xây dựng ở trên để tính mã Ytừ X.

d) Với giá trị Ytìm được ở câu trên, hãy cho biết cách giải mã để thu được tin Xban đầu.

3. Cho p=11, q=17 trong hệ RSA. Chọn một số ngẫu nhiên Mtrong khoảng từ 5 đến

20. Hãy thực hiện các công việc sau:

a) Xây dựngkhoá công khai và bí mật của hệ(chú ý áp dụng thuật toán GCD mở rộng).

b) Tính MÃ của tin M

c) Nếu sử dụng hệ này để làm chữ ký, xác định chữký cho M nói trên (chú ý dùng giải

thuật nhạnh để tính lũy thừa đồng dư).

d) Nếu muốn gửi một thông báo M vừa có đảm bảo xác thực vừa có tính mật, cần thực

hiện cụ thể thế nào?

4. Hãy lập luận chứng minh cụ thể là bài toán đóng thùng với một vector mang là siêu

tăng sẽ luôn là dễ nếu có nghiệm

5. Biết rằnghàm (n) có nhân tính, có nghĩa là (m*n) = (m) * (n) với mọi mvà n nguyên mà gcd(m,n)=1. Hãy chứng minh rằng (n)= (p-1)* (q-1)khi n= p*qvới p, qlà số nguyên tố

Một phần của tài liệu Giáo trình an toàn bảo mật thông tin TS nguyễn khanh văn (đh bách khoa hà nội) (Trang 54)

Tải bản đầy đủ (PDF)

(56 trang)