Dựa trên các tấn công đối với lược đồ chữ ký số ECDSA, NCS chỉ ra rằng có thể tìm được các khóa bí mật trong lược đồ chữ ký số kiểu EC- Schnorr (bao gồm cả EC-Schnorr và EC-Schnorr-M) một cách dễ dàng khi chúng tương đối nhỏ hoặc tương đối lớn (so với cấp của nhóm). Các tấn công khả thi đối với lược đồ chữ ký số kiểu EC-Schnorr với tham số cỡ 256 bit đã được NCS cài đặt thực nghiệm.
Trước tiên, NCS nhắc lại Bổ đề Howgrave-Graham. Bổ đề này cho ta biết điều kiện khi nào một nghiệm của đa thức trên vành modulo cũng là một nghiệm thực sự trên vành các số nguyên. Xét một đa thức ℎ(𝑥, 𝑦) = ∑ ℎ𝑖,𝑗 𝑖,𝑗𝑥𝑖𝑦𝑗 ∈ ℝ[𝑥, 𝑦], chuẩn của đa thức ℎ(𝑥, 𝑦) được định nghĩa là ‖ℎ(𝑥, 𝑦)‖ ≔ √∑ ℎ𝑖,𝑗 𝑖,𝑗2 .
Bổ đề 3.13 [18] (Howgrave-Graham). Cho đa thức ℎ(𝑥, 𝑦) ∈ ℝ[𝑥, 𝑦] là tổng của 𝑛 đơn thức. Giả sử tồn tại các số nguyên 𝑥0, 𝑦0 sao cho |𝑥0| < 𝑋, |𝑦0| < 𝑌 với X, Y là các số nguyên dương nào đó. Khi đó, nếu ℎ(𝑥0, 𝑦0) = 0 𝑚𝑜𝑑 𝑞
và ‖ℎ(𝑥𝑋, 𝑦𝑌)‖ < 𝑞/√𝑛, thì ℎ(𝑥0, 𝑦0) = 0 trên vành số nguyên.
Định nghĩa 3.14: Cho 𝑥 là số nguyên dương bất kỳ thuộc {1, . . . , 𝑞 − 1}, ta định nghĩa 𝑥̅ = 𝑥 nếu 𝑥 ≤ 𝑞/2 và 𝑥̅ = 𝑥 − 𝑞 nếu 𝑥 > 𝑞/2 . Để đơn giản ta viết 𝑥̅̅̅̅̅−1 thay cho 𝑥̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅−1(𝑚𝑜𝑑 q).
Tấn công kiểu Blake lên lược đồ chữ ký số EC-Schnorr
Dựa trên tấn công của Blake [30] đưa ra đối với DSA và ECDSA, NCS đưa ra tấn công có thể tìm được khóa bí mật 𝑎 và 𝑘 thông qua việc giải phương trình đồng dư sau đây trong lược đồ EC-Schnorr:
𝑠 = (𝑘 − 𝑎𝑟) mod 𝑞 (3.6) Dựa trên kết quả trong [30], ta có khẳng định sau.
Mệnh đề 3.15. Đối với lược đồ chữ ký số EC-Schnorr, giả sử tồn tại các số
nguyên dương 𝑋, 𝑌 sao cho |𝑘̅| < 𝑋, |𝑎̅| < 𝑌 và 𝑋𝑌 < 𝑞/6√6. Cho L là một lưới được căng bởi các véctơ (𝑞, 0,0), (0, 𝑞𝑋, 0), (𝐵, 𝐴𝑋, 𝑌), trong đó 𝐴 = −𝑟−1𝑚𝑜𝑑 𝑞, 𝐵 = 𝑠𝑟−1𝑚𝑜𝑑 𝑞 . Khi đó, nếu véctơ ngắn nhất trong cơ sở LLL-rút gọn của L có độ dài lớn hơn 3√2𝑋𝑌 thì ta có thể tìm được khóa bí mật dài hạn a trong thời gian đa thức.
Chứng minh: Nhân hai vế của (3.6) với 𝑟−1 ta được 𝑎 − 𝑟−1𝑘 + 𝑠𝑟−1 = 0 mod 𝑞. Đặt 𝐴 = −𝑟−1 mod 𝑞 và 𝐵 = 𝑠𝑟−1 mod 𝑞. Khi đó, cặp (𝑘̅, 𝑎̅) là nghiệm của phương trình đồng dư 𝑓(𝑥, 𝑦) = 𝑦 + 𝐴𝑥 + 𝐵 = 0 mod 𝑞. Thật vậy:
Nếu 𝑎, 𝑘 ≤ 𝑞 2 thì 𝑓(𝑘̅, 𝑎̅) = 𝑓(𝑘, 𝑎). Nếu 𝑎, 𝑘 > 𝑞 2, khi đó ta có: 𝑓(𝑘̅, 𝑎̅) = 𝑎 − 𝑞 + 𝐴(𝑘 − 𝑞) + 𝐵 = 𝑎 + 𝐴𝑘 + 𝐵 − 𝑞 − 𝐴𝑞 = 𝑎 + 𝐴𝑘 + 𝐵 = 0 𝑚𝑜𝑑 𝑞. Tương tự, cho các trường hợp (𝑎 > 𝑞
2, 𝑘 ≤𝑞 2) hoặc (𝑎 ≤ 𝑞 2, 𝑘 >𝑞 2). Xét các đa thức 𝑓1(𝑥, 𝑦) = 𝑞, 𝑓2(𝑥, 𝑦) = 𝑞𝑥 và 𝑓3(𝑥, 𝑦) = 𝑓(𝑥, 𝑦). Dễ thấy rằng: 𝑓𝑖(𝑘̅, 𝑎̅) = 0 mod 𝑞 (với 𝑖 = 1,2,3).
Ta xây dựng lưới 𝐿 được căng bởi các véctơ hàng của ma trận 𝐼 được định nghĩa như sau (các hàng của ma trận 𝐼 lần lượt là hệ số của đa thức 𝑓1(𝑥𝑋, 𝑦𝑌) = 𝑞, 𝑓2(𝑥𝑋, 𝑦𝑌) = 𝑞𝑋𝑥 và 𝑓3(𝑥𝑋, 𝑦𝑌) = 𝑌𝑦 + 𝐴𝑋𝑥 + 𝐵. 𝐼 = ( 𝑞 0 0 0 𝑞𝑋 0 𝐵 𝐴𝑋 𝑌 )
Do các hàng của 𝐼 là ℝ-độc lập tuyến tính nên lưới 𝐿 có số chiều là 𝑛 = 3. Áp dụng thuật toán rút gọn lưới LLL ta thu được một cơ sở mới 𝑏1 = (𝐶0, 𝐶1, 𝐶2), 𝑏2 = (𝐶3, 𝐶4, 𝐶5) và 𝑏3 = (𝐶6, 𝐶7, 𝐶8). ( 𝑞 0 0 0 𝑞𝑋 0 𝐵 𝐴𝑋 𝑌 )𝐿𝐿𝐿→ ( 𝐶0 𝐶1 𝐶2 𝐶3 𝐶4 𝐶5 𝐶6 𝐶7 𝐶8 )
Theo định nghĩa, ta có định thức của lưới: det(𝐿) = |det(𝐼)| = 𝑞2𝑋𝑌. Đặt 𝛾0 = 𝐶0, 𝛾1 = 𝐶1 𝑋 , 𝛾2 =𝐶2 𝑌 , 𝛾3 = 𝐶3, 𝛾4 =𝐶4 𝑋 và 𝛾5 = 𝐶5 𝑌. Khi đó, ta có: 𝑏1 = (𝛾0, 𝛾1𝑋, 𝛾2𝑌), 𝑏2 = (𝛾3, 𝛾4𝑋, 𝛾5𝑌). Tiếp theo ta đặt 𝑔1(𝑥, 𝑦) = 𝛾0+ 𝛾1𝑥 + 𝛾2𝑦 và 𝑔2(𝑥, 𝑦) = 𝛾3+ 𝛾4𝑥 + 𝛾5𝑦. Do 𝑔1(𝑥𝑋, 𝑦𝑌) và 𝑔2(𝑥𝑋, 𝑦𝑌) là các tổ hợp tuyến tính nguyên của 𝑓𝑖(𝑥𝑋, 𝑦𝑌) (với 𝑖 = 1,2,3) nên các đa thức 𝑔1(𝑥, 𝑦) và 𝑔2(𝑥, 𝑦) nhận (𝑘̅, 𝑎̅) là nghiệm theo modulo 𝑞. Do đó, các đa thức 𝑔1(𝑥, 𝑦), 𝑔2(𝑥, 𝑦) thỏa mãn điều kiện thứ nhất của Bổ đề 3.13, tức là:
𝑔1(𝑘̅, 𝑎̅) = 0 mod 𝑞 và 𝑔2(𝑘̅, 𝑎̅) = 0 mod 𝑞 (3.7) Hơn nữa, ta có𝑏1 = ‖𝑔1(𝑥𝑋, 𝑦𝑌)‖. Do đó, theo Mệnh đề 3.4, ta có:
‖𝑏1‖ < 23−14 (det(𝐿))13 = √2(𝑞2𝑋𝑌)13. Mặt khác, theo giả thiết, ta có 𝑋𝑌 < 𝑞
6√6. Suy ra ‖𝑔1(𝑥𝑋, 𝑦𝑌)‖ < 𝑞
√3 (3.8) Theo Bổ đề 3.13 và từ (3.7), (3.8), ta suy ra 𝑔1(𝑘̅, 𝑎̅) = 0 trên vành số nguyên. Tương tự, ta có ‖𝑏2‖ = ‖𝑔2(𝑥𝑋, 𝑦𝑌)‖. Cũng theo Mệnh đề 3.4, ta có:
‖𝑏2‖ ≤ 214(det(𝐿) ‖𝑏1‖ )
1 2
. Theo giả thiết, ta có ‖𝑏1‖ > 3√2𝑋𝑌. Suy ra:
‖𝑏2‖ ≤ 214(det(𝐿) ‖𝑏1‖ ) 1 2 < 214( 𝑞2𝑋𝑌 3√2𝑋𝑌) 1 2 = 𝑞 √3 .
Khi đó, ta suy ra 𝑔2(𝑘̅, 𝑎̅) = 0 trên vành số nguyên. Tiếp theo, ta giải hệ 2 phương trình 2 ẩn 𝑔1(𝑥, 𝑦) = 0 và 𝑔2(𝑥, 𝑦) = 0. Khi đó, nếu tồn tại 𝑦 sao cho 𝑦𝑃 = 𝑄 thì 𝑎̅ = 𝑦̅ .Từ 𝑎̅ ta có thể tìm được khóa bí mật dài hạn 𝑎.■ Từ Mệnh đề 3.15, ta xây dựng thuật toán tìm khóa bí mật dài hạn của lược đồ chữ ký số EC-Schnorr như sau:
Đầu vào: Các giá trị (𝑟, 𝑠) của lược đồ chữ ký số EC-Schnorr.
Đầu ra: Khóa bí mật dài hạn 𝑎 hoặc tấn công không thực hiện được.
Bước 1: Tính 𝐴 = −𝑟−1mod 𝑞 và 𝐵 = 𝑠𝑟−1mod 𝑞
Bước 2: Xây dựng lưới 𝐿 được sinh từ (𝑞, 0,0), (0, 𝑞𝑋, 0) và
(𝐵, 𝐴𝑋, 𝑌). Sử dụng thuật toán LLL, tìm cơ sở LLL-rút gọn của lưới 𝐿.
( 𝑞 0 0 0 𝑞𝑋 0 𝐵 𝐴𝑋 𝑌 )𝐿𝐿𝐿→ ( 𝐶0 𝐶1 𝐶2 𝐶3 𝐶4 𝐶5 𝐶6 𝐶7 𝐶8 ) Bước 3.Tính 𝛾0 = 𝐶0, 𝛾1 =𝐶1 𝑋 , 𝛾2 = 𝐶2 𝑌 , 𝛾3 = 𝐶3, 𝛾4 =𝐶4 𝑋 và 𝛾5 =𝐶5 𝑌.
Bước 4. Xây dựng đa thức 𝑔1(𝑥, 𝑦), 𝑔2(𝑥, 𝑦) tương ứng là véctơ đầu tiên và véctơ thứ hai của cơ sở LLL-rút gọn. Cụ thể, 𝑔1(𝑥, 𝑦) = 𝛾0 + 𝛾1𝑥 + 𝛾2𝑦 và 𝑔2(𝑥, 𝑦) = 𝛾3+ 𝛾4𝑥 + 𝛾5𝑦.
Bước 5. Giải hệ phương trình
{𝑔1(𝑥, 𝑦) = 0 𝑔2(𝑥, 𝑦) = 0
Bước 6. Nếu tồn tại 𝑦 sao cho 𝑦𝑃 = 𝑄 thì trả về đầu ra là 𝑎̅ = 𝑦, còn không thì trả về “Tấn công không thực hiện được”.
Nhận xét 3.16. Đặt 𝑋 = 2𝛼, 𝑌 = 2𝛽, khi đó điều kiện 𝑋𝑌 < 𝑞/6√6 tương đương 2𝛼+𝛽 < 𝑞/6√6 hay 𝛼 + 𝛽 < log2(𝑞/6√6). Theo Mệnh đề 3.15, ta có thể khôi phục được khóa bí mật khi:
|𝑘̅| < 𝑋 = 2𝛼, |𝑎̅| < 𝑌 = 2𝛽 và 𝑋𝑌 < 𝑞/6√6 Do đó, để tránh tấn công thì ta cần chọn:
|𝑘̅| > 𝑋 = 2𝛼, |𝑎̅| > 𝑌 = 2𝛽 và 𝑋𝑌 > 𝑞/6√6.
Khi đó 2𝛼+𝛽 > 𝑞/6√6 hay 𝛼 + 𝛽 > log2(𝑞/6√6). Vì vậy, ta chọn: 𝛼 > log2( 𝑞 6√6) 2 và 𝛽 > log2( 𝑞 6√6) 2
Khi đó, điều kiện |𝑘̅| > 𝑋 = 2𝛼 tương đương |𝑘̅| > 2
log2(6√6) 2 = ( 𝑞
6√6)1/2. Tương tự, |𝑎̅| > 𝑌 = 2𝛽 tương đương |𝑎̅| > 2
log2(6√6𝑞 ) 2 = ( 𝑞
6√6)1/2.
Do (6√6)1/2 nhỏ hơn rất nhiều so với 𝑞1/2 ( 𝑞1/2 = 2128 bit nếu 𝑞 = 2256 ) nên để tránh tấn công này, ta có thể chọn |𝑘̅| > 𝑞1/2 và |𝑎̅| > 𝑞1/2 tương đương 𝑞1/2 < 𝑎, 𝑘 < 𝑞 − 𝑞1/2.
Thật vậy, với mọi 𝑞 > 4, ta có 𝑞1/2 < 𝑞/2. Khi đó, theo định nghĩa của 𝑎̅, nếu 𝑎 ≤ 𝑞/2 thì 𝑎̅ = 𝑎, do đó điều kiện |𝑎̅| > 𝑞1/2 suy ra 𝑎 > 𝑞1/2. Ngược lại, nếu 𝑎 > 𝑞/2 thì 𝑎̅ = 𝑎 − 𝑞, do đó điều kiện |𝑎̅| > 𝑞1/2 suy ra −(𝑎 − 𝑞) > 𝑞1/2 hay 𝑎 < 𝑞 − 𝑞1/2. Do vậy, điều kiện |𝑎̅| > 𝑞1/2 tương đương 𝑞1/2 < 𝑎 < 𝑞 − 𝑞1/2. Tương tự |𝑘̅| > 𝑞1/2, ta suy ra 𝑞1/2 < 𝑘 < 𝑞 − 𝑞1/2.
Tấn công Poulakis lên lược đồ chữ ký số EC-Schnorr
Tấn công này dựa trên một cách giải của các phương trình Conic có dạng 𝑟(𝑥, 𝑦) = 𝐷𝑥𝑦 + 𝐴𝑥 + 𝐵, trong đó 𝐷, 𝐴, 𝐵 ∈ ℤ. Vì vậy, ta có thể xây dựng tấn công chỉ cần một đa thức từ véctơ đầu tiên của cơ sở LLL-rút gọn. Cụ thể, thuật toán giải phương trình 𝑟(𝑥, 𝑦) là như sau:
Đầu vào: Phương trình 𝑟(𝑥, 𝑦) = 𝐷𝑥𝑦 + 𝐴𝑥 + 𝐵 = 0 trong ℤ và phân tích ra thừa số nguyên tố của 𝐵.
Đầu ra: Cặp (𝑥, 𝑦) ∈ ℤ2thỏa mãn 𝑟(𝑥, 𝑦) = 0.
Bước 1. Tính tập 𝐷(𝐵) gồm tất cả các ước của số nguyên B.
Bước 2. Với mỗi 𝑥 ∈ 𝐷(𝐵) tính 𝑦 = −(𝐵/𝑥 + 𝐴)/𝐷.
Bước 3. Nếu 𝑦 ∈ ℤ thì trả về cặp (x,y), còn không thì trả về “không
tìm được nghiệm”.
Chứng minh tính đúng đắn: Giả sử (𝑥, 𝑦) ∈ ℤ2 là nghiệm của 𝑟(𝑥, 𝑦) = 0. Khi đó, 𝑥(𝐷𝑦 + 𝐴) = −𝐵. Suy ra 𝑥|𝐵 hay 𝐵 = 𝑥𝛽, trong đó 𝛽 ∈ ℤ. Đơn giản hóa phương trình, ta thu được 𝐷𝑦 + 𝐴 + 𝛽 = 0. Do đó,
𝑦 = −(𝛽 + 𝐴)/𝐷 = −(𝐵/𝑥 + 𝐴)/𝐷. Nếu 𝑦 ∈ ℤ thì ta có (𝑥, 𝑦) là nghiệm của 𝑟(𝑥, 𝑦) = 0.
Mệnh đề 3.17. Đối với lược đồ chữ ký số EC-Schnorr, giả sử tồn tại các số
nguyên dương 𝑋, 𝑌 sao cho |𝑘̅̅̅̅̅| < 𝑋, |𝑎̅| < 𝑌−1 và 𝑋2𝑌 < 𝑞/(6√6) thì có thể tìm được khóa bí mật dài hạn 𝑎 của lược đồ chữ ký trong thời gian đa thức.
Chứng minh: Nhân cả hai vế của (3.6) với 𝑘−1 và 𝑟−1, ta có 𝑘−1𝑎 + (𝑠𝑟−1)𝑘−1− 𝑟−1 = 0 mod 𝑞
Đặt 𝐴 = 𝑠𝑟−1mod 𝑞 và 𝐵 = −𝑟−1mod 𝑞. Khi đó, cặp (𝑘̅̅̅̅̅, 𝑎̅)−1 là nghiệm của phương trình đồng dư 𝑓(𝑥, 𝑦) = 𝑥𝑦 + 𝐴𝑥 + 𝐵 = 0 mod 𝑞.
Xét các đa thức 𝑓1(𝑥, 𝑦) = 𝑞, 𝑓2(𝑥, 𝑦) = 𝑞𝑥 và 𝑓3(𝑥, 𝑦) = 𝑓(𝑥, 𝑦). Dễ thấy các đa thức này cũng nhận (𝑘̅̅̅̅̅, 𝑎̅)−1 là nghiệm trên modulo 𝑞. Xây dựng lưới 𝐿 được căng các véctơ hàng của ma trận 𝐽, ở đó 𝐽 có các hàng lần lượt là hệ số của các đa thức 𝑓1(𝑥𝑋, 𝑦𝑌) = 𝑞, 𝑓2(𝑥𝑋, 𝑦𝑌) = 𝑞𝑋𝑥 và 𝑓3(𝑥𝑋, 𝑦𝑌) = 𝑋𝑌𝑥𝑦 + 𝐴𝑋𝑥 + 𝐵. 𝐽 = ( 𝑞 0 0 0 𝑞𝑋 0 𝐵 𝐴𝑋 𝑋𝑌 )
Do các hàng của 𝐽 là ℝ-độc lập tuyến tính nên lưới có số chiều bằng 𝑛 = 3. Áp dụng thuật toán LLL vào lưới 𝐿 ta thu được một cơ sở mới như sau.
( 𝑞 0 0 0 𝑞𝑋 0 𝐵 𝐴𝑋 𝑋𝑌 )𝐿𝐿𝐿→ ( 𝐶0 𝐶1 𝐶2 𝐶3 𝐶4 𝐶5 𝐶6 𝐶7 𝐶8 ) Ta có det(𝐿) = |det(𝐼)| = 𝑞2𝑋2𝑌. Đặt 𝛾0 = 𝐶0, 𝛾1 = 𝐶1/𝑋, 𝛾2 = 𝐶2/𝑋𝑌 . Ta có 𝑏1 = (𝛾0, 𝛾1𝑋, 𝛾2𝑋𝑌). Đặt 𝑔1(𝑥, 𝑦) = 𝛾0+ 𝛾1𝑥 + 𝛾2𝑥𝑦. Do 𝑔1(𝑥𝑋, 𝑦𝑌) là các tổ hợp tuyến tính nguyên của 𝑓𝑖(𝑥𝑋, 𝑦𝑌) với 𝑖 = 1,2,3 nên 𝑔1(𝑘̅̅̅̅̅, 𝑎̅) = 0 mod 𝑞−1 . Do vậy đa thức 𝑔1(𝑥, 𝑦) thỏa mãn điều kiện trong Bổ đề 3.13.
Bây giờ ta cần xác minh điều kiện để các đa thức 𝑔1(𝑥, 𝑦) thỏa mãn điều kiện của Bổ đề 3.13. Theo Mệnh đề 3.4,
‖𝑏1‖ ≤ 23−14 (det(𝐿))13 = √2(𝑞2𝑋2𝑌)13
Do đó, để 𝑔1(𝑥, 𝑦) thỏa mãn điều kiện của Bổ đề 3.13, ta cần √2(𝑞2𝑋2𝑌) 1 3 < 𝑞 √3 Nói cách khác, ta cần 𝑋2𝑌 < 𝑞 6√6. Khi đó, ta có ‖𝑏1‖ = ‖𝑔1(𝑥𝑋, 𝑦𝑌)‖ < 𝑞
√3. Thật vậy, nếu 𝛾2 = 0 thì 𝛾0 = 𝑞𝑡0, 𝛾1 = 𝑞𝑋𝑡1, với 𝑡0, 𝑡1 ∈ ℤ và 𝑞√2 < ‖𝑏1‖ < 𝑞/√3 (vô lý). Suy ra, 𝛾2 ≠ 0 và ‖𝑏1‖ = ‖𝑔1(𝑥𝑋, 𝑦𝑌)‖ < 𝑞
√3. Theo Bổ đề 3.13, ta có 𝑔1(𝑘̅̅̅̅̅, 𝑎̅) = 0−1 trên vành số nguyên. Áp dụng thuật toán giải phương trình cho 𝑔1(𝑥, 𝑦) ta thu được 𝑎̅ và 𝑘̅̅̅̅̅−1. Ta có thuật toán tìm khóa bí mật dài hạn của lược đồ EC-Schnorr theo Mệnh đề 3.17 như sau:
Đầu vào: Các giá trị (𝑟, 𝑠) của EC-Schnorr.
Đầu ra: Khóa 𝑎 hoặc “Tấn công không thực hiện được”.
Bước 1. Tính 𝐴 = 𝑠𝑟−1 mod 𝑞 và 𝐵 = −𝑟−1mod 𝑞.
Bước 2. Xây dựng lưới 𝐿 được sinh từ (𝑞, 0,0), (0, 𝑞𝑋, 0) và
(𝐵, 𝐴𝑋, 𝑋𝑌). Sử dụng thuật toán LLL, tìm cơ sở LLL-rút gọn của lưới 𝐿.
( 𝑞 0 0 0 𝑞𝑋 0 𝐵 𝐴𝑋 𝑋𝑌 )𝐿𝐿𝐿→ ( 𝐶0 𝐶1 𝐶2 𝐶3 𝐶4 𝐶5 𝐶6 𝐶7 𝐶8 ) Bước 3. Tính: 𝛾0 = 𝐶0, 𝛾1 = 𝐶1/𝑋, 𝛾2 = 𝐶2/𝑋𝑌 .
Bước 4. Xây dựng đa thức 𝑔1(𝑥, 𝑦) từ véctơ đầu tiên của cơ sở LLL- rút gọn. Cụ thể 𝑔1(𝑥, 𝑦) = 𝛾0+ 𝛾1𝑥 + 𝛾2𝑥𝑦.
Bước 5. Sử dụng Thuật toán 3.3 giải phương trình Conic để tính tập
𝑆 gồm các nghiệm (𝑥, 𝑦) của đa thức 𝑔1(𝑥, 𝑦) = 0.
Bước 6. Nếu tồn tại (𝑥0, 𝑦0) ∈ 𝑆 và 𝑦0𝑃 = 𝑄 thì trả về 𝑎̅ = 𝑦0, còn không trả về “Tấn công không thực hiện được”.
Nhận xét 3.18. Đặt 𝑋 = 2𝛼, 𝑌 = 2𝛽, khi đó điều kiện 𝑋2𝑌 < 𝑞/6√6 tương đương 22𝛼+𝛽 < 𝑞/6√6 hay 2𝛼 + 𝛽 < log2(𝑞/6√6). Theo Mệnh đề 3.17, ta có thể khôi phục được khóa bí mật khi:
|𝑘̅̅̅̅̅| < 𝑋, |𝑎̅| < 𝑌−1 và 𝑋2𝑌 < 𝑞 6√6. Do đó, để tránh tấn công thì ta cần chọn:
|𝑘̅̅̅̅̅| > 𝑋 = 2−1 𝛼, |𝑎̅| > 𝑌 = 2𝛽 và 𝑋2𝑌 > 𝑞/6√6.
Khi đó 22𝛼+𝛽 > 𝑞/6√6 hay 2𝛼 + 𝛽 > log2(𝑞/6√6). Vì vậy, ta chọn 𝛼 > log2( 𝑞 6√6) 3 và 𝛽 > log2( 𝑞 6√6) 3
Khi đó, điều kiện |𝑘̅̅̅̅̅| > 𝑋 = 2−1 𝛼 tương đương |𝑘̅̅̅̅̅| > 2−1 log2( 𝑞 6√6) 3 = ( 𝑞
6√6)1/3. Tương tự, điều kiện, |𝑎̅| > 𝑌 = 2𝛽 tương đương |𝑎̅| > 2
log2(6√6𝑞 ) 3 = ( 𝑞
6√6)1/3. Do (6√6)1/3 nhỏ hơn rất nhiều so với 𝑞1/3 (𝑞1/3 ≈ 285 bit nếu 𝑞 = 2256) nên để tránh tấn công này, ta có thể chọn |𝑘̅̅̅̅̅| > 𝑞−1 1/3, |𝑎̅| > 𝑞1/3,
tương đương, 𝑞1/3 < 𝑎, 𝑘−1 < 𝑞 − 𝑞1/3.
Nhận xét 3.19. Ngoài điều kiện liên quan đến 𝑎 và 𝑘−1, ta cũng có thể áp dụng tấn công có các điều kiện liên quan đến 𝑎−1 và 𝑘. Cụ thể, ta thực hiện biến đổi như sau. Nhân cả hai vế của phương trình (3.6) với 𝑎−1, ta có:
𝑎−1𝑘 − 𝑠𝑎−1 − 𝑟 = 0 mod 𝑞
Đặt 𝐴 = −𝑠 mod 𝑞 và 𝐵 = −𝑟 mod 𝑞. Khi đó, cặp (𝑎̅̅̅̅̅, 𝑘̅)−1 là nghiệm của phương trình đồng dư 𝑓(𝑥, 𝑦) = 𝑥𝑦 + 𝐴𝑥 + 𝐵 = 0 mod 𝑞. Áp dụng tấn công tương tự như đã được trình bày như trên, ta cũng có thể khôi phục được khóa bí mật dài hạn 𝑎 và khóa bí mật tức thời 𝑘 nếu |𝑎̅̅̅̅̅| < 𝑋−1 , |𝑘̅| < 𝑌, trong đó 𝑋 = 2𝛼, 𝑌 = 2𝛽 và 2𝛼 + 𝛽 < log2(𝑞/6√6). Vì vậy, để tránh tấn công trong trường hợp này ta có thể chọn 𝑞1/3 < 𝑎−1, 𝑘 < 𝑞 − 𝑞1/3.
Nhận xét 3.20. Trong lược đồ chữ số EC-Schnorr-M, khóa bí mật tức thời 𝑘𝑀 = 𝐻(𝑘||𝑚), trong đó 𝑘 ∈𝑅 [1, 𝑞 − 1]. Do đó, nếu các khóa bí mật dài hạn a và khóa bí mật tức thời 𝑘𝑀 của lược đồ chữ ký số EC-Schnorr-M thỏa mãn các điều kiện như trong lược đồ chữ ký số EC-Schnorr thì ta có thể khôi phục được khóa bí mật dài hạn và tức thời của lược đồ.
Các kết quả thực nghiệm
NCS đã cài đặt các Thuật toán 3.2 và 3.4 để tìm khóa bí mật của lược đồ chữ ký số EC-Schnorr và EC-Schnorr-M sử dụng phần mềm tính toán đại số Magma được cài đặt trên máy tính CPU Intel Core i7-6700 3.4 Ghz, 8Gb RAM, sử dụng bộ tham số NIST P-256 [40] có dạng 𝑦2 = 𝑥3+ 𝐴𝑥 + 𝐵 trường hữu hạn 𝔽𝑝 với các tham số cụ thể như trong Bảng 3.1 ở phần trên. Trong từng tấn công, các lược đồ EC-Schnorr-M, EC-Schnorr cùng sử dụng các khóa bí mật dài hạn 𝑎 và tức thời 𝑘 có các kích thước như sau:
Tấn công q (bit) |𝑎̅|(bit) |𝑘̅̅̅̅̅|−1 (bit) |𝑘̅|(bit) Thời gian (giây)
Blake 256 126 256 126 0,01
Poulakis 256 80 80 256 1,36
Trong mỗi tấn công lên từng lược đồ chữ ký số, NCS thực nghiệm mô phỏng tấn công 100 lần. Chi tiết tỉ lệ thành công và thời gian trung bình được trình bày trong bảng sau:
Lược đồ EC-Schnorr Lược đồ EC-Schnorr-M
Tấn công Tỉ lệ thành công Thời gian trung bình Tỉ lệ thành công Thời gian trung bình
Blake 72% 0,04 giây 71% 0,05 giây