저는 ecryptfs 사용에 대한 배경 지식으로 Linux 커널 키링에 대해 조금 배우려고 합니다. 커널 키링은 키를 디스크 어딘가에 저장합니까, 아니면 시스템이 부팅될 때마다 프로그래밍 방식으로 다시 초기화됩니까?
암호화에 관한 매뉴얼 페이지와 Archlinux 문서를 살펴봤지만 답을 찾지 못했습니다. 커널 키링에 대한 다른 문서가 있다면 알고 싶습니다.
커널 키링이 디스크에 키를 저장하는 경우 파일은 어디에 저장되나요?
답변1
Linux 커널은 자체 이름으로 디스크에 어떤 것도 저장하지 않습니다. 이는 애플리케이션이 파일 시스템 인터페이스를 통해 저장하도록 지시하는 파일, 직접 액세스할 수 있는 블록 장치의 데이터 또는 마운트된 파일 시스템 및 디스크 볼륨에 대한 메타데이터를 저장합니다.
또한 암호화 키를 동일한 매체에 저장하는 것은 의미가 없습니다.
암호화 키는 RAM에만 저장됩니다. 암호화된 파일 시스템이 설치되기 전에 입력됩니다. 키는 일반적으로 사용자가 입력한 비밀번호에서 파생되지만 스마트 카드 등에서 로드할 수도 있습니다. 이것커널 문서세부 사항이 있습니다.
볼륨 외부의 파일에 볼륨의 암호화 키를 저장한 다음 파일을 로드할 수 있습니다. 예를 들어, 부팅 시 물리적으로 삽입되는 이동식 드라이브에 키를 두는 것이 합리적입니다. 그러나 커널은 이 작업을 자체적으로 수행하지 않고 대신 시스템의 시작 스크립트에서 이 작업을 수행합니다.
답변2
커널 키링에 대한 문서는 커널 소스 트리에서 찾을 수 있습니다:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/security
eCryptfs에서 사용하는 키는 디스크에 일반 텍스트로 저장되지 않습니다. ecryptfs-utils 프로젝트의 유틸리티는 기본적으로 키 자료를 디스크에 저장하기 전에 사용자가 제공한 비밀번호로 키를 래핑합니다. 시작할 때마다 사용자는 사용자가 제공한 비밀번호를 입력해야 합니다.
답변3
즉, 디스크가 아닌 메모리에 저장하지 않습니다. 또한 일반적으로 달리 지정하지 않는 한 이 시간이 지나면 메모리에서 자동으로 제거되도록 제한 시간이 있습니다.
커널 키링 사용 및 "keyctl"을 통한 사용에 대한 내 메모
https://antofthy.gitlab.io/info/crypto/keyring_linux_kernal.txt
여기에는 커널 키링의 다양한 측면에 대한 다양한 문서에 대한 여러 링크가 포함되어 있습니다.
내레이터: 암호화된 파일을 편집할 때 비밀번호를 저장하기 위해 이 연구를 수행했습니다! 이렇게 하면 사용자가 파일을 저장할 때 편집자는 비밀번호를 두 번 입력하지 않고도 파일을 다시 암호화할 수 있습니다(아마도 실수로 비밀번호를 몇 번 변경했을 수도 있습니다!).