이번 글의 세 문항은 공개 기출문제의 원문을 재현하지 않은 창작 문제다. 정답과 해설은 게시 시점에 확인한 국가법령정보센터, NIST, KISA 공개 자료를 근거로 작성했다.

문제 1 — 비밀번호 저장

문제

개인정보의 안전성 확보조치에 따른 비밀번호 저장 방법으로 가장 적절한 것은?

선택지

  1. 운영자가 원문을 확인할 수 있도록 평문으로 저장한다.
  2. 복호화가 가능해야 하므로 대칭키로만 암호화한다.
  3. 복호화되지 않도록 일방향 암호화하여 저장한다.
  4. 전송 구간만 보호하면 저장 방식은 고려하지 않는다.

정답

3번

해설

개인정보보호위원회의 「개인정보의 안전성 확보조치 기준」은 비밀번호를 저장할 때 복호화되지 않도록 일방향 암호화하여 저장하도록 규정한다. 이는 운영자가 원문을 복원하는 기능을 기본 전제로 삼지 않는 통제다. [1]

오답 포인트

일반적인 데이터 암호화와 비밀번호 검증용 저장을 동일시하면 안 된다. 복호화 가능한 암호문을 보관하는 방식은 비밀번호 저장의 요구 취지와 맞지 않으며, 전송 암호화만으로 저장 보호 의무가 사라지지도 않는다.

출처 또는 검증 근거

[1] 국가법령정보센터, 「개인정보의 안전성 확보조치 기준」 제7조, https://www.law.go.kr/LSW//admRulInfoP.do?admRulSeq=2100000229672&chrClsCd=010201

문제 2 — 암호 키 관리

문제

NIST SP 800-57의 암호 키 관리 취지에 가장 부합하는 설명은?

선택지

  1. 알고리즘을 선택하면 키의 생성·보호·폐기는 별도 관리가 필요 없다.
  2. 키와 관련 메타데이터를 포함해 생성, 보호, 사용, 배포, 폐기 절차를 관리한다.
  3. 모든 키를 애플리케이션 소스 코드에 고정해 배포한다.
  4. 키 관리는 공개키 암호에만 적용된다.

정답

2번

해설

NIST SP 800-57은 암호 키 자료의 관리에 대해 키 유형별 보호, 키 관리 기능, 키와 인증서의 접근통제·식별·재고관리 등을 다루는 지침이다. 따라서 알고리즘 선택만으로 충분하지 않고 키의 생애주기와 보호 절차를 함께 설계해야 한다. [2]

오답 포인트

암호 알고리즘의 안전성은 키 관리 실패를 보완하지 못한다. 소스 코드에 비밀 키를 고정하거나 폐기·교체 절차를 두지 않는 것은 키 노출과 장기 사용 위험을 키운다.

출처 또는 검증 근거

[2] NIST CSRC, Recommendation for Key Management: Part 1 — General (SP 800-57 Rev. 5), https://csrc.nist.gov/pubs/sp/800/57/pt1/r5/final

문제 3 — 웹 입력값 검증

문제

웹 애플리케이션의 SQL Injection 위험을 줄이는 대책으로 가장 적절한 것은?

선택지

  1. 사용자 입력을 SQL 문자열에 그대로 이어 붙인다.
  2. 오류 메시지에 DB 질의문 전체를 노출한다.
  3. 매개변수화 질의 등으로 코드와 데이터를 분리하고 입력값을 검증한다.
  4. 클라이언트 측 JavaScript 검증만 수행한다.

정답

3번

해설

KISA 공개 교육 과정은 SQL Injection을 주요 웹 해킹 항목으로 다루고 보안 대책 학습을 포함한다. 실무적인 방어는 서버 측에서 입력값을 적절히 검증하고, 매개변수화 질의 등으로 사용자 데이터가 SQL 구문으로 해석되지 않도록 하는 것이다. [3]

오답 포인트

클라이언트 검증은 우회할 수 있으므로 서버 측 통제가 필요하다. 문자열 필터 하나에 의존하거나 상세 DB 오류를 외부에 노출하면 우회·정보노출 위험이 남는다.

출처 또는 검증 근거

[3] KISA 아카데미, 「실전형 사이버훈련장(Security-Gym)」 교육 과정, https://academy.kisa.or.kr/edu/apply/applyEduDetail.do?APPLY=02&SQ=9854