하드웨어 보안의 최신 동향
Arm의 MTE(메모리 태깅 확장)에서는 메모리의 16바이트마다 4비트 태그를 붙이고, 포인터의 상위 비트에도 4비트 태그를 넣어, 접근할 때마다 둘이 일치하는지를 CPU가 확인한다. 해제한 영역을 가리키는 오래된 포인터로 그 영역에 접근하는 오류를 생각한다. 영역을 다시 할당할 때의 새 태그가 16가지 중에서 균일하게 무작위로 선택된다고 하면, 태그가 우연히 일치하여 오류를 놓칠 확률은?
- A1/16(약 6.3%)
- B1/4(25%)
- C15/16(약 93.8%)
정답과 해설 보기
정답: A. 1/16(약 6.3%)
태그는 4비트이므로 가질 수 있는 값은 2⁴ = 16가지입니다. 새 태그가 16가지 중에서 균일하게 선택된다면, 오래된 포인터의 태그와 우연히 일치할 확률은 1/16 = 6.25%(약 6.3%)이고, 나머지 15/16의 경우는 불일치로 검출됩니다. 한 번의 접근으로도 약 94%의 확률로 발견되므로, 많은 기기에서 동작시키면서 오류를 찾아내거나 공격을 어렵게 할 수 있습니다. 할당할 때 이웃한 영역에는 반드시 다른 태그를 붙이도록 하면, 이웃 영역으로의 넘침은 확실하게 검출할 수 있습니다.