정보보안기사 학습 문제 17 — AES·최소권한·SQL 인젝션 방어
이번 글의 세 문항은 공개 기출문제의 원문을 재현하지 않은 창작 문제다. 정답과 해설은 게시 시점에 확인한 NIST, NIST SP 800-53, OWASP의 공개 자료를 근거로 작성했다.
문제 1 — AES의 구조와 키 길이
문제
NIST FIPS 197이 규정하는 AES에 대한 설명으로 옳은 것은?
선택지
- AES는 공개키 암호이며 키 길이는 256비트 하나만 허용된다.
- AES는 대칭 블록 암호이며 AES-128·AES-192·AES-256은 모두 128비트 블록을 사용한다.
- AES는 해시 함수이므로 복호화가 불가능하다.
- 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 — 최소권한 원칙
문제
시스템 프로세스와 사용자 계정에 최소권한 원칙을 적용한 운영으로 가장 적절한 것은?
선택지
- 운영 편의를 위해 모든 애플리케이션 계정에 관리자 권한을 부여한다.
- 장애 대응을 위해 모든 프로세스가 모든 파일을 읽고 쓰도록 한다.
- 업무 수행에 필요한 승인된 접근만 허용하고, 역할과 기능에 필요한 범위보다 높은 권한은 부여하지 않는다.
- 권한을 한 번 부여하면 직무와 업무 범위가 바뀌어도 유지한다.
정답
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 인젝션 방어 방법으로 가장 적절한 것은?
선택지
- 입력값을 문자열 연결로 SQL 문장에 삽입한 뒤 특수문자 일부만 삭제한다.
- 모든 요청을 DBA 권한의 데이터베이스 계정으로 실행한다.
- SQL 구조와 값을 분리한 매개변수화 질의를 사용하고, 애플리케이션 계정에는 최소권한을 적용한다.
- 오류 메시지에 실행된 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