Điểm:6

Có an toàn không khi thực hiện phân tách khóa Shamir trên một khóa theo khối và kết hợp lại?

lá cờ cn
mkl

Hôm qua tôi đã làm một PR vào thư viện mã hóa python để hỗ trợ kích thước khóa lớn hơn 16 byte cho sơ đồ chia sẻ bí mật Shamir.

Hiện tại nó hỗ trợ 16 byte, như sau:

$$ K = \{ 0, 1 \}^{128} $$ $$ S_{128}(m, n, K) = s_1, ... , s_n $$

Để không thay đổi chức năng cơ bản và để hỗ trợ các khóa lớn hơn, tôi quyết định chia khóa và chạy chức năng nhiều lần nếu cần và nối các chia sẻ. Ví dụ về khóa 32 byte bên dưới sử dụng chức năng phân tách shamir 16 byte giới hạn.

$$ K = \{ 0, 1 \}^{256} = \{ 0, 1 \}^{128} | \{ 0, 1 \}^{128} = K_A | K_B $$ $$ S_{128}(m, n, K_A) = s_{A1}, ... , s_{An} $$ $$ S_{128}(m, n, K_B) = s_{B1}, ... , s_{Bn} $$ $$ s_1 = s_{A1} | s_{B1} $$

Một vài người trong PR đã đưa ra rằng điều này không an toàn, vì bạn có thể tấn công mỗi bên trong trường hợp 32 byte, mỗi bên 16 byte, có nghĩa là độ mạnh của khóa đi từ 32 byte (2**256) đến 2 * (2 ** 128) = 2**129.

Tôi không tin điều này là đúng, vì không có cuộc tấn công nào ở một bên cho bạn biết bạn đã thành công để bạn tiến sang phía bên kia.

Nói một cách cực đoan, ngay cả khi chức năng shamir chỉ được hỗ trợ 1 byte (8 bit) kích thước khóa, bạn vẫn sẽ duy trì bảo mật khi thực hiện chức năng theo khối và nối các chia sẻ kết quả.

Cho tôi biết bạn nghĩ gì.

kelalaka avatar
lá cờ in
Có phương pháp nào mà người ta có thể xác minh 32 byte để phân chia và chinh phục bí mật không? Đây là chìa khóa cho việc này. Mục đích sử dụng bí mật là gì?
lá cờ cn
mkl
Khóa dành cho enc đối xứng (ví dụ: AES256) hoặc cho bất đối xứng (ví dụ: khóa riêng ed25519).
kelalaka avatar
lá cờ in
Các bên bí mật được chia sẻ có thể độc hại? I E. họ có thể xây dựng phần của mình và vũ phu với người kia không?
lá cờ cn
mkl
Giả sử ngưỡng để khôi phục khóa là 3 lượt chia sẻ. Nếu chúng tôi cho rằng đối thủ có 2 cổ phần, thì họ sẽ phải cố gắng tái tạo lại phần cuối cùng. Tôi không nghĩ rằng đối thủ sẽ có bất kỳ lợi thế nào khi tìm ra từng khối một. I E. không có tổng kiểm tra hoặc hàm băm nào cho biết khối 1 thành công (theo như tôi biết ...).
kelalaka avatar
lá cờ in
SSS có tính bí mật hoàn hảo do đó có một chia sẻ hoặc n-1 không giúp ích gì, tất cả đều có xác suất bí mật như nhau. Tôi nghĩ rằng họ xem xét điều này, thay vì bí mật hoàn hảo 256 bit, bạn có hai bí mật hoàn hảo 128 bit do đó chúng không bằng nhau. Cuối cùng, sự không chắc chắn của tất cả các bit là như nhau đối với kẻ tấn công, vì vậy không đúng.
Điểm:6
lá cờ my

Tôi không tin điều này là đúng, vì không có cuộc tấn công nào ở một bên cho bạn biết bạn đã thành công để bạn tiến sang phía bên kia.

Lý do bạn không tin điều này là đúng bởi vì trên thực tế, nó không đúng sự thật.

Với Kế hoạch Bí mật Shamir, $t-1$ chia sẻ hoàn toàn không cung cấp thông tin về bí mật được chia sẻ. Nghĩa là, cuộc tấn công duy nhất dành cho kẻ thù là bỏ qua các giá trị của cổ phiếu (điều này không cho anh ta biết gì) và trực tiếp đoán khóa AES-256 đầy đủ (điều mà chúng ta đều biết là hoàn toàn không khả thi).

Một vài người trong PR cho rằng điều này không an toàn, vì bạn có thể tấn công mỗi bên trong trường hợp 32 byte, mỗi bên 16 byte

Những người này đã sai - không có 'cuộc tấn công' nào trên Shamir's cho phép ai đó có $t-1$ chia sẻ để khôi phục bí mật (hoặc, đối với vấn đề đó, lấy bất kỳ thông tin nào về nó) - điều này vẫn đúng ngay cả khi chúng tôi cho rằng kẻ tấn công có khả năng tính toán vô hạn.

Nói một cách cực đoan, ngay cả khi chức năng shamir chỉ được hỗ trợ 1 byte (8 bit) kích thước khóa, bạn vẫn sẽ duy trì bảo mật khi thực hiện chức năng theo khối và nối các chia sẻ kết quả.

Bạn có thể thậm chí còn cực đoan hơn thế - nếu mỗi bí mật chỉ là một bit (và do đó có tổng cộng 256 bit), nghĩa là, đối thủ đã biết trước rằng mỗi bí mật giữ giá trị 0 hoặc giá trị 1, anh ta vẫn không thể lấy thêm bất kỳ thông tin nào về khóa.

Mặt khác; có một biện pháp phòng ngừa bạn cần thực hiện - bạn cần giả sử rằng đa thức ngẫu nhiên mà bạn tạo để bảo vệ mỗi nửa 128 bit được chọn độc lập. Nếu (ví dụ) chúng giống nhau ngoại trừ thuật ngữ không đổi này, thì lý do trên không áp dụng.

lá cờ cn
mkl
Cảm ơn câu trả lời và vâng, mỗi khối có một hệ số đa thức mới. Tuy nhiên, tất cả đều sử dụng một trường: https://github.com/Legrandin/pycryptodome/blob/master/lib/Crypto/Protocol/SecretSharing.py#L81
poncho avatar
lá cờ my
@mkl: sử dụng cùng một trường cũng được ...
lá cờ ar
Có lẽ đáng lưu ý rằng, trong khi sử dụng sơ đồ của Shamir để chia sẻ các bit riêng lẻ thực sự là hoàn toàn an toàn, nó sẽ lãng phí một số dung lượng vì bạn vẫn phải sử dụng một trường có ít nhất $n+1$ phần tử để tạo $n$ chia sẻ. Mặc dù các bit riêng lẻ ánh xạ hoàn hảo tới các phần tử của GF(2), nhưng trường đó không có tác dụng đối với việc chia sẻ bí mật của Shamir vì bạn chỉ có thể tạo tối đa một (!) chia sẻ.
poncho avatar
lá cờ my
@IlmariKaronen: vâng, vâng, tôi đã nói nó sẽ an toàn - tôi chưa bao giờ nói nó sẽ thực tế...

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.