ฉันถูกขอให้จัดหาวิธีแก้ปัญหาสำหรับลูกค้าภายในของฉัน การสื่อสารเครือข่ายทั้งหมดเป็นแบบภายในและไม่มีแอปพลิเคชันหรือเซิร์ฟเวอร์ที่สามารถเข้าถึงได้ผ่านทางอินเทอร์เน็ต
- แอปพลิเคชัน REQUESTOR จะมีรายชื่อ SSN สำหรับคนมากกว่า 1,000 คนที่พวกเขาต้องการข้อมูล (รายชื่อที่แตกต่างกันกว่า 1,000 คนในแต่ละวัน)
- แอปพลิเคชัน REPORTER สามารถเรียกใช้แบบสอบถาม SQL และให้เอาต์พุตที่จัดรูปแบบ
- แอปพลิเคชัน DATAOWNER มีข้อมูลที่จำเป็นซึ่งจัดเก็บไว้ใน RDBS รวมถึงคอลัมน์ SSN ที่เป็นข้อความธรรมดา
REQUESTOR ไม่สามารถขอข้อมูลจาก DATAOWNER ได้โดยตรง วิธีเดียวที่ REQUESTOR ต้องขอข้อมูลคือผ่าน URL ไปยัง REPORTER นั่นคือสิ่งที่ฉันเข้ามา
ฉันไม่สามารถเปลี่ยนความสามารถ/การกำหนดค่าของแอปพลิเคชัน REQUESTOR หรือแอปพลิเคชัน DATAOWNER ได้ นอกจากให้ข้อมูลแก่ REQUESTOR เกี่ยวกับวิธีการจัดเตรียมและจัดรูปแบบ URL
ฉันสามารถสร้างรายงานและกำหนดค่า REPORTER ให้ยอมรับ URL ที่ต้องการได้
https://REPORTER/TheReport?argument1=123456789
ฉันไม่ต้องการให้ SSN บน URL เป็นแบบข้อความล้วน เพราะมันจะถูกบันทึกไว้ในบันทึกการใช้เว็บของ REPORTER และใครจะรู้ว่าที่ไหนอีก
แนวคิดของฉันสำหรับวิธีแก้ปัญหาคือให้ REQUESTOR ทำแฮช SHA256 ของการเชื่อม SSN และค่าลับที่เปลี่ยนแปลงเป็นระยะ และใช้การสรุปข้อมูลนั้นใน URL เมื่อ REPORTER ได้รับคำขอ จะดำเนินการค้นหา SQL กับ DATAOWNER เช่น (รหัสเทียม):
เลือก [ฟิลด์ที่ต้องการ] จากตาราง
โดยที่ SHA256FUNCTION(CONCATENATE([SSNcolumn],<TheSecretValue>)) = $argument1
.
ฉันเชื่อว่าสิ่งนี้ไม่ได้เพิ่มความเสี่ยงในการเปิดเผย SSN เนื่องจากการประมวลผลทั้งหมดโดยใช้ค่าข้อความธรรมดานั้นเกิดขึ้นบนเซิร์ฟเวอร์ที่สามารถเข้าถึงค่าเหล่านั้นในรูปแบบข้อความล้วน แอปพลิเคชัน REPORTER จะไม่เห็น SSN ข้อความธรรมดาโดยตรง แม้ว่าจะต้องผ่านเอาต์พุตของแบบสอบถาม SQL ซึ่งอาจรวมหรือไม่มี SSN อย่างไรก็ตาม เนื่องจากการออกแบบซอฟต์แวร์ของ REPORTER จึงไม่มีการจัดเก็บผลลัพธ์การสืบค้นหรือผลลัพธ์ที่จัดรูปแบบ
แม้ว่าฉันจะคุ้นเคยกับบางแง่มุมของ crypto แต่ฉันก็ไม่ใช่ผู้เชี่ยวชาญอย่างแน่นอน ฉันขอขอบคุณความคิดเห็นใด ๆ เกี่ยวกับแนวทางนี้ไม่ว่าจะดีหรือไม่ดี
ขอขอบคุณ