Score:2

อะไรคือความแตกต่างระหว่างโหมด AES-CCM8 และโหมด AES-CCM?

ธง id

ฉันรู้จัก AES-GCM และ AES-CCM แต่อะไรคือความแตกต่างระหว่างโหมด AES-CCM8 และโหมด AES-CCM มันคือความยาวของรหัส?

Score:3

8 คือความยาวของแท็ก (เป็นไบต์)

CCM เป็นตระกูลของอัลกอริทึม AEAD (การเข้ารหัสที่รับรองความถูกต้องพร้อมข้อมูลที่เกี่ยวข้อง) ซึ่งกำหนดพารามิเตอร์โดย:

  • อัลกอริทึมการเข้ารหัสบล็อก (เช่น AES-128, AES-192, AES-256, Camellia-128, â¦) ที่มีขนาดบล็อก 128 บิต
  • ฟังก์ชันการสร้างเคาน์เตอร์
  • ฟังก์ชันการจัดรูปแบบสำหรับบล็อกแรก
  • ความยาวแท็ก

CCM ถูกกำหนดโดย นิสท์ เอสพี 800-30ซี.

ในทางปฏิบัติ ทุกคนใช้การสร้างตัวนับและฟังก์ชันการจัดรูปแบบ ระบุไว้ในภาคผนวก A ของ NIST SP 800-30C ข้อมูลจำเพาะของฟังก์ชันการจัดรูปแบบคือกลุ่มของฟังก์ชันที่มีพารามิเตอร์เดียว: ความยาวของฟิลด์ AEAD ดังนั้น âAES-CCMâ จึงปล่อยให้พารามิเตอร์สามตัวคลุมเครือ: ความยาวของคีย์ AES, ความยาว ถาม ของฟิลด์ AEAD และความยาว ที ของแท็ก

คุณค่าของ ถาม ไม่มีผลกระทบโดยตรงต่อความปลอดภัย มันจำกัดขนาดของ AEAD ที่สามารถส่งได้ และจำกัดขนาดของ nonce คุณค่าของ ที มีผลกระทบต่อความปลอดภัย: แท็กที่สั้นเกินไปอาจถูกดุร้ายได้ ความยาวแท็กสามารถต่ำได้ถึง 4 ไบต์ ซึ่งง่ายต่อการบังคับ แท็กสั้นดังกล่าวใช้ในโปรโตคอลการสื่อสารซึ่งการบังคับแท็กแบบเดรัจฉานจะเป็นการโจมตีที่ดำเนินอยู่และความน่าจะเป็นที่การโจมตีที่แอคทีฟจะประสบความสำเร็จถือว่าต่ำที่ยอมรับได้

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

โปรดทราบว่า ถาม และ ที เป็นอินพุตในการคำนวณแท็ก ดังนั้นค่าแท็กจึงขึ้นอยู่กับพารามิเตอร์เหล่านี้ โดยเฉพาะอย่างยิ่งสำหรับข้อความที่กำหนด แท็ก -byte CCM ไม่ใช่การตัดทอนของแท็ก 16 ไบต์ ไบต์ (สิ่งนี้แตกต่างสำหรับ GCM โดยที่ GCM ที่มีแท็กสั้นกว่าเป็นเพียง GCM ที่ตัดแท็กแบบเต็มความยาวออก)

หากไม่ได้ระบุไว้อย่างชัดเจน โดยปกติแล้วความยาวของแท็กจะเป็นค่าสูงสุดที่เป็นไปได้ ซึ่งก็คือหนึ่งบล็อก (128 บิต = 16 ไบต์) นอกจากนี้ยังสามารถเขียนเป็น âAES-CCM-16â (หรือรูปแบบการพิมพ์) âAES-CCM-8â หมายถึง AES-CCM ที่มีแท็ก 64 บิต = 8 ไบต์ และอื่นๆ

ตัวอย่างเช่น ใน TLS 1.2 ชุดรหัส CCM ถูกกำหนดโดย RFC 6655 (และ RFC อื่นๆ สำหรับ Camellia และ ARIA) โดยอ้างอิงถึง RFC 5116 §5.3 และ §5.4. RFCÂ 6655 §3 ระบุ nonce ขนาด 12 ไบต์ ซึ่งเท่ากับว่า ถาม = 3. xxx_CCM ชุดรหัสใช้แท็กความยาวสูงสุด (ที = 16) ในขณะที่ xxx_CCM_8 ชุดการเข้ารหัสใช้แท็กครึ่งความยาว (ที = 8).

แท็กขนาด 8 ไบต์ (64 บิต) จะมีขนาดเล็กจนน่าอึดอัดในสถานการณ์ที่ผู้โจมตีสามารถบังคับแท็กที่เป็นไปได้ทั้งหมด อย่างไรก็ตาม เมื่อใช้แท็กสำหรับการสื่อสาร TLS หากผู้โจมตีเดาแท็กผิด ผู้รับจะปิดการเชื่อมต่อทันที ดังนั้นการเดาแต่ละครั้งจึงต้องใช้การเชื่อมต่อใหม่ สิ่งนี้ทำให้กำลังดุร้ายมีราคาแพงมาก เมื่อใช้ DTLS เครื่องรับจะยอมรับแพ็กเก็ตที่เสียหายจำนวนหนึ่ง ดังนั้นผู้โจมตีจึงสามารถคาดเดาได้หลายครั้งต่อการเชื่อมต่อ แต่การโจมตียังคงเป็นการโจมตีที่แอ็คทีฟในการเชื่อมต่อที่กำลังดำเนินอยู่ และมักไม่สามารถทำได้สำหรับผู้โจมตีที่จะลองใช้จำนวนที่ไม่สำคัญ คาดเดาโดยไม่ทำให้แบนด์วิธของผู้รับอิ่มตัวหรือกระตุ้นการป้องกันน้ำท่วม

dawklrw avatar
id flag
aes-ccm ปลอดภัยกว่า aes-ccm8 หรือไม่
Achim Kraus avatar
ph flag
มีความแตกต่างระหว่างการส่งผ่านการตรวจสอบความถูกต้องของแท็กและการแทรกข้อมูลลงในข้อความที่เข้ารหัส ซึ่งส่งผลให้ค่าที่ถอดรหัส "ตั้งใจ" ผ่านเฉพาะ MAC อาจจะถือว่าง่ายกว่า แต่ผลลัพธ์นั้นยังคงเป็น "เพย์โหลดแบบสุ่ม" ของข้อความที่ถอดรหัส หากเกิดความเจ็บปวดหรือตรวจพบโดยเลเยอร์โปรโตคอลถัดไป โดยทั่วไปจะไม่ชัดเจน ประเด็นดูเหมือนจะมากกว่านั้น การประหยัดโดยรวมของแท็ก 8 ไบต์เมื่อเทียบกับแท็ก 16 ไบต์อาจไม่คุ้มกับความเสี่ยงที่มากขึ้น
Achim Kraus avatar
ph flag
"โดยเฉพาะอย่างยิ่ง สำหรับข้อความที่กำหนด แท็ก CCM n ไบต์ไม่ใช่การตัดทอนแท็ก 16 ไบต์เป็น n ไบต์" จากนั้นมีการใช้งานที่ไม่สมบูรณ์นั่นคือสิ่งที่ทำในประสบการณ์ของฉัน ccm8 เพียงแค่ตัดทอน ccm16
Gilles 'SO- stop being evil' avatar
@AchimKraus [RFC 6655](https://datatracker.ietf.org/doc/html/rfc6655#section-6.1) ระบุว่า âข้อความรหัส AEAD_AES_128_CCM_8 ประกอบด้วย (â¦) เอาต์พุตแท็กการรับรองความถูกต้อง 8 ออกเตตของ การดำเนินการเข้ารหัส CCMâ â โปรดทราบว่าการดำเนินการ _not_ บอกว่านี่คือการตัดแท็กให้เหลือ 16 ไบต์ RFC 6655 อ้างถึง [RFC 5116](https://datatracker.ietf.org/doc/html/rfc5116#section-5.3) ซึ่งระบุว่า “ฟังก์ชันการจัดรูปแบบและการสร้างตัวนับเป็นไปตามที่ระบุไว้ในภาคผนวก A ของ [SP 800 -38C]â
Gilles 'SO- stop being evil' avatar
ใน OpenSSL [CCM-8 ส่ง `taglen=8` ไปยัง `EVP_CTRL_AEAD_SET_TAG](https://github.com/openssl/openssl/blob/openssl-3.0/ssl/t1_enc.c#L410), [`aes_ccm_ctrl` เก็บ 8 ใน `cctx->M`](https://github.com/openssl/openssl/blob/openssl-3.0/crypto/evp/e_aes.c#L3350), [`aes_ccm_init_key` ส่งไปยัง `CRYPTO_ccm128_init`] (https://github.com/openssl/openssl/blob/openssl-3.0/crypto/evp/e_aes.c#L3395) ซึ่ง [เข้ารหัส `M=8` ในบล็อกเริ่มต้น](https://github.com /openssl/openssl/blob/openssl-3.0/crypto/modes/ccm128.c#L31) การใช้งานที่เข้ากันไม่ได้กับ OpenSSL จะถือว่าใช้งานไม่ได้
Achim Kraus avatar
ph flag
ใช่คุณถูก! ฉันผิด ฉันจำได้เฉพาะส่วนที่คัดลอกแท็ก แต่สิ่งที่เริ่มต้นก็แตกต่างกันเช่นกัน
Score:1
ธง ru

ตามที่กำหนดไว้ใน ส่วนที่ 6.1 ของ RFC6655, AES-CCM8 แตกต่างกันตรงที่ขนาดของแท็กการตรวจสอบความถูกต้องคือ 8 ไบต์ (เช่น 64 บิต) แทนที่จะเป็น 16 ไบต์ (เช่น 128 บิต) สำหรับ AES-CCM NIST ข้อกำหนด CCM ใน SP800-38C ข้อ 6.1 อนุญาตช่วงความยาวแท็กการรับรองความถูกต้องที่เป็นไปได้ แท็กที่สั้นกว่านั้นถือได้ว่าเป็นส่วนที่สำคัญที่สุดของแท็กที่ยาวกว่า ไม่มีความแตกต่างในเพย์โหลดที่เข้ารหัส

Gilles 'SO- stop being evil' avatar
สำหรับ CCM แท็กที่สั้นกว่าไม่ใช่การตัดทอนแท็กแบบเต็มความยาว: ความยาวของแท็กเป็นอินพุตในการคำนวณแท็ก

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา