Score:0

ฉันจะใช้แผนการแบ่งปันความลับได้อย่างไร ในเมื่อความลับไม่ใช่ตัวเลข แต่เป็นคำสั่ง

ธง ua

ฉันต้องการใช้แผนการแบ่งปันความลับที่ผู้เล่นทุกคน $i\ใน N$ ต้องแบ่งปันความลับของคู่ $(l_i,\nu_{l_i})$, ที่ไหน $l_i$ เป็นรหัสเฉพาะ (จำนวนเต็มบวก) สำหรับผู้เล่นทุกคน แต่ $\nu_{l_i}$ เป็นความลับเหมือนคำสั่ง ตัวอย่างเช่นเมื่อผู้เล่น $i$ รายงานไปยังผู้เล่นคนอื่นๆ $\nu_{l_i}$ ก็เหมือนกับการทำคำสั่งในรูปแบบ "ฉันชื่อ $i$ และฉันรู้ข้อมูล $\nu_i$."

ความคิดแรกของฉันคือฉันต้องการฟังก์ชันพหุนามของดีกรี $k-1$ สำหรับผู้เล่นทุกคน $i$ เพื่อแบ่งปันรหัส $l_i$ กับผู้เล่นอื่นทุกคน $j=-i$แต่การรู้ l_i ต้องบอกเป็นนัยว่าผู้เล่นคนอื่นจะเรียนรู้ด้วย $\nu_{l_i}$ หลังจากสร้างรหัสใหม่ $l_i$. ฉันจะทำงานนี้ด้วยการแบ่งปันความลับได้อย่างไร

Hunger Learn avatar
ua flag
แนวคิดหนึ่งแม้ว่าฉันจะไม่รู้ว่าสิ่งนี้จะนำไปใช้ได้อย่างไรคือการกำหนดรหัสลับทางคณิตศาสตร์ที่สามารถแปลทุกคำในคำสั่งของคุณเป็นตัวเลขได้ ดังนั้นคุณจะมีรหัสแยกและข้อความที่เข้ารหัสด้วยฉันคิดว่า
ar flag
ที่เกี่ยวข้องอย่างใกล้ชิด: [การแบ่งปันความลับของ Shamir สำหรับเวกเตอร์](https://crypto.stackexchange.com/questions/70024/shamirs-secret-sharing-for-vectors)
Score:1
ธง ar

ทางออกที่ง่ายที่สุดคือ:

  1. เข้ารหัสวลีลับเป็นตัวเลขตั้งแต่หนึ่งตัวขึ้นไป และ
  2. จากนั้นแบ่งปันแต่ละหมายเลขโดยใช้รูปแบบการแบ่งปันที่เป็นความลับ

อันที่จริง หากวลีลับของคุณถูกจัดเก็บไว้ในคอมพิวเตอร์ ส่วนแรกจะได้รับการดูแลอยู่แล้ว: โดยทั่วไปแล้ว คอมพิวเตอร์จะจัดเก็บข้อมูล รวมถึงข้อความ เป็นลำดับของไบต์ 8 บิต เช่น ตัวเลขตั้งแต่ 0 ถึง 255

ตราบใดที่คุณไม่จำเป็นต้องสร้างความลับใด ๆ มากกว่า 255 ส่วนแบ่ง คุณสามารถถือว่าไบต์เหล่านั้นเป็นองค์ประกอบของ GF(28) และแบ่งปันโดยใช้ แผนการแบ่งปันความลับของ Shamir (หรือแผนการแบ่งปันความลับอื่นที่คล้ายกันที่คุณต้องการ)

คุณสามารถทำได้ ใช้รหัสแชร์เดียวกันอย่างปลอดภัย (เช่น. $x$ ประสานงาน) สำหรับแต่ละไบต์ของวลีที่แชร์ ดังนั้นการแชร์ของคุณจะยาวกว่าวลีลับเพียงหนึ่งไบต์ (แต่จะเป็นข้อมูลไบนารีแบบสุ่ม ดังนั้นคุณอาจต้องเช่น ฐาน 64 เข้ารหัสเพื่อขนส่งเป็นข้อความ) และการแบ่งปันความลับของ Shamir เกี่ยวกับ GF (28) สามารถทำได้เร็วมาก เนื่องจากการคำนวณทางคณิตศาสตร์ทั้งหมดทำได้โดยใช้เพียงไบต์เดียว ด้วยเหตุผลเหล่านี้ การแบ่งปันความลับของ Shamir ค่อนข้างน้อยจึงทำได้เพียงแค่นี้

วิธีการแบ่งปันแบบไบต์ต่อไบต์ที่อธิบายไว้ข้างต้นมีข้อเสียบางประการ:

  1. แสดงความยาวไบต์ของวลีลับ หากนี่เป็นปัญหา วลีควรได้รับการเติมแบบย้อนกลับให้มีความยาวคงที่ก่อนที่จะแชร์

  2. ด้วยเหตุผลทางคณิตศาสตร์ (เช่น เนื่องจากแต่ละการแบ่งใช้ต้องมีองค์ประกอบฟิลด์ที่ไม่ใช่ศูนย์ที่แตกต่างกันเป็นองค์ประกอบ $x$ ประสาน)มัน ไม่สามารถใช้เพื่อสร้างมากกว่า 255 หุ้นที่แตกต่างกัน สำหรับแต่ละความลับ หากยังไม่เพียงพอ คุณสามารถเช่น แบ่งส่วนแบ่งเป็น คู่ จำนวนไบต์และแบ่งปันโดยใช้โครงร่างของ Shamir บน GF(216) มากถึง 65535 หุ้น หรือแบ่งเป็นกลุ่มของ สี่ ไบต์และแบ่งปันผ่าน GF(232) มากถึงประมาณ 4 ล้านหุ้น

(แน่นอนว่าคุณสามารถใช้ขนาดฟิลด์ที่ใหญ่กว่านี้ หรือแม้แต่ขนาดที่ไม่ใช่ยกกำลัง 2 ได้หากต้องการ แต่โดยทั่วไปมีเหตุผลเพียงเล็กน้อยที่จะทำเช่นนั้นอย่างน้อยก็ไม่ใช่เมื่อแบ่งปันข้อมูลไบนารี ซึ่งสุดท้ายแล้วข้อมูลทั้งหมดที่จัดเก็บไว้ในคอมพิวเตอร์ไบนารีก็คือ)


แน่นอน หากคุณไม่ยืนยันถึงความปลอดภัยทางทฤษฎีข้อมูลที่สมบูรณ์แบบ อีกทางเลือกหนึ่งที่ใช้ได้จริงคือการสร้างคีย์สุ่ม (เช่น 128 หรือ 256 บิต) สำหรับรูปแบบการเข้ารหัสแบบสมมาตร เช่น เออีเอส,* เข้ารหัสความลับของคุณโดยใช้คีย์ แล้วแชร์คีย์

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


*) การใช้ความปลอดภัย โหมดการทำงาน, แน่นอน. ฉันมักจะแนะนำ เข้ารหัสรับรองความถูกต้อง โหมดเช่น SIV แต่แม้แต่โหมดดั้งเดิมที่ไม่ผ่านการรับรองความถูกต้อง เช่น CBC หรือ CTR ก็อาจเพียงพอสำหรับความต้องการของคุณ แค่ อย่าใช้ ECB

Hunger Learn avatar
ua flag
คุณหมายความว่าข้อความนี้ซึ่งมี 10 คำ เราสามารถมี 10 ช่องว่างสำหรับทุกๆ ความลับ โดยพูดว่า $S=\times_{i=1}S_i^{10}$ และใช้ฟังก์ชันพหุนาม 10 ฟังก์ชันสำหรับแต่ละฟังก์ชัน
Hunger Learn avatar
ua flag
ฉันไม่รู้ว่าจะสร้างแบบจำลองทางคณิตศาสตร์นี้อย่างไร...รูปแบบการตรวจสอบความถูกต้องและวิธีกำหนดโหมดการทำงาน....ฉันต้องการโครงสร้างทางคณิตศาสตร์....
ar flag
จะช่วยให้ทราบว่าขั้นตอนใดในสองขั้นตอนในคำตอบข้างต้นที่คุณประสบปัญหา เป็นขั้นตอนที่แยกจากกันโดยสิ้นเชิง: ขั้นตอนที่ 1 ไม่เกี่ยวข้องกับการแบ่งปันความลับ (และไม่มีพหุนาม ฯลฯ) ในขณะที่ขั้นตอนที่ 2 เกี่ยวข้องกับหมายเลขลับเพียงหมายเลขเดียว (หรือคุณใช้แยกกันกับแต่ละหมายเลขที่คุณได้รับในขั้นตอนที่ 1) . มันอาจจะง่ายกว่าที่คุณคิด
Score:0
ธง ua

สารละลาย $1$: ทุกคำถูกแปลเป็นตัวเลขด้วยความช่วยเหลือของรหัส บอกว่า $C$ เป็นแผนที่ที่ใช้คำและแปลเป็นตัวเลขกล่าวคือ $C:A\to\mathbb{N}$, ที่ไหน $A$ เป็นตัวอักษร ในข้อความของคุณ "ฉันชื่อ $i$ และฉันรู้ข้อมูล $\nu_i$." คุณมี $10$ คำคือ 10 รหัส $x_1,..,x_{10}$. จากนั้นผู้เล่นทุกคนสามารถส่งหุ้นที่แตกต่างกันได้ 10 หุ้น $(a_{j,k},b_{j,k})_{k=1}^{10}$ ถึงผู้เล่นคนอื่น ๆ ทุกคน $เจ$ โดยที่แต่ละคู่คือหนึ่งจุดของฟังก์ชันพหุนามเฉพาะของดีกรี $t-1$, $(f_{i,k})_{k=1}^{10}$. หากผู้เล่นร่วมมือกันและแบ่งปันส่วนต่างๆ ของฟังก์ชันโพลิโนเมียลทุกตัว พวกเขาจะสร้างฟังก์ชันนี้ขึ้นมาใหม่ $10$ หน้าที่ของ $i$. จากนั้นจะได้เรียนรู้ $10$ ตัวเลขที่สามารถสร้างคำสั่งใหม่ได้ ใช้รูปแบบการถอดรหัสสำหรับทุกรายการ $10$ ตัวเลขและคุณจะเอาสิ่งที่คุณต้องการ

สารละลาย $2$: อีกหนึ่งความคิดที่มีความหมายจากมุมมองทางคณิตศาสตร์ บอกว่า $E_i(k_i,\nu_{l_i})=l_i$ เป็นฟังก์ชันการเข้ารหัสเช่นนั้น

$$E_i:K_i\times N_{L_i}\ถึง L_i$$

และทุกคู่ $(k_i,l_i)$ มีความเกี่ยวข้องเพียงหนึ่งเดียว $\nu_{l_i}$คือ bijective $E_i$. นอกจากนี้ ฟังก์ชันการถอดรหัสคือ $$D_i:K_i\times L_i\to N_{L_i}$$

และด้วยเหตุนี้ $D(k_i,l_i)=D(k_i,E_i(k_i,\nu_{l_i}))=\nu_{l_i}$

สำหรับรหัสคุณสามารถใช้โปรแกรม Shamir แบบง่าย ๆ ตามที่คุณพูด ก่อนอื่นผู้เล่นจะได้เรียนรู้ $(x_i,y_i)$ นั่นคือจุดของฟังก์ชันพหุนามของดีกรี $t-1$ และรหัส $k_i$ซึ่งเป็นกุญแจสำคัญและด้วยเหตุนี้หลังจากที่พวกเขาร่วมมือกันเพื่อคำนวณความลับ $l_i$ นี้ $l_i$ มีประโยชน์ในการถอดรหัส $\nu_{l_i}$. นั่นคือวิธีที่คุณสามารถคำนวณจากอีกอันหนึ่งได้ ในส่วนที่ท่านว่านั้น $l_i$ เป็นรหัสและ $\nu_{l_i}$ คำสั่ง โปรดทราบว่าทุกคำของคำสั่งจะถูกแปลเป็นรหัสนี้ ดังนั้นด้วยการเรียนรู้ $l_i$ซึ่งหมายความว่าคำสั่งทั้งหมดถูกถอดรหัส

Hunger Learn avatar
ua flag
ฉันไม่รู้ว่าสิ่งที่ฉันพูดมีเหตุผลหรือไม่ แต่ฉันคิดว่ามีคำอธิบายที่เป็นเหตุเป็นผลในความคิดของฉัน กรุณาวิจารณ์ใด ๆ ก็ยินดีเป็นอย่างยิ่ง มันจะช่วยให้ฉันเข้าใจว่าฉันถูกหรือผิด

โพสต์คำตอบ

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