pass:"${var}"
OpenSSL을 사용하면 bash에서 환경 변수를 비밀번호 로 사용하는 두 가지 방법이 있습니다 env:var
.
ps
매뉴얼 페이지에서는 로 전달될 때 비밀번호를 읽을 수 있는 것처럼 보이고 pass:"${var}"
에서도 가능할 수도 있으므로 어떤 방법이 가장 보안을 제공하는지 궁금합니다 env:var
.
OpenSSL 매뉴얼 페이지의 관련 섹션:
암호문 인수
여러 명령은 일반적으로 입력 및 출력 비밀번호에 각각 -passin 및 -passout을 사용하여 비밀번호 인수를 허용합니다. 이를 통해 다양한 소스에서 비밀번호를 얻을 수 있습니다. 이 두 옵션 모두 아래에 설명된 형식의 단일 인수를 사용합니다. 비밀번호 인수가 제공되지 않고 비밀번호가 필요한 경우 사용자에게 비밀번호를 입력하라는 메시지가 표시됩니다. 이는 일반적으로 에코가 꺼진 상태로 현재 터미널에서 읽혀집니다.
패스:비밀번호
실제 비밀번호는 비밀번호입니다. 비밀번호는 유틸리티(예: Unix의 'ps')에 표시되므로 이 형식은 보안이 중요하지 않은 경우에만 사용해야 합니다.
환경:var
환경 변수 var에서 비밀번호를 얻습니다. 다른 프로세스의 환경이 특정 플랫폼(예: 특정 Unix OS의 ps)에서 표시되므로 이 옵션은 주의해서 사용해야 합니다.
답변1
매뉴얼 페이지는 이 문제에 대해 매우 명시적입니다.환경:var방법.
매뉴얼 페이지가 정확합니다. 모든 명령줄 매개변수는 ps를 통해 볼 수 있습니다.모든 사용자들시스템에서.
alice$ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:16384 -aes-128-cbc -pass pass:123456
evil$ ps aux|grep openssl
alice 17594 115 0.0 17108 4424 pts/6 R+ 11:02 0:03 openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:16384 -aes-128-cbc -pass pass:123456
환경 변수를 사용하는 경우 다른 사용자(루트 제외)는 해당 변수의 이름만 볼 수 있고 내용은 볼 수 없습니다.
alice$ OPENSSLPW=123456
alice$ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:16384 -aes-128-cbc -pass env:OPENSSLPW
evil$ ps aux|grep openssl
alice 17713 115 0.0 17108 4424 pts/6 R+ 11:02 0:03 openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:16384 -aes-128-cbc -pass env:OPENSSLPW