การใช้คีย์ SSH เพื่อเข้าสู่เซิร์ฟเวอร์ที่ไม่รู้จัก / ไม่ปลอดภัยเป็นอันตรายหรือไม่?


9

สมมติว่าฉันให้กุญแจ SSH สาธารณะแก่ฉันบางคน id_rsa.pub และเขา / เธอติดตั้งลงบนเซิร์ฟเวอร์ที่ไม่ปลอดภัยและฉันถูกขอให้เข้าสู่ระบบ

กระบวนการล็อกอินเกี่ยวข้องกับการส่งรหัสส่วนตัวของฉันไปยังเซิร์ฟเวอร์ที่ถูกบุกรุกหรือไม่?

ถ้าใช่ตอนนี้ผู้โจมตีสามารถเข้าถึงคีย์ SSH ส่วนตัวของฉันได้และนั่นก็น่ากลัว

ถ้าไม่เช่นนั้นทำไมฉันเห็นบรรทัดนี้ในเอาต์พุต ssh -vvv:

debug1: Server accepts key: pkalg ssh-rsa blen 277

นี่หมายความว่ามีการส่งรหัสส่วนตัวไปยังเซิร์ฟเวอร์และยอมรับ

ฉันเข้าใจผิดเกี่ยวกับปัญหาหรือไม่

คำตอบ:


7

ไม่คีย์ส่วนตัวของคุณไม่เคย "ส่ง" หรือส่งที่ใดก็ได้

การเข้ารหัสคีย์สาธารณะไม่เหมือนกับการพิสูจน์ตัวตนชื่อผู้ใช้ / รหัสผ่านแบบดั้งเดิม

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

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

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

กล่าวโดยย่อแม้ว่าผู้โจมตีที่เป็นศัตรูจะได้รับกุญแจสาธารณะของคุณและได้รับข้อความที่ลงนามโดยกุญแจส่วนตัวของคุณพวกเขาจะยังไม่สามารถรับรหัสส่วนตัวที่แท้จริงของคุณได้ดังนั้นพวกเขาจึงไม่สามารถปลอมตัวเป็นข้อมูลประจำตัวของคุณ คุณ".


ผมเข้าใจกระบวนการ crypo คีย์สาธารณะ sshแต่ถูกสับสนโดยข้อความแก้ปัญหาที่ปล่อยออกมา คำตอบจาก @ pjc50 ดูเหมือนจะให้ความมั่นใจว่าฉันกำลังมองหา
Gurjeet Singh

11

คุณเข้าใจผิดเกี่ยวกับกระบวนการ

ไม่มีการส่งคีย์ แต่จะสร้าง "ความท้าทาย" โดยการเข้ารหัสบางสิ่งด้วยรหัสสาธารณะที่สามารถถอดรหัสได้ด้วยคีย์ส่วนตัวที่ตรงกันเท่านั้น

หากคุณถูกขอให้ใส่รหัสผ่านหรือส่ง X ไปยังเซิร์ฟเวอร์ที่ถูกบุกรุกนั่นหมายความว่ามีความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้น


ขอบคุณ ssh ปล่อยข้อความนี้ด้วยdebug1: Offering RSA public key: <$HOME>/.ssh/id_rsaซึ่งทำให้ใครคิดว่ามีการแชร์คีย์ส่วนตัวแม้ว่า id_rsa.pub ได้ถูกแชร์ไปแล้ว
Gurjeet Singh

กุญแจสาธารณะคือสาธารณะดี คุณสามารถมอบให้กับทุกคน นั่นทำให้พวกเขาสามารถเข้ารหัสข้อความได้ คีย์ส่วนตัวคือสิ่งที่ช่วยให้คุณถอดรหัสข้อความได้ ตราบใดที่คุณเก็บกุญแจส่วนตัวไว้กับตัวคุณเองก็โอเค
Pete
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.