เป็นไปได้หรือไม่ที่จะรั่วไหลของข้อมูลคีย์ส่วนตัวหากผู้โจมตีควบคุมคำขอลงนาม ?
ทุกคนรู้ $N$ และ $E$ เพราะเป็นของสาธารณะ
เซิร์ฟเวอร์ของฉันออกแบบมาเพื่อถอดรหัสคำขอที่เข้ามาซึ่งเข้ารหัสด้วยรหัสสาธารณะ
ทำเครื่องหมายและสำหรับข้อมูลที่ถอดรหัสซึ่งมี SHA-2 ส่งคืนเครื่องหมาย RSA สำหรับข้อมูลนั้น
เป็นไปได้ไหมที่ผู้โจมตีสามารถเรียนรู้รหัสส่วนตัวของฉันได้
ฉันกำลังทดสอบสิ่งนี้ในเวิร์กช็อปในพื้นที่ของฉันเพื่อวัตถุประสงค์ด้านการศึกษา
ฉันใช้ข้อความเข้ารหัสคีย์สาธารณะ PKCS#1 สำหรับคำขอที่เข้ามา
ข้อมูลถูกถอดรหัสโดยคีย์ส่วนตัวของฉันและมี SHA-2 ดังนั้นฉันเพียงแค่เซ็นชื่อและส่งคืนข้อมูลที่เซ็นชื่อกลับไปยังลูกค้า
ตัวอย่างใน Python:
การสร้างคู่ข้อความและคีย์:
ข้อความ = struct.pack('>IIII', 0, 0, 0, 1)
(pub, priv) = rsa.newkeys(512) // ตัวอย่างเช่น ฉันรู้ว่าไม่มีใครใช้ 512 บิต
คำขอที่เข้ามา:
เข้ารหัส = pkcs1.encrypt (ข้อความ ผับ)
การทำงานของเซิร์ฟเวอร์:
ถอดรหัส = pkcs1.decrypt (เข้ารหัส, ความเป็นส่วนตัว)
ลายเซ็น = pkcs1.sign (ถอดรหัส, priv, 'SHA-256')
และตอบกลับกลับมา