Đánh giá ý nghĩa của tấn công tổng quát

Một phần của tài liệu (Luận án tiến sĩ) nghiên cứu một số giải pháp đảm bảo an toàn và hiệu quả cho lược đồ chữ ký số kiểu EC schnorr (Trang 85 - 91)

Để 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, 𝑣 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.

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.

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:

Bước 1: Khởi tạo 2 cửa sổ trượt 7-bit, 𝑏1, 𝑏2 trong đó 𝑏1 = 𝑠1𝑠2⋯ 𝑠7, 𝑏2 = 𝑠8𝑠9⋯ 𝑠14. 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 = 𝑠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 − 1

27)256−13 ≈ 2253.25 (giảm khoảng 2.75 bit). Cụ thể, không gian các khoá 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.

Từ đó, chúng ta đề xuất tiêu chuẩn mới gọi là Tiêu chuẩn lặp liên tiếp 2 khối t-bit (𝑡 ≥ 7) như sau:

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 𝑘𝑞 = 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.

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 Số bit giảm tương ứng (adsbygoogle = window.adsbygoogle || []).push({});

7 2.74962111436369765295905417069 ≈ 3 𝑏í𝑡 8 1.36082171701523704367202339633 9 0.674104055908500383869229991391 … ……… 105 1.13808571591353231368725121115E-30 106 0.000000000000000000000000000000 … ………….. 128 0.000000000000000000000000000000

Vậy nếu áp dụng tất cả các tiêu chuẩn lặp liên tiếp 2 khối t-bit (𝑡 ≥ 7) thì không gian khoá chỉ còn khoảng 𝛺128 ≈ 2250.553.

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 tra 𝑏1 = 𝑏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

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ó.

Một phần của tài liệu (Luận án tiến sĩ) nghiên cứu một số giải pháp đảm bảo an toàn và hiệu quả cho lược đồ chữ ký số kiểu EC schnorr (Trang 85 - 91)