เหนือส่วนที่คุณยกมาประมาณ 10 บรรทัดก็มีครับ
โครงสร้าง {
ทึบแสง rsa_modulus<1..2^16-1>;
ทึบแสง rsa_exponent<1..2^16-1>;
} เซิร์ฟเวอร์RSAParams;
ดังนั้นกรณี =อาร์เอส
(ซึ่งจริง ๆ แล้วสำหรับ rsa_export เท่านั้น) ของ การแลกเปลี่ยนคีย์เซิร์ฟเวอร์
คือ:
เซิร์ฟเวอร์RSAParams:
rsa_modulus -- ทึบแสง (จำนวนเต็มที่ไม่มีเครื่องหมาย bigendian จริงๆ)
rsa_exponent -- เหมือนกัน
ลายเซ็น - เหมือนกัน
แต่โครงสร้างนี้ไม่มีผลกับการเข้ารหัส ซึ่งมีเพียงค่า 'leaf' สามค่าเท่านั้น และการถอดรหัสอะไรก็ตามที่คุณกำลังดูอยู่ (Wireshark?) ก็ไม่จำเป็นต้องแยกแยะทั้งสองระดับที่นี่
บันทึก โครงสร้างที่เซ็นชื่อแบบดิจิทัล ... ลายเซ็น
ไม่ได้หมายความว่ามีแฮชสองตัว (md5 และ sha1) อยู่ในข้อความ แต่เป็นการป้อนเข้าสู่อัลกอริทึมการสร้างลายเซ็นที่เกี่ยวข้อง ในกรณีนี้ RSA 'block type 1' ที่กำหนดไว้ใน PKCS1v1 (ตอนนี้เปลี่ยนชื่อเป็น RSASSA-PKCS1-v1_5 ใน PKCS1v2) และ เอาต์พุต ของอัลกอริทึมลายเซ็น สำหรับ RSA จำนวนเต็มเดียวที่เข้ารหัสเป็นความยาวคงที่ที่ไม่ได้ลงนาม bigendian (ดู 'I2OSP' ใน PKCS1 เวอร์ชันใดก็ได้) คือสิ่งที่ใส่ไว้ในข้อความ โดยมีคำนำหน้าความยาว 2 ไบต์ ราวกับว่ามีการประกาศ ทึบ<?..2^16-1>
แม้ว่าฉันจะไม่เห็นสิ่งนี้ระบุไว้ใน RFC6101; TLS1.0 RFC2246 และ succ ระบุใน 4.7
(คุณอาจต้องการดูเพิ่มเติม/ทั้งหมดของ RFC2246 ยกเว้น PRF และการสร้างคีย์ โค้ดแจ้งเตือนและชุดการเข้ารหัสบางส่วน การเพิ่มส่วนขยาย (ซึ่ง RFC5746 Secure Renegotiation กลายเป็นสิ่งที่บังคับค่อนข้างมาก) และหมายเลขเวอร์ชัน สิ่งที่ดีที่สุดในความทรงจำของฉัน TLS1.0 ในทางเทคนิคแล้วเหมือนกับ SSL3 แต่เอกสารมีความละเอียดมากกว่า อาจเนื่องมาจากผ่านขั้นตอน IETF gauntlet^W)