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 �, � ≤ � thì �(��, ��) = �(�, �). 2 Nếu , � > �, khi đó ta có: 2 �(��, ��) = � − � + �(� − �) + � = � + � + � − � − = + + = 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 �1 �2 (0 �� 0) → (�3 �4 �5)
Theo định nghĩa, ta có định thức của lưới: det ) = (((((((((((((( ( |det )(((((((((((((( ( | = �2��. Đặt = � , � = �1 , � = �2 , � = , = �4 và � = �5. 0 0 1 � 2 � 3 3 4 � 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ó:
3−1 1 1
‖�1‖ < 2 4 (det )(((((((((((((( ( )3 = √2(222222222222222)3. Mặt khác, theo giả thiết, ta có �� < � . Suy ra
‖�1(((((((((((((((,
��)‖ < �
√3
6√6 (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ó:
1 1 det(�) 2
‖�2‖ ≤ 24 (
‖� ‖ ) .
Theo giả thiết, ta có ‖�1‖ > 3√222222222222222. Suy ra:
1 1 1 det(�) 2 1 �2�� 2 � ‖�2‖ ≤ 24 ( ‖� ‖ ) < 24 ( ) 3√222222222222222 = . √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ì
�
� =
�
1
� .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 �1 �2 (0 �� 0) → (�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 � = , 222222222222222 � = 222222222222222 , khi đó điều kiện < �/6 √6 tương đương 2+ 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+ 2+ √6 hay + > log2(�/6 > /6 ( ( √6). Vì vậy, ta chọn:
log2( � ) log2( � )
� > 6 √ 6 và � > 6 √ 6
log2( )
Khi đó, điều kiện |��| > � = 2� tương đương |��| > 2 6√6 = (
�� )1/2. log2( ) 2 6√6 � 6 √ 6 � 1/2 Tương tự, |��| > � = 2 tương đương |��| > 2 2 = ( )6√6 . 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à |��| >
�tương đương �1/2 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 �1 �2 (0 �� 0 � �� �� ) → (�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(����−�1�, ��) = 0 mod �. 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,
3−1 1 1
‖�1‖ ≤ 2 4 (det)(((((((((((((( ( )3 = √2(�2�2�)3
Do đó, để �1( ( ( ( ( ( ( ( ( ( ( ( ( ( ( , ) thỏa mãn điều kiện của Bổ đề 3.13, ta cần
2 2 1 � √2( �)3 <√3 Nói cách khác, ta cần �2� < � . Khi đó, ta có ‖� ‖ = 6√6 ‖ , ��)( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ‖ < � . Thật vậy, nếu � = 0 thì � = � � , � = ��� 1 , với 1 √3 2 0 0 1 1 0, �1 ∈ ℤ
và �√2 < ‖�1‖ < / √3 (vô lý). Suy ra, �2 ≠ 0 và ‖�1‖ = ‖ , ��)( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ‖ < � . Theo Bổ đề 3.13, ta có � (����−�1�, ��) = 0 trên vành số
1 √3 1
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 �1 �2 (0 �� 0 ) → (�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ề
�
Nhận xét 3.18. Đặt � = , 222222222222222 � = 222222222222222, khi đó điều kiện 222222222222222 < /6 √6 tương đương 22+ 2+ < /6 √6 hay 22 2 2 2 2 2 2 2 2 2 2 2 2 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� < � . Do đó, để tránh tấn công thì ta cần chọn:
6√6
|����−�1�| > � = 2�, |��| > � = 2� và � 2� > �/6√6.
Khi đó 22+ 2+ > /6 √6 hay 2 (2 2 (2 (2 (2 (2 (2 (2 (2 (2 (2 (2 (2 (2 ( + > log2 /6( √6). Vì vậy, ta chọn
log2( � ) log2( � )
� > 6 √ 6 và � > 6 √ 6
3 3
log2( )
Khi đó, điều kiện |����−�1�| > � = 2� tương đương |����−�1�| > 2 6√6 = (
�� )1/3. 3 6√6 log ( �) � 6 √ 6 � 1/3
Tương tự, điều kiện, |��| > � =
2 tương đương |��| > 2 3 = ( )6√6 .
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� 2� và 2 22 2 2 2 2 2 2 2 2 2 2 2 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.
2
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