컴공과블로그

PRIME+PROBE: Last-Level Cache Side-Channel Attacks are Practical (1) 본문

논문/Cache Side-channel

PRIME+PROBE: Last-Level Cache Side-Channel Attacks are Practical (1)

LYHyoung 2023. 11. 8. 17:10
728x90

 

Liu, F., Yarom, Y., Ge, Q., Heiser, G., & Lee, R. B. (2015, May). Last-level cache side-channel attacks are practical. In 2015 IEEE symposium on security and privacy (pp. 605-622). IEEE.

Cache Side-channel에서 큰 획을 그은 2가지 논문이 있는데, 하나가 FLUSH+RELOAD이고 다른 하나는 PRIME+PROBE라는 공격이다.

그리고 이번에 소개해드릴 논문이 PRIME+PROBE에 속한다.

 

PRIME+PROBE는 어떤 공격일까?

PRIME+PROBE

PRIME+PROBE 또한 cache miss, hit의 속도를 이용하여 만든 cache side-channel attack이다.

아래와 같은 그림을 보며 이해하면 훨씬 쉬울 것이다.

1. PRIME

먼저 PRIME+PROBE 공격을 위해서 공격자는 L3 캐시 set안에 캐시 라인들을 채워넣는다. 그 후 Victim의 행동을 기다린다. (캐시 라인들을 채워넘으로 공격을 준비시키기 때문에 해당 단계를 PRIME이라 한다.)

 

2. Victim's Access

Attacker가 기다리는 동안 (1)Victim이 Attacker가 준비한 캐시 set에 접근하면서 cache line 안의 값을 바꿀 수도 있고 (2)처럼 Victim이 cache set에 접근하지 않을 수도 있다.

 

3. PROBE

(1) 만약 Victim이 Attacker가 준비한 캐시 set에 있는 값을 바꿨다면 캐시 값이 바뀌었기 때문에 Attacker가 cache set을 Load할 때의 속도가 느릴 것이다. (왜냐하면 L3에 있는 캐시 라인이 바뀌었다면 L2, L1에도 캐시 라인을 가져와야하기 때문이다.)

(2) 그리고 Victim이 Attacker가 준비한 캐시 set에 접근하지 않았다면 이미 L2, L1에 있는 값을 그대로 가져오면 되기 때문에 빠른 속도로 Attacker가 cache set을 load한다.

이를 사용하여 Victim이 해당 cache set에 있는 cache line에 접근했는지를 알 수 있는 Cache Side-channel 공격이다.

 

Challenge

PRIME+PROBE라는 공격이 굉장히 단순해보이지만, Attacker가 LLC에서 fine resolution의 값으로 데이터를 추출하는 것은 큰 challenge 였다.

그리고 해당 논문은  Cache Set에 pinpoint를 둔 것이 큰 contribution 이었다. 그 이유는 LLC(L3 cache)는 다른 캐시들 보다 크기 때문이었다. 그렇기에 victim이 사용할만한 cache set을 pinpoint해서 pinpoint한 cache set만 target하여 공격을 수행했다. 하지만 어떻게 했을까?

공격자는 virtual address를 알지 못하고 mapping하는 것을 control할 수 없다. 그렇기 때문에 victim이 사용하는 cache set의 후보들을 pinpoint하기 위한 것을 어떻게 하는지가 큰 challenge였다. 해당 논문은 전체 LLC를 스캔했다. cache set을 하나씩 모니터링했고 해당 cache set에 일시적이라도 access가 이루어지는 지를 확인했다. 그렇다면 Victim이 해당 Cache set에 access하는지 어떻게 알 수 있었을까?

이들은 Eviction set이라는 것을 제안한다. Eviction set은 memory line들의 집합체인데 기존에 있던 prior data를 eviction시키고 공격자가 원하는 memory line들이 있는 cache set을 prime(준비)시킨다.

이러기 위해선 공격자는 부분적으로 address mapping이 어떻게 이루어지는지 알아야한다. 하지만 공격자는 페이지 크기를 늘려버려 address mapping을 알 필요없게 만든다. 페이지는 4KB로 이루어져있지만 페이지 크기를 2MB로 늘릴 수 있다.

(좌) 4KB page (우) 2MB page / 페이지의 크기 증가 시 indexing이 바뀐다

늘어지게된 페이지의 indexing 또한 변경되는데 이때 set index가 사라지므로 공격자는 set index를 알 필요가 없어진다.

공격자는 conflict가 이루어지는 memory address를 찾고 conflicting 되어지는 memory line을 골라 eviction set을 만드는 알고리즘에 넣으면 eviction set을 만들 수 있다.

 

아주 구체적인 이야기가 될 수 있으니 이는 원하는 사람만 읽을 수 있도록 다음 포스트에 올려두겠습니다!

728x90