[운영체제] CPU 게이트(보안사고)

앞서 메모리컨트롤러는 CPU 의 행위를 관찰하고 있다가, 필요한 자료를 미리 가져와 처리 속도를 향상시킨다는 것을 알게 되었다.
적중률은 90%이상이므로, CPU 는 정보를 직접 검색하기 전, 기본적으로 메모리컨트롤러에게 먼저 묻게 된다. 
 
반대의 관점에서 본다면 '시키지도 않은 일을 메모리 컨트롤러가 하고 있다'. 는 것.
 

CPU 게이트

이 문제는 CPU 게이트라는 사건으로 이름 붙여지며 주목을 받게 된다. CPU를 돕기 위해 일하던 메모리 컨트롤러는 CPU 에게 빠르게 정보를 넘겨주기 위해 자료를 가져오게 된다. 핵심은 시키지도 않은 일을 하게 되어, 이것이 보안사고로 이어진다는 것.

예시 

이 사건을 비유적으로 나열하자면 이렇다.
호텔에 대통령이 방문하여 A동 202호 에 머무르게 된다(함구해야 하는 정보).
대통령을 암살하려는 어떤 조직은, 대통령이 어느 호텔의 A동에 묵는다는 것까지는 알아냈다. 그러나, 몇 호실에 있는지는 알아내지 못했다.
 
호텔 프론트에는 "A동 관련 질문은 일절 답변하지 말라"는 엄명이 내려와 있다.
그리고 호텔 프론트 직원은 일처리를 할 때 다음과 같은 단계를 거친다고 알려져 있다.

1. 프론트 직원은 항상 특정 호실에 대한 문제가 자주 들어오면 
그 방을 시스템에서 자꾸 검색하는 수고를 덜기 위해 해당 방의 정보를 메모지에 적어 둔다. 
#즉 어떤 메모리에 대해서 자꾸 참조를 하게 되면, 캐싱을 하겠다는 뜻. (캐시에 끌고 오겠다) 

2. 메모리에 적어놓은 정보는 검색하지 않아도 되고, 메모리를 참고해 다른 방에 비해 빠르게 대답해준다. 

3. 메모리에 뭐라고 적혀있는지 직접적으로 묻는 질문에는 대답하지 않는다.

 
 
조직은 질문을 다음과 같이 바꾸어 호텔 프론트에 문의한다.

"B동 호텔방 중 A동의 대통령이 묵는 호실과 같은 호실이 비어있나요?"

 
대답으로는 " 대답해 줄 수 없다"는 말이 돌아올 것이다. 그리고 이 질문을 계속해서 반복한다. 특정 방에 대한 문의가 많이 들어온다 싶으면 직원은 해당 방의 정보를 메모지에 적어두는 습관이 있기 때문이다. 프론트 직원이 "대답해 줄 수 없다"는 대답을 하는 동시에, 손으로는 B동 호텔방 중 A동의 대통령이 묵는 호실과 같은 호실" 에 대한 정보를 메모지에 적어놓게 될 것이다.
 
 
충분히 질문을 반복했다면, 2. 메모지에 적어놓은 정보는 검색하지 않아도 되고, 메모지를 참고해 다른 방에 비해 빠르게 대답해준다.
를 이용하여  "A동"이라는 말은 싹 빼고 "B동"에 있는 모든 방에 대해 직원에게 무작위로 캐묻는다.
 
"B동 408호 비어 있나요?"
"B동 105호 비어 있나요?"
"B동 803호 비어 있나요?"
...
 
순서대로 묻지 않고 무작위로 캐묻는 이유는, 규칙을 예측한 프론트 직원이 물어보는 방 정보의 뒷방 정보를 메모지에 적어둘 수 있기 때문에 랜덤 순서로 물어보는 것. 하지만 이렇게 무작위 질문 중, 

"B동 호텔방 중 A동의 대통령이 묵는 호실과 같은 호실"

즉 B 동 202호는 이미 메모지에 적어 놓아서, 호텔 시스템을 검색할 필요 없이 뜸을 들이지 않고 바로 대답해줄 수 있다. 그러면 이 속도 차이를 이용하여 프론트 직원은 메모지에 써놓은 호실이 B 동 202호임을 알 수 있게 되는 것이다. 여기서 B동을 A동으로만 바꾸면 거기에 대통령이 있다는 것을 알 수 있다. 
 
이처럼 효율을 위한 프론트 직원의 습관이, 기밀 정보를 유출하는 문제를 일으키게 된다.