การเข้ารหัส SHA และ AES แตกต่างกันอย่างไร [ปิด]


93

การเข้ารหัส SHA และ AES แตกต่างกันอย่างไร


2
ที่ดีกว่าสำหรับsecurity.stackexchange.com
Dave Jarvis

คำตอบ:



86

SHAเป็นตระกูล "Secure Hash Algorithms" ที่ได้รับการพัฒนาโดยสำนักงานความมั่นคงแห่งชาติ ขณะนี้มีการแข่งขันระหว่างตัวเลือกมากมายว่าใครจะเป็นSHA-3อัลกอริทึมแฮชใหม่สำหรับปี 2012+

คุณใช้ฟังก์ชัน SHA เพื่อถ่ายเอกสารขนาดใหญ่และคำนวณ "สรุป" (หรือเรียกว่า "แฮช") ของอินพุต สิ่งสำคัญคือต้องตระหนักว่านี่เป็นกระบวนการทางเดียว คุณไม่สามารถย่อยและกู้คืนเอกสารต้นฉบับได้

AES , Advanced Encryption Standard คืออัลกอริทึมบล็อกสมมาตร ซึ่งหมายความว่าต้องใช้บล็อก 16 ไบต์และเข้ารหัส เป็นแบบ "สมมาตร" เนื่องจากคีย์อนุญาตให้เข้ารหัสและถอดรหัสได้

UPDATE: Keccakได้รับการเสนอชื่อให้เป็นผู้ชนะ SHA-3 เมื่อวันที่ 2 ตุลาคม 2555


66

SHA และ AES มีจุดประสงค์ที่แตกต่างกัน SHA ใช้ในการสร้างแฮชของข้อมูลและ AES ใช้ในการเข้ารหัสข้อมูล

นี่คือตัวอย่างของเวลาที่แฮช SHA มีประโยชน์สำหรับคุณ สมมติว่าคุณต้องการดาวน์โหลดอิมเมจ DVD ISO ของ Linux distro บางตัว ไฟล์นี้เป็นไฟล์ขนาดใหญ่และบางครั้งก็ผิดพลาด - ดังนั้นคุณต้องตรวจสอบว่าสิ่งที่คุณดาวน์โหลดมานั้นถูกต้อง สิ่งที่คุณต้องทำคือไปที่แหล่งที่เชื่อถือได้ (เช่นจุดดาวน์โหลด distro อย่างเป็นทางการ) และโดยทั่วไปแล้วพวกเขาจะมีแฮช SHA สำหรับอิมเมจ ISO ที่พร้อมใช้งาน ตอนนี้คุณสามารถสร้างแฮช SHA ที่เทียบเคียงได้ (โดยใช้เครื่องมือเปิดจำนวนเท่าใดก็ได้) สำหรับข้อมูลที่ดาวน์โหลดของคุณ ขณะนี้คุณสามารถเปรียบเทียบแฮชทั้งสองเพื่อให้แน่ใจว่าตรงกันซึ่งจะตรวจสอบได้ว่ารูปภาพที่คุณดาวน์โหลดมานั้นถูกต้อง นี่เป็นสิ่งสำคัญอย่างยิ่งหากคุณได้รับอิมเมจ ISO จากแหล่งที่ไม่น่าเชื่อถือ (เช่น torrent) หรือหากคุณมีปัญหาในการใช้ ISO และต้องการตรวจสอบว่าภาพเสียหายหรือไม่

ดังที่คุณเห็นในกรณีนี้ SHA ถูกใช้เพื่อตรวจสอบความถูกต้องของข้อมูลที่ไม่เสียหาย คุณมีสิทธิ์ทุกอย่างในการดูข้อมูลใน ISO

ในทางกลับกัน AES ใช้เพื่อเข้ารหัสข้อมูลหรือป้องกันไม่ให้ผู้อื่นดูข้อมูลนั้นโดยรู้ความลับบางอย่าง

AES ใช้คีย์ที่ใช้ร่วมกันซึ่งหมายความว่าจะใช้คีย์เดียวกัน (หรือคีย์ที่เกี่ยวข้อง) เพื่อเข้ารหัสข้อมูลตามที่ใช้ในการถอดรหัสข้อมูล ตัวอย่างเช่นถ้าฉันเข้ารหัสอีเมลโดยใช้ AES และฉันส่งอีเมลนั้นถึงคุณคุณและฉันทั้งคู่จะต้องรู้คีย์ที่ใช้ร่วมกันที่ใช้ในการเข้ารหัสและถอดรหัสอีเมล ซึ่งแตกต่างจากอัลกอริทึมที่ใช้คีย์สาธารณะเช่น PGP หรือ SSL

หากคุณต้องการรวมเข้าด้วยกันคุณสามารถเข้ารหัสข้อความโดยใช้ AES จากนั้นส่งแฮช SHA1 ของข้อความที่ไม่ได้เข้ารหัสเพื่อให้เมื่อข้อความถูกถอดรหัสพวกเขาจะสามารถตรวจสอบความถูกต้องของข้อมูลได้ นี่เป็นตัวอย่างที่ค่อนข้างสร้างขึ้น

หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับคำค้นหา Wikipedia เหล่านี้ (นอกเหนือจาก AES และ SHA) ที่คุณต้องการลอง ได้แก่ :

อัลกอริธึมคีย์สมมาตร (สำหรับ AES) ฟังก์ชันแฮชการเข้ารหัส (สำหรับ SHA) การเข้ารหัสคีย์สาธารณะ (สำหรับ PGP และ SSL)


9

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


7

SHA ย่อมาจาก Secure Hash Algorithm ในขณะที่ AES ย่อมาจาก Advanced Encryption Standard ดังนั้น SHA จึงเป็นชุดของอัลกอริทึมการแฮช ในทางกลับกัน AES คือการเข้ารหัสที่ใช้ในการเข้ารหัส อัลกอริทึม SHA (SHA-1, SHA-256 และอื่น ๆ ... ) จะรับอินพุตและสร้างไดเจสต์ (แฮช) ซึ่งโดยทั่วไปจะใช้ในกระบวนการเซ็นชื่อดิจิทัล (สร้างแฮชของไบต์บางส่วนและเซ็นชื่อด้วยคีย์ส่วนตัว) .


3

SHA ไม่ต้องการอะไรเลยนอกจากต้องใช้อินพุตในขณะที่ AES ต้องการอย่างน้อย 3 สิ่งคือสิ่งที่คุณเข้ารหัส / ถอดรหัสคีย์การเข้ารหัสและเวกเตอร์การเริ่มต้น


1
[สิ่งนี้ถูกตั้งค่าสถานะว่าเป็น "คำตอบที่ล่าช้าสำหรับคำถามเก่าซึ่งจัดทำโดยผู้ใช้ใหม่ความคิดเห็นของฉันอยู่ในบริบทนั้น] ดูเหมือนว่าจะไม่เพิ่มข้อมูลใด ๆ จากสิ่งที่ให้ไว้แล้วในคำตอบอื่น ๆ สำหรับคำถามนี้
danfuzz

ว่าเป็นสิ่งที่ผิด. คุณไม่จำเป็นต้องมี initialization vector (IV) เพื่อใช้ AES โหมดการทำงานบางอย่างสำหรับ AES ต้องการ IV (ซึ่งแตกต่างกันโดยสิ้นเชิง)
Hilder Vitor Lima Pereira
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.