이번 글의 세 문항은 공개 기출문제의 원문을 재현하지 않은 창작 문제다. 정답과 해설은 게시 시점에 확인한 NIST, NIST SP 800-53, OWASP의 공개 자료를 근거로 작성했다.

문제 1 — AES의 구조와 키 길이

문제

NIST FIPS 197이 규정하는 AES에 대한 설명으로 옳은 것은?

선택지

  1. AES는 공개키 암호이며 키 길이는 256비트 하나만 허용된다.
  2. AES는 대칭 블록 암호이며 AES-128·AES-192·AES-256은 모두 128비트 블록을 사용한다.
  3. AES는 해시 함수이므로 복호화가 불가능하다.
  4. AES는 전자서명만을 위한 알고리즘이며 데이터 암호화에는 사용할 수 없다.

정답

2번

해설

NIST FIPS 197은 AES를 대칭 블록 암호로 설명하고 AES-128, AES-192, AES-256을 규정한다. 세 변형은 모두 128비트 블록을 처리하며 숫자는 암호화 키 길이를 뜻한다. [1]

오답 포인트

대칭 암호는 동일한 비밀키 계열을 사용해 암호화와 복호화를 수행한다. AES의 숫자는 블록 길이가 아니라 키 길이이며, AES는 해시 함수나 전자서명 알고리즘이 아니다.

출처 또는 검증 근거

[1] NIST, FIPS 197: Advanced Encryption Standard, 초록 및 알고리즘 개요: https://csrc.nist.gov/pubs/fips/197/final

문제 2 — 최소권한 원칙

문제

시스템 프로세스와 사용자 계정에 최소권한 원칙을 적용한 운영으로 가장 적절한 것은?

선택지

  1. 운영 편의를 위해 모든 애플리케이션 계정에 관리자 권한을 부여한다.
  2. 장애 대응을 위해 모든 프로세스가 모든 파일을 읽고 쓰도록 한다.
  3. 업무 수행에 필요한 승인된 접근만 허용하고, 역할과 기능에 필요한 범위보다 높은 권한은 부여하지 않는다.
  4. 권한을 한 번 부여하면 직무와 업무 범위가 바뀌어도 유지한다.

정답

3번

해설

NIST SP 800-53 Rev. 5의 AC-6은 사용자 또는 사용자를 대신하는 프로세스가 조직 업무 수행에 필요한 승인된 접근만 갖도록 최소권한을 적용하라고 설명한다. 최소권한은 사용자뿐 아니라 시스템 프로세스에도 적용된다. [2]

오답 포인트

관리자 권한의 일괄 부여는 침해·오작동의 영향 범위를 키운다. 최소권한은 단순히 계정 수를 줄이는 개념이 아니라 읽기·쓰기·관리 기능을 실제 업무 필요에 맞게 제한하는 원칙이다.

출처 또는 검증 근거

[2] NIST, SP 800-53 Rev. 5, AC-6 Least Privilege: https://csrc.nist.gov/files/pubs/sp/800/53/r5/upd1/final/docs/sp800-53r5-control-catalog.xlsx

문제 3 — SQL 인젝션 대응

문제

사용자가 입력한 검색어를 SQL에 반영하는 애플리케이션의 SQL 인젝션 방어 방법으로 가장 적절한 것은?

선택지

  1. 입력값을 문자열 연결로 SQL 문장에 삽입한 뒤 특수문자 일부만 삭제한다.
  2. 모든 요청을 DBA 권한의 데이터베이스 계정으로 실행한다.
  3. SQL 구조와 값을 분리한 매개변수화 질의를 사용하고, 애플리케이션 계정에는 최소권한을 적용한다.
  4. 오류 메시지에 실행된 SQL과 데이터베이스 계정 정보를 그대로 노출한다.

정답

3번

해설

OWASP는 준비된 문장과 매개변수화 질의를 사용해 데이터 값을 SQL 문법과 분리하라고 권고한다. 또한 최소권한은 인젝션이 성공했을 때 피해 범위를 줄이는 보완 통제이지만, 매개변수화를 대체하지는 않는다. [3]

오답 포인트

수동 이스케이프만으로 방어하려는 방식은 안전한 API 사용의 대체재가 아니다. 저장 프로시저도 내부에서 동적 SQL을 문자열 연결로 만들면 안전하지 않을 수 있으며, 애플리케이션 계정에 DBA 권한을 주는 것은 피해를 확대한다.

출처 또는 검증 근거

[3] OWASP, SQL Injection Prevention Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html