Luks 암호화된 단일 사용자 시스템에 키링 비밀번호가 필요합니까?

Luks 암호화된 단일 사용자 시스템에 키링 비밀번호가 필요합니까?

제목에 모든 내용이 나와 있지만 좀 더 확장해 보겠습니다.

키링 비밀번호가 내 키를 어떻게 보호하는지 궁금합니다. 물론 컨테이너 파일을 암호화하므로 다른 사람이 액세스할 수 없습니다. 그러나 키링 비밀번호를 제공한 후에도 해독됩니다. 따라서 실제로 제가 로그인되어 있는 동안 일부 악성 앱이 키를 훔칠 수 있습니다(적어도 루트 권한이 있는 앱은 가능해야 합니다).

물론, 비밀번호를 입력한 후 키 파일 자체가 복호화된 버전으로 교체되지는 않지만 메모리에서 복호화되어야 한다는 것을 알고 있습니다.

문제는 악성 앱이 암호가 해독되는 동안 내 키링에 있는 데이터에 액세스할 수 있느냐는 것입니다. 그렇다면 내 디스크가 이미 암호화되어 있고 내 컴퓨터를 사용하는 사람이 나뿐인데도 내 키링에 비밀번호가 필요합니까?

그리고 비밀번호가 더 안전하다면 로그인 후 내 계정 비밀번호를 사용하여 자동으로 잠금을 해제할 수 있습니까?

(저는 로그인 관리자를 사용하지 않고 TTY를 통해 로그인한 후 자동으로 i3wm을 시작합니다. 그러면 이 설정에서도 자동 잠금 해제가 가능할까요?)

답변1

키링이 해독되는 동안 악성 앱이 내 키링의 데이터에 액세스할 수 있나요?

실제로 (현재) 그렇습니다. 가능합니다. Linux에서 사용자 세션의 현재 설계(또는 그 부족)로 인해 gnome-keyring-daemon이 어떤 프로그램이 액세스하려고 하는지 확인하기가 어렵습니다. 이는 컴파일된 프로그램의 경우 어느 정도 가능하지만, 예를 들어 Python으로 작성된 앱은 Python으로 작성된 다른 앱과 구별할 수 없습니다. 따라서 gnome-keyring이 그랬지만처음에는애플리케이션 화이트리스트가 있지만 현재 버전에서는 더 이상 그렇지 않습니다.

결국 이는 Snap이나 Flatpak과 같은 앱 컨테이너 프로젝트를 통해 개선되어야 합니다.

그렇다면 내 디스크가 이미 암호화되어 있고 내 컴퓨터를 사용하는 사람이 나뿐인데도 내 키링에 비밀번호가 필요합니까?

나는 그렇다고 말하고 싶습니다.

위에서 언급했듯이 모든 프로그램은 D-Bus 메시지를 보내고 gnome-keyring-daemon에 비밀을 요청할 수 있습니다. (어떤 경우에는 기능으로 작동하기도 합니다.)

그러나 취약한 프로그램(예: 웹 브라우저)을 사용하여 다음 작업을 수행할 수 있는 보안 허점이 꽤 많이 있었습니다.당신의 파일을 훔치세요, 명령을 실행하거나 D-Bus 메시지를 보낼 가능성은 여전히 ​​없습니다. 악성코드는 사람들의 암호화되지 않은 SSH 키( ~/.ssh/id_rsa) 또는 비트코인 ​​코어 지갑을 훔치는 것으로 알려져 있습니다 .

마찬가지로, 암호화되어 있지 않으면 ~/.local/share/keyrings/login.keyring웹 브라우저 악용 등을 통해 도난당할 위험이 있습니다.

(저는 로그인 관리자를 사용하지 않고 TTY를 통해 로그인한 후 자동으로 i3wm을 시작합니다. 그러면 이 설정에서도 자동 잠금 해제가 가능할까요?)

gnome-keyring의 자동 잠금 해제는 모든 경우에 PAM을 통해 수행됩니다. 이름이 지정된 모듈은 pam_gnome_keyring.so로그인 프로세스의 일부로 비밀번호를 받고 초기 키링 데몬을 시작합니다.

PAM 모듈은 /etc/pam.dLinux 배포판이 일반적으로 공통 모듈을 추가하는 위치에 추가하거나 파일에만 추가해야 합니다 login(특히 콘솔 및 텔넷 로그인용).

auth 그룹(Debian 스타일의 "Additional" 블록 common-auth, 그렇지 않은 경우 마지막 모듈)에서 비밀번호를 메모리에 저장합니다.

[...]
auth optional pam_gnome_keyring.so only_if=login

세션 그룹(Debian의 경우 "추가" 블록, 그렇지 않은 경우 마지막 모듈)에서는 저장된 비밀번호를 사용하여 시작합니다.그놈 키링 데몬:

[...]
session optional pam_gnome_keyring.so only_if=login auto_start

관련 정보