하드웨어 보안의 최신 동향

ML-KEM의 캡슐화 해제에서는 받은 암호문을 개인 키로 복호화한 결과로부터 암호문을 다시 한번 만들어, 받은 암호문과 일치하는지를 비교한다. 이 부분의 구현상 주의점으로 올바른 것은?

  1. A일치하지 않았을 때는 바로 처리를 중단하고, 어느 바이트에서 달랐는지를 자세한 오류로 상대에게 돌려주면 원인을 알 수 있어 친절하고 안전하다
  2. B일치 여부를 비교하는 방법은 양자 컴퓨터에 강한 방식을 사용하는 한 안전성과 관계없으므로, 가장 빠른 방법을 고르면 된다
  3. C비교하는 처리는 비밀과 관계없이 같은 시간에 수행하고, 일치하지 않는 경우에도 오류를 돌려주지 않고 비밀 값으로부터 만든 무관한 키를 돌려주어 구별할 수 없게 한다
정답과 해설 보기

정답: C. 비교하는 처리는 비밀과 관계없이 같은 시간에 수행하고, 일치하지 않는 경우에도 오류를 돌려주지 않고 비밀 값으로부터 만든 무관한 키를 돌려주어 구별할 수 없게 한다

다시 만든 암호문과 비교하는 절차는 조작한 암호문을 보내 반응을 보는 공격(선택 암호문 공격)을 막기 위한 것입니다. 비교 처리의 시간이나 불일치를 나타내는 오류로부터 일치·불일치가 밖으로 새어 나가면 그 자체가 공격의 단서가 되어, 개인 키를 조금씩 추측당할 우려가 있습니다. 그래서 FIPS 203에서는 일치하지 않을 때 오류를 돌려주지 않고 비밀 값과 암호문으로부터 만든 다른 키를 돌려주도록 정하고 있으며(암묵적 거부), 구현에서는 비교 처리와 결과를 선택하는 처리를 상수 시간으로 수행합니다. 방식이 양자 컴퓨터에 강하더라도 구현의 시간이나 소비 전력으로부터 비밀이 새어 나가면 안전성은 사라지며, 2024년경에는 나눗셈 시간이 비밀에 의존하는 구현 문제(KyberSlash)도 보고되었습니다.

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

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

  1. 10년 이상 사용되는 임베디드 기기의 SoC를 설계한다. 앞으로의 암호 이행(양자 내성 암호로의 이행 등)에 대비하는 하드웨어와 펌웨어의 설계로 적절한 것은?
  2. OpenTitan이나 Caliptra처럼 신뢰의 근간(Root of Trust) 회로의 설계를 공개하는 활동의 이점으로 가장 적절한 것은?
  3. TCG가 정한 DICE(Device Identifier Composition Engine)의 구조로 올바른 것은?
  4. A면과 B면 2개의 영역을 사용해 펌웨어를 업데이트하는 기기에서, 롤백 방지를 위해 eFuse에 기록하는 최저 버전 번호를 새 버전 번호로 올리는 시기로 가장 적절한 것은?
  5. 하드웨어 자재 명세서(HBOM)의 설명으로 올바른 것은?