Ngoài tái sử dụng không khóa đơn

Một phần của tài liệu NGHIÊN CỨU MỘT SỐ TẤN CÔNG TÌM KHÓA RIÊNG LIÊN QUAN VIỆC THỰC THI GIÁ TRỊ NONCE TRONG CHUẨN KÝ SỐ ECDSA SECP256K1 (Trang 29 - 31)

Điều thú vị là trong một số trường hợp, bí mật bị rò rỉ ngay cả khi các ký tự không được sử dụng lại với cùng một khóa bí mật. Ví dụ, hãy xem xét trường hợp sau, trong đó hai phím s, s được sử dụng với cùng một cặp phím không phải là , , tức là:

phương trình độc lập tuyến tính và 4 ẩn số và do đó có thể giải được duy nhất. Một giải pháp cho sk2 có thể được tính toán, với việc loại bỏ Gaussian chẳng hạn, sẽ là:

Nhìn chung, chúng ta có thể nghĩ về vấn đề này như sau. Kẻ tấn công được cung cấp một tập hợp các chữ ký S = {(, , , ),…, (, , , )}, ví dụ có thể được trích xuất từ chuỗi khối Bitcoin. Mỗi bộ (hi, ri, si, ) ∈S tương ứng với một chữ ký (ri = (Gki) x, = ( + rsk)) trong đó pk = Gsk. Mục tiêu của kẻ tấn công là làm rò rỉ càng nhiều khóa (hoặc số nút) càng tốt bằng cách giải các hệ phương trình tuyến tính. Để đạt được điều này, kẻ tấn công phải xác định các tập hợp con của các hệ thống có thể giải quyết được. Họ có thể làm như vậy bằng cách giảm vấn đề này thành lý thuyết đồ thị. Ví dụ, chúng tôi xây dựng một đồ thị lưỡng phân vô hướng G = (Vpk∪Vr, E), trong đó Vpk = {∣ (⋅, ⋅, ⋅, ) ∈S}, Vr = {ri∣ (⋅, ri, ⋅, ⋅) ∈S} và E = {{ri, } ∣ (⋅, ri, ⋅, ) ∈S}. Đồ thị G bao gồm hai loại nút, giá trị r ri và khóa công khai pki, mỗi nút tương ứng với một ẩn số (một nonce ki và một khóa bí mật

trượt). Một cạnh {r, pk} trong đồ thị này tương ứng với một chữ ký, tương ứng với một phương trình trong hệ phương trình tuyến tính mà S tạo thành. Ở bước lọc trước, trước tiên chúng tôi thu thập tất cả các giá trị r và khóa công khai xuất hiện ít nhất hai lần cùng nhau, tức là chúng tôi thu thập F = {r, pk∣ | {(⋅, r, ⋅, pk) ∈S} |> 1}. Vì điều này tương ứng với cùng một lần được sử dụng bởi cùng một khóa ít nhất hai lần, điều đó có nghĩa là chúng ta có thể tiết lộ bí mật đã sử dụng k và sk bằng cách sử dụng Eqs. (3) và (2) với các chữ ký thích hợp. Ngoài ra, chúng ta có thể làm rò rỉ tất cả các bí mật tương ứng với các nút có thể truy cập được bằng mọi khóa công khai và nonce trong F. Để hiểu điều này, giả sử chúng ta có giá trị r ri∈F, có nghĩa là chúng ta có thể rò rỉ nonce ki như mô tả . Bây giờ giả sử rằng có một nút pkj∈Vpk sao cho {, } ∈E, điều này ngụ ý sự tồn tại của phương trình sj = ( + r). Vì chúng ta biết ki, chúng ta có thể rò rỉ skj với = (-)/r. Điều tương tự cũng đúng nếu chúng ta giả sử một khóa công khai ∈F và một giá trị r ∈ sao cho {rj, }

∈E. Bằng cách áp dụng lập luận này một cách quy nạp, rõ ràng là chúng ta có thể làm rò rỉ các bí mật liên quan đến tất cả các nút có thể truy cập được từ mọi ri∈F và mọi ∈F.

Trong bước tiếp theo, chúng ta cần xác định các nút và các cạnh có thể được ánh xạ tới một hệ phương trình độc lập tuyến tính có thể giải được. Điều này có thể đạt được bằng cách tìm các chu trình không nhỏ trong G, tức là các nút khác biệt

r0, pk0,…, rn, pkn với n> 0 sao cho {, } ∈E và {, + 1 mod n} ∈ E cho 0≤i≤n. Một chu trình như vậy chứa 2 (n + 1) nút, tức là ẩn số và 2 (n + 1) cạnh, tức là, phương trình, và do đó trực tiếp ngụ ý sự tồn tại của một hệ phương trình tuyến tính có thể giải được. Do đó, đối với tất cả các chu kỳ như vậy, chúng ta có thể làm rò rỉ các bí mật tương ứng, và như trước đây, chúng ta cũng có thể làm rò rỉ bí mật của các nút có thể truy cập. Đầu ra của toàn bộ quá trình này là hai tập V′pk⊆Vpk và V′r⊆Vr, là các khóa công khai và giá trị r mà chúng ta đã lần lượt làm rò rỉ khóa bí mật và ký tự mã. Nếu chúng ta loại bỏ các nút trong V′pk∪V′r và các cạnh của chúng khỏi G, thì đồ thị thu được sẽ không chứa bất kỳ chu trình không tầm thường nào. Điều này có nghĩa là không có thêm bí mật nào có thể bị lộ và do đó V'pk và V'r là tối ưu về kích thước của chúng.

Tuy nhiên, có một chút thay đổi đối với phương pháp mà chúng tôi mô tả ở đây. Chúng tôi coi hai chữ ký (r1, s1) và (r2, s2) là trường hợp không sử dụng lại nếu các giá trị r trùng nhau, tức là nếu r1 = r2. Điều này không hoàn toàn đúng, vì giá trị r chỉ là tọa độ x của Gk. Vì các đường cong elliptic dựa trên phương trình Weierstrass có dạng = + bx + a, nên luôn có hai số khác k dẫn đến cùng một giá trị r2. Đặc biệt, nếu ta có Gk = (x, y) thì ta có G (−k) = (x, −y). Điều này có nghĩa là nếu các giá trị r trùng nhau, chúng ta cần tính đến rằng một giá trị không có thể là nghịch đảo cộng của giá trị kia thay vì bằng nhau. Để tôn trọng điều này, chúng ta phải xem xét đối với mọi chữ ký (r, s) thì chữ ký (r, −s) cũng là chữ ký sinh ra bằng cách phủ định k. Đối với mỗi sự kết hợp như vậy, chúng ta phải giải hệ phương trình tuyến tính và kiểm tra xem các nghiệm trả về có đúng để làm rò rỉ các khóa và phím không chính xác hay không. Điều này có thể được thực hiện bằng cách kiểm tra kỹ xem mỗi sk khóa bí mật bị rò rỉ có tương ứng với pk khóa công khai đã cho hay không, điều này có thể được thực hiện bằng cách xác minh đẳng thức Gsk = pk.

Một phần của tài liệu NGHIÊN CỨU MỘT SỐ TẤN CÔNG TÌM KHÓA RIÊNG LIÊN QUAN VIỆC THỰC THI GIÁ TRỊ NONCE TRONG CHUẨN KÝ SỐ ECDSA SECP256K1 (Trang 29 - 31)

Tải bản đầy đủ (DOCX)

(43 trang)
w