하드웨어 보안의 최신 동향

간접 분기의 예측을 악용하는 Spectre의 변종(분기 타깃 인젝션)에 대한 대책인 retpoline과 IBRS의 설명 조합으로 올바른 것은?

  1. Aretpoline은 CPU 회로를 다시 만들어 예측기를 없애는 대책이며, IBRS는 컴파일러가 간접 분기 명령을 다른 명령열로 바꿔 쓰는 대책이다
  2. Bretpoline은 간접 분기를 예측기에 의존하지 않는 명령열로 바꾸는 소프트웨어 대책이며, IBRS는 간접 분기 예측을 제한하는 CPU의 기능이다
  3. Cretpoline도 IBRS도 CPU의 투기적 실행 기능 자체를 멈추는 대책으로, 어느 쪽을 사용해도 투기적 실행에 의한 성능 향상은 없어진다
정답과 해설 보기

정답: B. retpoline은 간접 분기를 예측기에 의존하지 않는 명령열로 바꾸는 소프트웨어 대책이며, IBRS는 간접 분기 예측을 제한하는 CPU의 기능이다

retpoline은 컴파일러가 간접 분기 명령을 call과 ret를 조합한 명령열로 바꾸어, 악용될 수 있는 간접 분기용 예측기가 아니라 복귀 주소 예측을 사용하게 하고, 투기적인 실행을 무해한 루프 안에서 헛돌게 합니다. IBRS는 마이크로코드 업데이트 등으로 추가된 CPU의 제어 기능으로, 예를 들어 커널 안의 간접 분기의 예측이 사용자 프로그램이 학습시킨 내용을 따르지 않도록 제한합니다. 오래된 CPU에서는 IBRS를 전환할 때마다 큰 시간이 걸렸기 때문에 retpoline이 널리 쓰였고, 새로운 CPU에서는 항상 유효하게 둘 수 있는 개량판(eIBRS)이 마련되었습니다. 다만 CPU에 따라서는 복귀 주소 예측도 다른 예측기에 의존하는 경우가 있어, 2022년에 공표된 Retbleed 등에서 retpoline만으로는 불충분한 경우가 제시되었습니다.

이 분야 연습하기 분야로 돌아가기

하드웨어 보안의 최신 동향의 다른 문제

  1. 어떤 처리는 투기적 실행에 대한 대책을 넣기 전에 10초가 걸렸고, 그동안 시스템 콜을 500만 회 호출했다. 대책을 넣으면 시스템 콜 1회당 처리 시간이 0.4 µs에서 0.6 µs로 늘어나고, 그 이외 부분의 시간은 변하지 않는다고 한다. 처리 전체 시간의 증가 비율은?
  2. 격자 기반 양자 내성 암호에서는 차수 n = 256인 다항식의 곱셈을 여러 번 수행한다. 계수끼리 모두 곱하는 소박한 방법으로는 약 n²회, 수론 변환(NTT)을 사용하는 방법으로는 약 n log₂ n회의 곱셈이 필요하다고 하면, NTT를 사용함으로써 곱셈 횟수가 대략 몇 분의 1이 되는지에 가장 가까운 것은?
  3. ML-KEM-768의 공개 키는 1,184바이트, 암호문은 1,088바이트이고, 타원 곡선 키 교환 X25519의 공개 값은 32바이트이다. ML-KEM-768 공개 키의 크기가 X25519 공개 값의 몇 배인지로 올바른 것은?
  4. ML-KEM의 캡슐화 해제에서는 받은 암호문을 개인 키로 복호화한 결과로부터 암호문을 다시 한번 만들어, 받은 암호문과 일치하는지를 비교한다. 이 부분의 구현상 주의점으로 올바른 것은?
  5. 10년 이상 사용되는 임베디드 기기의 SoC를 설계한다. 앞으로의 암호 이행(양자 내성 암호로의 이행 등)에 대비하는 하드웨어와 펌웨어의 설계로 적절한 것은?