책임회피성 보장은 정보 보안의 목표가 될 수 없다.
보안 시스템은 행위자를 식별해 책임을 물을 수 있게 하는 책임추적성을 지향하며, 책임을 피할 수 있게 하는 것은 이 목표와 정반대다.
- 기밀성 보장: 인가된 주체만 정보를 열람하게 하는 핵심 보안 목표다.
- 무결성 보장: 정보가 허가 없이 변경되지 않도록 지키는 핵심 보안 목표다.
- 가용성 보장: 인가된 사용자가 필요할 때 자원을 쓸 수 있게 하는 핵심 보안 목표다.
- 사용자 인증: 접속 주체의 신원을 확인하는 기능으로, 보안 시스템이 갖추어야 할 요소다.
Diffie-Hellman은 공개 채널에서 값을 교환하는 것만으로 공통 비밀키를 만드는 키 합의 알고리즘이다.
양측이 각자의 비밀 지수로 계산한 공개값을 주고받아 같은 값 를 얻으며, 안전성은 이산대수 문제의 어려움에 기반한다.
- 전자서명 가능: 키 합의 전용이라 그 자체로 서명이나 부인방지를 제공하지 않는다.
- 인수분해 기반: 인수분해 문제에 기반한 것은 RSA이다.
- 중간자 공격 불가능: 교환 상대를 인증하지 않으므로 중간자 공격에 취약하다.
- 난수 노출 시에도 안전: 비밀 지수로 쓴 난수가 노출되면 상대의 공개값으로 공유 비밀을 계산할 수 있다.
취약한 간접 객체 참조는 OWASP 2013 목록에 없으며, 실제 항목명은 취약한 직접 객체 참조(Insecure Direct Object References)이다.
직접 객체 참조는 파일이나 DB 키 같은 내부 객체를 사용자에게 그대로 노출해, 값을 바꾸는 것만으로 권한 밖 자원에 접근하게 되는 취약점이다.
- 인젝션: 2013년 목록에 포함된다.
- 크로스 사이트 요청 변조: 2013년 목록에 포함된다.
- 인증 및 세션 관리 취약점: 2013년 목록에 포함된다.
- 검증되지 않은 리다이렉트 및 포워드: 2013년 목록에 포함된다.
TCP 세션 하이재킹은 시퀀스 넘버 제어의 문제를 이용하는 공격이다.
공격자는 서버와 클라이언트의 시퀀스 넘버를 비동기화시켜 정상 연결을 끊거나 혼란에 빠뜨린 뒤, 올바른 시퀀스 넘버를 넣은 패킷으로 세션을 가로챈다.
- 송신 포트 제어: 포트는 세션을 식별하는 값일 뿐, 이 공격이 파고드는 지점이 아니다.
- ACK 넘버 제어: ACK 넘버는 상대 시퀀스 넘버를 확인해 주는 값이며, 공격의 핵심은 시퀀스 넘버 쪽의 비동기화다.
- 수신 포트 제어: 수신 포트 역시 서비스를 구분하는 값으로, 공격의 원리와 무관하다.
- 체크섬 제어: 체크섬은 전송 오류 검출용으로, 세션 탈취의 원리와 무관하다.
ㄱ. 사용자 시스템에서 XSS 코드가 실행된다.
ㄴ. 웹 사용자는 공격자가 작성해 놓은 XSS 코드를 포함한 게시판의 글에 접근한다.
ㄷ. 공격자는 XSS 코드를 포함한 게시판의 글을 웹 서버에 저장한다.
ㄹ. 결과가 공격자에게 전달된다.
ㅁ. XSS 코드를 포함한 게시판의 글이 웹 서버에서 사용자에게 전달된다.
저장형 XSS의 순서는 ㄷ-ㄴ-ㅁ-ㄱ-ㄹ이다.
공격자가 코드가 든 글을 서버에 저장(ㄷ)하고, 사용자가 그 글에 접근(ㄴ)하면 서버가 글을 전달(ㅁ)한다. 이어서 사용자 시스템에서 코드가 실행(ㄱ)되고 그 결과가 공격자에게 전달(ㄹ)된다.
- ㄴ-ㄱ-ㄷ-ㄹ-ㅁ: 글이 저장되기도 전에 사용자가 접근하고 코드가 실행되므로 성립하지 않는다.
- ㄴ-ㄱ-ㄹ-ㄷ-ㅁ: 저장 단계가 결과 전달보다 뒤에 있어 인과 순서가 뒤집혔다.
- ㄴ-ㄷ-ㅁ-ㄱ-ㄹ: 사용자 접근이 공격자의 저장보다 앞서 성립하지 않는다.
- ㄷ-ㄴ-ㄱ-ㅁ-ㄹ: 서버가 글을 전달하기 전에 사용자 시스템에서 코드가 실행될 수는 없다.
ECC가 경량 응용분야에 적합하지 않다는 설명이 틀렸다.
ECC는 같은 보안 수준에서 키가 짧고 연산 부담이 작아 임베디드·모바일 같은 자원 제약 환경에 오히려 적합하다.
- 타원곡선 이산대수 기반: ECC의 안전성 근거로 옳다.
- 키 교환·암호화·전자서명 모두 가능: ECDH, ECIES, ECDSA 등이 있어 옳다.
- RSA보다 짧은 공개키: 비슷한 보안 수준을 더 짧은 키로 제공하므로 옳다.
- RSA보다 빠른 서명 생성: 비슷한 보안 수준에서 서명 생성이 더 빠르므로 옳다.
주어진 메시지 x에 대해, H(x)=H(y)인 x≠y를 만족하는 두 개의 메시지 x, y를 찾는 것이 어려울 때, 해시함수가 이 성질을 가지고 있다고 한다.
메시지 x가 먼저 주어진 상태에서 같은 해시값을 갖는 다른 메시지를 찾기 어려운 성질은 Second Pre-image Resistance(제2 역상 저항성)이다.
핵심은 “주어진 메시지 x에 대해”라는 조건이다. x가 고정되어 있으므로 , 인 y를 찾는 문제가 된다.
- Collision Resistance: 두 메시지를 모두 자유롭게 골라 같은 해시값을 찾기 어려운 성질로, 고정된 메시지가 없다.
- Integrity: 해시함수를 활용해 얻는 보안 목표이지, 입력 쌍을 찾기 어렵다는 성질의 이름이 아니다.
- Onewayness: 해시값으로부터 원래 입력을 찾기 어려운 성질로, 역상 저항성에 해당한다.
- Uniform Distribution: 출력값이 고르게 분포하는 성질로, 지문의 내용과 다르다.
제시된 기능 가운데 TPM의 기능으로 꼽히지 않는 것은 감사(Audit)이다.
TPM은 키를 안전하게 다루고 플랫폼 상태를 측정·증명하는 하드웨어 신뢰 기반이다. 사용자와 시스템의 활동을 기록·검토하는 감사는 운영체제나 별도 보안 시스템이 맡는 영역이다.
- 암호키 생성 및 저장: 칩 내부에서 키를 만들고 보호하는 대표 기능이다.
- 인증된 부트: 부팅 단계별 구성요소를 측정·기록해 신뢰할 수 있는 상태인지 나중에 확인할 수 있게 하는 기능이다.
- 디바이스 및 플랫폼 인증: 칩에 내장된 키로 기기와 플랫폼의 신원을 증명하는 기능이다.
- 원격 검증: 측정된 플랫폼 상태를 외부 검증자에게 증명하는 기능이다.
존재하지 않는 사용자가 접속한 것처럼 속여 동시 접속 자원을 소진시키는 공격은 SYN Flooding이다.
공격자는 위조한 출발지 주소로 SYN을 대량 전송하고 3-way 핸드셰이크를 완료하지 않는다. 서버는 반개방 연결로 백로그 큐가 가득 차 정상 사용자의 접속을 받지 못한다.
- Ping of Death: 규격을 넘는 크기의 ICMP 패킷을 보내 수신 시스템의 오작동을 노린다.
- Boink: 조작된 단편 정보를 지속적으로 보내 재조합 처리의 결함을 노린다.
- TearDrop: 오프셋이 겹치는 단편을 보내 재조합 과정의 오류를 일으킨다.
- Smurf: 출발지를 피해자로 위조한 ICMP 요청을 브로드캐스트해 응답을 피해자에게 집중시킨다.
MAC 검증에 공개키가 필요하다는 설명이 틀렸다.
MAC은 송신자와 수신자가 공유한 비밀키(대칭키)로 생성하고 검증한다. 공개키로 검증하는 방식은 전자서명이다.
- 위조 여부 판별: 수신 측이 다시 계산한 값과 비교해 위조나 변조를 확인할 수 있으므로 옳다.
- 송신자 인증: 비밀키를 공유한 상대만 올바른 MAC을 만들 수 있으므로 옳다.
- 해시함수 이용: HMAC처럼 해시함수로 MAC을 생성할 수 있으므로 옳다.
- 동일한 키 사용: 생성자와 검증자가 같은 키를 쓰므로 옳다.
ㄱ. 신분 위장 ㄴ. 메시지 변경 ㄷ. 도청
ㄹ. 트래픽 분석 ㅁ. 서비스 거부
수동적 공격에 해당하는 것은 도청과 트래픽 분석이다.
수동적 공격은 데이터를 변경하지 않고 엿보기만 하며, 능동적 공격은 데이터나 시스템 동작에 직접 개입한다.
- ㄱ 신분 위장: 다른 주체인 척 개입하므로 능동적 공격이다(X).
- ㄴ 메시지 변경: 전송 내용을 고치므로 능동적 공격이다(X).
- ㄷ 도청: 내용을 엿듣기만 하므로 수동적 공격이다(O).
- ㄹ 트래픽 분석: 통신 패턴을 관찰하기만 하므로 수동적 공격이다(O).
- ㅁ 서비스 거부: 서비스를 방해하므로 능동적 공격이다(X).
최량 증거의 원칙은 디지털 포렌식의 기본 원칙에 속하지 않는다.
포렌식의 기본 원칙은 정당성, 재현, 신속성, 연계보관성, 무결성으로 정리된다. 최량 증거의 원칙은 원본 제출을 요구하는 일반 증거법상의 규칙이다.
- 재현의 원칙: 같은 조건에서 같은 절차를 수행하면 같은 결과가 나와야 한다.
- 정당성의 원칙: 증거는 적법한 절차로 수집되어야 한다.
- 신속성의 원칙: 휘발성 증거가 사라지기 전에 절차가 빠르게 진행되어야 한다.
- 연계보관성의 원칙: 증거의 획득부터 제출까지 보관 주체와 이동 과정이 추적되어야 한다.
WEP이 MAC 주소 인증 프로토콜을 쓴다는 설명이 틀렸다.
WEP은 RC4 기반 암호화와 사전 공유키를 이용한다. MAC 주소 필터링은 WEP의 일부가 아니라 AP에서 별도로 설정하는 접근 제한 기능이다.
- IEEE 802.11 기반: 와이파이는 이 표준에 기반한 무선 랜 기술이므로 옳다.
- WEP의 취약점: 초기화 벡터 재사용 등의 약점이 밝혀졌으므로 옳다.
- WPA의 TKIP: WEP을 보완하려고 도입된 프로토콜이므로 옳다.
- WPA2의 AES-CCMP: WPA2의 필수 암호 방식이므로 옳다.
MAC을 사용자 계정 기반에 소유자가 보안 레벨을 수정할 수 있는 모델로 설명한 것이 틀렸다.
MAC은 시스템이 주체의 보안 허가와 객체의 보안 등급을 비교해 강제로 접근을 통제하므로, 자원 소유자가 임의로 등급을 바꿀 수 없다.
- DAC: 정보 소유자가 재량으로 접근 권한을 정하는 모델이므로 옳다.
- BLP의 쓰기 규칙: 상위 쓰기는 허용하고 하위 쓰기는 막아 정보 유출을 방지하므로 옳다.
- BLP와 Biba의 목적: 전자는 기밀성, 후자는 무결성에 초점을 두므로 옳다.
- RBAC: 개별 신분이 아닌 조직 내 역할에 권한을 부여하므로 옳다.
‘한 단계 앞의 암호 알고리즘의 출력을 암호화한 값’과 ‘평문 블록’을 XOR 연산하여 암호문 블록을 생성하는 운영모드이다.
암호화와 복호화가 같은 구조를 가지고 있다.
비트 단위의 에러가 있는 암호문을 복호화하면, 평문의 대응하는 비트에만 에러가 발생한다.
설명에 해당하는 운영모드는 OFB(Output Feedback)이다.
OFB는 앞 단계 암호 알고리즘의 출력을 다시 암호화해 키 스트림을 만들고, 이를 평문 블록과 XOR하여 암호문 블록을 생성한다.
복호화도 같은 키 스트림을 XOR하므로 두 과정의 구조가 같고, 암호문의 비트 에러는 평문의 대응 비트에만 나타나 에러가 전파되지 않는다.
- ECB: 각 평문 블록을 독립적으로 암호화할 뿐 앞 단계 출력을 쓰지 않으며, 암호문의 비트 에러는 해당 블록 전체를 손상시킨다.
- CBC: 평문 블록을 직전 암호문 블록과 XOR한 뒤 암호화하므로 암호화와 복호화의 구조가 다르고, 에러가 다음 블록까지 영향을 준다.
- CFB: 앞 단계 출력이 아니라 직전 암호문 블록을 암호화한 값을 XOR하므로, 암호문의 에러가 이후 블록으로 전파된다.
- CTR: 구조가 같고 비트 에러가 전파되지 않는 점은 비슷하지만, 앞 단계 출력이 아니라 카운터 값을 암호화한다.
캐싱 장비가 응답하지 못하게 설정한 GET 요청으로 서버를 마비시키는 공격은 HTTP CC(Cache-Control) 공격이다.
공격자는 요청 헤더의 Cache-Control 값을 no-cache 등으로 설정한다. 캐싱 장비가 대신 응답하지 못해 요청이 모두 웹 서버까지 직접 도달하고 부하가 집중된다.
- Slowloris 공격: 요청 헤더의 끝을 보내지 않아 연결을 오래 점유하는 공격이다.
- HTTP GET Flooding 공격: GET 요청을 대량으로 보내는 공격으로, 캐시 제어를 조작한다는 특징이 없다.
- ARP Spoofing 공격: IP에 대응하는 MAC 주소를 속여 트래픽을 가로채는 공격이다.
- DNS Spoofing 공격: DNS 응답을 위조해 사용자를 다른 주소로 유도하는 공격이다.
㉠에 들어갈 말은 SetUID이다.
SetUID가 설정된 파일은 실행하는 동안 실행자가 아닌 파일 소유자의 권한으로 동작한다. 소유자가 root이면 일반 사용자도 root 권한으로 실행하게 되어 백도어나 오버플로 공격에 악용된다.
- SetGID: 소유자가 아니라 파일 소유 그룹의 권한으로 실행되게 하는 설정이다.
- Sticky Bit: 공유 디렉터리에서 소유자만 자기 파일을 삭제할 수 있게 하는 설정이다.
- Finger: 사용자 정보를 조회하는 명령·서비스로, 파일 권한 설정이 아니다.
- Shadow: 패스워드 해시를 분리 저장하는 파일을 가리키며, 파일 권한 설정이 아니다.
버퍼 오버플로에 취약한 함수가 아닌 것은 strcmp이다.
strcmp는 두 문자열을 읽어 비교만 할 뿐 버퍼에 데이터를 쓰지 않으므로, 쓰기 범위를 넘기는 오버플로가 일어나지 않는다.
- scanf: %s 형식처럼 길이 제한 없이 입력을 받으면 버퍼를 넘칠 수 있다.
- gets: 입력 길이를 전혀 검사하지 않는 대표적인 위험 함수다.
- realpath: 변환 경로를 resolved_path 버퍼에 쓰므로 버퍼 크기가 부족하면 넘칠 수 있다.
- strcat: 대상 버퍼의 남은 크기를 확인하지 않고 문자열을 이어 붙인다.
제3자 제공 동의 시 알려야 할 사항에 제공받는 자의 개인정보 보호책임자는 포함되지 않는다.
시험일(2017.7) 당시 「정보통신망 이용촉진 및 정보보호 등에 관한 법률」 제24조의2제1항: 정보통신서비스 제공자는 이용자의 개인정보를 제3자에게 제공하려면 다음 각 호의 모든 사항을 이용자에게 알리고 동의를 받아야 하며, 어느 하나가 변경되는 경우에도 같다. 1. 개인정보를 제공받는 자, 2. 개인정보를 제공받는 자의 개인정보 이용 목적, 3. 제공하는 개인정보의 항목, 4. 개인정보를 제공받는 자의 개인정보 보유 및 이용 기간.
- 개인정보를 제공받는 자 — 제1호.
- 제공하는 개인정보의 항목 — 제3호.
- 제공받는 자의 개인정보 이용 목적 — 제2호.
- 제공받는 자의 개인정보 보유 및 이용기간 — 제4호.
현행(개정 2020.2.4)에서는 제24조의2 가 삭제되고 「개인정보 보호법」 제17조제2항이 같은 네 가지 사항에 동의 거부권과 불이익 내용을 더해 고지 사항으로 정한다.
이 프로토콜을 이용하여 서버와 클라이언트가 서로를 인증하고, 암호와 MAC 알고리즘, 그리고 SSL 레코드 안에 보낼 데이터를 보호하는 데 사용할 암호키를 협상할 수 있다.
설명에 해당하는 SSL 프로토콜은 Handshake Protocol이다.
Handshake Protocol은 데이터 전송에 앞서 서버와 클라이언트를 인증하고, 암호·MAC 알고리즘과 암호키를 협상한다.
- Alert Protocol: 오류나 경고 상황을 상대에게 알린다.
- Record Protocol: 협상된 키와 알고리즘으로 데이터를 단편화·보호해 전송한다.
- Change Cipher Spec Protocol: 협상한 암호 설정을 적용하기 시작한다는 신호를 보낸다.
- Encapsulating Security Payload Protocol: SSL이 아니라 IPsec에 속하는 프로토콜이다.