조작을 방지/감지하기 위해 커널 서명/체크섬

조작을 방지/감지하기 위해 커널 서명/체크섬

모든 파티션은 암호화되어 있지만( //home) /boot파티션은 암호화되지 않은 상태로 유지되어야 하며 조작이 가능해야 합니다. 부팅 시 커널을 해싱하고 결과를 저장된 값(컴파일 시 생성되고 암호화된 드라이브에 저장됨)과 비교하여 마지막 부팅 이후 누군가가 어떻게든 커널을 조작했는지 확인하려고 합니다(물리적으로도 가능). 이런 스크립트를 작성하는 데 문제가 있나요? 이 작업을 수행할 수 있는 프로그램이 이미 있습니까?

답변1

당신이 찾고 있는 것은 당신의 컴퓨터에서 실행되는 운영 체제가 당신이 신뢰하는 운영 체제인지 확인하는 것입니다.신뢰할 수 있는 부팅. (이것은 때때로 신뢰할 수 있는 부팅이라고 불리는 여러 가지 중 하나입니다.) 당신이 제안한 방법은 이 목표를 달성하지 못합니다.

암호화가 제공되지 않음데이터 무결성또는확실성. 즉, 공격자가 디스크 내용을 수정하고 이를 악성 운영 체제로 교체하는 것을 방지하지 못합니다. 이 악성 운영 체제는 로드하려는 커널의 체크섬을 표시하도록 쉽게 프로그래밍될 수 있습니다.

가장 간단한 공격 경로는 다음과 같습니다.중개자공격자는 일종의 가상 머신에서 일반 운영 체제를 실행합니다. 가상 머신 계층은 입력을 필요한 운영 체제에 전송하고 출력을 다시 전송합니다. 그러나 측면에 키 입력(mmmm, 비밀번호)을 기록하고 OS 메모리에서 개인 키를 스누핑하는 등의 작업도 수행합니다.

이러한 형태의 공격을 피하려면 다음과 같은 조치가 필요합니다.신뢰의 뿌리: 시스템의 다른 구성 요소가 그렇게 말하는 것이 아닌 다른 이유로 신뢰하는 시스템 구성 요소입니다. 즉, 어딘가에서 시작해야 합니다. 가지고 있는 하드웨어로 시작하는 것이 좋습니다. 눈에 보이지 않는 USB 키에 운영 체제를 저장한 다음 충분히 확신할 수 있는 하드웨어에만 연결할 수 있습니다.하드웨어에 악성 코드가 포함되어 있을 수 있습니다.! ). 컴퓨터를 기꺼이 신뢰한다면 컴퓨터의 하드 드라이브도 신뢰할 가능성이 높습니다.

작은 칩을 신뢰하는 것과 전체 데스크탑 또는 노트북을 신뢰하는 것 사이의 격차를 해소하는 기술 솔루션이 있습니다. 일부 컴퓨터에는TPM(신뢰할 수 있는 플랫폼 모듈)여기서는 알려진 운영 체제만 부팅할 수 있는지 확인할 수 있습니다.믿을 수 있는 땅벌레TPM이 지원되므로 TPM과 Trusted Grub을 함께 사용하면 실행 중인 커널이 승인된 커널인지 확인할 수 있습니다.

TPM을 채택하면 유리할 수도 있고 불리할 수도 있습니다. 그것은 모두 누가 열쇠를 가지고 있는지에 달려 있습니다. TPM의 개인 키가 있으면 컴퓨터에서 실행되는 작업을 정확하게 제어할 수 있습니다. 제조사만 개인키를 가지고 있다면, 공용 플랫폼을 잠긴 장치로 바꾸는 것도 하나의 방법이다.

답변2

시작된 커널은 메모리에 상주합니다. /dev/mem크기를 알고 있는 경우 이를 찾아서 체크섬을 계산하고 확인하는 스크립트를 작성할 수 있습니다 .

/boot또한 분할이 필요하지 않고 커널 수정이 거의 불가능하여 전체 하드 드라이브를 암호화할 수도 있습니다 . 어떻게? 내가 생각할 수 있는 두 가지 방법은 다음과 같습니다.

  • 커널을 CD에 넣으면 컴퓨터가 CD에서 부팅됩니다. 몇 년 전에 어떤 사람들은 이러한 설정을 사용했다고 보고했습니다. 두 번째 게시물을 참조하세요.이 포럼 스레드에서.

  • 귀하의 마더보드가코어부트로 구동그리고 BIOS 칩에 암호화 지원 커널을 설치할 수 있는 최소 커널을 위한 충분한 공간이 있습니다.(아직 테스트할 기회가 없었지만 이것이 작동하지 않을 이유는 없습니다.)

편집하다:이 모든 것은 단지 다음 단계를 향한 단계일 뿐입니다."신뢰할 수 있는"또는"확인됨"부츠(Giles가 이를 올바르게 지적함). 완전한 메커니즘은 부트로더 단계에서 발생하는 일과 기본 하드웨어가 식별되는 방법도 고려해야 합니다. 구경하다Google Chromium OS의 작동 방식.

관련 정보