Để thể hiện rõ ý nghĩa của tấn công tổng quát mà đã được phân tích
trong Mục 3.1.2, trước tiên NCS sẽ chỉ ra một số tiêu chuẩn cho việc sinh
khóa của lược đồ EC-Schnorr để ngăn chặn những trường hợp tấn công cụ thể khi có 2 hoặc 3 khoảng lặp liên tiếp xuất hiện trong chuỗi bit của khóa bí mật
tức thời (và do đó cũng ngăn chặn được tấn công được chỉ ra trong [44], [47]
cho lược đồ chữ ký (EC)DSA).
Theo Nhận xét 3.7, ta thấy rằng nếu biết 100 chữ ký và 2 khoảng bit lặp liên tiếp xảy ra ở vị trí bit có trọng số thấp thì ta chỉ cần 7 bit lặp cho mỗi khoảng để có thể khôi phục lại khóa bí mật của lược đồ chữ ký số. Tuy nhiên, theo Nhận xét 3.8 nếu 3 khoảng bit lặp liên tiếp ở vị trí bit có trọng số thấp thì ta chỉ cần 3 bit lặp cho mỗi khoảng. Do đó, để đưa ra tiêu chuẩn khóa bí mật tức thời của lược đồ chữ ký số EC-Schnorr ta sẽ xét trường hợp tấn công thành công sử dụng ít bit lặp trong một khoảng nhất. Cụ thể, từ các kết quả thực nghiệm và Nhận xét 3.7 và Nhận xét 3.8, ta đưa ra yêu cầu cho thuật toán sinh khóa như sau:
Khẳng định 3.11. Thuật toán sinh khóa của các lược đồ chữ ký số EC- Schnorr, phải thỏa mãn tính chất sau đây đối với khóa bí mật tức thời được sinh ra:
< (1 + ( + 1)) log2(2 ) + 2 2( + 1)( − 1)
trong đó, là số các chữ ký đã biết, là số các khoảng bit được lặp lại, là số khoảng giá trị chưa biết và là số bit lặp trong mỗi khoảng trong khóa bí mật tức thời của bộ sinh khóa.
TIEU LUAN MOI download : skknchat@gmail.com
80
Xét khoá có độ dài khóa là 256-bit được sinh ra bởi thuật toán sinh khóa trong lược đồ chữ ký số EC-Schnorr-M, ký hiệu là = 1 2 ⋯ 256, khi đó kích cỡ không gian khoá là = 2256.
Để kiểm tra tính khả thi của tiêu chuẩn đề xuất, NCS đã sử dụng một bộ sinh số giả ngẫu nhiên dựa trên hàm băm theo chuẩn của NIST để tạo ra các khóa có độ dài 256-bit, sau đó chỉnh sửa để tạo ra các đoạn bit lặp theo các điều kiện của hai tấn công đã mô tả ở trên. Sau đó lựa chọn 6 tiêu chuẩn kiểm tra thống kê cho độ dài khóa 256-bit: tiêu chuẩn tần số, tiêu chuẩn Serial, tiêu chuẩn tương quan, tiêu chuẩn Markov, tiêu chuẩn 3-type và tiêu chuẩn
Lempel-Ziv. Mặc dù các điều kiện lặp bit theo Nhận xét 3.7 và 3.8 dường như là một giả thiết khá chặt, với điều kiện là các khoá kí tức thời phải có cùng số khoảng bit lặp liên tiếp và cùng số bit lặp tại cùng một vị trí nhưng có thể khẳng định rằng 6 tiêu chuẩn kiểm tra thống kê cho khoá 256 chưa đủ mạnh
để phát hiện các khoá bị lặp bit. Thật vậy, ta có thể dễ dàng xây dựng một
khoá có độ dài 256-bit vượt qua cả 6 tiêu chuẩn thống kê nhưng vẫn thoả mãn điều kiện đưa ra trong Khẳng định 3.6 ở trên. Kết quả thực hành cụ thể như
sau với các khoá tức thời có 2 khoảng lặp liên tiếp t-bit ( ≥ 7) như sau:
sc2[32] = {0xcd, 0x98, 0xac, 0xf3, 0xf3, 0x1e, 0x29, 0xc7, 0xd8, 0x48, 0x47, 0x06, 0xe7, 0xf0, 0x3a, 0x39, 0x8e, 0x91, 0xbb, 0xbb, 0x04, 0x26, 0x7c, 0x5b, 0x99, 0x27, 0x78, 0xa4, 0x7b, 0xd2, 0xbd, 0x29};
Chuỗi này có 2 khoảng lặp liên tiếp 7-bit ở đầu 1 1 0 0 1 1 0 1 1 0 0 1 1 0 … và vượt qua cả 6 tiêu chuẩn cho khoá 256-bit. Điều này dẫn đến việc có thể xây dựng bộ dữ liệu gồm 100 khoá đều vượt qua cả 6 tiêu chuẩn cho khoá 256-bit và có 2 khoảng lặp liên tiếp 7-bit để áp dụng tấn công tìm được khoá ký dài hạn như trên.
Câu hỏi đặt ra rằng liệu có thể xây dựng một tiêu chuẩn kiểm tra nhằm loại đi các khoá có tính chất thỏa mãn điều kiện của tiêu chuẩn hay không. Ta sẽ đi xem xét từng trường hợp cụ thể sau đây.
TIEU LUAN MOI download : skknchat@gmail.com
81
a) Tiêu chuẩn lặp liên tiếp 2 khối t-bit với ≥ 7
Trước tiên xét với = 7. Mục tiêu là kiểm tra dãy có ít nhất 2 khoảng lặp liên
tiếp 7-bit hay không. Nếu dãy không có 2 khoảng lặp liên tiếp 7-bit thì dãy vượt qua tiêu chuẩn. Ngược lại thì không vượt qua tiêu chuẩn. Rõ ràng một dãy vượt qua tiêu chuẩn này thì không thể có 2 khoảng lặp 7-bit liên tiếp.
Thuật toán kiểm tra tính lặp liên tiếp 2 khối 7-bit:
1 2
Bước
⋯7,2 1: Khởi tạo 2 cửa sổ trượt 7-bit,
= 8 9 ⋯ 14. Khởi tạo giá trị = 1.
1,2
trong đó
1 =
Bước 2: Kiểm tra1 =2. Nếu thoả mãn điều kiện trên thì gán = 0, chuyển đến bước 5.
Bước 3: Thực hiện dịch sang phải 1 bit đối với 2 cửa sổ trượt. Quay lại bước 2.
Bước 4: Lặp lại bước 3 đến khi 1=243 244 ⋯249,2 =
250 251⋯ 256.
Bước 5: Nếu = 0 kết luận dãy không vượt qua tiêu chuẩn. Nếu = 1 kết luận dãy vượt qua tiêu chuẩn.
Nếu áp dụng tiêu chuẩn này, không gian khoá sẽ rút gọn chỉ còn là 5 = 2256(1 − 217)256−13 ≈ 2253.25 (giảm khoảng 2.75 bit). Cụ thể, không gian cáckhoá vượt qua tiêu chuẩn là không gian các dãy 256 bit không lặp liên tiếp 7-bit. Một dãy vượt qua tiêu chuẩn cần không có khoảng lặp liên tiếp 7-bit ở bất kỳ vị trị nào. Xác suất để một dãy không có khoảng lặp liên tiếp 7-bit ở vị trí thứ i (1 ≤ ≤ 256 − 13) là (1 − 2−7). Do đó, xác suất để một dãy 256-bit không có bất kỳ khoảng lặp liên tiếp 7-bit là
(1 − 2−7)256−13 hay không gian các dãy không có khoảng lặp liên tiếp 7-bit là 1 = 2256(1 − 2−7)256−13 ≈ 2253.25. Một cách tổng quát, không gian các dãy không có khoảng lặp liên tiếp 2 khối t-bit (7 ≤ ≤ 128) là2 = 2256(1 − 2− )256−2 +1.
TIEU LUAN MOI download : skknchat@gmail.com
82
Tiêu chuẩn 3.1(Tiêu chuẩn lặp liên tiếp 2 khối t-bit với ≥ 7). Các khóa trong lược đồ chữ ký kiểu EC-Schnorr phải không có 2 khoảng lặp liên tiếp t-bit
với ≥ 7.
Thuật toán kiểm tra dãy theo tiêu chuẩn 3.1 được thực hiện như sau:
Bước 1: Khởi tạo 2 cửa sổ trượt t-bit, 1,2 trong đó 1 =
1 2 ⋯ ,2 = +1 +2 ⋯2 . Khởi tạo giá trị = 1.
Bước 2: Kiểm tra 1 = 2. Nếu thoả mãn điều kiện trên thì gán =
0, chuyển đến bước 5.
Bước 3: Thực hiện dịch sang phải 1 bit đối với 2 cửa sổ trượt. Quay lại bước 2.
Bước 4: Lặp lại bước 3 đến khi
1= 256−2 +1 256−2 +2⋯ 256− , 2= 256− +1 256− +2⋯ 256.
Bước 5: Nếu = 0kết luận dãy không vượt qua tiêu chuẩn. Nếu
= 1kết luận dãy vượt qua tiêu chuẩn.
Chúng ta xem xét không gian khoá khi áp dụng các tiêu chuẩn lặp liên tiếp 2 khối t-bit (7 ≤ ≤ 128) và số bit giảm tương ứng:
t 7 8 9 … 105 106 … 128
TIEU LUAN MOI download : skknchat@gmail.com
83
b) Tiêu chuẩn lặp liên tiếp 3 khối t-bit, ≥ 3
Để thỏa mãn Khẳng định 3.11, chúng ta chỉ cần kiểm tra điều kiện không có 3 khoảng lặp liên tiếp t-bit (3 ≤ ≤ 6) và không có 2
khoảng lặp
liên tiếp t-bit (7 ≤ ≤ 128). Lý do là bởi vì nếu dãy không có 2 khoảng lặp liên tiếp t-bit (7 ≤ ≤ 128) thì hiển nhiên không thể có 3 khoảng lặp
liên tiếp t-bit với 7 ≤ ≤ 128.
Thuật toán kiểm tra tính lặp liên tiếp 3 khối t-bit:
Bước 1: Khởi tạo 3 cửa sổ trượt t-bit, 1,2,3 trong đó 1 =
1 2⋯ ,2 = +1 +2 ⋯2 ,3 =2 +1 2 +2 ⋯3 . Khởi tạo giá trị = 1
Bước 2: Kiểm tra1 =2 =3. Nếu thoả mãn điều kiện trên thì gán = 0, chuyển đến bước 5.
Bước 3: Thực hiện dịch sang phải 1 bit đối với 3 cửa sổ trượt. Quay lại bước 2.
Bước 4: Lặp lại bước 3 đến khi
1= 256−3 +1 256−3 +2⋯ 256−2 , 2= 256−2 +1 256−2 +2⋯ 256− , 3
= 256− +1 256− +2⋯ 256
Bước 5: Nếu = 0 kết luận dãy không vượt qua tiêu chuẩn. Nếu = 1 kết luận dãy vượt qua tiêu chuẩn.
Tiêu chuẩn 3.2(Tiêu chuẩn lặp liên tiếp 3 khối t-bit (3 ≤ ≤ 6)). Các khóa trong lược đồ chữ ký kiểu EC-Schnorr phải không có 3 khoảng lặp liên tiếp t-bit
với ≥ 3.
Như vậy, trong các trường hợp tấn công cụ thể mà khai thác việc có 02 hoặc 03 khoảng lặp liên tiếp xuất hiện trong chuỗi bit của khóa bí mật tức thời
(giống như tấn công trong [44], [47] cho lược đồ chữ ký (EC)DSA), thì việc
áp dụng các Tiêu chuẩn 3.1 và 3.2 có thể xem là một giải pháp khả thi. Nói cách khác, trong những trường hợp cụ thể việc ngăn chặn tấn công dạng này là đơn giản. Tuy nhiên, trong trường hợp tổng quát, khi kẻ tấn công có thể khôi phục khóa bí mật dài hạn khi chỉ cần biết độ dài của khoảng lặp và vị trí bit lặp của các khóa bí mật tức thời, những tiêu chuẩn kể trên sẽ không còn
TIEU LUAN MOI download : skknchat@gmail.com
84
khả thi trong việc ngăn chặn tấn công. Lý do là vì những tiêu chuẩn kể trên chỉ ngăn chặn việc sinh các khóa với các khoảng bit lặp liên tiếp nhưng những khóa với các khoảng bit lặp không liên tiếp vẫn có thể được sinh ra. Hơn nữa, khi một kẻ tấn công có thể cài backdoor vào trong bộ sinh số (giả) ngẫu nhiên để các khóa sinh ra có các khoảng bit lặp ở vị trí bất kỳ (mà chỉ anh ta biết) với xác suất cao thì anh ta có thể khôi phục khóa ký (bí mật dài hạn) của người dùng mà khó có thể bị phát hiện.
Ngoài ra, có thể thấy rằng việc xây dựng một tiêu chuẩn sinh khóa để ngăn chặn dạng tấn công tổng quát như vậy sẽ là không khả thi. Thực vậy, xét trường hợp các khoảng 3-bit trên một khóa có độ dài 256-bit (ứng với trường hợp tấn công với các khoảng lặp 3-bit không liên tiếp), trong trường hợp này chúng ta sẽ chia đoạn khóa 256-bit thành 85 đoạn khóa độ dài 3-bit. Mặt khác, có thể có tất cả 8 biểu diễn cho mỗi đoạn khóa 3-bit. Do vậy, theo nguyên tắc Dirchlet sẽ phải có ít nhất 9 khoảng khóa 3-bit phải có cùng biểu diễn. Điều này cho thấy bản thân của các khóa được sinh ra bình thường cũng đã có rất nhiều khoảng lặp độ dài 3-bit và vì vậy rất khó có thể phát hiện những khóa mà kẻ tấn công cố tình tạo lỗi.
Nhận xét 3.12. Trong lược đồ chữ ký số EC-Schnorr-M, khóa bí mật tức thời
được tính thông qua hàm băm thay vì được chọn ngẫu nhiên từ [1, − 1] như trong lược đồ chữ ký số EC-Schnorr. Cụ thể, trong lược đồ chữ số EC-Schnorr- M, khóa bí mật tức thời = ( || ), trong đó ∈ [1, − 1]. Khi đó, ngay cả khi kẻ tấn công chủ động thực hiện việc cài backdoor để tạo ra những khoảng lặp bit (một cách kín đáo) để thực hiện dạng tấn công tổng quát, thì việc tính khóa bí mật tức thời = ( || ) như trong lược đồ chữ ký số EC-Schnorr-M sẽ khiến cho kẻ tấn công không còn được chủ động về những khoảng bit lặp (bao gồm, độ dài và vị trí lặp) mà là những điều kiện tiên quyết cho việc thực hiện tấn công khôi phục khóa dạng này. Do vậy, EC-Schnorr-M có khả năng kháng lại được tấn công được đề cập tốt hơn so với phiên bản gốc của nó.
TIEU LUAN MOI download : skknchat@gmail.com
85