ไบนารี DER (.der)
ITU-T มาตรฐานDistinguished Encoding Rules (DER) เป็นมาตรฐานการเข้ารหัสไบนารีที่เข้มงวดและเป็นมาตรฐานสากลสำหรับโครงสร้างข้อมูล ASN.1 ซึ่งช่วยให้มั่นใจได้ว่าการแสดงผลใบรับรองความปลอดภัยและคีย์เข้ารหัสมีความแม่นยำระดับบิตโดยไม่มีความคลุมเครือ
แปลง DER เป็น PEM
ตัวแปลงจาก DER เป็น PEM ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ
ตรวจสอบและดู Metadata
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ DER โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็นส่วนหัวในระดับไบต์ (Magic Bytes)
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ DER โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็น HEX (OFFSET 0):
30 82การแสดงผลรูปแบบ ASCII: 0\x82
มาตรฐาน: ITU-T Recommendation X.690
ข้อมูลจำเพาะทางเทคนิค
| สถาปัตยกรรมคอนเทนเนอร์ | Strict canonical binary encoding of ASN.1 structures using Tag-Length-Value (TLV) triples |
| การบีบอัด | Uncompressed binary data |
| การจัดลำดับไบต์ (Byte Endianness) | Big-Endian ASN.1 encoding |
| พื้นที่สี | N/A (Cryptographic Binary Stream) |
| ช่องสัญญาณและโครงสร้าง | Cryptographic keys, X.509 certificates, CRLs, and PKCS structures |
| ขนาดสูงสุด | Unbounded ASN.1 length |
| ความโปร่งใส | Binary ASN.1 data structure |
| การสตรีมและแบบโปรเกรสซีฟ | Deterministic single-pass canonical decoding |
ตารางเปรียบเทียบทางเทคนิค: DER กับคู่แข่ง
| คุณลักษณะทางเทคนิค | DER (ปัจจุบัน) | PEM | CRT | P12 |
|---|---|---|---|---|
| การแสดงข้อมูล | การเข้ารหัส ASN.1 ไบนารีที่เข้มงวด | ข้อความที่หุ้มด้วย Base64 ASCII | Base64 PEM หรือ DER ไบนารี | คลังเก็บไบนารีเข้ารหัส PKCS #12 |
| การแฮชแบบกำหนดได้ | สตรีมบิตที่เป็นมาตรฐาน 100% | ขึ้นอยู่กับช่องว่าง/แบนเนอร์ | ขึ้นอยู่กับการจัดรูปแบบ | เข้ารหัสด้วยเกลือ/IV |
| ขนาดไฟล์ | เล็กที่สุด (เล็กกว่า PEM ประมาณ 33%) | ใหญ่ขึ้นเนื่องจาก Base64 (+33%) | ใหญ่ขึ้นเนื่องจาก Base64 (+33%) | ใหญ่ขึ้นเนื่องจากตัวห่อหุ้มการเข้ารหัส |
| การสนับสนุน Java และฮาร์ดแวร์ | มาตรฐานดั้งเดิม | ต้องมีการแปลงใน Java | ต้องมีการแปลงใน Java | รองรับเป็นคลังคีย์ |
รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex
ข้อผิดพลาด OpenSSL: 'asn1 encoding routines:ASN1_get_object:header too long'
สาเหตุหลัก: ไบต์ Tag-Length-Value (TLV) เสียหายในส่วนหัวของลำดับ ASN.1
การกู้คืน: แปลงรหัสโดยใช้เครื่องมือใบรับรอง File2File เพื่อสร้างไบต์มาตรฐาน DER ที่ถูกต้องขึ้นใหม่
การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์
ตัวถอดรหัส DER แยกวิเคราะห์ตัวระบุความยาวซึ่งการ underflow/overflow ของจำนวนเต็มอาจทริกเกอร์บัฟเฟอร์โอเวอร์ฟลอว์ในไลบรารีการเข้ารหัสลับดั้งเดิม
เวกเตอร์การโจมตีที่ทราบ
- จำนวนเต็มล้นในระหว่างการถอดรหัสความยาวที่ไม่แน่นอนของ ASN.1 ที่ซ้อนกันลึก
- การอ่านนอกขอบเขตเมื่อแยกวิเคราะห์สตริงบิตที่ผิดรูป
- การปฏิเสธการให้บริการผ่านระเบิดการเรียกซ้ำ ASN.1 ที่ซ้อนกัน
แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน:
ประวัติความเป็นมาและเหตุการณ์สำคัญ
ข้อได้เปรียบและจุดเด่นสำคัญ
- เป็นมาตรฐานและจำแนกได้แน่นอน: รับประกันว่าข้อมูลที่เหมือนกันจะสร้างแฮชไบนารีที่ตรงกันทุกประการเสมอ ซึ่งจำเป็นสำหรับลายเซ็นดิจิทัล
- มีขนาดกะทัดรัดกว่า PEM: ประหยัดค่าใช้จ่ายได้ประมาณ 33% โดยการละเว้นการเข้ารหัส Base64 และแบนเนอร์ ASCII
- เป็นรูปแบบดั้งเดิมสำหรับโมดูลความปลอดภัยฮาร์ดแวร์ (HSM), สมาร์ทการ์ด และ Java keystore
ข้อจำกัดทางเทคนิคและข้อควรพิจารณา
- รูปแบบไบนารีไม่สามารถดู แก้ไข หรือคัดลอกและวางในโปรแกรมแก้ไขข้อความได้
- พบได้น้อยกว่าในสภาพแวดล้อมการโฮสต์เว็บ ซึ่งส่วนใหญ่จะนิยมไฟล์ PEM/CRT แบบข้อความมากกว่า
- กฎการเข้ารหัสที่เข้มงวดหมายความว่าความคลาดเคลื่อนในการเว้นวรรคเพียงเล็กน้อยอาจทำให้การแยกวิเคราะห์ถูกปฏิเสธ
เกร็ดความรู้ทางเทคนิคที่น่าสนใจ
- DER เป็นชุดย่อยที่เข้มงวดของ BER (Basic Encoding Rules); ในขณะที่ BER อนุญาตให้มีหลายวิธีที่ถูกต้องในการเข้ารหัสค่า แต่ DER อนุญาตให้มีวิธีที่เป็นมาตรฐานเพียงวิธีเดียว
- หากคุณเข้ารหัสไฟล์ DER ด้วย Base64 และห่อด้วย '-----BEGIN CERTIFICATE-----' คุณจะได้ไฟล์ PEM มาตรฐาน
- KeyFactory ของ Java กำหนดให้ต้องระบุคีย์สาธารณะและคีย์ส่วนตัวของ RSA ในรูปแบบ DER ดั้งเดิม
คำถามทางเทคนิคที่พบบ่อย
ความแตกต่างระหว่าง DER และ PEM คืออะไร
DER คือรูปแบบไบนารีดิบของใบรับรองหรือคีย์ ส่วน PEM เป็นเพียงไฟล์ DER เดียวกันที่แปลงเป็นข้อความ Base64 ที่อ่านได้พร้อมแบนเนอร์ '-----BEGIN...-----'
ฉันจะแปลง DER เป็น PEM ได้อย่างไร
อัปโหลดไฟล์ .der ของคุณไปที่ File2File.app เพื่อแปลงเป็นใบรับรองข้อความ .pem มาตรฐานในหนึ่งวินาทีบนเบราว์เซอร์ของคุณ
เหตุใด Java จึงใช้คีย์ DER
สถาปัตยกรรมการเข้ารหัสลับของ Java (JCA) ใช้ชุดอาร์เรย์ไบต์ PKCS#8 และ X.509 ที่เข้ารหัสแบบ DER สำหรับข้อมูลจำเพาะของคีย์ดั้งเดิม