파일을 다시 암호화(트랜스코딩? 재암호화?)하기 위한 일괄 작업을 설정하고 있는데 메모리 누수로 인해 일반 텍스트가 누출될 가능성이 걱정됩니다. 결함에는 다른 이름이 있을 수 있지만 기본적으로 우려되는 점은 재암호화 프로세스의 중간 단계에서 일반 텍스트가 다른 프로세스에 의해 디스크에 기록될 수 있다는 것입니다. 이는 일반 텍스트가 있는 메모리가 해제되었지만 지워지지 않은 경우, 일부 다른 프로세스가 메모리를 획득하고 해당 메모리를 디스크에 쓰는 경우(필요한 것보다 더 큰 블록을 교환하거나 쓰는 등의 방법으로) 발생할 수 있습니다. 임베디드 프로그래머로서 저는 민감한 메모리를 공개하기 전에 이를 지우는 데 익숙합니다. 그러나 명령줄에서 암호화하면 어떤 일이 발생하는지 잘 모르겠습니다. 내 배치 프로세스가 다음과 같다고 가정합니다.
openssl enc -aes-256-cbc -in input.enc -K $(get key command) -iv $(get iv command) \
| gpg –encrypt -r user@email -o output.gpg
여기에는 민감한 정보의 출처가 여러 개 있습니다. 두 가지 핵심 명령과 IV 명령이 있지만 가장 민감한 명령은 와 사이의 파이프라인이며 openssl
, gpg
여기에는 해독된 일반 텍스트 데이터가 포함됩니다.
openssl
파이프로 연결된 일반 텍스트 출력을 보관하는 데 사용된 메모리가 gpg
다른 프로세스에 제공되기 전에 운영 체제에서 지워지는지 확인할 수 있습니까 ? 그렇지 않다면 강제로 이런 일이 발생하도록 할 수 있는 방법이 있나요? 나는 다른 프로세스가 일반 텍스트 데이터를 포함할 수 있는 메모리 블록을 가져오는 것을 원하지 않습니다. bash
bash 관련 솔루션이 있으면 일반적으로 이를 사용합니다.