Ieri am facut o relatii cu publicul la o bibliotecă cripto python pentru a accepta dimensiunile cheilor mai mari de 16 octeți pentru schema de partajare secretă Shamir.
În prezent, acceptă 16 octeți, după cum urmează:
$$
K = \{ 0, 1 \}^{128}
$$
$$
S_{128}(m, n, K) = s_1, ... , s_n
$$
Pentru a nu schimba funcția de bază și pentru a accepta chei mai mari, am decis să împart cheia și să rulez funcția de câte ori este nevoie și să concatenez acțiunile. Exemplu de cheie de 32 de octeți de mai jos, folosind o funcție de împărțire shamir limitată de 16 octeți.
$$
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}
$$
Câțiva oameni din PR au spus că acest lucru este nesigur, deoarece puteți ataca fiecare parte în cazul a 32 de octeți, fiecare parte a 16 octeți, înseamnă că puterea cheii provine de la 32 de octeți (2**256)
la 2 * (2 ** 128) = 2**129
.
Nu cred că acest lucru este adevărat, deoarece nu există niciun atac pe o parte care să vă spună că ați reușit să vă permită să treceți pe cealaltă parte.
Pentru a lua-o la extrem, chiar dacă funcția shamir doar suportată 1 octet (8 biți)
dimensiunea cheii, veți menține în continuare securitatea făcând funcția în blocuri și concatenând acțiunile rezultate.
Spune-mi ce crezi.