วิธีการเข้ารหัสไฟล์หรือไดเรกทอรีใน Linux?


26

คำสั่งที่นิยมที่สุดในการทำสิ่งต่าง ๆ เช่นการเข้ารหัสไฟล์หรือไดเรกทอรีใน terminal ใน Linux คืออะไร?

คำตอบ:


31

ฉันคิดว่ามันจะเป็น gpg ไวยากรณ์ของไฟล์และไดเรกทอรีต่างกัน

การเข้ารหัสลับ

สำหรับไฟล์ (outputs filename.gpg):

gpg -c filename

สำหรับ dirs:

gpg-zip -c -o file.gpg dirname

ถอดรหัส

สำหรับไฟล์ (outputs filename.gpg):

gpg filename.gpg

สำหรับ dirs:

gpg-zip -d file.gpg

แก้ไข: แก้ไขตามที่ @ Mk12 ชี้ให้เห็นข้อผิดพลาดของการบีบอัด / คลายการบีบอัดสำหรับการเข้ารหัส / ถอดรหัส


ไม่ควรเป็น "เข้ารหัส" และ "ถอดรหัส"
mk12

ไม่มีใครพูดถึงวิธีเข้ารหัสไดเรกทอรี
chovy

1
@chovy ไม่ได้อยู่เหนือคำกล่าว: สำหรับ dirs: gpg-zip -c -o file.gpg dirname
celebdor

@celebdor พลาดอย่างใดอย่างหนึ่ง ขอบคุณ แก้ไข: ที่ไม่ทำงานสำหรับฉัน ฉันได้รับผลลัพธ์ที่เข้ารหัสแปลก ๆ เมื่อฉันถอดรหัสไฟล์
chovy

@chovy: เสียใจที่ได้ยินเช่นนั้น ฉันสามารถยืนยันได้ว่าการเข้ารหัสและการถอดรหัสไดเรกทอรีตามที่แสดงด้านบนใช้ได้กับฉันโดยใช้ gpg-zip (GnuPG) 1.4.16 ภายใต้ Mint 17
Michael Scheper

10
  • ด้วย openssl

openssl des3 -salt -in unencrypted-data.tar -out encrypted-data.tar.des3

ถอดรหัส:

openssl des3 -d -salt -in encrypted-data.tar.des3 -out unencrypted-data.tar

  • เข้ารหัสด้วย AES

aescrypt -e -p password file.jpg

ถอดรหัส:

aescrypt -d -p password file.jpg.aes


1
+1 สำหรับการแสดงวิธีการทำด้วย openssl ซึ่งเป็นไปได้มากที่สุด
DevSolar

แน่นอนว่า 3DES นั้นไม่ปลอดภัยและไม่ควรใช้ AES (aescrypt) เป็นตัวเลือกที่ดีกว่าดูได้ที่: stackoverflow.com/questions/1619212/ …
jmng


2

นี่คือวิธีการของฉันโดยใช้ openssl และ tar

เปิดไดเรกทอรีที่เข้ารหัส:

openssl enc -aes-256-cbc -d -in ~/vault.tar.gz.dat | tar xz; thunar ~/vault

ล็อคไดเรกทอรีที่เข้ารหัส:

tar cz vault/ | openssl enc -aes-256-cbc -out ~/vault.tar.gz.dat; rm -r ~/vault

1
rm -rไม่ลบข้อมูล มันเพียงยกเลิกการเชื่อมโยง คุณจะต้องใช้สิ่งที่ต้องการsrmลบข้อมูลออกจากดิสก์
jbindel

2

ฉันเองใช้aescryptเป็นส่วนใหญ่

      aescrypt -e "File" 

และถอดรหัส:

      aescrypt -d "File"

หรือมี mcrypt:

      mcrypt "File" 

และถอดรหัส:

      mcrypt -d "File"

และสำหรับไดเรกทอรีฉันแนะนำ tar'ing dir และเข้ารหัสนั้น จากนั้นหลังจาก unencrypting เพียงปลดไฟล์:

      tar -cf "Dir.tar" Dir/

และเพื่อ untar

      tar -xf "Dir.tar"

1

หากการรักษาความปลอดภัยระดับสูงสุดไม่ใช่ปัญหาใหญ่ (หน้า man ของ zip บอกว่าอัลกอริทึมการเข้ารหัสที่ใช้โดย zipfile โปรแกรมอรรถประโยชน์นั้นอ่อนแอกว่า PGP) ดังนั้นฉันจึงชอบ zip และ unzip มันบีบอัดไดเรกทอรีของฉันและเข้ารหัสในเวลาเดียวกัน ฉันชอบรหัสไปรษณีย์เพราะคุณสามารถเพิ่มรหัสไปรษณีย์และเข้ารหัสแทนการซิปและเข้ารหัสข้อมูลทั้งหมดอีกครั้ง โดยเฉพาะอย่างยิ่งมันจะมีประโยชน์เมื่อขนาดไดเรกทอรีมีขนาดใหญ่มาก

ZIP และการเข้ารหัส

zip file.zip file
zip -r directory.zip directory
zip --encrypt file.zip.enc file # prompt for password
zip --encrypt -r directory.zip.enc directory # prompt for password

เปิดเครื่องรูดและถอดรหัส

unzip directory.zip.enc #Beware if any directory is present with the same name as the zipped file, then it would be overwritten. Hence I normally send the contents to another directory.

unzip directory.zip.enc -d directory-new # prompts for password

0

อาจไม่ได้รับความนิยม แต่ฉันได้ทำงานในโครงการเพื่อเข้ารหัส / ถอดรหัสอะไรก็ตามที่มีการโต้ตอบกับผู้ใช้น้อยที่สุดผ่านการใช้สคริปต์ Bash สองสามตัว นี่คือลิงค์ไปยังโพสต์Hak5ที่อธิบายการตั้งค่าสำหรับการทดสอบ

การตัดผ่าน logics ของซอร์สโค้ดแม้ว่านี่คือสิ่งที่เกิดขึ้นกับข้อมูลแต่ละประเภทที่สามารถจัดการได้โดยโครงการที่ลิงก์ด้านบน

_gnupg_encrypt_opts="--always-trust --armor --batch --encrypt --recipient user@host.domain"
 _bulk_output_dir="some_path"
_arbitrary_parsed_output="some_file.gpg"
## If file make encrypted time stamped file with similar name
_path_to_file="${_mapped_input}"
_path_to_output="${_bulk_output_dir}/$(date -u +%s)_${_path_to_file##*/}.gpg"
cat "${_path_to_file}" | gpg ${gpg _gnupg_encrypt_opts} > "${_path_to_output}"
## else if directory make compressed encrypted time stamped output file
_path_to_dir="${_mapped_input}"
_path_to_output="${_bulk_output_dir}/$(date -u +%s)_dir.tgz.gpg
tar -cz - "${_path_to_dir}" | gpg ${gpg _gnupg_encrypt_opts} > "${_path_to_output}"
## else if something else append encrypted output to file
_path_to_output="${_arbitrary_parsed_output}"
cat <<<"${_mapped_input}" | gpg ${gpg _gnupg_encrypt_opts} >> "${_path_to_output}"

${_mapped_input}ตัวแปรถูกกำหนดโดยการอ่านmkfifoไฟล์ไปป์ที่มีชื่อและการตั้งค่าอะไรอ่านให้กับอาร์เรย์mapfile -t _lines < "${_file_to_map}"ซึ่งมีการขยายในภายหลังและบันทึกไว้ใน${_mapped_input}... บิตซับซ้อน แต่มันช่วยให้สำหรับคุณสมบัติการทดลองที่จะกระทำในแต่ละบรรทัด ผลลัพธ์สุดท้ายคือคุณจบลงด้วยไดเรกทอรีสำหรับเก็บไฟล์ที่เข้ารหัสหรือไดเรกทอรีที่บีบอัดและไฟล์ที่มีชุดข้อมูลเข้ารหัสที่หลากหลาย

การถอดรหัสสำหรับไฟล์หรือไดเรกทอรีบีบอัดนั้นง่ายพอบนอุปกรณ์ที่มีไพรเวตคีย์ที่เกี่ยวข้องกับพับลิกคีย์ที่ใช้สำหรับการเข้ารหัส แต่การถอดรหัสของชุดข้อมูลที่เข้ารหัสด้วยเกราะหลายชุดนั้นค่อนข้างยากดังนั้นจึงมีสคริปต์ชื่อParanoid_Pipes_Scenario_One.shในโปรเจ็กต์ด้านบนที่เขียนขึ้นเพื่อทำทั้งหมดด้วยการโต้ตอบกับผู้ใช้น้อยที่สุด ด้านล่างนี้เป็นซอร์สโค้ดสคริปต์ตัวช่วยแบบง่ายสำหรับไฟล์และไดเรกทอรีที่เข้ารหัสปกติ

_gnupg_decrypt_opts="--quiet --no-tty --always-trust --passphrase-fd 9 --decrypt"
_decryption_output_dir="some_directory"
# if file
exec 9<"${_pass[@]}"
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.gpg*}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} > "${_decryption_output_dir}/${_output_name}"
# else if compressed file
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.tgz.gpg*}"
mkdir -p "${_decryption_output_dir}/${_output_name}"
_old_pwd="${PWD}"
cd "${_decryption_output_dir}/${_output_name}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} | tar -xzf -
cd "${_old_pwd}"
# else if non-compressed directory
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.tar.gpg*}"
mkdir -p "${_decryption_output_dir}/${_output_name}"
_old_pwd="${PWD}"
cd "${_decryption_output_dir}/${_output_name}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} | tar -xf -
cd "${_old_pwd}"

หากคุณต้องการดูว่าคุณลักษณะอื่นใดที่ใช้งานและทดสอบด้วยวิธีการตรวจสอบที่เปิดเผยต่อสาธารณชนให้ตรวจสอบบันทึกการสร้างTravis-CI (โดยเฉพาะอย่างยิ่งใกล้ถึงจุดสิ้นสุดของบันทึก) คุณจะพบว่ามีสิ่งแปลกใหม่อื่น ๆ เพื่อเข้ารหัสและถอดรหัสข้อมูลเกือบทุกชนิด


0

ใช้FinalCrypt - OpenSource Pad / การเข้ารหัสไดเรกทอรี (GUI & CLI)

มันสร้างคีย์ One-Time Pad ด้วยตัวเอง

java -cp FinalCrypt.jar rdj/CLUI --encrypt --password-prompt -k My-Key-Directory/ -t My-Test-Directory/

รหัสผ่าน:

เริ่มเข้ารหัส 4 ไฟล์ทั้งหมด 249,7 MiB

🔒 "/home/ron/My-Test-Directory/Video/Eerebegraafplaats.mp4.bit" 🗝✔🖆✔🔒✔℄✔🗑✔ SHA-256: "C1E3F3A3545FEA026F3FB344F3D0798B54820B7F9AD9AAC4BE9FD1E955F947DA" -> "D53FCEADDF542AC3655B547778911F786C2C2BDD327E0618A9E7F77B57792DEA" 58,4% 🔒 "/ home / ron / My-Test-Directory / วิดีโอ / Castle-waxjo-sweden.mp4.bit "🗝✔🖆✔🖆🔒℄ECEC39ECECECECECECECECECECECECECECECECECECECEC SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH🗑 SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH SH \ \ \ \ \ \ \ SHA-256:" /home/ron/My-Test-Directory/Brother_HL-2170W-usaeng_quick-setup.pdf.bit" 🗝✔🖆✔🔒✔℄✔🗑✔ SHA-256: "0858D2D5A8CF118D40B517CD4A1F8D31D9F5A21221F75BD764B5E363FC1431FE" -> "266CE42027F891DECF109D7A9DD69E8B42C0E43D35E952BEB89F7C7EA2DBE92C" 95,7% 🔒 "/ home / รอน / My-Test-ไดเรกทอรี / บราเดอร์ dsmobile 700d_uke_usr.pdf.bit" 🗝✔🖆✔🔒✔℄✔🗑✔ SHA-256: "8D718D2F29EF05BEB347D6920B3BFF5269685421B428E8D3ADFF569F67A716E0" -> "88A98D893B6D1E540039D3E9BC0B0C19B46A10A209967F3235D5DEEBF073EC1E" 100,0%

เสร็จสิ้นการเข้ารหัสไฟล์ [4/4] ทั้งหมด [249,7 MiB / 249,7 MiB] ใน 7,3 วินาที (เฉลี่ย: 34,2 MiB / s)

java -cp FinalCrypt.jar rdj/CLUI --decrypt --password-prompt -k My-Key-Directory/ -t My-Test-Directory/

รหัสผ่าน:

เริ่มถอดรหัส 4 ไฟล์ทั้งหมด 124,9 MiB

🔓 "/home/ron/My-Test-Directory/Video/castle-waxjo-sweden.mp4" 🖃✔🔓✔℄✔🗑✔ SHA-256: "323618B7ED12A1F92D8FFB306CEEC6DFFED6862B7BF3922902E8AED29DF57ECE" -> "8AEFC9744143451F32B82BBAC6A4291BC76C747A6DA1EA024702AA51A966F810" 32,8% 🔓 "/ บ้าน / รอน / My-Test-ไดเรกทอรี / วิดีโอ / Eerebegraafplaats.mp4" 🖃✔🔓✔℄✔🗑✔ SHA-256: "D53FCEADDF542AC3655B547778911F786C2C2BDD327E0618A9E7F77B57792DEA" -> "C1E3F3A3545FEA026F3FB344F3D0798B54820B7F9AD9AAC4BE9FD1E955F947DA" 91,2% 🔓 "/ home / รอน / My-Test ไดเรกทอรี / บราเดอร์ dsmobile 700d_uke_usr.pdf "🖃✔🔓✔🗑✔ SH ✔ SHA-256" 827F5FB5D8D5E5F4D8D5E5D5DF/home/ron/My-Test-Directory/Brother_HL-2170W-usaeng_quick-setup.pdf" 🖃✔🔓✔℄✔🗑✔ SHA-256: "266CE42027F891DECF109D7A9DD69E8B42C0E43D35E952BEB89F7C7EA2DBE92C" -> "0858D2D5A8CF118D40B517CD4A1F8D31D9F5A21221F75BD764B5E363FC1431FE" 100,0%

เสร็จสิ้นการถอดรหัสไฟล์ [4/4] ทั้งหมด [124,9 MiB / 124,9 MiB] ใน 3,4 วินาที (เฉลี่ย: 36,3 MiB / s)

นอกจากนี้ยังมี GUI

แค่พยายามช่วยชุมชน ...



FinalCrypt 5 เพิ่มคีย์อัตโนมัติและสร้างคีย์ OTP โดยอัตโนมัติดังนั้นการสนทนาที่สกอตต์อ้างถึงไม่มีความเกี่ยวข้องอีกต่อไป
Ron de Jong

ฉันอยากจะดูคำอธิบายว่ามันทำงานได้ดีกว่าทางเทคนิคและโบกมือน้อยลงอย่างไร ปัญหาคือแผ่นกระดาษขาเดียว (1) นั้นยอดเยี่ยมสำหรับการส่งข้อมูลและหมัดสำหรับการ  จัดเก็บและ (2) ควรเป็นแบบสุ่ม  หาก OTP ของ FinalCrypt เป็นแบบสุ่มจริง ๆ ต้องทำการจัดเก็บซึ่งจะส่งผลต่อความปลอดภัย หากพวกเขาสามารถสร้างใหม่พวกเขาจะไม่สุ่ม แต่เพียงหลอกหลอกและดังนั้นพวกเขาจะไม่เหมาะสม OTP … (ต่อ)
สกอต

(ต่อ) …หน้าของพวกเขาใน  การจัดการคีย์อัตโนมัติระบุว่า OTP นั้นถูกเก็บไว้“ บนไดรฟ์ภายนอก (USB) ที่ถอดออกได้ ” ตกลงนั่นใช้ได้ แต่ถ้าคุณต้องแนบไดรฟ์ USB ทุกครั้งที่คุณต้องการถอดรหัสไฟล์ของคุณ (และเนื่องจาก OTP ต้องมีขนาดใหญ่เท่ากับไฟล์ที่เข้ารหัส) อย่างน้อยคุณก็แค่เก็บไฟล์ไว้ในไดรฟ์แบบถอดได้และ ไม่รำคาญกับการเข้ารหัส … (ต่อ)
สกอต

(ต่อ) …ด้วย หน้า FinalCrypt หลักกล่าวว่า“ ซอฟต์แวร์ crypto ส่วนใหญ่ใช้ AES ที่ใช้งานไม่ได้…” แต่อ้างว่า AES นั้น“ แตกหัก” ดูเหมือนจะเกินความเป็นจริงอย่างมาก ที่เกี่ยวข้อง: เหตุใด AES จึงถือว่าปลอดภัย (ใน  Cryptography Stack Exchange )
สกอตต์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.