Score:3

มีวิธี "แท็ก" คีย์ในลักษณะที่ป้องกันไม่ให้ใช้ซ้ำหรือไม่?

ธง br

สมมติว่าฉันมีคีย์สาธารณะและคีย์ส่วนตัวที่เกี่ยวข้องกับทรัพยากรบางอย่าง (เช่น ใบรับรอง TLS สำหรับเว็บไซต์ mycoolsite.com) ฉันมีอิสระที่จะนำคีย์เหล่านี้ไปใช้ซ้ำสำหรับทรัพยากรอื่น (เช่น สำหรับ anotherneatsite.net) คำถามของฉันคือ มีวิธีที่มีประสิทธิภาพในการ "แท็ก" คีย์ดั้งเดิมด้วยข้อมูล "คีย์นี้สำหรับ mycoolsite.com" หรือไม่ ซึ่งการลบแท็กจะทำให้คีย์ใช้ไม่ได้

แนวคิดคือการอนุญาตให้ระบบตรวจสอบสิทธิ์ปฏิเสธรหัสสาธารณะหากใช้ซ้ำกับบัญชีอื่น เพื่อให้ชัดเจน นี่เป็นคำถามทั่วไปเกี่ยวกับระบบเข้ารหัสคีย์สาธารณะ ไม่ใช่แค่ TLS

kelalaka avatar
in flag
https://sectigostore.com/page/one-ssl-certificate-for-multiple-domains/
Score:4
ธง in

คำถามของฉันคือ มีวิธีที่มีประสิทธิภาพในการ "แท็ก" คีย์ดั้งเดิมด้วยข้อมูล "คีย์นี้สำหรับ mycoolsite.com" หรือไม่ ซึ่งการลบแท็กจะทำให้คีย์ใช้ไม่ได้

ใช่ นั่นคือสิ่งที่ใบรับรองทำโดยพื้นฐาน ซึ่งคุณสามารถมีชื่อโดเมนในรูปแบบ X500 RDN (Relative Distinguished Name) นอกจากนี้ยังเป็นไปได้ที่จะมีส่วนขยาย (สำคัญ) ที่มีข้อมูลเพิ่มเติม เช่น ชื่อเรื่องอื่นหรือการใช้คีย์ "สำคัญ" หมายความว่าไม่ควรเพิกเฉยต่อส่วนขยายแม้ว่าจะไม่รู้จักส่วนขยายก็ตาม ข้อมูลทั้งหมดนี้ลงนามโดย CA ที่ออกใบรับรองและต้องได้รับการตรวจสอบโดยผู้ตรวจสอบ

แน่นอน แม้แต่สิ่งที่ต้องทำในขั้นตอนการตรวจสอบใบรับรองก็สามารถละเว้นได้ ไม่สามารถทำให้คีย์เป็นโมฆะได้ นั่นเองและคุณไม่สามารถบังคับให้ระบบเพิกเฉยต่อข้อมูลที่ส่งถึงมันจากภายนอกได้ (เว้นแต่คุณจะแซนด์บ็อกซ์ระบบที่ฉันคิดไว้)

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

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

br flag
ดังนั้นการละทิ้งระบบโซเชียลของผู้ออกใบรับรอง จึงไม่มีวิธีการเข้ารหัสที่เป็นที่รู้จักในการผูกคีย์กับข้อมูลชิ้นหนึ่งใช่หรือไม่
Maarten Bodewes avatar
in flag
ข้อมูลในกรณีนี้เป็นทรัพยากรในคำถามที่ฉันคิดหรือไม่ เพราะไม่งั้นจะกลายเป็นคนละคำถาม
br flag
ใช่ -- กรณีการใช้งานในที่นี้คือระบบที่ลูกค้าสร้างคีย์เองโดยไม่ปรึกษาหน่วยงานส่วนกลาง ดังนั้นฉันจึงไม่สามารถพึ่งพาโครงสร้างพื้นฐานทางสังคมที่ใบรับรอง TLS ใช้ (และไม่ชัดเจนว่าแม้แต่โครงสร้างพื้นฐานนั้นก็สามารถบังคับใช้สิ่งนี้ได้ ดูตัวอย่างสถานการณ์นี้ https://koen.engineer/a-tale-of-private-key- ใช้ซ้ำ-8ff0cb766fa5)
knaccc avatar
es flag
@IanH เพียงเพราะคุณต้องการ CA ไม่ได้หมายความว่าคุณต้องการ CA บุคคลที่สาม คุณต้องมีใบรับรอง CA ที่ลงนามด้วยตนเองซึ่งคุณจะเป็นผู้ควบคุมโครงสร้างพื้นฐานของคุณเอง และถ้าคุณไม่ต้องการใช้ CA เลย คุณก็เพียงแค่มีใบรับรองที่ลงนามเองซึ่งจำกัดการใช้คีย์สาธารณะของคุณ โดยพื้นฐานแล้ว คำตอบสำหรับคำถามของคุณคือคุณต้องรวมข้อมูลเมตาบางอย่างเข้ากับคีย์สาธารณะของคุณเพื่อจำกัดการใช้งาน ซึ่งเป็นสิ่งที่ใบรับรองทำ
Score:1
ธง ph
jpa

วิธีหนึ่งคือ:

  1. ลูกค้าสร้างคีย์ส่วนตัวและสาธารณะ
  2. ลูกค้าส่งรหัสสาธารณะไปยังเซิร์ฟเวอร์
  3. เซิร์ฟเวอร์สร้างรหัสที่ได้มาจากรหัสสาธารณะของลูกค้าและสุ่ม nonce
  4. เซิร์ฟเวอร์จะส่ง nonce กลับไปยังไคลเอนต์ ซึ่งสามารถใช้เพื่อสร้างคีย์ส่วนตัวที่ได้รับมา

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

วิธีดำเนินการขั้นตอนที่ 3 ขึ้นอยู่กับอัลกอริทึมที่ใช้ มีตัวอย่างบางส่วนใน คำตอบสำหรับคำถามนี้.

โพสต์คำตอบ

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