Thắc mắc về Hệ mã RSA
Trong hệ mã RSA
Các bước Sinh Khóa:
B1: Chọn p,q nguyên tố,đủ lớn,tương đồng
B2: Tính n = pq ; m = (p-1)(q-1)
B3: Chọn e: 1<e<m , UCLN(e,m) = 1
B4: Tính d : de đồng dư 1 (mod n)
=> Khóa công khai là cặp (e,m)
Khóa bí mật là cặp <p,q,d>
B5: Bẻ X (thông tin cần mã hóa) thành các đoạn u-bit thỏa mãn: 2^u < n < 2^(u+1)
B6: Giả sử X là u bit cho đơn giản.Tính Y = (X^e) mod n
Cho em hỏi:
1.Tại sao p,q phải nguyên tố, đủ lớn, tương đồng ?
2.Vai trò của m là gì? ( thấy nó là khóa công khai mà ko tham gia vào sinh khóa )
3. Tại sao khi biết đc p,q thì tính được d.=> Bí mật p,q là đủ, Vậy tại sao phải bí mật d?
4.Tại sao phải bẻ X thành các đoạn u bit thỏa mãn đk trên ?
Cái “bẻ bit” này thực ra không phải dùng như vậy đâu bạn. Tìm hiểu OAEP nhé.
Ba câu này thuộc về toán học, chỉ cần bạn học Số học nhập môn khoảng 6-7 tuần thì có thể tự trả lời.
Thực ra nên dùng hàm Carmichael BCNN(p-1, q-1) thì đúng hơn.
Định lí Bezout: Hai số nguyên dương có ước chung lớn nhất chia hết m khi và chỉ khi phương trình ax + by = m có nghiệm. Nghĩa là khi tồn tại x, y nguyên sao cho ax + by = 1 thì gcd(a, b) = 1 và ngược lại. Áp dụng well-ordering và tính chất đóng của + trên tập {d \ d = ax + by > 0; x, y ∈ Z} để c/m.
Tại sao RSA cơ bản là như vậy
Tất cả nằm ở phương trình
M^(ed) = M (mod n)
. Vậy tích ed phải bằng 1 với modulo nào đó, mà ai học sơ sơ đại số cũng biết 1 là phần tử trung hòa của nhóm nhân, nhưng nhóm nào?Đặt S = {x ∈ N \ x < n && gcd(x, n) = 1}. Ta nói rằng phép nhân * mod n là đóng trên tập S, vì theo Bezout, với mỗi hai số a, b ∈ S ta có ngay ax + ny = 1 và bx’ + ny’ = 1. Nhân lại: ab(xx’) + nybx’ + ny’ax + n^2yy’ = 1
<=> ab(xx’) + n(ybx’ + y’ax + nyy’) = 1. Vậy là đủ
Cũng do Bezout nên mỗi phần tử trong S đều có phần tử nghịch đảo (ax + ny = 1, nếu m | x và m | n thì m | 1, vậy m phải bằng 1, huề vốn). Vậy (S, *) đầy đủ các tính chất của một nhóm nhân.
Tính duy nhất. Không mất tính tổng quát chọn m bất kì thuộc S, dễ thấy rằng các tích mr với r ∈ S đều đôi một khác nhau, vì
m*r = m*r' (mod n) <=> m(r - r') = 0 (mod n) <=> r = r'
(do tính chất của S). Vậym^|S| * pi(r ∈ S) (r) = pi(r ∈ S) (r) (mod n)
(do tính chất đóng), haym^|S| = 1 (mod n)
.Thay |S| = phi(n) = (p-1)(q-1), vậy M^[(p-1)(q-1)] = 1, hay M^[k(p-1)(q-1)+1] = M. Vậy là giải thích xong một tính chất của nhóm nhân mod n.
Đừng nhầm với 1, g, g^2, g^3, … là thuật toán khác
Vậy có thể trả lời:
Để theo dõi thì phải đi từ ước cho tới phần số nguyên tố, mấy bài đầu thôi.
Tính chất đóng có thể chứng minh ntn: Ta có
m*gcd(u, v) = gcd(mu, mv)
(sử dụng đnghĩa), nên có thể viết:gcd(ab, n) = gcd(ab, n*gcd(a, 1)) = gcd(ab, gcd(an, n)) = gcd(ab, an, n) = gcd(a*gcd(b, n), n) = gcd(a, n) = 1
. (SO: https://math.stackexchange.com/a/20904)Tại sao cần 2 số nguyên tố ?
Vì một số là tích của 2 số nguyên tố thì chỉ được tạo ra bởi đúng 2 số đó: ví dụ : 35 = 7.5 và không có cặp số nào khác thỏa mãn(nguyên). Nhưng 40 thì sao ?? 40 = 10.4 = 5.8 = 20 . 2, bản chất của mã hóa RSA là tạo một cặp private key duy nhất, và dùng nó để sinh pubic key. Dữ liệu sau khi mã hóa CHỈ CÓ THỂ giải mã bằng private key, nên cặp số đó cần duy nhất để đảm bảo an toàn.
Thứ 2, tại sao cần một cặp số nguyên tố đủ lớn ?