하드웨어 보안의 최신 동향
ML-KEM의 캡슐화 해제에서는 받은 암호문을 개인 키로 복호화한 결과로부터 암호문을 다시 한번 만들어, 받은 암호문과 일치하는지를 비교한다. 이 부분의 구현상 주의점으로 올바른 것은?
- A일치하지 않았을 때는 바로 처리를 중단하고, 어느 바이트에서 달랐는지를 자세한 오류로 상대에게 돌려주면 원인을 알 수 있어 친절하고 안전하다
- B일치 여부를 비교하는 방법은 양자 컴퓨터에 강한 방식을 사용하는 한 안전성과 관계없으므로, 가장 빠른 방법을 고르면 된다
- C비교하는 처리는 비밀과 관계없이 같은 시간에 수행하고, 일치하지 않는 경우에도 오류를 돌려주지 않고 비밀 값으로부터 만든 무관한 키를 돌려주어 구별할 수 없게 한다
정답과 해설 보기
정답: C. 비교하는 처리는 비밀과 관계없이 같은 시간에 수행하고, 일치하지 않는 경우에도 오류를 돌려주지 않고 비밀 값으로부터 만든 무관한 키를 돌려주어 구별할 수 없게 한다
다시 만든 암호문과 비교하는 절차는 조작한 암호문을 보내 반응을 보는 공격(선택 암호문 공격)을 막기 위한 것입니다. 비교 처리의 시간이나 불일치를 나타내는 오류로부터 일치·불일치가 밖으로 새어 나가면 그 자체가 공격의 단서가 되어, 개인 키를 조금씩 추측당할 우려가 있습니다. 그래서 FIPS 203에서는 일치하지 않을 때 오류를 돌려주지 않고 비밀 값과 암호문으로부터 만든 다른 키를 돌려주도록 정하고 있으며(암묵적 거부), 구현에서는 비교 처리와 결과를 선택하는 처리를 상수 시간으로 수행합니다. 방식이 양자 컴퓨터에 강하더라도 구현의 시간이나 소비 전력으로부터 비밀이 새어 나가면 안전성은 사라지며, 2024년경에는 나눗셈 시간이 비밀에 의존하는 구현 문제(KyberSlash)도 보고되었습니다.