อ่านข้อมูลที่คอมพิวเตอร์ของฉันส่งผ่านการเชื่อมต่อ SSL

ฉันต้องการอ่านข้อมูลที่แอปพลิเคชัน Java ใน Firefox ส่งไปยังเว็บไซต์ผ่านการเชื่อมต่อ SSL

ฉันใช้ WireShark และฉันเชื่อว่าหากฉันสามารถบอก wireshark ว่า firefox ใช้คีย์การเข้ารหัสใดได้ wireshark จะสามารถถอดรหัสข้อความ SSL ได้

จากนั้น ฉันจะตรวจสอบว่าเว็บไซต์นี้ได้รับข้อมูลใดบ้างเกี่ยวกับคอมพิวเตอร์ของฉัน

ฉันขอโทษหากคำถามคลุมเครือ ... คำแนะนำใด ๆ ที่จะเริ่มค้นหาเบาะแสจะได้รับการชื่นชม


person bboyle1234    schedule 24.01.2010    source แหล่งที่มา


คำตอบ (3)


ไม่เกี่ยวกับการเขียนโปรแกรมจริงๆ

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

person blowdart    schedule 24.01.2010

สมมติว่าคุณไม่ได้พยายามทำสิ่งนี้โดยทางโปรแกรม แต่เพียงต้องการดูส่วนหัวขณะแก้ไขจุดบกพร่อง คุณสามารถใช้ Charles:

http://www.charlesproxy.com/

มีข้อมูลเล็กน้อยเกี่ยวกับวิธีการตั้งค่าเพื่อถอดรหัสการรับส่งข้อมูล SSL:

http://www.charlesproxy.com/documentation/using-charles/ssl-proxying/

person Joe    schedule 24.01.2010
comment
ขอบคุณโจ! ฉันจะใช้เวลาตรวจสอบชาร์ลส์อีกสักหน่อย มันดูดีตั้งแต่แรกเห็น ฉันรู้สึกขอบคุณมาก - person bboyle1234; 26.01.2010

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

หากต้องการตอบความคิดเห็นของคุณว่าควรใช้คีย์ส่วนตัวของคอมพิวเตอร์ของคุณหรือไม่:

หากนี่คือการเชื่อมต่อ SSL "ปกติ" ไคลเอนต์ (แอป Java) จะติดต่อกับเซิร์ฟเวอร์และรับรหัสสาธารณะ ตรวจสอบความถูกต้อง (ลงนามโดย CA ที่เชื่อถือได้) จากนั้นใช้เพื่อเจรจาต่อรองคีย์สมมาตรที่ใช้สำหรับการเข้ารหัส .

คีย์สาธารณะ/ส่วนตัวทำงานในลักษณะที่ทุกสิ่งที่เข้ารหัสด้วยคีย์เดียวสามารถถอดรหัสได้ด้วยอีกคีย์เดียวเท่านั้น กล่าวคือ ทุกสิ่งที่แอป Java เข้ารหัสโดยใช้คีย์สาธารณะของเซิร์ฟเวอร์ สามารถถอดรหัสได้โดยใช้คีย์ส่วนตัวเท่านั้น ซึ่งไม่เคยออกจากเซิร์ฟเวอร์

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

การอ่านเบื้องหลัง: http://en.wikipedia.org/wiki/Transport_Layer_Security และ http://en.wikipedia.org/wiki/Public-key_cryptography

person dseifert    schedule 24.01.2010
comment
ตกลง. คุณกำลังบอกว่ารู้คีย์ส่วนตัวที่คอมพิวเตอร์ของฉันใช้นั้นไม่เพียงพอใช่หรือไม่ - person bboyle1234; 24.01.2010