하드웨어 보안
암호 처리를 「정수 시간」으로 구현할 때 지켜야 할 것으로 올바른 것은?
- A처리 전체를 반드시 1초에 끝내도록 한다
- B처리 도중에 시계를 멈춘다
- C비밀 값에 따라 조건 분기의 방향, 반복 횟수, 메모리를 읽고 쓰는 주소가 달라지지 않도록 한다
정답과 해설 보기
정답: C. 비밀 값에 따라 조건 분기의 방향, 반복 횟수, 메모리를 읽고 쓰는 주소가 달라지지 않도록 한다
정수 시간이란 처리 시간이 비밀 값에 따라 변하지 않는다는 뜻입니다. 비밀 값으로 if문의 방향이 바뀌면 시간이 변하고, 비밀 값으로 배열 인덱스가 정해지면 캐시 흔적이 변합니다. 그래서 조건 분기 대신 비트 연산으로 양쪽 결과를 계산해 고르거나, 비밀 값으로 테이블을 참조하지 않는 식으로 작성합니다. 컴파일러 최적화로 분기가 생기지 않는지 확인하는 것도 필요합니다.
- A. 정해진 초 수를 말하는 것이 아닙니다.
- B. 시계를 멈추는 것이 아닙니다.
- C. 올바릅니다. 시간이나 캐시 흔적을 비밀로부터 분리합니다.