Score:6

ปลอดภัยหรือไม่ที่จะแบ่งคีย์ Shamir บนคีย์ในบล็อกแล้วรวมเข้าด้วยกันใหม่

ธง cn
mkl

เมื่อวานฉันทำ ประชาสัมพันธ์ ไปยังไลบรารี 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 บิต) ขนาดคีย์ คุณยังคงรักษาความปลอดภัยที่ทำหน้าที่ในบล็อกและเชื่อมต่อการแชร์ผลลัพธ์

แจ้งให้เราทราบสิ่งที่คุณคิด.

kelalaka avatar
in flag
มีวิธีการใดที่สามารถตรวจสอบ 32 ไบต์เพื่อแบ่งและพิชิตความลับได้หรือไม่? นี่คือกุญแจสำคัญในการนี้ เป้าหมายของการใช้ความลับคืออะไร?
cn flag
mkl
คีย์ใช้สำหรับเข้ารหัสแบบสมมาตร (เช่น AES256) หรือแบบไม่สมมาตร (เช่น คีย์ส่วนตัว ed25519)
kelalaka avatar
in flag
ความลับที่ใช้ร่วมกันอาจเป็นอันตรายได้? เช่น. พวกเขาสามารถสร้างส่วนแบ่งและบังคับให้อีกฝ่ายดุร้ายได้หรือไม่?
cn flag
mkl
สมมติว่าเกณฑ์ในการกู้คืนคีย์คือ 3 หุ้น หากเราถือว่าฝ่ายตรงข้ามมี 2 ส่วนแบ่ง พวกเขาก็ต้องพยายามสร้างส่วนแบ่งสุดท้ายขึ้นมาใหม่ ฉันไม่คิดว่าศัตรูจะได้เปรียบในการหาทีละบล็อก เช่น. ไม่มีการตรวจสอบหรือแฮชที่ระบุว่าบล็อก 1 สำเร็จ (เท่าที่ฉันรู้...)
kelalaka avatar
in flag
SSS เป็นความลับที่สมบูรณ์แบบ ดังนั้นการมีหนึ่งส่วนแบ่งหรือ n-1 จึงไม่ช่วยอะไร มีความเป็นไปได้เหมือนกันที่จะเป็นความลับ ฉันคิดว่าพวกเขาพิจารณาสิ่งนี้ แทนที่จะเป็น 256-bit perfect secrecy คุณมี 128-bit perfect secrecy สองตัว ดังนั้นมันจึงไม่เท่ากัน ในท้ายที่สุด ความไม่แน่นอนของบิตทั้งหมดจะเหมือนกันสำหรับผู้โจมตี ดังนั้นจึงไม่เป็นความจริง
Score:6
ธง my

ฉันไม่เชื่อว่านี่เป็นความจริง เนื่องจากไม่มีการโจมตีด้านใดด้านหนึ่งที่จะแจ้งให้คุณทราบว่าคุณประสบความสำเร็จในการปล่อยให้คุณดำเนินการต่ออีกด้านหนึ่ง

เหตุผลที่คุณไม่เชื่อว่าสิ่งนี้เป็นความจริงก็เพราะความจริงแล้วมันไม่จริง

ด้วยแผนลับชาเมียร์ $t-1$ หุ้นไม่ให้ข้อมูลเกี่ยวกับความลับที่ใช้ร่วมกันอย่างแน่นอน นั่นคือ การโจมตีเพียงอย่างเดียวที่ฝ่ายตรงข้ามทำได้คือการเพิกเฉยต่อมูลค่าของหุ้น (ซึ่งไม่ได้บอกอะไรเขาเลย) และคาดเดารหัส AES-256 ทั้งหมดโดยตรง (ซึ่งอย่างที่เราทราบกันดีว่าเป็นไปไม่ได้เลย)

มีคนสองคนใน PR บอกว่าสิ่งนี้ไม่ปลอดภัย เนื่องจากคุณสามารถโจมตีแต่ละด้านได้ในกรณีของ 32 ไบต์ แต่ละข้าง 16 ไบต์

คนเหล่านี้ผิด - ไม่มี 'การโจมตี' ใน Shamir's ที่อนุญาตให้ใครบางคนทำได้ $t-1$ แบ่งปันเพื่อกู้คืนความลับ (หรือเพื่อให้ได้ข้อมูลใด ๆ ในเรื่องนั้น) - สิ่งนี้ยังคงเป็นจริงแม้ว่าเราจะถือว่าผู้โจมตีมีความสามารถในการคำนวณที่ไม่มีที่สิ้นสุด

เพื่อให้ได้ประสิทธิภาพสูงสุดแม้ว่าจะรองรับฟังก์ชัน Shamir เท่านั้น 1 ไบต์ (8 บิต) ขนาดคีย์ คุณยังคงรักษาความปลอดภัยที่ทำหน้าที่ในบล็อกและเชื่อมต่อการแชร์ผลลัพธ์

คุณสามารถทำให้มันสุดโต่งยิ่งกว่านั้น - ถ้าความลับแต่ละข้อมีเพียงหนึ่งบิต (และดังนั้นมีทั้งหมด 256 ข้อ) นั่นคือฝ่ายตรงข้ามรู้ล่วงหน้าว่าแต่ละข้อมีค่าเป็น 0 หรือค่า 1 เขายังไม่สามารถรับข้อมูลเพิ่มเติมเกี่ยวกับกุญแจได้

ในทางกลับกัน; มีข้อควรระวังอย่างหนึ่งที่คุณต้องทำ - คุณต้องถือว่าพหุนามแบบสุ่มที่คุณสร้างขึ้นเพื่อป้องกันแต่ละครึ่ง 128 บิตนั้นถูกเลือกอย่างอิสระ ถ้า (ตัวอย่าง) เหมือนกัน ยกเว้นคำคงที่นี้ จะไม่ใช้เหตุผลข้างต้น

cn flag
mkl
ขอบคุณสำหรับคำตอบ และใช่ แต่ละบล็อกจะได้รับค่าสัมประสิทธิ์พหุนามใหม่ อย่างไรก็ตาม ทั้งหมดใช้ฟิลด์เดียว: https://github.com/Legrandin/pycryptodome/blob/master/lib/Crypto/Protocol/SecretSharing.py#L81
poncho avatar
my flag
@mkl: ใช้ฟิลด์เดียวกันก็ใช้ได้ ...
ar flag
อาจเป็นเรื่องน่าสังเกตว่า แม้ว่าการใช้แบบแผนของ Shamir เพื่อแบ่งปันแต่ละบิตนั้นปลอดภัยอย่างสมบูรณ์ แต่ก็ทำให้เสียพื้นที่บางส่วนเนื่องจากคุณยังคงต้องใช้ฟิลด์ที่มีองค์ประกอบอย่างน้อย $n+1$ เพื่อสร้างการแบ่งปัน $n$ แม้ว่าแต่ละบิตจะจับคู่กับองค์ประกอบของ GF(2) ได้อย่างสมบูรณ์แบบ แต่ฟิลด์นั้นไม่มีประโยชน์สำหรับการแบ่งปันความลับของ Shamir เนื่องจากคุณสามารถสร้างการแบ่งปันได้มากที่สุดเพียงหนึ่ง (!) เท่านั้น
poncho avatar
my flag
@IlmariKaronen: ใช่ ฉันบอกว่ามันจะปลอดภัย - ฉันไม่เคยพูดว่ามันจะใช้ได้จริง...

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา