เมื่อวานฉันทำ ประชาสัมพันธ์ ไปยังไลบรารี python crypto เพื่อรองรับขนาดคีย์ที่ใหญ่กว่า 16 ไบต์สำหรับโครงร่างการแบ่งปันความลับของ Shamir
ปัจจุบันรองรับ 16 ไบต์ดังนี้:
$$
K = \{ 0, 1 \}^{128}
$$
$$
S_{128}(m, n, K) = s_1, ... , s_n
$$
เพื่อไม่ให้เปลี่ยนฟังก์ชันพื้นฐานและเพื่อรองรับคีย์ที่ใหญ่ขึ้น ฉันตัดสินใจแบ่งคีย์และเรียกใช้ฟังก์ชันหลาย ๆ ครั้งตามต้องการและต่อส่วนที่ใช้ร่วมกัน ตัวอย่างคีย์ 32 ไบต์ด้านล่างโดยใช้ฟังก์ชันแยก shamir 16 ไบต์ที่จำกัด
$$
K = \{ 0, 1 \}^{256} = \{ 0, 1 \}^{128} | \{ 0, 1 \}^{128} = K_A | เค_บี
$$
$$
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}
$$
มีคนสองคนใน PR บอกว่าสิ่งนี้ไม่ปลอดภัย เนื่องจากคุณสามารถโจมตีแต่ละด้านได้ในกรณีของ 32 ไบต์ แต่ละข้าง 16 ไบต์ หมายความว่าความแข็งแกร่งของคีย์มาจาก 32 ไบต์ (2**256)
ถึง 2 * (2 ** 128) = 2**129
.
ฉันไม่เชื่อว่านี่เป็นความจริง เนื่องจากไม่มีการโจมตีด้านใดด้านหนึ่งที่จะแจ้งให้คุณทราบว่าคุณประสบความสำเร็จในการปล่อยให้คุณดำเนินการต่ออีกด้านหนึ่ง
เพื่อให้ได้ประสิทธิภาพสูงสุดแม้ว่าจะรองรับฟังก์ชัน Shamir เท่านั้น 1 ไบต์ (8 บิต)
ขนาดคีย์ คุณยังคงรักษาความปลอดภัยที่ทำหน้าที่ในบล็อกและเชื่อมต่อการแชร์ผลลัพธ์
แจ้งให้เราทราบสิ่งที่คุณคิด.