ขนาดไฟล์สูงสุดที่อนุญาต (และโฟลเดอร์) ด้วย eCryptfs คือเท่าใด


44

ฉันเป็นผู้ใช้ eCryptfs ใหม่และฉันมีคำถามพื้นฐานที่ฉันไม่สามารถพบได้ทุกที่ ฉันสนใจที่จะใช้ eCryptfs ผ่าน Synology NAS ที่ใช้ Linux

ในขณะที่พยายามเข้ารหัสโฟลเดอร์ของฉัน (EXT4) ผ่านแอปเข้ารหัสของ Synology (eCryptfs) ฉันพบข้อผิดพลาดที่ระบุว่าความยาวชื่อไฟล์ของฉันต้องมีความยาวไม่เกิน 45 อักขระ (ดังนั้นไม่มีการเข้ารหัส)

หากขีด จำกัด คือ 45 อักขระจริงๆ eCryptfs อาจไม่ใช่เครื่องมือที่ใช้งานได้สำหรับส่วนใหญ่

ขนาดไฟล์สูงสุดที่อนุญาตคืออะไรเมื่อทำการเข้ารหัสไฟล์และโฟลเดอร์ด้วย eCryptfs? Linux 255 ตัวอักษรคืออะไร?


6
Imho วิธีที่ ecryptfs เข้ารหัสชื่อไฟล์นั้นไร้สาระธรรมดา อันดับแรกให้มากกว่า 20 ไบต์โดยเตรียมสตริงคงที่ "ECRYPTFS_FNEK_ENCRYPTED" แต่ละชื่อไฟล์ จากนั้นจะเพิ่มวิธีสุ่มไบต์มากเกินไปในการสร้างชื่อที่เหมือนกันให้ดูต่างออกไป EncFS ทำอย่างนั้นอย่างมีประสิทธิภาพมากขึ้น

คำตอบ:


70

การเปิดเผยแบบเต็ม: ฉันเป็นหนึ่งในผู้แต่งและผู้ดูแลปัจจุบันของยูทิลิตี้พื้นที่ผู้ใช้ eCryptfs

เป็นคำถามที่ดีมาก!

Linux มีความยาวชื่อไฟล์สูงสุด 255 ตัวอักษรสำหรับระบบไฟล์ส่วนใหญ่ (รวมถึง EXT4) และเส้นทางสูงสุด 4096 ตัวอักษร

eCryptfsเป็นระบบไฟล์แบบเลเยอร์ มันวางอยู่ด้านบนของระบบไฟล์อื่นเช่น EXT4 ซึ่งใช้ในการเขียนข้อมูลไปยังดิสก์ eCryptfs เข้ารหัสเนื้อหาไฟล์เสมอ แต่สามารถเลือกที่จะเข้ารหัส (ปิดบัง) ชื่อไฟล์ (หรือไม่ก็ได้)

หากชื่อไฟล์ไม่ได้เข้ารหัสคุณสามารถเขียนชื่อไฟล์ได้อย่างปลอดภัยสูงสุด 255 อักขระและเข้ารหัสเนื้อหาของพวกเขาเนื่องจากชื่อไฟล์ที่เขียนไปยังระบบไฟล์ด้านล่างจะตรงกัน ในขณะที่ผู้โจมตีจะไม่สามารถอ่านเนื้อหาของindex.htmlหรือbudget.xlsพวกเขาจะรู้ว่าชื่อไฟล์ที่มีอยู่ ข้อมูลที่สำคัญอาจรั่วไหล (หรืออาจไม่) ขึ้นอยู่กับกรณีการใช้งานของคุณ

หากชื่อไฟล์ถูกเข้ารหัสสิ่งต่าง ๆ จะซับซ้อนขึ้นเล็กน้อย eCryptfs เตรียมบิตของข้อมูลไว้ที่ด้านหน้าของชื่อไฟล์ที่เข้ารหัสเช่นนั้นสามารถระบุชื่อไฟล์ที่เข้ารหัสได้อย่างแน่นอน นอกจากนี้การเข้ารหัสเองยังเกี่ยวข้องกับ "padding" ชื่อไฟล์

~/.bashrcยกตัวอย่างเช่นผมมีไฟล์ที่เข้ารหัส ชื่อไฟล์นี้ถูกเข้ารหัสโดยใช้กุญแจของฉันเพื่อ:

/home/kirkland/.Private/ECRYPTFS_FNEK_ENCRYPTED.dWek2i3.WxXtwxzQdkM23hiYK757lNI7Ydf0xqZ1LpDovrdnruDb1-5l67.EU--

เห็นได้ชัดว่าตอนนี้ชื่อไฟล์ตัวละคร 7 ตัวนั้นต้องการเข้ารหัสมากกว่า 7 ตัว สังเกตุเราพบว่าชื่อไฟล์ตัวละครที่มีความยาวมากกว่า 143 ตัวอักษรเริ่มต้นที่ต้องการเข้ารหัส> 255 ตัวอักษร ดังนั้นเราจึงแนะนำให้คุณ จำกัด ชื่อไฟล์ของคุณไม่เกิน 140 ตัวอักษร

ตอนนี้ทุกอย่างที่กล่าวว่าSynology NAS เป็นผลิตภัณฑ์เชิงพาณิชย์ที่ฝังและใช้ eCryptfs และ Linux เพื่อเข้ารหัสและรักษาความปลอดภัยข้อมูลบนอุปกรณ์ เรา (นักพัฒนาต้นน้ำของ eCryptfs) ไม่มีอะไรจะทำอย่างไรกับ Synology หรือผลิตภัณฑ์ของพวกเขาแม้ว่าโดยทั่วไปเรามีความสุขที่จะเห็น eCryptfs ใช้ในป่า ฉันคิดว่าคำแนะนำของพวกเขาที่มีความยาว 45 ตัวอักษรเป็นข้อผิดพลาดในการพิมพ์ (จากคำแนะนำ 140 ตัวอักษรของเรา) หรือเพียงแค่การประเมินที่อนุรักษ์นิยมมากกว่า


ฉันชอบที่จะเห็นจริง ๆ ระบบไฟล์แบบซ้อนของ FUSE ที่แก้ไขด้วยชื่อไฟล์ "ยาวเกินไป" ของตัวเองและเหลือแค่พร็อกซี 1: 1 พร้อมระบบไฟล์ที่ซ้อนทับ FUSE fs ดังกล่าวจะเป็นประโยชน์สำหรับระบบไฟล์ที่แตกต่างกัน (ecryptfs, EncFS) ในขณะที่ชื่อไฟล์ที่รองรับในปัจจุบันจะไม่เปลี่ยนแปลงอะไรเลย และอีกครั้งจะเป็นตัวเลือก - ความปรารถนาของฉัน: unix.stackexchange.com/q/283149/9689
Grzegorz Wierzowiecki

17
คำตอบนี้ไม่ถูกต้องทั้งหมด ขนาดสูงสุดของชื่อไฟล์คือ 255 ไบต์หรือประเภทถ่าน C / C ++ แต่อักขระสูงสุดในชื่อไฟล์จะแตกต่างกันไป เมื่อใช้ UTF-8 ซึ่งเป็นค่าเริ่มต้นสำหรับระบบส่วนใหญ่ชื่อไฟล์สามารถอยู่ระหว่าง 63-255 อักขระ (aka รหัสจุด) ถ้าใช้ UTF-16, 63-127 สิ่งสำคัญที่ควรทราบคืออักขระ 1 ตัวสามารถมีอย่างน้อยหนึ่งไบต์ในพื้นที่เก็บข้อมูลและขึ้นอยู่กับชุดรหัสที่ผู้ใช้ระบบใช้
Rahly

คำแนะนำสำหรับนักพัฒนา: แยกชื่อที่เข้ารหัสไว้ในไดเรกทอรีย่อยที่ซ่อนจากผู้ใช้ปลายทางเพื่อให้ได้ความยาวที่จำเป็นแม้อาจเกินขีดจำกัดความยาวชื่อ linux max หากระบบไฟล์ภายนอกต้องการ ไฟล์หรือไดเรกทอรีเดียวกลายเป็น "ENCRYPTFS-01-OF-04 [..... ] / ENCRYPTFS-02-of-04 [..... ] / ENCRYPTFS-03-OF-04 [..... ] / ENCRYPTFS-04-OF-04 [..... ] "- Linux btrfs, ext1-4 และอื่น ๆ ไม่มีความลึกไดเรกทอรีสูงสุดที่กำหนดไว้เพื่อให้ระบบไฟล์สามารถจัดการกับการขยายไฟล์และชื่อ dir ในไดเรกทอรีย่อยที่ยังไม่ได้เปิดเช่นนี้ .
Dale Mahalko

1
ข้อเสนอแนะของฉันจะต้องเก็บข้อมูลเมตาใด ๆ ที่คุณเก็บไว้ใน xattrs แทนที่จะเป็นชื่อไฟล์ : |
Trejkaz

1
คุณบอกว่า eCryptfs "สามารถเข้ารหัส (ปิดบัง) ชื่อไฟล์ (หรือไม่ก็ได้)" ฉันจะปิดใช้งานการเข้ารหัสชื่อไฟล์ได้อย่างไรเพื่อให้ได้ชื่อไฟล์ 255- ถ่านเต็มกลับมาได้แทนที่จะ จำกัด อยู่ที่ 143 ตัวอักษร? ฉันเชื่อว่าวิธีที่ฉันติดตั้ง eCryptfs โดยวิธีนั้นคือการทำเครื่องหมายในช่องหรืออะไรก็ตามสำหรับ "Encrypted home directory" ในระหว่างกระบวนการติดตั้ง Ubuntu ของฉัน
Gabriel Staples

11

หัวข้อนี้น่าสนใจมากเพราะฉันสงสัยในสิ่งเดียวกัน ฉันสามารถใช้ชีวิตกับการเปลี่ยนชื่อไฟล์ 20 ไฟล์จาก 50,000 ไฟล์ถ้าชื่อไฟล์ต้องมี 140 ตัวอักษรหรือน้อยกว่า แต่ 45 หรือน้อยกว่านั้นเป็นไปไม่ได้ (ในสถานการณ์ของฉัน) เพราะจะทำให้ฉันต้องเปลี่ยนชื่อไฟล์มากเกินไป

ฉันถามคำถามเดียวกันกับ Synology โดยตรง (แม้แต่ชี้ไปที่บทความปัจจุบัน) และคำตอบของพวกเขาก็น่าสนใจ: "ขีด จำกัด ของชื่อไฟล์ที่เข้ารหัสของการเข้ารหัสคือ 143 ไบต์มันสามารถเป็นอักษรละตินบริสุทธิ์สูงสุด 140 ตัวหรือ 45 CJK (ภาษาจีน) ตัวอักษรญี่ปุ่นและเกาหลี) "

ทำตามคำตอบนี้ฉันทำการทดสอบตัวเองมากขึ้นทดสอบกับไฟล์ที่มีความยาว 45, 46, 140, 143 และ 144 ตัว การทดสอบของฉันแสดงว่าไฟล์ที่มีความยาวสูงสุด 143 อักขระ (ไม่ใช่ไบต์ซึ่งตรงกันข้ามกับที่ซินโนโลยีบอกฉัน) จะถูกเข้ารหัส แต่ไฟล์ที่มี 144 อักขระจะป้องกันโฟลเดอร์ที่จะเข้ารหัส อย่างไรก็ตามข้อความข้อผิดพลาดที่ฉันได้รับจาก NAS ของฉันคือชื่อไฟล์ต้องน้อยกว่า 45 ตัวอักษร (ในขณะที่ความจริงคือมันควรจะน้อยกว่า 144 ตัวอักษร)

ฉันไม่ได้ทำการทดสอบกับตัวละคร CJK ... แต่สำหรับทุกคนที่อ่านข้อความนี้ดูเหมือนว่าคุณจะใช้ได้จนถึง 143 ตัวอักษรแม้ว่าระบบจะบอกคุณก็ตาม


7

ฉันต้องการชี้แจงว่า linux นั้นมีขีด จำกัด 255 ไบต์ต่อชื่อไฟล์ไม่ใช่ 255 ตัวอักษร นี่คือความแตกต่างที่สำคัญและถ้าคุณใช้เช่นการเข้ารหัส UTF-8 คุณอาจท้ายด้วยชื่อไฟล์สูงสุด 100 ตัวอักษร


1
63 เป็นค่าสูงสุดหากอักขระทุกตัวใช้การเข้ารหัสสูงสุด 4 ไบต์ต่อจุดรหัส นี่เป็นสิ่งเดียวกันสำหรับ schemas UTF ใด ๆ (UTF-16 และ UTF-32)
Rahly

@Rahly ในที่สุดอาจมีการเปลี่ยนแปลงแม้ว่า ก่อนจุดรหัส Unicode ที่ถูกต้องสูงสุดลดลงเพื่อU+10FFFFให้ตรงกับข้อ จำกัด ของ UCS-2 (โดยทั่วไปคือ UTF-16 โดยไม่มีคู่ตัวแทน) UTF-8 อาจต้องการ 6 ไบต์ขึ้นไปเพื่อแทนจุดรหัส 32 บิตเนื่องจากวิธีการเข้ารหัส "จุดเริ่มต้นของตัวละคร" และ "ความต่อเนื่องของตัวละคร" เพื่อให้แน่ใจว่าการแยกวิเคราะห์ตัวแยกข้อมูลสามารถนำกลับมาใช้ได้ไม่ว่าคุณจะเริ่มทำการแยกวิเคราะห์ภายในกระแสข้อมูลไบต์ เป็นไปได้เสมอที่ในที่สุดพวกเขาจะตัดสินใจย้อนกลับการตัดสินใจนั้นเพราะพวกเขาไม่มีจุดรหัสที่ไม่ได้รับมอบหมาย
ssokolow

1
แต่ไม่น่าเป็นไปได้สูงเว้นแต่พวกเขาจะเริ่มเพิ่มตัวละครอย่างบ้าคลั่ง ตั้งแต่ U8.0 มีเพียง 120k เท่านั้นที่ได้รับมอบหมาย พวกเขาเพิ่ม ~ 8k ตัวอักษรในการทำซ้ำนี้ หากพวกเขารักษามันไว้มันจะต้องขยายตัวในเวอร์ชัน ~ 106
Rahly

และฉันคิดว่าพวกเขาจะต้องฆ่าจาวาสคริปต์เป็น Windows เสียก่อนเช่นกันเนื่องจากทั้งคู่พึ่งพา UTF-16 ( อาจเป็นไปได้ที่จะแก้ไขสิ่งนี้ในกรณีของ JavaScript?)
SamB

1

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

dd if=/dev/zero of=/home/me/.some.img bs=1024 count=1024
mkfs.ext3 /home/me/.some.img
chmod 777 /home/me/longfilenames
sudo mount /home/me/.some.img /home/me/longfilenames

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

เพื่อนร่วมงานของฉันใส่ภาพของพวกเขาใน / tmp - ข้อมูลการทดสอบไม่ได้เป็นความลับโดยเฉพาะ: เราต้องการรักษาความปลอดภัยซอร์สโค้ดของเราไม่ใช่ผลการทดสอบของเรา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.