การเปรียบเทียบ DES, Triple DES, AES, การเข้ารหัส blowfish สำหรับข้อมูล


141

ไม่มีใครมีข้อดีข้อเสียร่วมกันเพื่อเปรียบเทียบอัลกอริทึมการเข้ารหัสเหล่านี้หรือไม่


2
คำถามนี้น่าจะเหมาะสมกว่าที่: security.stackexchange.com
Paul Sasik

8
บางทีคุณอาจจะหมายcrypto.stackexchange.com ? :)
m33lky

คำตอบ:


245

ใช้ AES

รายละเอียดเพิ่มเติม:

  • DES เป็น "มาตรฐานการเข้ารหัสข้อมูล" แบบเก่าจากยุคเจ็ดสิบ ขนาดที่สำคัญของมันสั้นเกินไปสำหรับการรักษาความปลอดภัยที่เหมาะสม (56 บิตที่มีประสิทธิภาพซึ่งสามารถบังคับได้อย่างดุร้ายดังที่แสดงให้เห็นเมื่อสิบกว่าปีที่แล้ว ) นอกจากนี้ DES ใช้บล็อกแบบ 64 บิตซึ่งทำให้เกิดปัญหาที่อาจเกิดขึ้นเมื่อเข้ารหัสข้อมูลหลายกิกะไบต์ด้วยคีย์เดียวกัน (กิกะไบต์ปัจจุบันไม่ใหญ่มากในปัจจุบัน)
  • 3DES เป็นเคล็ดลับในการนำการใช้งาน DES มาใช้ซ้ำโดยการเรียงซ้อนสามอินสแตนซ์ของ DES (ด้วยคีย์ที่แตกต่างกัน) 3DES เชื่อว่าปลอดภัยอย่างน้อยที่สุด " 2 112 " การรักษาความปลอดภัย (ซึ่งค่อนข้างมากและค่อนข้างไกลจากขอบเขตของ "ไม่สามารถแตกหักได้ด้วยเทคโนโลยีของวันนี้") แต่มันช้าโดยเฉพาะอย่างยิ่งในซอฟต์แวร์ (DES ถูกออกแบบมาเพื่อการใช้งานฮาร์ดแวร์ที่มีประสิทธิภาพ แต่มันแย่ลงในซอฟต์แวร์และ 3DES ดูดได้สามเท่า)
  • ปักเป้าเป็นบล็อกตัวเลขที่เสนอโดย Bruce Schneier และนำไปใช้ในซอฟต์แวร์บางตัว ปักเป้าสามารถใช้กุญแจขนาดใหญ่และเชื่อว่าปลอดภัยยกเว้นขนาดของบล็อกซึ่งเป็น 64 บิตเหมือนกับ DES และ 3DES Blowfish มีประสิทธิภาพในซอฟต์แวร์อย่างน้อยในบางแพลตฟอร์มซอฟต์แวร์ (ใช้ตารางการค้นหาที่ขึ้นอยู่กับคีย์ดังนั้นประสิทธิภาพขึ้นกับวิธีที่แพลตฟอร์มจัดการกับหน่วยความจำและแคช)
  • AES เป็นผู้สืบทอดของ DES ในฐานะอัลกอริธึมการเข้ารหัสแบบสมมาตรมาตรฐานสำหรับหน่วยงานรัฐบาลกลางของสหรัฐอเมริกา (และเป็นมาตรฐานสำหรับคนอื่น ๆ ทุกคนเหมือนกัน) AES รับคีย์ 128, 192 หรือ 256 บิต (128 บิตแล้วไม่สามารถแตกได้) ใช้ 128-bit blocks (ไม่มีปัญหา) และมีประสิทธิภาพทั้งในซอฟต์แวร์และฮาร์ดแวร์ มันถูกเลือกผ่านการแข่งขันเปิดที่เกี่ยวข้องกับ cryptographers หลายร้อยคนในช่วงหลายปีที่ผ่านมา โดยพื้นฐานแล้วคุณไม่สามารถมีดีกว่านั้นได้

ดังนั้นหากมีข้อสงสัยให้ใช้ AES

โปรดทราบว่าบล็อกตัวเลขเป็นกล่องที่เข้ารหัส "บล็อก" (ก้อนข้อมูล 128 บิตด้วย AES) เมื่อเข้ารหัส "ข้อความ" ซึ่งอาจยาวกว่า 128 บิตข้อความจะต้องแบ่งออกเป็นบล็อกและวิธีการแยกที่แท้จริงของคุณเรียกว่าโหมดการทำงานหรือ "การผูกมัด" โหมดไร้เดียงสา (แบ่งง่าย ๆ ) เรียกว่า ECB และมีปัญหา การใช้บล็อคตัวเลขอย่างเหมาะสมนั้นไม่ใช่เรื่องง่ายและมันสำคัญกว่าการเลือกระหว่างเช่น AES หรือ 3DES


4
เป็นบิตของถั่วฉันเกือบจะแนะนำ AES256 เสมอ
hdost

2
Holy Sh * t, NSA สามารถถอดรหัส DES ในปี 1976 แต่สนับสนุนให้ใช้ถึงปี 2002! เรียกฉันว่าเป็นคนหวาดระแวง แต่กลัวว่าจะได้รับ AES
ดร. ดีโอ

25

แผนการเหล่านี้ทั้งหมดยกเว้น AES และ Blowfish มีช่องโหว่ที่รู้จักและไม่ควรใช้
อย่างไรก็ตามปักเป้าได้ถูกแทนที่โดยTwofish


11

วิธีการเข้ารหัสที่อธิบายไว้คือรหัสศูนย์บล็อกคีย์สมมาตร

Data Encryption Standard (DES) เป็นรุ่นก่อนซึ่งเข้ารหัสข้อมูลในบล็อก 64 บิตโดยใช้คีย์ 56 บิต แต่ละบล็อกถูกเข้ารหัสแยกต่างหากซึ่งเป็นช่องโหว่ด้านความปลอดภัย

Triple DES ขยายความยาวของคีย์ของ DES โดยใช้การดำเนินการ DES สามตัวในแต่ละบล็อก: การเข้ารหัสด้วยคีย์ 0, การถอดรหัสด้วยคีย์ 1 และการเข้ารหัสด้วยคีย์ 2 คีย์เหล่านี้อาจเกี่ยวข้องกัน

มักจะพบ DES และ 3DES เมื่อเชื่อมต่อกับผลิตภัณฑ์และบริการเชิงพาณิชย์แบบดั้งเดิม

AES ถือเป็นผู้สืบทอดและเป็นมาตรฐานที่ทันสมัย http://en.wikipedia.org/wiki/Advanced_Encryption_Standard

ฉันเชื่อว่าการใช้ปักเป้านั้นไม่ได้ผล

ขอแนะนำอย่างยิ่งให้คุณไม่พยายามใช้การเข้ารหัสของคุณเองและใช้การใช้งานระดับสูงเช่น GPG สำหรับข้อมูลที่เหลือหรือ SSL / TLS สำหรับข้อมูลในการขนส่ง นี่คือวิดีโอที่ยอดเยี่ยมและมีสติในช่องโหว่การเข้ารหัสhttp://rdist.root.org/2009/08/06/google-tech-talk-on-common-crypto-flaws/


2
เหตุใดการใช้ปลาปักเป้าจึงไม่ได้ผล? นั่นไม่ใช่สิ่งที่ปลอดภัยที่สุดใช่ไหม
yogsma

5
@ yogsma: ปักเป้ามีขนาดบล็อกเพียง 64 บิต (ซึ่งมันหมายถึงการแทนที่แบบแทนที่สำหรับ DES ในโปรโตคอล) และทำให้เกิดปัญหาหลังจากที่ข้อมูลบางส่วนถูกเข้ารหัสด้วยคีย์เดียวกัน
Paŭlo Ebermann

@rohannes ทำไมปักเป้าเป็นกำลังใจผมอ่านบางในแง่ของประสิทธิภาพปักเป้าจะดีกว่า AES ดูที่บทความนี้ใน brighthub.com
Yogesh

9

AES เป็นอัลกอริธึมการเข้ารหัสแบบสมมาตรในขณะที่ RSA เป็นอัลกอริทึมการเข้ารหัสแบบอสมมาตร (หรือพับลิกคีย์) การเข้ารหัสและถอดรหัสทำด้วยคีย์เดียวใน AES ในขณะที่คุณใช้คีย์แยกต่างหาก (คีย์สาธารณะและคีย์ส่วนตัว) ใน RSA ความแข็งแรงของคีย์ AES 128 บิตเทียบเท่ากับคีย์ RSA 2600 บิต


7
คุณสามารถให้คณิตศาสตร์สนับสนุนคำตอบนี้หรือแหล่งที่มาได้หรือไม่? ฉันจะสนใจที่จะรู้ว่าวิธีการที่คุณมาถึงบทสรุปที่ 128 บิต AES คือประมาณเทียบเท่ากับอาร์เอส 2600 บิต (ฉันรู้นี้เป็นคำตอบที่เก่า)
รัสเซล Uhl

3
@RussellUhl - ฉันยอมรับว่าประวัติความเป็นมาของตัวเลขเหล่านี้เป็นคำถามที่น่าสนใจแม้หลังจาก 2 ปีแห่งความเงียบ :) ตัวเลขเหล่านี้ดูเหมือนจะได้มาจากกระดาษรูปแบบไฟล์ PDF นี้: eprint.iacr.org/2013/635.pdfUniversal security - from bits and mips to pools, lakes – and beyondบรรดาศักดิ์
Jesse Chisholm

4

แม้ว่า TripleDESCryptoServiceProvider เป็นวิธีที่ปลอดภัยและดี แต่ก็ช้าเกินไป หากคุณต้องการอ้างถึง MSDN คุณจะได้รับคำแนะนำให้ใช้ AES แทน TripleDES โปรดตรวจสอบลิงค์ด้านล่าง: http://msdn.microsoft.com/en-us/library/system.security.cryptography.tripledescryptoserviceprovider.aspx คุณจะเห็นความสนใจนี้ในส่วนหมายเหตุ:

หมายเหตุ อัลกอริทึมการเข้ารหัสลับสมมาตรรุ่นใหม่มาตรฐานการเข้ารหัสขั้นสูง (AES) จะพร้อมใช้งาน ลองใช้คลาส AesCryptoServiceProvider แทนคลาส TripleDESCryptoServiceProvider ใช้ TripleDESCryptoServiceProvider เท่านั้นสำหรับความเข้ากันได้กับแอปพลิเคชันและข้อมูลดั้งเดิม

โชคดี


3
นี่เป็นเรื่องตลกเนื่องจาก Microsoft ยังคงใช้ TripleDES ในผลิตภัณฑ์ของตนเพื่อเข้ารหัส ( en.wikipedia.org/wiki/Triple_DES#Usage )
Tom Heard

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

1
Microsoft มีชื่อเสียงในด้านความเข้ากันได้แบบย้อนหลัง การใช้ TripleDES ของพวกเขาโดยตรงภายใต้ "สำหรับความเข้ากันได้กับแอปพลิเคชันและข้อมูลดั้งเดิม" เท่านั้น
Dan Bechard


0

AES เป็นอัลกอริธึมมาตรฐานที่เป็นที่ยอมรับในปัจจุบันที่ใช้ (ดังนั้นชื่อมาตรฐานการเข้ารหัสขั้นสูง)

ที่เหลือไม่ได้


3
ดังนั้นชื่อหรือไม่ ดังนั้นชื่อ "AES" จึงควรใช้อย่างไร
CodyBugstein

15
มาตรฐานการเข้ารหัสข้อมูลคืออะไร ตรรกะของคุณ "มันมี <มาตรฐาน> ในชื่อ - ดังนั้นนี่คือสิ่งที่ควรใช้" ค่อนข้างมีข้อบกพร่อง
Zlatin Zlatev

0
                DES                               AES
Developed       1977                              2000
Key Length      56 bits                           128, 192, or 256 bits
Cipher Type     Symmetric                         Symmetric
Block Size      64 bits                           128 bits
Security        inadequate                        secure
Performance     Fast                              Slow

AES เร็วกว่า 3DES โดยเฉพาะกับ CPU ที่รองรับ AES-NI ( แต่แม้จะไม่ได้ที่ - DES ถูกออกแบบมาสำหรับการใช้งานฮาร์ดแวร์ได้อย่างรวดเร็วและไม่ได้ใช้งานซอฟต์แวร์) (ปกติDES เป็นเร็วขึ้นเล็กน้อยเกี่ยวกับการวัดบางแต่คีย์ 56bit ทำให้มันไม่เหมาะสมสำหรับการใช้งานใด ๆ ในปัจจุบัน)
Gert van den Berg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.