다음 링크에서 볼 수 있는 오픈 소스 격리된 Raspberry Pi 프로젝트가 있습니다: www.privatekeyvault.com
다음과 같이 LUKS 전체 디스크 암호화를 설치하는 방법을 제공했습니다.https://github.com/johnshearing/PrivateKeyVault#setup-luks-full-disk-encryption
아래에 설명된 대로 중간자 공격을 완화하려고 합니다.https://github.com/johnshearing/PrivateKeyVault#preventing-the-evil-maid-or-maid-in-the-middle-attack
문제는 누군가가 부팅 파티션에 악성 코드 키로거를 설치하고 initramfs를 계속 실행하는 동안 암호화된 파티션에 로그인할 때 비밀번호를 수집할 수 있다는 것입니다.
암호화된 파티션에 로그인한 후 다음 명령을 실행하여 부팅 파티션의 sha1sum을 볼 수 있습니다. dd if=/dev/mmcblk0p1|sha1sum
부팅 파티션이 변경되었는지 확인하기 위해 앞서 기록한 sha1sum과 비교했습니다. 절대로 바뀌어서는 안 됩니다.
암호화된 파티션에 로그인하기 전에 부팅 파티션의 sha1sum을 가져오고 싶습니다. 즉, 비밀번호를 제공하기 전입니다. 이때는 여전히 initramfs에서 실행 중입니다. 키로거를 설치한 사람이 잘못된 sha1sum 프로그램을 설치할 수도 있기 때문에 이것이 어리석은 일이라는 것을 알고 있으므로 sha1sum 프로그램을 변경할 수 없는 암호화된 파티션에 로그인한 후 sha1sum 명령을 실행하는 것이 가장 좋습니다. 그래도 할 수 있는지 궁금합니다.
문제는 명령(df)을 실행할 때 /dev/mmcblk0p1이 표시되지 않으므로 내 명령(dd if=/dev/mmcblk0p1 | sha1sum)이 작동하지 않는다는 것입니다.
initramfs에서 부팅 파티션을 참조하는 방법에 대한 아이디어가 있습니까?
또한 암호화된 파티션에 로그인하기 전에 누군가가 부팅 파티션을 변조했는지 확인하는 방법에 대한 다른 아이디어가 있습니까?
답변1
답변할 정보가 너무 적기 때문에 귀하의 정식 질문에는 답변하지 않겠습니다. initramfs와 다르게 부팅 파티션을 참조하는 특별한 이유는 없습니다. 일반 이름이 작동하지 않으면 initramfs가 다른 경로를 사용하고 있거나 이 명령이 실행될 때 드라이버가 로드되지 않았음을 의미합니다. 이에 대한 도움이 필요하면 initramfs를 빌드하는 방법과 이 명령을 추가할 위치를 자세히 설명해야 합니다.
귀찮게 하지 말라는 댓글이 아니라 답변으로 게시하는 것입니다.
당신이하고 싶은 일은 기본적으로 불가능합니다.공격자가 부팅 파티션을 변경할 수 있는 경우 initramfs를 변경하여 이 검사를 제거할 수 있습니다.
암호화된 파티션에서 확인하는 것이 그다지 좋지는 않지만 실제로 공격하기가 약간 더 어렵습니다. 공격자는 시뮬레이션된 환경을 설정하거나(기술적으로는 가능하지만 사용자가 알아채지 못하는 방식으로 수행하기 어려움) 기본 OS를 로드하기 전에 부팅 파티션을 예상 상태로 복원해야 합니다(가능하지만 그게 전부입니다). 공격자는 ) 샷을 얻을 수 있습니다).
부트로더를 완전히 신뢰할 수 없다면 사악한 하녀 공격으로부터 보호할 수 없습니다. 신뢰할 수 없는 단계가 있으면 해당 단계 이후의 모든 단계를 신뢰할 수 없습니다. Evil Maid 공격으로부터 보호하는 유일한 방법은 각 단계가 다음 단계를 검증하는 완전한 보안 부팅 체인을 보유하는 것입니다. 다음 단계가 인증되지 않은 경우 각 단계의 시작을 중지해야 합니다(다운그레이드 공격이 걱정되는 경우 최신 상태로 유지해야 함). 또는 다음 단계의 상태를 기록하여 타사의 신뢰할 수 있는 검증자에게 보내야 합니다. 이 신뢰 체인에 공백이 있으면 후속 단계에서 보고된 데이터가 진짜인지 여부를 알 수 없습니다.
ROM은 로드되는 내용을 확인하지 않기 때문에 Raspberry Pi에서는 불가능합니다. 다른 하드웨어를 사용하지 않는 한 부팅 파티션을 신뢰할 수 없습니다. 안타깝게도 저는 조언을 드릴 수 없습니다. 시장은 Arm 플랫폼에서 취미 프로젝트를 신뢰할 수 있게 출시하기에 적합하지 않습니다.
그런데, 명령이 작동하더라도 몇 가지 결함이 있습니다.
dd if=/dev/mmcblk0p1 | sha1sum
동일합니다sha1sum </dev/mmcblk0p1
.if
및 를 제외하고는 매개변수가 없으며 입력을 출력에 복사하기of
만 합니다 .dd
조심하세요특정 매개변수를 사용하면dd
실제로 데이터가 손상될 수 있습니다.!dd
정말로 필요하고 손상 위험이 없는 방식으로 사용하고 있다고 확신하는 경우가 아니면 사용하지 마십시오.- SHA-1은부서진. 모든 사용 사례에서 작동하는 것은 아니며 귀하의 경우 악용하기 어렵습니다(누군가 신중하게 제작된 무해한 콘텐츠를 합법적인 부팅 파티션에 드롭하도록 준비해야 함). 그러나 새 부팅 파티션에서 SHA-1을 사용하는 것은 그렇지 않습니다. 책임이 있는. 설계. 사용
sha256sum
.