แผนการลายเซ็นกลุ่มที่มีการตรวจสอบย้อนกลับแบบกระจาย (หรือวิธีการเปิดลายเซ็นอย่างเป็นธรรม)

รูปภาพโดย Anne-Laure Delva

ในโพสต์นี้ฉันต้องการพูดคุยกับกลุ่มลายเซ็นกลุ่มและเฉพาะกลุ่มลายเซ็นที่มีการตรวจสอบย้อนกลับแบบกระจายและแสดงว่าทำไมเครื่องมือนี้เป็นเครื่องมือเข้ารหัสลับที่น่าสนใจสำหรับระบบกระจายโดยใช้ Helix consensus protocol เป็นตัวอย่างว่าลายเซ็นเหล่านี้สามารถใช้ได้อย่างไร

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

สำหรับบางกรณีการใช้งานที่มีสิทธิในการติดตามเดียวทำงาน อย่างไรก็ตามในหลาย ๆ กรณีไม่มีอำนาจเดียวที่ทุกคนไว้วางใจในการเพิกถอนการเปิดเผยตัวตนดังนั้นจึงเหมาะสมกว่าที่จะแบ่งความรับผิดชอบระหว่างหน่วยงานต่าง ๆ ความเข้าใจนี้นำไปสู่ ​​Benjumea และคณะ เพื่อออกแบบ“ ลายเซ็นหลายกลุ่มที่ตรวจสอบย้อนกลับได้อย่างเป็นธรรม” ในโครงการของพวกเขาเปิดลายเซ็นเป็นไปได้ถ้าเจ้าหน้าที่ความยุติธรรมหลายร่วมมือกัน เจ้าหน้าที่ด้านความเป็นธรรมยังสามารถร่วมมือกันเพื่อเปิดเผยรหัสติดตามของผู้ใช้ภายใต้ความสงสัย คีย์นี้สามารถใช้เพื่อตรวจสอบว่าข้อความถูกลงชื่อโดยผู้ใช้บางคนโดยไม่เพิกถอนการไม่เปิดเผยตัวตนของผู้ใช้รายอื่น

จนถึงทุกวันนี้มีรูปแบบลายเซ็นหลายอย่างที่มีความสามารถในการตรวจสอบย้อนกลับแบบกระจายซึ่งแตกต่างกันเล็กน้อยเกี่ยวกับฟังก์ชันที่พวกเขานำเสนอเช่น "กลุ่มลายเซ็นประชาธิปไตยที่มีการตรวจสอบย้อนกลับเกณฑ์" โดย Zheng et al. และ "ลายเซ็นกลุ่มสั้น al. ซึ่งฉันจะอธิบายเพิ่มเติมต่อไป

ลายเซ็นกลุ่มพร้อมการตรวจสอบย้อนกลับแบบกระจายใน Helix

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

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

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

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

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

จากโฟลว์ของเราเราได้สรุปข้อกำหนดด้านความปลอดภัยที่เราต้องการ:

  • การไม่เปิดเผยตัวตน: ลายเซ็นของกลุ่มไม่เปิดเผยตัวตนของสมาชิกที่สร้างมันขึ้นมาเว้นแต่จะมีจำนวนมากกว่าขีด จำกัด ของหน่วยงานความเป็นธรรมที่ให้ความร่วมมือ
  • ความสามารถในการตรวจสอบย้อนกลับนั้นจะไม่เปิดเผยตัวตน: หากโหนดอ้างว่าเป็นผู้เริ่มต้นของลายเซ็นหรือตัวตนของมันถูกเปิดเผยเป็นส่วนหนึ่งของอัลกอริธึมการติดตามสิ่งนี้จะไม่ประกอบด้วยความเป็นส่วนตัวของลายเซ็นกลุ่มอดีตหรืออนาคตที่เหลือ
  • การเชื่อมโยงไม่ได้: เป็นไปไม่ได้ที่จะเชื่อมโยงลายเซ็นสองลายเซ็นขึ้นไปที่ผลิตโดยผู้ลงนามคนเดียวกันโดยไม่ได้รับความร่วมมือจากผู้มีอำนาจจำนวนเกณฑ์
  • Non-frameability: แม้ว่ากลุ่มและผู้จัดการการติดตามจะสมรู้ร่วมคิดกับส่วนที่เหลือของกลุ่มพวกเขาไม่สามารถกำหนดกรอบสมาชิกกลุ่มที่ซื่อสัตย์ได้ ผู้ใช้อาจมีกรอบในสองวิธีที่แตกต่างกัน: เจ้าหน้าที่และผู้ใช้อื่น ๆ อาจสร้างลายเซ็นที่เปิดหรือติดตามผู้ใช้ที่ไร้เดียงสา (ข้อกำหนดนี้เรียกอีกอย่างหนึ่งว่า ด้วยตัวของพวกเขาเอง.

ข้อกำหนดที่สำคัญอื่น ๆ ได้แก่ : สนับสนุนการเปลี่ยนแปลงแบบไดนามิกของผู้ลงนามและผู้ติดตามและไม่ต้องการการตั้งค่าที่เชื่อถือได้

โครงการลายเซ็นผู้สมัคร

หนึ่งในรูปแบบลายเซ็นที่มีประสิทธิภาพที่สุดที่รู้จักกันในปัจจุบันคือ Boneh, Boyen และ Shacham (BBS) ซึ่งพวกเขานำเสนอในบทความของพวกเขา“ ลายเซ็นกลุ่มสั้น” รูปแบบลายเซ็นของพวกเขาขาดคุณสมบัติบางประการที่จำเป็นสำหรับการใช้งานของเรา ประการแรกรูปแบบลายเซ็นกลุ่มของพวกเขาไม่ได้ให้ตรวจสอบย้อนกลับกระจาย แต่ต้องการอำนาจการติดตามแบบรวมศูนย์ นอกจากนี้รูปแบบของพวกเขาไม่เป็นไปตาม“ คุณสมบัติการตรวจสอบย้อนกลับคงที่ไม่เปิดเผยชื่อ” (เพราะไม่ได้จัดทำ CCA-anonymity อธิบายในภายหลัง) ซึ่งเป็นสิ่งสำคัญในการตั้งค่าของเรา นอกจากนี้กระบวนการสร้างคีย์ต้องการตัวแทนจำหน่ายที่เชื่อถือได้ โชคดีที่มีเอกสารติดตามที่ดูแลประเด็นสองข้อแรก แนวคิดนี้สามารถนำมารวมกันเพื่อให้ได้รูปแบบลายเซ็นที่ไม่ระบุชื่อแบบ CCA ที่ให้การตรวจสอบย้อนกลับแบบกระจาย การกำจัดดีลเลอร์ที่เชื่อถือได้เป็นปัญหาที่ต้องแก้ไขหากเราเลือกแบบแผนนี้

ในกระดาษโดย Blomer et al, "ลายเซ็นกลุ่มสั้นที่มีการตรวจสอบย้อนกลับแบบกระจายได้", รูปแบบของ BBS ถูกขยายเพื่อรองรับการตรวจสอบย้อนกลับแบบกระจาย นี่คือความสำเร็จในวิธีต่อไปนี้ ในรูปแบบ BBS ส่วนหนึ่งของลายเซ็นเป็นการเข้ารหัสลับ (ส่วนหนึ่งของ) คีย์ลับและการเปิดยอดเงินเพื่อถอดรหัส ciphertext นี้ ในกระดาษโดย Blomer พวกเขาเปลี่ยนการเข้ารหัสเพื่อการเข้ารหัสเกณฑ์ การเปิดลายเซ็นประกอบด้วยสองกระบวนการกระบวนการแรกคือการผลิตการเปิดใช้ร่วมกันจากลายเซ็นและที่สองคือการรวมจำนวนเกณฑ์การแชร์เพื่อถอดรหัสกลับคีย์ของผู้ลงนาม การปรับเปลี่ยนอื่นที่พวกเขาทำคือการเพิ่มองค์ประกอบเพิ่มเติมให้กับรหัสลับที่ผู้ใช้รู้จักเท่านั้นและไม่ได้ให้สิทธิ์ความเป็นธรรม สิ่งนี้รับประกันได้ว่าเจ้าหน้าที่ยุติธรรมไม่สามารถลงนามในนามของสมาชิกคนอื่น ๆ ได้

โครงการโดย BBS ให้ CPA - ไม่เปิดเผยชื่อ โดยทั่วไปหมายความว่าลายเซ็นไม่ระบุชื่อหากฝ่ายตรงข้ามไม่ได้รับการสืบค้นโปรโตคอลลายเซ็นการสืบค้นกลับ อย่างไรก็ตามข้อสันนิษฐานนี้ไม่ได้เป็นธรรมในการตั้งค่าของเราเนื่องจากฝ่ายตรงข้ามอาจสร้างข้อความที่ลงนามและส่งพวกเขาไปยัง blockchain และหลังจากนั้นพวกเขาจะถูกติดตามเป็นส่วนหนึ่งของการไหลปกติของเรา ดังนั้นเราจึงต้องการรูปแบบลายเซ็นที่จะไม่ระบุชื่อ CCA ซึ่งหมายความว่าแม้ศัตรูที่เข้าถึงโปรโตคอล open \ tracing ไม่สามารถติดตามลายเซ็นได้หากไม่ร่วมมือกับหน่วยงานด้านความเป็นธรรมจำนวนเกณฑ์ ในบทความของเขา“ การพิสูจน์ความรู้ที่ไม่มีการสื่อสารที่มีประสิทธิภาพในการสื่อสารกับตัวแยกข้อมูลออนไลน์” Fischlin แนะนำวิธีการเปลี่ยนรูปแบบลายเซ็นโดย BBS ให้ปลอดภัย CCA สิ่งนี้ทำงานโดยการเพิ่มองค์ประกอบลงในลายเซ็นซึ่งสร้างการพิสูจน์ความรู้ที่ไม่เป็นศูนย์แบบไม่โต้ตอบสำหรับค่าสุ่มที่ใช้เมื่อเข้ารหัส สิ่งนี้ทำให้มั่นใจได้ว่าฝ่ายตรงข้ามจะไม่ได้รับมากจากการโต้ตอบกับโปรโตคอลการติดตามตั้งแต่เพื่อลงนามข้อความที่ถูกต้องเธอต้องรู้ค่าสุ่มที่ใช้สำหรับการสร้างการเข้ารหัสในสถานที่แรก

ขนาดของลายเซ็นต์

ความยาวของชุดลายเซ็นกลุ่ม BBS ภายใต้พารามิเตอร์ที่ผู้เขียนแนะนำคือ 1,533 บิต นี่เปรียบได้กับขนาดของลายเซ็น RSA ซึ่งยาว 1,024 หรือ 2,048 บิตสำหรับลายเซ็นที่มีความปลอดภัยคล้ายกัน การเพิ่มความสามารถในการตรวจสอบย้อนกลับแบบกระจายนั้นไม่ได้ทำให้ลายเซ็นยาวขึ้น แต่ความซับซ้อนที่ชาญฉลาดนั้นจำเป็นต้องมีการคำนวณการแก้ไขพหุนามพหุนาม lagrange เพื่อรวมการแบ่งปัน

สำหรับข้อพิสูจน์ความรู้ที่ไม่มีศูนย์ความรู้นี้มีขนาดค่อนข้างใหญ่และมีค่าใช้จ่ายในการคำนวณสูง สำหรับพารามิเตอร์ที่แนะนำในกระดาษความยาวของคือ 3,520 บิตซึ่งมีจำนวนความยาวลายเซ็นของทั้งหมด 5,053 บิต

ขนาดของลายเซ็นแบ่งปันคือ 340 บิตต่อหุ้น

ฉันขอขอบคุณ Steven Goldfeder สำหรับการอภิปรายที่เป็นประโยชน์ในเรื่องนี้

* อ่านเอกสารทางเทคนิค Orbs: https://www.orbs.com/white-papers

เข้าร่วมชุมชน Orbs:

  • โทรเลข: https://t.me/orbs_network
  • Twitter: https://twitter.com/orbs_network
  • Reddit: https://www.reddit.com/r/ORBS_Network/
  • GitHub: https://github.com/orbs-network