ANSÂ X9.31:1988 ลายเซ็นดิจิทัลโดยใช้คีย์สาธารณะแบบย้อนกลับได้
การเข้ารหัสสำหรับอุตสาหกรรมบริการทางการเงิน (rDSA) (ตามชื่อในสำเนาของฉันที่ซื้อในศตวรรษที่แล้ว) เริ่มขึ้นใน
มาตรฐานนี้ดัดแปลงมาจาก ISO/IEC 9796-2 และ ISO/IEC 14888-3กำหนดวิธีการสำหรับการสร้างลายเซ็นดิจิทัล (ลายเซ็น) และการตรวจสอบสำหรับการป้องกันข้อความและข้อมูลทางการเงินโดยใช้ระบบเข้ารหัสคีย์สาธารณะแบบย้อนกลับได้โดยไม่มีการกู้คืนข้อความ นอกจากนี้ มาตรฐาน rDSA นี้ยังระบุเกณฑ์สำหรับการสร้างคีย์สาธารณะและคีย์ส่วนตัวที่จำเป็นโดยอัลกอริทึมและการควบคุมขั้นตอนที่จำเป็นสำหรับการใช้อัลกอริทึมอย่างปลอดภัย
รูปแบบลายเซ็นยังคงมีการอ้างอิง (ไม่ได้อธิบาย) ใน FIPS 186-4. เมื่อสร้างอินสแตนซ์ด้วย SHA-1, RSA และ $n$ ของ $8k$บิตข้อความ $m$ มีเบาะเป็น $8k-1$-นิดหน่อย
$$R\gets\mathtt{6B}\,\mathtt{BB}\,\mathtt{BB}\ldots\mathtt{BB}\,\mathtt{BA}\mathbin\|\operatorname{SHA-1}( ม)\|\mathtt{33}\,\mathtt{CC}$$
แล้วลายเซ็นเป็น $k$-byte big-endian ตัวแทนของ$$\Sigma\gets\min((R^d\bmod n),n-(R^d\bmod n))$$
การตรวจสอบเทียบเท่ากับการตรวจสอบลายเซ็นคือ $k$-byte และการเข้ารหัสในการแทน big-endian เป็นจำนวนเต็ม $\ซิกม่า'$ กับ $0\le\Sigma'<n/2$,คอมพิวเตอร์ $R'\gets{\Sigma'}^e\bmod n$,คอมพิวเตอร์ $R$ จาก $m$ ดังกล่าวแล้วตรวจสอบ $R'$ เป็นหนึ่งใน $R$ หรือ $n-R$ (คิดว่าไม่ค่อยเป็นมาตรฐานเท่าไหร่)
มาตรฐานนั้นจับไม่ได้เกือบเท่า RSASSA-PKCS1-v1_5ซึ่งใช้ช่องว่างภายในที่แตกต่างกันเล็กน้อย ไม่ใช้ $\นาที$ เคล็ดลับและกำจัดบทบัญญัติสำหรับคู่ $e$ (ไม่ได้อธิบายไว้ในข้างต้นเพื่อให้เข้าใจได้ง่าย)
รูปแบบการสร้างคีย์ถูกแทนที่ด้วย FIPSÂ 186-4 ภาคผนวก B3.
นอกจากนี้ยังมี "ภาคผนวก A: การสร้างตัวเลขแบบสุ่ม" ที่อ้างถึงบ่อยครั้ง มันถูกฝังอย่างเป็นทางการโดย FIPSÂ 186-4:
ANS X9.31 มีภาคผนวกเกี่ยวกับการสร้างตัวเลขสุ่ม อย่างไรก็ตาม การใช้งาน ANS X9.31 จะต้องใช้วิธีการสร้างตัวเลขสุ่มที่ได้รับอนุมัติ
ไม่ชัดเจนจากเนื้อหาของคำถามที่เกี่ยวข้องกับสิ่งที่ถาม ถ้าเป็นเช่นนั้นโปรดบอกว่าส่วนย่อยใดในความคิดเห็น หากไม่ทราบให้ลืมและใช้ /dev/urandom หรือเทียบเท่าในเครื่อง