논문/Cache Side-channel

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

LYHyoung 2023. 11. 9. 15:47
728x90

Create Eviction Set

다음은 Eviction set을 만드는 algorithm입니다.

Eviction set에 들어갈 수 있을법한 candidate memory line을 input으로 가져오고 output으로 Eviction set을 내보냅니다.

 

candidate memory line들을 체크해보며 conflict가 발생하는지 확인한다.

그리고 memory line들이 들어있는 set을 확인해보며 LLC에서 eviction이 발생하는지 찾는다.

 

conflict set을 만들어주는데, 여기에는 conflict가 이루어지지 않는 line들도 넣고 memory slice에서 conflict가 발생하는 부분도 넣는다. 그렇게 함으로 eviction set의 unicon을 만들 수 있다. 그 후 알고리즘은 conflict_set을 각각의 eviction set으로 슬라이스를 한다.

Intel의 hash function은 conflict가 발생할 것 같은 memory line들을 균등하게 분포시켜주기 때문에 위와 같은 알고리즘으로 conflict가 발생할 것 같은 라인들만을 선출해서 eviction set을 만들 수 있다.

 

그리고 아래 과정이 conflict set을 evcition set으로 나누어주는 부분이다.

차례대로 하나씩 보도록 하자.

candidate가 될 수 있는 memory line들을 하나씩 살펴본다.

그리고 실제로 해당 candidate memory line이 conflict가 이루어지는지 확인한다.

conflict set의 갯수만큼 iteration을 진행한다. 여기서 iteration을 진행하는 동안 candidate memory line이 conflict를 일으킨다면 LLC 내에 동일한 cache set에 있는 cache line인 것을 확인할 수 있다.

이런 방법을 통해 eviction set들을 찾을 수 있다.

 

Attack Code

굉장히 간단하다.

head pointer를 r8로 지정해두고 12번의 mov명령어로 eviction set 내에 있는 Memory line들을 하나씩 Read한다.

이를 통하여 Sender와 Receiver를 통해 victim의 동작을 확인할 수 있었다.

728x90