리눅스에서 파일이나 디렉토리를 암호화하는 방법?


26

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 : 유감입니다. Mint 17에서 gpg-zip (GnuPG)
1.4.16을

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
즉시 사용 가능한 openssl로이를 수행하는 방법을 보여주는 +1
DevSolar

실제로 3DES는 안전하지 않은 것으로 간주되어 사용해서는 안되며 AES (aescrypt)가 훨씬 더 나은 옵션입니다. stackoverflow.com/questions/1619212/…
jmng

2

GnuPG를 사용해보십시오 .

암호화하려면 gpg -c filename

해독하려면 gpg filename.gpg


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하고 암호화하는 것이 좋습니다. 그런 다음 암호화를 해제 한 후 파일을 untar하십시오.

      tar -cf "Dir.tar" Dir/

그리고 untar

      tar -xf "Dir.tar"

1

최고 수준의 보안이 큰 문제가 아닌 경우 (zip의 맨 페이지에서 zipfile 유틸리티가 사용하는 암호화 알고리즘이 PGP보다 약하다고 말하면) zip 및 unzip을 선호합니다. 내 디렉토리를 압축하고 동시에 암호화합니다. 압축을 선호하고 전체를 다시 압축하고 암호화하는 대신 증분 압축 및 암호화를 사용할 수 있기 때문에 zip을 선호합니다. 특히 디렉토리 크기가 매우 큰 경우에 유용합니다.

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 게시물에 대한 링크 입니다.

소스 코드 로직을 통한 절단 위의 링크 된 프로젝트에서 처리 할 수있는 각 유형의 데이터에 대해 어떻게됩니까?

_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 파일 / 디렉토리 암호화 (GUI 및 CLI)

자체적으로 일회용 패드 키를 생성합니다

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 / Video / castle-waxjo-sweden.mp4.bit "🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256 :"8AEFC9744143451F32B82BBAC6A4291BC76C747A6DA1EA024702AA51A966F810 "->"323618B7EDFBEDFBEDEDF2E2F2EF2EF2E2E /home/ron/My-Test-Directory/Brother_HL-2170W-usaeng_quick-setup.pdf.bit "🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256 :"0858D2D5A8CF118D40B517CD4A1F8D31D9F5A21221F75BD764B5E363FC1431FE "->"266CE42027F891DECF109D7A9DD69E8B42C0E43D35E952BEB89F7C7EA2DBE92C "95.7 % 🔒 "/ 가정 / 론 / 내 테스트 - 디렉토리 / 형제 dsmobile 700d_uke_usr.pdf.bit "🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256 :"8D718D2F29EF05BEB347D6920B3BFF5269685421B428E8D3ADFF569F67A716E0 "->"88A98D893B6D1E540039D3E9BC0B0C19B46A10A209967F3235D5DEEBF073EC1E "100,0 %

7,3 초 만에 [4/4] 파일 암호화 완료 [249,7 MiB / 249,7 MiB] (평균 : 34,2 MiB / s)

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

암호:

총 124,9MiB의 4 개 파일 해독 시작

🔓 "/home/ron/My-Test-Directory/Video/castle-waxjo-sweden.mp4"🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256 : "323618B7ED12A1F92D8FFB306CEEC6DFFED6862B7BF3922902E8AED29DF57ECE"-> "8AEBB6693A 홈 /ron/My-Test-Directory/Video/Eerebegraafplaats.mp4 "🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256 :"D53FCEADDF542AC3655B547778911F786C2C2BDD327E0618A9E7F77B57792DEA "->"C1E3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3A3F3F3F3A3F3F3F3F3F93 -Directory / Brother dsmobile 700d_uke_usr.pdf "🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256 :"88A98D893B6D1E540039D3E9BC0B0C19B46A10A209967F3235D5DEEBF073EC1E "->"8D718D69F69E3F3F5F3F5F3F3F3F3F3F3F3F3F3F3F3F3F3F69F69F69F69F69F69369/home/ron/My-Test-Directory/Brother_HL-2170W-usaeng_quick-setup.pdf "🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256 :"266CE42027F891DECF109D7A9DD69E8B42C0E43D35E952BEB89F7C7EA2DBE92C "->"0858D2D5A8CF118D40B517CD4A1F8D31D9F5A21221F75BD764B5E363FC1431FE "100,0 %

3,4 초 안에 [4/4] 파일의 완전히 [124,9 MiB / 124,9 MiB]의 암호 해독을 완료했습니다 (평균 : 36,3 MiB / s)

또한 GUI가 있습니다

커뮤니티를 돕기 위해 노력하는 중 ...


FINALCRYPT에 대한 의견을 참조하십시오 .
스콧

FinalCrypt 5는 자동차 키 추가 스콧이 언급되어 논의가 더 이상 관련이 있도록 자동으로 OTP 키를 생성하지
론 드 김정일

더 기술적이고 손을 덜 쓰게 만드는 작동 방식에 대한 설명을보고 싶습니다. 문제는 일회용 패드 (1)가 데이터 전송 에 적합하고 저장 용량이 크며  (2) 임의적 이어야한다는 것 입니다.  FinalCrypt의 OTP가 실제로 임의 인 경우 저장 해야하므로 보안이 손상됩니다. 그것들이 재생성 될 수 있다면, 그것들은 무작위가 아니라 의사 난수 일 뿐이므로 적절한 OTP가 아닙니다. … (계속)
Scott

(계속)… Auto Key Management (자동 키 관리) 페이지에서  OTP가 분리 가능한 외장 (USB) 드라이브에 저장되어 있음을 나타냅니다. “좋습니다. 그러나, 당신이 당신의 USB 당신이, 당신은뿐만 아니라 단지 수있는 파일의 암호를 해독 (그리고 OTP가가 암호화 파일과 큰대로 적어도 있어야한다는 제공) 할 때마다 드라이브를 연결해야하는 경우 이동식 드라이브에 파일을 저장을 하고 암호화를 방해하지 않습니다. … (계속)
Scott

(계속)… 또한 FinalCrypt 메인 페이지 에는“대부분의 암호화 소프트웨어가 손상된 AES를 사용합니다…”라고 표시되어 있지만 AES가“파손”되었다고 주장하는 것은 크게 과장된 것 같습니다. 관련 : AES가 안전한 것으로 간주되는 이유는 무엇입니까? (  암호화 스택 교환에서 ).
스콧
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.