สรุปการแก้จุดบกพร่องของการ์ด Mifare Plus

Dec 07, 2020

ฝากข้อความ

ตามค่าเริ่มต้นการ์ดบวกที่ออกโดย nxp คือการ์ดที่ไม่ได้เริ่มต้นที่ระดับ L0 ในขณะนี้การดำเนินการที่ใช้งานอยู่แสดงให้เห็นว่าสนับสนุนคุณลักษณะการ์ด CPU ของ ISO1443-4 (ATQA: 02 00, SAK: 20 UID: CD 65 E5 03) เมื่อดำเนินการเขียน AES ที่เกี่ยวข้องหลังจากที่คีย์และบล็อกข้อมูลถูกเตรียมใช้งานและ เข้าสู่ระดับความปลอดภัย L1 การดำเนินการที่ใช้งานอยู่แสดงลักษณะของการ์ด M1S70 (ATQA: 02 00, SAK: 18 UID: CD 65 E5 03) แต่ในความเป็นจริงมันยังสามารถรองรับ ISO1443-4 ได้, หนูทำงานได้สำเร็จ (ต้องรองรับด้วย, มิฉะนั้นจะไม่สามารถดำเนินการ switchL2 และ switch3 ได้) หลังจากดำเนินการตรวจสอบสิทธิ์ switchL2 ที่ระดับ L1 และแปลงเป็นระดับ L2 ค่าที่ส่งคืนหลังจากการดำเนินการที่ใช้งานอยู่คือ (ATQA: 02 00 SAK: 11, UID: CD 65 E5 03) ในเวลานี้หากไม่มี SAK ที่ตรงกันดังกล่าวในไดรเวอร์ที่มีอยู่จะเป็นประเภทการ์ดที่ไม่รู้จัก หลังจากดำเนินการตรวจสอบความถูกต้องของสวิตช์ 3 ที่ระดับความปลอดภัย L2 การ์ดจะได้รับการอัพเกรดเป็นระดับความปลอดภัย L3 และค่าส่งคืนคือ (ATQA: 02 00, SAK: 20, UID: CD 65 E5 03)

รันการดำเนินการระดับ L1 และ L2 ในสถานะที่ใช้งานอยู่ (เลเยอร์ ISO14443-3) เมื่อการ์ดอยู่ที่ระดับ L1 อินเทอร์เฟซที่เกี่ยวข้อง M1 สามารถใช้งานได้อย่างสมบูรณ์หรือสามารถทำการรับรอง AES SL1 ก่อนจากนั้นจึงสามารถทำการรับรอง M1 ได้ หลังจากดำเนินการตรวจสอบสิทธิ์ AES SL1 แล้วไม่จำเป็นต้องสร้างฐานคีย์เซสชันและคำนวณด้วยคีย์ M1 เพื่อรับคีย์ M1 ใหม่เป็นคีย์การตรวจสอบสิทธิ์ M1 จริงเพียงใช้คีย์ M1 ดั้งเดิมโดยตรง (จุดนี้แตกต่างจาก L2 ระดับ).

ที่ระดับ L0 รหัสส่งคืนของ PICC หลังการดำเนินการคือ ACK / NAK ที่สอดคล้องกับการ์ด M1 ซึ่งเป็นรหัสส่งคืนที่แทะโดยไม่มี CRC ดังนั้นเมื่อเปิดการตรวจสอบ CRC ข้อผิดพลาด CRC จะเกิดขึ้น

ในกระบวนการรับรองความถูกต้อง AES SL1 ระดับ L1 เมื่อการดำเนินการถูกต้องจะส่งคืนรหัสและข้อมูลกลับด้วย CRC และเมื่อมีข้อผิดพลาด (ข้อผิดพลาดของคีย์ AES ข้อผิดพลาดในการถอดรหัส RNDB เป็นต้น) จะส่งคืน NAK สอดคล้องกับการ์ด M1 ซึ่งมีขนาดครึ่งไบต์และไม่มีข้อผิดพลาด CRC ดังนั้นเมื่อเปิดการตรวจสอบ CRC ข้อผิดพลาด CRC จะเกิดขึ้น

คำสั่ง switchL2 ถูกดำเนินการที่ระดับ ISO14443-4 หลังจากการดำเนินการสำเร็จ PICC จะเข้าสู่ระดับความปลอดภัย L2 ในขณะนี้คำสั่ง switchL2 ถูกดำเนินการในการส่ง Cmd ครั้งแรกของ Cmd + BNo + LenCap + PCDCap2 ซึ่งส่งคืนสถานะสองไบต์ 0x02, 0x09 0x09 สามารถเข้าใจได้ว่าเป็นหมายเลขบล็อกที่ไม่ถูกต้อง แต่ไม่สามารถเข้าใจ 0x02 ได้

ในระดับ L2 ตามที่ระบุไว้ในคู่มือการตรวจสอบความถูกต้อง AES จะต้องดำเนินการก่อนการพิสูจน์ตัวตน M1 และฐานคีย์เซสชันที่ต่ำกว่า 6 ไบต์ที่สร้างโดย AES จะถูก XORed พร้อมกับคีย์ M1 ของบล็อกจริงเพื่อให้เป็นการพิสูจน์ตัวตนแบบ M1 จริง สำคัญ . หลังจากการทดสอบประเภทคีย์ AES จะต้องสอดคล้องกับประเภทคีย์ M1 (นั่นคือทั้งคู่คือ A หรือ B) มิฉะนั้นการตรวจสอบสิทธิ์ M1 จะล้มเหลว! เมื่อคีย์ AES และ M1 ประเภทและค่าของภาค A สอดคล้องกับภาค B การเข้าถึงภาค B หลังจากการรับรองความถูกต้องของภาค A นั้นสอดคล้องกับการเข้าถึงภาค A และไม่จำเป็นต้องเข้าถึงการรับรองภาค B

ในระหว่างการดีบักของ mifPLAuthInPro ที่ระดับความปลอดภัย L2 เมื่อเรียกใช้ s_AESCbcEnDecrypt อินพุต iv จะถูกเขียนใหม่หลังจากการเข้ารหัสและการถอดรหัสเสร็จสิ้นส่งผลให้การเข้ารหัสและการถอดรหัส iv เปลี่ยนแปลงครั้งต่อไปและการเข้ารหัสและการถอดรหัสล้มเหลว! ต้องสนใจค่า iv!

ในระดับความปลอดภัย L2 การตรวจสอบสิทธิ์คีย์ AES + M1 ที่จำเป็นต้องทำให้ประเภทคีย์ AES สอดคล้องกับประเภทคีย์ M1 (เช่นคีย์ AES TypeA + คีย์ M1 TypeA หรือคีย์ AES TypeB {{6} } คีย์ M1 TypeB เช่น AES TypeA Key + การตรวจสอบคีย์ M1 TypeB จะล้มเหลวแม้ว่าคีย์จะถูกต้องก็ตาม!)

หลังจากเสร็จสิ้นการดีบักระดับ L2 แล้วคุณสามารถดำเนินการ FirstAuth ซ้ำ ๆ ได้และค่า TI ที่ FirstAuth ได้รับจะแตกต่างกันในแต่ละครั้ง หลังจากดำเนินการตรวจสอบสิทธิ์ FirstAuth ที่ถูกต้องและได้รับ TI แล้วจะสามารถดำเนินการ followAuth ที่ถูกต้องได้ (followAuth' s iv ขึ้นอยู่กับการตรวจสอบสิทธิ์ FirstAuth) หลังจากดำเนินการ FirstAuth ที่ถูกต้องหนึ่งครั้งแล้วสามารถทำ followAuth ซ้ำได้ เนื่องจาก FirstAuth และ followAuth ทำงานในโหมด ISO14443-4 PICC จะยังคงอยู่ในโหมด ISO14443-4 เมื่อเกิดข้อผิดพลาดและไม่จำเป็นต้องค้นหาการ์ดอีกครั้ง

คำสั่ง MultiWriteBlock และ MultiReadBlock ของระดับความปลอดภัย L2 รองรับเฉพาะการอ่านและเขียนข้อมูลหลายบล็อกในภาคเดียวกันเท่านั้น! คำสั่ง ReadBlock และ WriteBlock ของระดับความปลอดภัย L3 รองรับการอ่านและเขียนบล็อกข้อมูลอย่างต่อเนื่องข้ามภาค (เฉพาะในภาคนี้เท่านั้น !!!)

การดำเนินการตามระดับความปลอดภัย L3 เพื่อรับ ENC KEY และการเข้ารหัส MAC KEY ที่ใช้เวกเตอร์ iv เป็น 0 แทน TI + W_ctr + R_ctr!

ในการทำงานโหมด ISO14443-4 ตราบใดที่มีข้อผิดพลาดใด ๆ ต้องดำเนินการ FirstAuth!

ความเข้าใจเกี่ยวกับการดำเนินการที่เกี่ยวข้องกับมูลค่าการ์ด M1: สาระสำคัญของคำสั่ง Restore คือการคัดลอกค่าที่สอดคล้องกันของบล็อกข้อมูลขาเข้า (ต้องอยู่ในรูปแบบกระเป๋าสตางค์) ไปยัง Transfer Buffer 16 ไบต์ภายในการ์ด M1 และสาระสำคัญของ คำสั่ง Transfer คือค่า Transfer Buffer ภายในการ์ด M1 จะถูกคัดลอกไปยังบล็อกข้อมูลขาเข้า สาระสำคัญของคำสั่ง Increment คือการเพิ่มค่าของบล็อก input wallet ให้เป็นค่าที่เพิ่มและคัดลอกไปยัง Transfer Buffer ดังนั้นต้องเรียกคำสั่ง Transfer อีกครั้งเพื่อคัดลอกค่า Transfer Buffer ลงในบล็อกข้อมูลที่ระบุ


_0003s_0001_A981B9EF78ED2D226AB9184F3A7BDCDF

https://www.szrcloud.com/card-reader/rfid-card-reader/rfid-card-reader-in-games.html