*หมายเหตุสำหรับบรรณาธิการ: เทคโนโลยีนี้เผยแพร่ในปี 2023 IEEE Intl Conf เกี่ยวกับการประมวลผลแบบขนานและแบบกระจายด้วยแอปพลิเคชัน, Big Data และการประมวลผลแบบคลาวด์, คอมพิวเตอร์และการสื่อสารที่ยั่งยืน, คอมพิวเตอร์และเครือข่ายทางสังคม (ISPA/BDCloud/SocialCom/SustainCom) ดอย: 10.1109/ISPA-BDCloud-SocialCom-SustainCom59178.2023.00092*
# การแนะนำ
Li17 เป็นลายเซ็น 2-2 ECDSA ที่รวดเร็วและปลอดภัยที่สุดในอุตสาหกรรม; CGGMP20 เป็นลายเซ็น tn ECDSA ที่ปลอดภัยที่สุดและค่อนข้างรวดเร็วที่สุดในอุตสาหกรรม ในด้านการดูแลสินทรัพย์ดิจิทัล มีการใช้ลายเซ็นเกณฑ์ ECDSA 2-3 รายการอย่างกว้างขวาง ในกรณีนี้ ลายเซ็น Li17 2-2 ไม่สามารถใช้งานได้โดยตรง และจำเป็นต้องแก้ไขอย่างเหมาะสม โดยเฉพาะอย่างยิ่ง มีการปรับเปลี่ยนดังต่อไปนี้: Alice และ Bob รันโปรโตคอลการสร้างคีย์แบบกระจายอำนาจเพื่อสร้างแฟรกเมนต์คีย์ส่วนตัว $a$ และ $b$ ตามลำดับ จากนั้นรันโปรโตคอลรีเฟรชคีย์แบบกระจายอำนาจสองครั้งเพื่อสร้าง $(a ', b')$ และ $(a'', b'')$; อลิซส่ง $a'$ อย่างเป็นความลับให้กับแครอล และ Bob ก็ส่ง $b''$ อย่างเป็นความลับให้กับแครอล ดังนั้น Alice และ Bob จึงใช้การแบ่งย่อยคีย์ส่วนตัว $(a,b)$, Alice และ Carol ใช้การแบ่งย่อยคีย์ส่วนตัว $(a'', b'')$ และ Bob และ Carol ใช้การแบ่งย่อยคีย์ส่วนตัว $(a' ,b ')$ ทุกคนสามารถบรรลุลายเซ็นได้ อย่างไรก็ตาม กระบวนการข้างต้นจะส่งแฟรกเมนต์คีย์ส่วนตัวโดยตรง หากแฟรกเมนต์คีย์ส่วนตัวรั่วไหล ความรับผิดชอบจะไม่สามารถติดตามได้ และความกดดันในการจัดเก็บจะเพิ่มขึ้น! ในทางกลับกัน ลายเซ็นเกณฑ์ CGGMP20 tn ต้องใช้ $t=2,n=3$ อย่างไรก็ตาม ความซับซ้อนของโปรโตคอลของ CGGMP20 นั้นค่อนข้างสูง ดังนั้นจึงไม่มีทางที่จะฆ่าไก่ด้วยมีดเล่มใหญ่ได้!
บทความนี้ยืนอยู่บนไหล่ของยักษ์ใหญ่ Li17 เสนอลายเซ็น ECDSA 2-n ที่รวดเร็วและปลอดภัย โปรโตคอลสืบทอดความปลอดภัยและความเร็วของลายเซ็น Li17 2-2
โดยเฉพาะอย่างยิ่งในโปรโตคอลการสร้างคีย์แบบกระจายอำนาจและโปรโตคอลการรีเฟรชคีย์ เกณฑ์จะถูกสร้างขึ้นตามพหุนามการประมาณค่าของ Lagrange เพื่อให้ได้ลายเซ็นเกณฑ์ 2-n นอกจากนี้ ในขั้นตอนการลงนามล่วงหน้า ข้อความสุ่มจะถูกคำนวณล่วงหน้า ในขั้นตอนการลงนามออนไลน์ จะต้องลงนามเฉพาะความแตกต่างระหว่างข้อความและข้อความสุ่มเท่านั้น จึงช่วยปรับปรุงความเร็วของขั้นตอนการลงนามออนไลน์ ดังนั้นลายเซ็นขีดจำกัด 2-n ECDSA ในบทความนี้จึงมีความปลอดภัยเท่ากับโปรโตคอลลายเซ็น Li17 2-2 และความเร็วในการลงนามจะเร็วขึ้น
# 2-n ลายเซ็นเกณฑ์ ECDSA
การเริ่มต้น: ตัวสร้างของกลุ่มเส้นโค้งวงรี $\mathbb{G}$ คือ $G$ และลำดับคือ $\tilde{q}$
## โปรโตคอล 1: การสร้างคีย์แบบกระจายอำนาจ
**ขั้นตอนที่ 1:** ผู้ใช้แต่ละราย $i$ จะสร้างคู่คีย์ Paillier $({{N__{i}},{{p__{i}},{{q__{i}} )$ .
เลือกตัวเลขสุ่ม ${{u}_{i}}\in [0, \tilde{q}-1]$ และคำนวณจุดเส้นโค้งรูปวงรีดังนี้:
$${{U__{i}}:={{u__{i}}\cdot G.$$
จากนั้นคำนวณสัญญาและเปิดสัญญา:
$$(KG{{C__{i}},KG{{D__{i}}):=\mathsf{Com}({{U__{i}}).$$
ความมุ่งมั่นในการออกอากาศ $KG{{C__{i}}$ และคีย์สาธารณะ Paillier ${{N__{i}}$, เก็บหมายเลขสุ่ม ${{u__{i}}$, คีย์ส่วนตัวของ Paillier ${ {p__{i}},{{q__{i}}$ และความมุ่งมั่นแบบเปิด $KGD_i$
ความมุ่งมั่นในการออกอากาศ $KG{{C__{i}}$ และคีย์สาธารณะ Paillier ${{N__{i}}$, เก็บหมายเลขสุ่ม ${{u__{i}}$, คีย์ส่วนตัวของ Paillier ${ {p__{i}},{{q__{i}}$ และความมุ่งมั่นแบบเปิด $KGD_i$
**ขั้นตอนที่ 2:** เมื่อได้รับข้อผูกพัน $KG{{C__{j}},j\ne i$ และคีย์สาธารณะ Paillier ${{N__{j}},j\ne i จากผู้ใช้รายอื่น หลังจาก $ ผู้ใช้ $i$ จะถ่ายทอดข้อผูกมัดแบบเปิด $KG{{D__{i}}$ ให้กับผู้ใช้รายอื่น
**ขั้นตอนที่ 3:** ผู้ใช้แต่ละคน $i$ จะตรวจสอบความถูกต้องของข้อผูกพันที่เปิดอยู่ทั้งหมดที่ได้รับจากผู้ใช้รายอื่น
หากถูกต้อง กุญแจสาธารณะร่วมจะถูกคำนวณดังนี้:
$$PK:=\sum\limits_{i=1}^{n}{U_i}.$$
สร้าง **ความซ้ำซ้อนลากรองจ์**: เลือกตัวเลขสุ่ม $a_i\in [0,\tilde{q}-1]$ และสร้างพหุนามลำดับที่หนึ่ง:
$${{p__{i}}(x)={{u__{i}}+x\cdot a_i.$$
เก็บ ${{p__{i}}(i)$ และส่ง ${{p__{i}}(j)$ ไปยังผู้ใช้อื่น $j$ อย่างลับๆ
คำนวณ **เฟลด์แมนทูเพิล**:
$${{A__{i}}:={{a__{i}}\cdot G$$
ออกอากาศ $A_i$
**ขั้นตอนที่ 4:** ผู้ใช้แต่ละราย $i$ ได้รับ ${{p__{j}}(i)$ และ $\{{{A__{j}}\},j ที่ส่งโดยผู้ใช้รายอื่น =1 ,...,n $ ตรวจสอบความสอดคล้องของ **Feldman tuple**:
$${{p__{j}}(i)\cdot G={{U__{j}}+i\cdot {{A__{j}}.$$
คำนวณส่วนแบ่งคีย์ส่วนตัวและส่วนแบ่งคีย์สาธารณะดังนี้:
$$\begin{ชิด}
& {{x__{i}}:=\sum\limits_{j=1}^{n}{{{p__{j}}(i)}\,\bmod \,\tilde{q} =sk+\sum\limits_{j=1}^{n}{(j\cdot {{a__{j}})}\,\bmod \,\tilde{q}, \\
& {{X__{i}}:={{x__{i}}\cdot G. \\
\end{aligned}$$
จากนั้น ใช้ zk-Schnorr เพื่อพิสูจน์ว่าทราบส่วนของคีย์ส่วนตัว ${{x__{i}}$ และ zk-Paillier-Blum เพื่อพิสูจน์ว่า ${{N__{i}}$ คือ Paillier - โมดูลัสบลัม
เข้ารหัส ${{x__{i}}$ โดยใช้คีย์สาธารณะของ Paillier ${{N__{i}}$
$${{c} _ {key, i}}:=\mathsf{Enc _ {{{N} _ {i}}} ({{x _ {i}}) $$
หลักฐานช่วง zk
$$zk\left\{ {{x_i},{r_i}\left|. \begin{array}{l}
{{c__{key,i}} ={{(1+{{N__{i}})}^{{{x__{i}}}}r_{i}^{{{N __{i}}}\bmod N_{i}^{2}, \\
{{X} _ {i}} = {{x _ {i}} \ cdot G, \\
{{x__{i}} \ใน {{\mathbb{Z}__{\tilde{q}}}
{{X} _ {i}} = {{x _ {i}} \ cdot G, \\
{{x__{i}} \ใน {{\mathbb{Z}__{\tilde{q}}}
\end{array} \right.} \right\}$$
ออกอากาศส่วนคีย์สาธารณะ $X_i$, ไซเฟอร์เท็กซ์ $c_{key,i}$ และ zk-proofs สามรายการ
**ขั้นตอนที่ 5:** เมื่อผู้ใช้แต่ละราย $i$ ได้รับส่วนย่อยของคีย์สาธารณะ ${{X__{j}},j\ne i$ และ zk ของผู้ใช้รายอื่น จากนั้นตรวจสอบหลักฐาน zk-proof สามรายการ นอกจากนี้ ผู้ใช้แต่ละคนจะตรวจสอบความสอดคล้องของการแก้ไข Lagrange ดังต่อไปนี้:
$$PK=\แลมบ์ดา _{i,j}\cdot X_i +\แลมบ์ดา _{j,i}\cdot X_j,$$
ในหมู่พวกเขา $\lambda_{i,j}$ และ $\lambda_{j,i}$ เป็นสัมประสิทธิ์การประมาณค่าลากรองจ์ที่สอดคล้องกัน
หลังจากการดำเนินการของโปรโตคอลการสร้างคีย์แบบกระจายอำนาจเสร็จสิ้น ผู้ใช้แต่ละราย $i$ จะได้รับส่วนของคีย์ส่วนตัว $x_i$, ส่วนของคีย์สาธารณะ $X_i$, คีย์สาธารณะร่วม $PK$ และ $n-1$ ciphertext $ c_{key_j}, j \neq i$
## โปรโตคอล 2: การรีเฟรชคีย์แบบกระจายอำนาจ
**ขั้นตอนที่ 1:** ผู้ใช้แต่ละคน $i,i=1,...,n$ เลือกตัวเลขสุ่ม $a_i'\in [0,\tilde{q}-1]$ และสร้าง **พหุนามลากรองจ์ * *:
$$p_i'(x)=x\cdot a_i'.$$
โปรดทราบว่าค่าคงที่คือ 0 เก็บ ${{p__{i}}'(i)$ และแอบส่ง ${{p__{i}}'(j)$ ไปยังผู้ใช้แต่ละราย $j$ จากนั้นคำนวณ **Feldman tuple**
$$A_i':=a_i'\cdot G$$
ออกอากาศ $A_i'$
**ขั้นตอนที่ 2:** ผู้ใช้แต่ละคน $i$ ได้รับ $p_j'(i)$ และ $\{A_j'\},j=1,...,n$ จากผู้ใช้รายอื่น และยืนยัน **องค์ประกอบ Feldman กลุ่ม** ความสอดคล้อง:
$$p_j'(i)\cdot G=i\cdot A_j'.$$
คำนวณส่วนแบ่งคีย์ส่วนตัวใหม่และส่วนแบ่งคีย์สาธารณะใหม่ดังนี้:
$$\begin{ชิด}
& x_i':=x_i+a_j', \\
& X_i':=x_i'\cdot G. \\
\end{aligned}$$
จากนั้น zk-Schnorr จะพิสูจน์ว่ามันรู้ $x_i'$
เข้ารหัส $x_i'$ โดยใช้คีย์สาธารณะ Paillier ${{N__{i}}$
$$c_{key,i}':=\mathsf{Enc__{{{N__{i}}}(x_i')$$
หลักฐานช่วง zk:
$$zk\left\{ {x_i',r_i'\left|. \begin{array}{l}
c_{key,i}' = {(1 + {N_i})^{x_i'}}{(r_i')^{{N_i}}}\bmod N_i^2\\
X_i' = x_i' \cdot G\\
c_{key,i}' = {(1 + {N_i})^{x_i'}}{(r_i')^{{N_i}}}\bmod N_i^2\\
X_i' = x_i' \cdot G\\
x_i' \in {\mathbb{Z__{\tilde q}}
\end{array} \right.} \right\}$$
ออกอากาศส่วนคีย์สาธารณะใหม่ $X_i'$, ไซเฟอร์เท็กซ์ $c_{key,i}'$ และ zk-proofs สองอัน
**ขั้นตอนที่ 3:** ผู้ใช้แต่ละคน $i$ จะได้รับส่วนย่อยของคีย์สาธารณะของผู้ใช้รายอื่น $X_j',j\ne i$ และ zk-proofs สองรายการ และตรวจสอบความถูกต้องของ zk-proofs ทั้งสองรายการ นอกจากนี้ ผู้ใช้แต่ละคนสามารถตรวจสอบความสอดคล้องของการแก้ไข Lagrange ได้:
$$PK=\แลมบ์ดา _{i,j}\cdot X_i' +\แลมบ์ดา _{j,i}\cdot X_j',$$
ในหมู่พวกเขา ${{\lambda __{i,j}}$ และ ${{\lambda __{j,i}}$ เป็นสัมประสิทธิ์การประมาณค่าลากรองจ์ที่สอดคล้องกัน
หลังจากเสร็จสิ้นโปรโตคอลการรีเฟรชคีย์แบบกระจายอำนาจ ผู้ใช้แต่ละคน $i$ จะได้รับแฟรกเมนต์คีย์ส่วนตัวใหม่ $x_i'$, แฟรกเมนต์คีย์สาธารณะใหม่ $X_i'$ และ $n -1$ Ciphertext ใหม่ $c_{key_j}',j \neq ฉัน $
## ข้อตกลง 3: ข้อตกลงที่ลงนามล่วงหน้า
**ขั้นตอนที่ 1:** ผู้ใช้ $i$ เลือกตัวเลขสุ่ม ${{k__{i}}\in [0,\tilde{q}-1]$ โดยคำนวณดังนี้:
$${{R__{i}}:={{k__{i}}\cdot G.$$
zk-Schnorr พิสูจน์ว่ามันรู้ตัวเลขสุ่ม ${{k__{i}}$:
$$proo{{f} _ {i}}:=zk\left\{ {{k} _ {i}} \ ซ้าย | {{R _ {i}} = {{k _ {i}} \cdot G \right. \right\}.$$
สำหรับ ${{R__{i}}$ และ $proo{{f__{i}}$ ให้คำนวณข้อผูกพันและเปิดข้อผูกพัน
$$\left[ KG{{C__{i}},KG{{D__{i}} \right]:=\mathsf{Com}({{R__{i}},โปร{{ ฉ_{i}}).$$
ส่งข้อผูกพัน $KG{{C__{i}}$ ให้กับผู้ใช้ $j$
**ขั้นตอนที่ 2:** หลังจากได้รับข้อผูกพัน $KG{{C__{i}}$ แล้ว ผู้ใช้ $j$ จะเลือกตัวเลขสุ่ม ${{k}_{j}}\in [0,\tilde { q}-1]$, คำนวณ
$${{R__{j}}:={{k__{j}}\cdot G$$
zk-Schnorr พิสูจน์ว่ารู้ตัวเลขสุ่ม
$$proo{{f} _ {j}}:=zk\left\{ {{k} _ {j}} \ ซ้าย | {{R _ {j}} = {{k _ {j}} \cdot G \right. \right\}.$$
จากนั้นส่ง $({{R__{j}},proo{{f__{j}})$ ไปยังผู้ใช้ $i$
**ขั้นตอนที่ 3:** หลังจากได้รับ $({{R__{j}},proo{{f__{j}})$ แล้ว ผู้ใช้ $i$ จะตรวจสอบความสอดคล้องของข้อผูกพัน หากไม่สอดคล้องกัน ให้ปฏิเสธ มิฉะนั้น คอมมิต $KG{{D__{i}}$ จะถูกเปิดและส่งไปยังผู้ใช้ $j$
**ขั้นตอนที่ 4:** หลังจากได้รับ $({{R__{i}},proo{{f__{i}})$ แล้ว ผู้ใช้ $j$ จะตรวจสอบความสอดคล้องของสัญญา หากไม่สอดคล้องกัน ให้ปฏิเสธ มิฉะนั้น ให้คำนวณดังนี้:
$$\begin{ชิด}
R&:={{k__{j}}\cdot {{R__{i}}, \\
$$\begin{ชิด}
R&:={{k__{j}}\cdot {{R__{i}}, \\
r&:={{R__{[x]}}\bmod \ตัวหนอน{q},
\end{aligned}$$
โดยที่ ${{R__{[x]}}$ แทนพิกัด $x$ ของ $R$
เลือกข้อความสุ่ม ${{m__{0}}\in [0,\tilde{q}-1]$ และตัวเลขสุ่ม $\rho \in [0, {{\tilde{q}}^{ 2}}-1]$, คำนวณ
$${{c} _ {0}}:=\mathsf {Enc _ {{{N _ {i}}} (k_ {j} ^ {-1} \ cdot {{m _ {0} }\bmod \tilde{q}+\rho \cdot \tilde{q}).$$
จากนั้นให้คำนวณดังนี้
$$\begin{ชิด}
& {{c__{1}}:=\left( ({{\lambda __{i,j}}\odot {{c__{key,i}})\oplus \mathsf{Enc__ {{{N__{i}}}({{\lambda _{j,i}}{{x__{j}}) \right)\odot (k_{j}^{-1}r ), \\
& {{c} _ {2}}: = { {c _ {0}} \ oplus {{c _ {1}}
\end{aligned}$$
สุดท้าย ${{c__{2}}$ จะถูกส่งไปยังผู้ใช้ $i$ และ $({{m__{0}},r)$ จะถูกเก็บไว้
**ขั้นตอนที่ 5:** หลังจากได้รับ ${{c__{2}}$ แล้ว ผู้ใช้ $i$ จะใช้คีย์ส่วนตัวของ Paillier เพื่อถอดรหัสดังต่อไปนี้
$${{s} ).$$
จากนั้นคำนวณดังนี้
$$\begin{ชิด}
& {{s__{1}}:=k_{i}^{-1}\cdot {{s__{0}}\bmod \tilde{q}, \\
& R':={{k_{i}}\cdot {{R_{j}},\\
& r':=R_{[x]}'\bmod \ตัวหนอน{q}
\end{aligned}$$
เก็บ ${{s__{1}}$ และ $r'$
*การวิเคราะห์ 1:*
เพราะ
$${{k} _ {j}} \cdot {{R _ {i}} = {{k _ {i}} {{k} _ {j}} \ cdot G = {{k} {i}}\cdot {{R__{j}}$$
ดังนั้น $R=R'$ ดังนั้น $r=r'$
ในทางกลับกัน นิพจน์สำหรับ ${{c__{1}}$ คือ:
$$\begin{ชิด}
{{c__{1}} & =\left( ({{\lambda __{i,j}}\odot {{c__{key,i}})\oplus \mathsf{Enc__{ {{N__{i}}}({{\lambda _{j,i}}{{x__{j}}) \right)\odot (k_{j}^{-1}r) \\
{{c__{1}} & =\left( ({{\lambda __{i,j}}\odot {{c__{key,i}})\oplus \mathsf{Enc__{ {{N__{i}}}({{\lambda _{j,i}}{{x__{j}}) \right)\odot (k_{j}^{-1}r) \\
& =\left( \mathsf{Enc__{{{N__{i}}}({{\lambda __{i,j}}{{x__{i}})\oplus \mathsf{ Enc__{{{N__{i}}}({{\lambda __{j,i}}{{x__{j}}) \right)\odot (k_{j}^{- 1}ร) \\
& =\mathsf{Enc__{{{N__{i}}}({{\lambda __{i,j}}{{x__{i}}+{{\lambda __{j ,i}}{{x__{j}})\odot (k_{j}^{-1}r) \\
& =\mathsf{Enc__{{{N__{i}}}(x)\odot (k_{j}^{-1}r) \\
& =\mathsf{Enc__{{{N__{i}}}(k_{j}^{-1}rx)
\end{aligned}$$
การแสดงออกของ ${{c__{2}}$ คือ:
$$\begin{ชิด}
{{c} _ {2}} & = {{c _ {0}} \ oplus {{c _ {1}} \\
& =\mathsf{Enc__{{{N__{i}}}(k_{j}^{-1}{{m__{0}}\bmod \tilde{q}+\rho \tilde {q})\oplus \mathsf{Enc__{{{N__{i}}}(k_{j}^{-1}rx) \\
& =\mathsf{Enc__{{{N__{i}}}(k_{j}^{-1}{{m__{0}}\bmod \tilde{q}+\rho \tilde {q}+k_{j}^{-1}rx)
\end{aligned}$$
ดังนั้น นิพจน์สำหรับ ${{s__{0}}$ คือ:
$${{s} ^{-1}rx.$$
การแสดงออกของ ${{s__{1}}$ คือ:
$$\begin{ชิด}
{{s__{1}} & =k_{i}^{-1}{{s__{0}}\bmod \tilde{q} \\
& =k_{i}^{-1}k_{j}^{-1}{{m__{0}}\bmod \tilde{q}+k_{i}^{-1}k_{j} ^{-1}rx\bmod \ตัวหนอน{q} \\
& ={{k}^{-1}}{{m__{0}}+{{k}^{-1}}rx\bmod \tilde{q}
\end{aligned}$$
*การวิเคราะห์ 2:* หากต้องการบรรลุการลงนามตามเกณฑ์ที่ใช้งานและปลอดภัย ผู้เข้าร่วมจะต้องรีเฟรชชาร์ดคีย์ส่วนตัวของตนหลังการลงนามแต่ละครั้ง โปรโตคอลการรีเฟรชคีย์ต้องใช้การโต้ตอบ 2 รอบ ในขณะที่โปรโตคอลการลงนามล่วงหน้าต้องใช้ 4 รอบ เพื่อปรับปรุงประสิทธิภาพ สามารถรวมโปรโตคอลทั้งสองเข้าด้วยกันได้ โดยเฉพาะอย่างยิ่ง ข้อมูลเชิงโต้ตอบของโปรโตคอลการลงนามล่วงหน้าและโปรโตคอลการรีเฟรชคีย์แบบกระจายอำนาจสามารถส่งพร้อมกันได้ วิธีการนี้กำจัดการโต้ตอบสองรอบที่แยกจากกันสำหรับโปรโตคอลการรีเฟรชคีย์แบบกระจายอำนาจ และลดความซับซ้อนของกระบวนการ เช่น การตรวจสอบสิทธิ์ผู้ใช้ การปรับปรุงประสิทธิภาพ
## พิธีสาร 4: ลายเซ็นออนไลน์
**ขั้นตอนที่ 1:** สำหรับข้อความ $msg$ ผู้ใช้ $j$ จะคำนวณ
## พิธีสาร 4: ลายเซ็นออนไลน์
**ขั้นตอนที่ 1:** สำหรับข้อความ $msg$ ผู้ใช้ $j$ จะคำนวณ
$$\tilde{m}:=(\mathsf{Hash}(msg)-{{m__{0}})\bmod \tilde{q}.$$
จากนั้นคำนวณ
$${{c} _ {3}}:=\mathsf{Enc _ {{{N} _ {i}}} (k_ {j} ^ {-1} \ tilde {m} \ b mod \ tilde { คิว}).$$
ส่ง ${{c__{3}}$ ให้กับผู้ใช้ $i$
**ขั้นตอนที่ 2:** หลังจากได้รับ ${{c__{3}}$ แล้ว ผู้ใช้ $i$ จะใช้คีย์ส่วนตัวเพื่อถอดรหัส
$${{s__{2}}:=\mathsf{ธันวาคม_{{{p} _ {i}}, {{q} _ {i}}} ({{c _ {3}} ).$$
จากนั้นคำนวณดังนี้:
$$\begin{ชิด}
& {{s__{3}}:=(k_{i}^{-1}{{s__{2}})\bmod \tilde{q}, \\
& {{s} } {4}}:=({{s _ {1}} + {{s _ {3}})\bmod \tilde{q}
\end{aligned}$$
ให้ $s=\min \{{{s__{4}},\tilde{q}-{{s__{4}}\}$ สำหรับข้อความ $msg$ ถ้า $(r, s)$ เป็นลายเซ็นที่ถูกต้อง ให้ยอมรับ หากไม่เช่นนั้น ให้ปฏิเสธ
*การวิเคราะห์ 1:* การแสดงออกของ ${{s__{2}}$ และ ${{s__{3}}$ ตามลำดับ
$$\begin{ชิด}
& {{s__{2}}=k_{j}^{-1}\tilde{m}\bmod \tilde{q}, \\
& {{s__{3}}=k_{i}^{-1}k_{j}^{-1}\tilde{m}\bmod \tilde{q}={{k}^{-1 }}\ตัวหนอน{m}\bmod \ตัวหนอน{q}
\end{aligned}$$
การแสดงออกของ ${{s__{4}}$ คือ
$$\begin{ชิด}
{{s__{4}} & =({{s__{1}}+{{s__{3}})\bmod \tilde{q} \\
& ={{k}^{-1}}{{m__{0}}+{{k}^{-1}}rx+{{k}^{-1}}\ตัวหนอน{m}\bmod \ตัวหนอน{q} \\
& ={{k}^{-1}}(\ตัวหนอน{m}+{{m__{0}})+{{k}^{-1}}rx \\
& ={{k}^{-1}}(\mathsf{Hash}(msg)+rx) .\\
\end{aligned}$$
ดังนั้น $(r, s)$ จึงเป็นลายเซ็นที่ถูกต้องสำหรับข้อความ $msg$
*การวิเคราะห์ 2:*
\end{aligned}$$
ดังนั้น $(r, s)$ จึงเป็นลายเซ็นที่ถูกต้องสำหรับข้อความ $msg$
*การวิเคราะห์ 2:*
(1) ความสมมาตรของเส้นโค้งรูปไข่ทำให้เกิดความเหนียวให้กับลายเซ็น ECDSA ถ้า $(r, s)$ เป็นลายเซ็นที่ถูกต้อง ดังนั้น $(r, \tilde{q}-s)$ ก็ใช้ได้เช่นกัน ดังนั้น โปรโตคอลลายเซ็น 2-n จึงมีความสามารถในการดัดแปลงได้ กล่าวคือ ทั้ง $(r, s)$ และ $(r, \tilde{q}-s)$ เป็นลายเซ็นที่ถูกต้อง เพื่อป้องกันปัญหานี้ ให้ใช้ $s = \min\{s, \tilde{q}-s\}$ เพื่อสร้างมาตรฐานของ $s$ และกำจัดความเหนียว (2) เพื่อป้องกันการโจมตีด้วย BitForge หากมีลายเซ็น ล้มเหลว จากนั้นจึงใช้โปรโตคอลโปรโตคอลการรีเฟรชคีย์แบบกระจายอำนาจ
**ข้อมูลอ้างอิง**
1. Lindell Y. การลงนาม ECDSA สองฝ่ายที่ปลอดภัยอย่างรวดเร็ว[C]//Advances in Cryptology–CRYPTO 2017: การประชุมวิทยาการเข้ารหัสลับนานาชาติประจำปีครั้งที่ 37, ซานตาบาร์บารา, แคลิฟอร์เนีย, สหรัฐอเมริกา, 20–24 สิงหาคม 2017, กระบวนการพิจารณาคดี, ส่วนที่ 2 37 สำนักพิมพ์นานาชาติสปริงเกอร์ 2017: 613-644
2. Canetti R, Gennaro R, Goldfeder S, และคณะ UC แบบไม่โต้ตอบ เชิงรุก เกณฑ์ ECDSA พร้อมการยกเลิกที่ระบุตัวได้[C]//การประชุม ACM SIGSAC Conference on Computer and Communications Security ปี 2020: 1769-1787
3. Makriyannis N, Yomtov O.: การโจมตีแบบสกัดคีย์เชิงปฏิบัติในกระเป๋าเงิน MPC ชั้นนำ[J] คลังข้อมูล ePrint ของ Cryptology, 2023
เกี่ยวกับซิโนโฮป
SINOHOPE Technology Holdings Co., Ltd. (เรียกว่า "SINOHOPE" รหัสหุ้น: 1611.HK) มุ่งเน้นไปที่การดูแลสินทรัพย์ดิจิทัลและนำเสนอโซลูชั่นการดูแลที่หลากหลายเพื่อช่วยให้ทุกองค์กรใช้สินทรัพย์ดิจิทัลได้อย่างปลอดภัยและสะดวกสบาย ผลิตภัณฑ์หลักของบริษัทคือ SINOHOPE แพลตฟอร์มที่โฮสต์โดย MPC เอง ใช้เทคโนโลยี MPC-CMP เพื่อรองรับการจัดการการแบ่งกลุ่มคีย์ส่วนตัวและลายเซ็นการทำงานร่วมกันแบบกระจายของผู้ใช้ ช่วยแก้ปัญหาความเสี่ยงของคีย์ส่วนตัวในจุดเดียว และเพิ่มความโปร่งใสและใช้งานง่ายอย่างมีประสิทธิภาพ
SINOHOPE ปฏิบัติตามหลักการบริการด้านความปลอดภัย การปฏิบัติตามข้อกำหนด ความเป็นมืออาชีพ และการกระจายความเสี่ยง และให้บริการอุตสาหกรรมแบบรวมศูนย์และกระจายอำนาจที่เรียบง่ายและใช้งานง่าย บนพื้นฐานของแพลตฟอร์มการดูแลตนเองของ MPC และบริการการดูแลสินทรัพย์ดิจิทัลที่ได้รับใบอนุญาต ให้บริการการซื้อขายบล็อก OTC ที่ปรับแต่งได้ การจัดการสินทรัพย์เสมือน และบริการโซลูชันการสร้างผลิตภัณฑ์ Web3 แบบครบวงจรที่ออกแบบมาเป็นพิเศษสำหรับนักพัฒนาสำหรับสถาบันและลูกค้าที่มีรายได้สูง
เว็บไซต์บริษัท: www.sinohope.com
การให้คำปรึกษานักลงทุน: [email protected]
สื่อมวลชนสอบถามข้อมูล: [email protected]
ความคิดเห็นทั้งหมด