정보보안기사 학습 문제 53 — 인증 재사용·서버 검증·키 수명주기
이번 글의 세 문항은 공개 기출문제의 원문을 재현하지 않은 창작 문제다. 정답과 해설은 게시 시점에 확인한 KISA 공개 체크리스트, RFC 8446, NIST SP 800-57을 근거로 작성했다.
문제 1 — 인증 결과의 재사용 방지
문제
본인확인 결과를 회원가입에 사용하는 웹 서비스의 통제로 가장 적절한 것은?
선택지
- 인증 성공 응답을 장기간 보관하고 동일 응답을 여러 번 재사용한다.
- 인증 데이터의 생성 시각·사용 여부·유효기간을 검증하고 재사용을 제한한다.
- 실패 응답도 성공 응답과 같은 토큰으로 저장해 처리한다.
- 브라우저 화면에서 토큰을 숨기면 서버 검증은 생략한다.
정답
2번
해설
KISA의 본인확인서비스 이용기관 취약점 자체점검 체크리스트는 과거 인증정보의 재사용 방지를 점검 항목으로 제시하고, 인증 데이터의 생성 시간 검증·동일 데이터 사용 횟수 제한·사용 여부 검증을 조치 방향으로 안내한다. 따라서 인증 결과는 짧은 유효기간과 일회성 사용 정책을 서버에서 확인해야 한다. [1]
오답 포인트
Hidden field나 난독화는 브라우저에서 값을 완전히 신뢰하게 만들지 못한다. 재전송 방어의 핵심은 서버가 nonce·거래 식별자·만료와 사용 상태를 검증하는 것이다.
출처 또는 검증 근거
[1] KISA, 「본인확인서비스 이용기관 취약점 자체점검 체크리스트」, 데이터 재사용 항목, https://identity.kisa.or.kr/web/main/file/download/uu/4b09e2c3f5f544f9a37ba401ec8153c5
문제 2 — 중요 페이지의 접근통제 위치
문제
관리자 페이지의 권한 검사를 구현하는 방법으로 가장 적절한 것은?
선택지
- 메뉴를 숨기는 클라이언트 스크립트만 적용한다.
- 관리자 URL을 추측하기 어렵게 바꾸면 권한 검사는 필요 없다.
- 서버 측에서 유효 세션과 요청자의 권한을 페이지별로 검증한다.
- 로그인 성공 여부만 확인하고 관리자 권한은 모든 계정에 부여한다.
정답
3번
해설
KISA 체크리스트는 인증이 필요한 중요 페이지에 대해 유효 세션과 요청자의 권한을 검증하고, 페이지별 권한 매트릭스를 기준으로 서버 측 검사를 수행하도록 안내한다. 클라이언트 측 스크립트에만 의존하면 이용자가 요청을 직접 변경해 검사를 우회할 수 있다. [1]
오답 포인트
관리자 URL 변경은 노출 감소에 도움을 줄 수 있지만 인증·인가를 대체하지 않는다. “로그인했다”와 “해당 기능을 사용할 권한이 있다”는 서로 다른 판단이다.
출처 또는 검증 근거
[1] KISA, 「본인확인서비스 이용기관 취약점 자체점검 체크리스트」, 프로세스 검증 누락 항목, https://identity.kisa.or.kr/web/main/file/download/uu/4b09e2c3f5f544f9a37ba401ec8153c5
문제 3 — 암호키 관리의 범위
문제
NIST SP 800-57의 암호키 관리 관점에 가장 부합하는 설명은?
선택지
- 안전한 알고리즘을 고르면 키의 생성·보관·폐기는 관리 대상이 아니다.
- 키 관리란 공개키를 한 번 배포하는 절차만 의미한다.
- 키 관리에는 키 자료의 보호, 키 유형별 요구사항, 관련 기능과 운영 이슈가 포함된다.
- 키가 유출되어도 암호문을 바꾸지 않으면 별도 대응은 불필요하다.
정답
3번
해설
NIST SP 800-57 Part 1 Rev. 5는 암호키 자료의 관리에 대해 보안 서비스, 알고리즘·키 유형, 각 자료의 보호 요구사항, 키 관리 기능과 운영 이슈를 다룬다. 즉 알고리즘 선택뿐 아니라 생성·보호·사용·복구·폐기와 침해 대응을 포함하는 수명주기 관점이 필요하다. [2]
오답 포인트
강한 알고리즘은 잘못 보관된 키를 보호하지 않는다. 키의 사용기간과 접근권한, 백업·복구 및 폐기 절차까지 별도로 설계해야 한다.
출처 또는 검증 근거
[2] NIST, 「SP 800-57 Part 1 Rev. 5 — Recommendation for Key Management: Part 1 – General」, https://csrc.nist.gov/pubs/sp/800/57/pt1/r5/final