Score:0

ขั้นตอนการใช้นามแฝงของฉันปลอดภัยแค่ไหน?

ธง cn

ฉันทำงานให้กับสถาบันที่มีการรวบรวมข้อมูลผู้ป่วยและฉันควรจะเข้ารหัสข้อมูลนั้น ในขณะนี้ฉันทำตามขั้นตอนต่อไปนี้ (ด้วย ):

  • สุ่มกำหนด ID ให้กับผู้ป่วยแต่ละราย ขั้นตอนหลีกเลี่ยงการทำซ้ำ (โดยใช้ ตัวอย่าง(), ท่ามกลางคนอื่น ๆ)
  • สร้างเกลือสำหรับผู้ป่วยแต่ละราย (โดยใช้ เกลือ <- bcrypt::gensalt(log_rounds= 5))
  • สร้าง ID ที่แฮชสำหรับผู้ป่วยแต่ละรายโดยใช้ ID และเกลือ (โดยใช้ id_hashed <- bcrypt::hashpw (id, เกลือ = เกลือ))

ฉันบันทึกข้อมูลในสามไฟล์ที่แตกต่างกัน

  • ไฟล์แรกมีข้อมูลผู้ป่วยคู่หนึ่ง (ชื่อและวันเกิด) และ ID ที่เข้ารหัส/แฮช
  • ไฟล์ที่สองประกอบด้วย ID และเกลือที่ไม่ได้เข้ารหัส/แฮช
  • ไฟล์ที่สามคือฐานข้อมูลจริงที่มี ID และตัวแปรที่น่าสนใจจำนวนหนึ่ง (เช่นสูบบุหรี่ น้ำหนัก...)

ในทางปฏิบัติจะใช้ดังนี้

  • ในขณะที่ทำงานในฐานข้อมูล (ไฟล์ที่สาม) เรารู้รหัส แต่ไม่ทราบชื่อของผู้ป่วย บางครั้งเราต้องค้นหาว่า ID คืออะไร ฉันเขียนแอป (มันเงาแอพ) โดยเราสามารถพิมพ์ ID แล้วแอพจะคืนชื่อและวันเกิดมาให้ สำหรับสิ่งนี้ แอปจะเข้าไปในไฟล์ที่สอง รับ ID และเกลือที่เกี่ยวข้อง และสร้าง ID ที่แฮช ID ที่แฮชนี้จะถูกนำไปเปรียบเทียบกับ ID ในไฟล์ที่หนึ่ง แอปส่งคืนชื่อและวันเกิดของผู้ป่วยด้วย ID ที่แฮชเหมือนกับที่เพิ่งสร้างขึ้น
  • หากผู้ป่วยมาหาเราและเราต้องการรวบรวมข้อมูลใหม่ เรารู้ชื่อและวันเกิดของเขา แต่เราไม่รู้รหัสประจำตัวของเขา ในกรณีนี้ เราสามารถพิมพ์ชื่อและวันเกิดในแอพและค้นหา ID ที่เกี่ยวข้อง สำหรับสิ่งนี้ แอปไปที่ไฟล์ที่สองและใช้ ID และเกลือเพื่อสร้าง ID ที่แฮช ในขณะที่ทำเช่นนั้น แอปจะเปรียบเทียบว่า ID ที่แฮชนั้นตรงกับรหัสใดรหัสหนึ่งในไฟล์ที่หนึ่งหรือไม่ ถ้าใช่ เราพบว่าผู้ป่วยมี ID ใด กระบวนการนี้ใช้เวลาสักครู่เนื่องจากแอปจำเป็นต้องค้นหา ID และ Salt ทุกคู่จนกว่าจะพบ ID ที่แฮชที่ถูกต้อง
  • หากเรามีคนไข้รายใหม่ เราสามารถพิมพ์ชื่อและวันเกิดของเขาลงในแอปได้ สิ่งนี้จะสร้างรายการโดยอัตโนมัติในไฟล์ที่หนึ่ง (ชื่อ + วันเกิดและ ID ที่แฮช) และในไฟล์ที่สอง (ID และเกลือ)

คำถาม: มีข้อผิดพลาดที่ชัดเจนในขั้นตอนนี้หรือไม่? หากคุณสามารถระบุจุดอ่อนและวิธีแก้ปัญหาได้ก็จะดีมาก ฉันขอความกรุณาอย่างอ่อนโยนเนื่องจากฉันยังใหม่กับสิ่งนี้

หมายเหตุ:

  • ฉันรู้ว่าไม่มีความจำเป็นทางทฤษฎีสำหรับ ID ที่สร้างขึ้นแบบสุ่ม เพราะเราสามารถใช้ข้อมูลผู้ป่วย (ชื่อและวันเกิด) และเกลือเพื่อสร้าง ID ที่แฮชได้ เราไม่ต้องการแนวทางนี้เพราะเพื่อนร่วมงานของฉันไม่ชอบให้มีรหัสแฮชที่ยาวมากในฐานข้อมูลจริง (ไฟล์ที่สาม)
  • คำอธิบายของ bcrypt::hashpw() กล่าวว่า "Bcrypt ใช้สำหรับการแฮชรหัสผ่านที่ปลอดภัย ข้อแตกต่างหลักกับอัลกอริทึมการย่อยทั่วไป เช่น MD5 หรือ SHA256 คืออัลกอริธึม bcrypt ได้รับการออกแบบมาโดยเฉพาะเพื่อให้ใช้ CPU เข้มข้น เพื่อป้องกันการโจมตีจากสัตว์เดรัจฉาน ความซับซ้อนที่แน่นอนของอัลกอริทึมสามารถกำหนดค่าได้ ผ่านพารามิเตอร์ log_rounds อินเทอร์เฟซเข้ากันได้กับ Python อย่างสมบูรณ์" (ดู ที่นี่ ).
Score:1
ธง ng

จุดอ่อนที่เลวร้ายที่สุดคือการเข้าถึงการอ่านไฟล์แรกเปิดเผยชื่อและวันเกิดของผู้ป่วย

จากนั้น การเข้าถึงเพื่ออ่านไฟล์อื่นๆ โดยฝ่ายตรงข้ามที่มีความรู้เกี่ยวกับระบบ (ตามที่สันนิษฐานไว้ในการเข้ารหัส) ช่วยให้สามารถรับข้อมูลทางการแพทย์สำหรับผู้ป่วยแต่ละรายที่ระบุด้วยชื่อและวันเกิด โดยมีค่าใช้จ่ายทางการคำนวณที่สามารถรับได้

นี่เป็นปัญหาด้านความปลอดภัยทางไอทีที่ไม่มีโซลูชันการเข้ารหัสที่สมบูรณ์ วิธีแก้ไขปัญหามาตรฐานคือการจำกัดการเข้าถึงการอ่านไฟล์ สิ่งที่ดีที่สุดที่ฉันเห็นว่าเป็นไปได้จริงโดยไม่มีข้อจำกัดดังกล่าวคือการรู้/เดาชื่อและวันเกิดของผู้ป่วยอย่างแม่นยำนั้นจำเป็นต่อการไม่ระบุชื่อข้อมูลของพวกเขา และมีค่าใช้จ่ายในการคำนวณเพื่อยืนยันการคาดเดา แนวคิดทั่วไปก็คือ

  • ไม่เก็บชื่อและวันเกิดเลย สิ่งนี้ดูเหมือนเป็นไปได้โดยไม่ต้องเปลี่ยนฟังก์ชันการทำงานตามที่ระบุไว้ใน "ในทางปฏิบัติ" แต่เราไม่สามารถยกเลิกการระบุตัวตนได้อีกต่อไป หรือตรวจพบว่าชื่อ/วันเกิดที่พิมพ์ผิดสร้างรายการที่ซ้ำกันสำหรับผู้ป่วยรายเดียวกัน
  • ชื่อร้านและวันเกิดเข้ารหัสภายใต้คีย์สาธารณะ โดยคีย์ส่วนตัวจะเก็บไว้ด้วยความระมัดระวังเป็นพิเศษ และใช้ (เพื่อถอดรหัส) เฉพาะในกรณีพิเศษที่ต้องยกเลิกการเปิดเผยข้อมูลผู้ป่วย

ค่อนข้างน้อย "การกำหนด ID แบบสุ่มให้กับผู้ป่วยแต่ละราย" จำเป็นต้องมีบางสิ่งที่ไม่ระบุเพื่อหลีกเลี่ยง ID ที่ซ้ำกันและจุดอ่อนอาจคืบคลานไปที่นั่น

Igor stands with Ukraine avatar
cn flag
"จุดอ่อนที่เลวร้ายที่สุดคือการเข้าถึงการอ่านไฟล์แรกเปิดเผยชื่อและวันเกิดของผู้ป่วย" - หลักเกณฑ์แนะนำให้ใช้นามแฝงในบริบทของเรา เช่น การเข้ารหัสแบบย้อนกลับได้ (ตรงกันข้ามกับการไม่เปิดเผยตัวตนที่ไม่ควรมีใครกู้คืนข้อมูลต้นฉบับ) ดังนั้นฉันจำเป็นต้องบันทึกข้อมูลส่วนตัวจริงในบางจุด อย่างน้อยฉันก็ไม่รู้ว่ามีทางเลือกอื่นหรือไม่?
caveman avatar
in flag
การพิสูจน์ความรู้ที่ไม่มีความรู้จะช่วยได้หรือไม่

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา