암호 기술의 기초와 응용
블록 암호와 스트림 암호, AES, 블록 암호 운용 모드(ECB·CBC·CTR·GCM), 초기화 벡터와 논스, 패딩 오라클 공격, 키 길이와 무차별 대입의 수고, SHA-2와 SHA-3, 길이 확장 공격과 HMAC, 생일 공격의 계산, 키 유도 함수, 작은 수로 확인하는 RSA 암호와 디피-헬먼 키 교환, 타원 곡선 암호의 키 길이, 전방향 안전성, 인증 기관과 인증서 체인, 인증서 투명성, TLS 1.3, 0-RTT와 리플레이, 상호 TLS, 그로버 알고리즘과 키 길이, ML-KEM·ML-DSA·SLH-DSA, 하이브리드 키 교환, HSM, 봉투 암호화, 키 로테이션, 암호 민첩성을 계산 문제를 섞은 객관식 문제로 학습합니다.
암호 기술의 기초와 응용: 핵심 정리
암호는 알고리즘이 안전한 것만으로는 쓸모가 없습니다. 같은 논스를 두 번 사용하거나, ECB 모드로 암호화하거나, 인증서의 호스트 이름을 확인하지 않는 등의 사용상 실수로 강한 암호도 쉽게 뚫립니다. 여기서는 암호가 실제 시스템과 프로토콜 안에서 어떻게 조합되어 쓰이는지를 한 단계 깊이 학습합니다.
먼저 대칭 키 암호로서 블록 암호와 스트림 암호, AES의 블록 길이와 키 길이, 블록 암호 운용 모드(ECB·CBC·CTR·GCM)와 초기화 벡터·논스의 조건, 패딩과 패딩 오라클 공격, 인증 암호화(AEAD)를 다루고, CTR 모드에서 논스를 재사용했을 때 평문이 새어 나가는 모습을 계산으로 확인합니다. 이어서 SHA-2와 SHA-3, 길이 확장 공격과 HMAC, 생일 공격에 의한 블록 길이 64비트의 한계, 키 유도 함수를 학습하고, RSA 암호와 디피-헬먼 키 교환을 작은 수로 계산하여 이산 로그 문제, 중간자 공격, 타원 곡선 암호의 키 길이 기준, 전방향 안전성, ECDSA의 난수 취급을 확인합니다. 후반에서는 인증 기관과 인증서 체인, 호스트 이름 확인, 인증서 투명성, TLS 1.3의 변경점과 암호 스위트, 0-RTT의 리플레이, 상호 TLS를 다루고, 양자 내성 암호로서 그로버 알고리즘과 키 길이, 2024년 8월에 표준화된 ML-KEM·ML-DSA·SLH-DSA, 키 캡슐화 메커니즘, 하이브리드 키 교환, 이행 시기에 대한 사고방식을 학습합니다. 마지막으로 HSM, 봉투 암호화, 키 로테이션, 암호 민첩성 같은 키 관리를 확인합니다. IT 자격시험의 보안 분야 학습에도 도움이 됩니다. 계산 문제의 값은 오답 선택지의 값도 포함하여 Python으로 계산해 확인했습니다. 대칭 키 암호와 공개 키 암호의 기본, 키 개수 계산, 해시 함수의 성질과 비밀번호 저장, 디지털 서명과 MAC의 차이는 '정보 보안 기초', 사이드 채널 공격과 상수 시간 구현, AES-NI, TPM, 진성 난수 생성기는 '하드웨어 보안', 쇼어 알고리즘과 양자 컴퓨터의 규모는 '양자 컴퓨터의 하드웨어', TLS의 왕복 횟수와 HTTPS로 보호되는 것은 '네트워크 기초', JWT와 OAuth는 '웹 기술 기초', 엔트로피는 '정보 이론과 부호의 기초' 분야에서 다룹니다.
암호 기술의 기초와 응용 전체 문제 (40)
- 대칭 키 암호 중 블록 암호와 스트림 암호의 차이에 대한 설명으로 올바른 것은?
- 현재 널리 쓰이는 블록 암호 AES의 블록 길이와 키 길이의 조합으로 올바른 것은?
- 이미지 데이터를 AES의 ECB 모드로 암호화했더니, 암호화한 후의 이미지에서도 원래 그림의 윤곽을 알아볼 수 있었다. 이 원인으로 올바른 것은?
- AES를 CBC 모드로 사용할 때 초기화 벡터(IV)의 취급으로 적절한 것은?
- AES(블록 길이 16바이트)를 CBC 모드로 사용하고, 패딩에는 PKCS#7 방식을 사용한다. PKCS#7 방식에서는 부족한 바이트 수를 n이라 할 때 값이 n인 바이트를 n개 덧붙이며, 평문의 길이가 정확히 16의 배수일 때도 값이 16인 바이트를 16개 덧붙인다. 96바이트의 평문을 암호화했을 때 암호문의 길이(IV는 포함하지 않음)는?
- CBC 모드로 암호화한 데이터를 받는 서버가, 복호화한 후의 패딩이 올바르지 않을 때와 패딩은 올바르지만 내용 검사에 실패했을 때 서로 다른 오류를 돌려주고 있었다. 이 상황에 대한 설명으로 올바른 것은?
- 블록 암호의 CTR 모드(카운터 모드)의 특징으로 올바른 것은?
- CTR 모드에서 실수로 같은 키와 같은 논스를 사용해 두 메시지를 암호화했다. 어떤 위치의 바이트에 대해 첫 번째 평문 P₁은 01001000(ASCII의 'H'), 그 암호문 C₁은 01110100, 두 번째 암호문 C₂는 01010101이다. 공격자가 P₁을 알고 있을 때, 같은 위치의 두 번째 평문 P₂는?
- AES-GCM 같은 인증 암호화(AEAD)가 하나의 처리로 제공하는 것으로 올바른 것은?
- AES-GCM에서 사용하는 96비트 논스(IV)에 대한 설명으로 올바른 것은?
- 어떤 장치에서 56비트 키를 모두 시도하는 무차별 대입에 약 20시간이 걸린다. 같은 장치에서 64비트 키를 모두 시도하는 데 걸리는 시간에 가장 가까운 것은?
- 해시 함수 SHA-2와 SHA-3에 대한 설명으로 올바른 것은?
- 비밀 키 K와 메시지 m을 이은 값의 해시값 SHA-256(K ‖ m)을 변조 검출용 태그로 사용하는 것은 위험하다고 여겨진다. 그 이유로 올바른 것은?
- 1 GiB = 2³⁰바이트, 1 EiB = 2⁶⁰바이트로 한다. 블록 길이가 64비트인 블록 암호(3DES 등)를 CBC 모드로 사용하여, 하나의 키로 대량의 데이터를 암호화한다. 암호문 블록을 무작위 64비트 값으로 간주할 때, 생일 역설에 의해 같은 암호문 블록 쌍이 나타날 확률을 무시할 수 없게 되는 데이터양의 기준은?
- TLS 1.3 등의 프로토콜에서 ECDHE 키 교환으로 얻은 공유 비밀을 그대로 암호 키로 사용하지 않고, HKDF 같은 키 유도 함수(KDF)를 거쳐 키를 만드는 이유로 적절한 것은?
- RSA 암호의 구조를 작은 수로 확인한다. 소수 p = 5, q = 11로부터 n = pq를 만들고, 공개 지수를 e = 3으로 한다. φ(n) = (p − 1)(q − 1)이라 할 때, e × d ≡ 1 (mod φ(n))을 만족하는 비밀 지수 d(0 < d < φ(n))는?
- RSA 암호에서 공개 키를 n = 55, e = 3으로 한다. 평문 m = 7을 c = m^e mod n으로 암호화했을 때의 암호문 c는?
- 교과서 그대로의 RSA 암호(평문 m을 그대로 c = m^e mod n으로 하는 방식)를 패딩을 붙이지 않고 실제 통신에 사용하는 것의 문제점으로 올바른 것은?
- 디피-헬먼 키 교환에서는 소수 p와 생성원 g를 공개하고, A 씨와 B 씨가 각각 비밀 값 a, b를 골라 g^a mod p와 g^b mod p를 서로 보낸다. 도청자가 이렇게 공개된 값을 모두 보더라도 공유 비밀 g^(ab) mod p를 구할 수 없다고 생각되는 이유로 올바른 것은?
- 디피-헬먼 키 교환을 작은 수로 확인한다. p = 23, g = 5로 하고, A 씨는 비밀 값 a = 6, B 씨는 비밀 값 b = 15를 고른다. A 씨는 A = g^a mod p를, B 씨는 B = g^b mod p를 서로 보낸다. 두 사람이 얻는 공유 비밀은?
- 인증을 하지 않는 디피-헬먼 키 교환의 약점과 그 대책의 조합으로 올바른 것은?
- NIST SP 800-57의 표에서 128비트 대칭 키 암호(AES-128)와 같은 정도의 안전성 기준으로 여겨지는 RSA 암호의 키 길이(n의 비트 수)와 타원 곡선 암호의 키 길이의 조합은?
- TLS에서 서버 인증서의 개인 키가 나중에 유출되더라도 그 이전에 기록된 통신은 복호화되지 않는 성질(전방향 안전성)을 얻을 수 있는 키 교환 방법은?
- ECDSA 디지털 서명에서는 서명마다 비밀 난수 k를 사용한다. k의 취급에 대한 설명으로 올바른 것은?
- 브라우저가 웹 서버의 인증서를 검증할 때의 인증서 체인에 대한 설명으로 올바른 것은?
- TLS 인증서 검증에서는 서명 체인과 유효 기간을 확인할 뿐만 아니라, 접속하려 한 호스트 이름이 인증서의 SAN(주체 대체 이름)에 포함되는지도 확인한다. 이 확인이 꼭 필요한 이유로 올바른 것은?
- 인증서 투명성(Certificate Transparency, CT) 구조에 대한 설명으로 올바른 것은?
- TLS 1.3(RFC 8446)에서 TLS 1.2로부터 바뀐 점으로 올바른 것은?
- TLS 1.3의 암호 스위트 TLS_AES_128_GCM_SHA256이 지정하는 것의 조합으로 올바른 것은?
- TLS 1.3의 0-RTT(이전 연결에서 얻은 사전 공유 키를 사용하여, 첫 메시지와 함께 '얼리 데이터'를 보내는 방법)의 주의점으로 올바른 것은?
- 상호 TLS(mTLS)에 대한 설명으로 올바른 것은?
- 키 길이가 n비트인 대칭 키 암호의 키를 양자 컴퓨터의 그로버 알고리즘으로 찾으면, 필요한 계산 횟수는 약 2^(n/2)회가 된다고 한다. 이 단순한 기준으로 생각했을 때, 양자 컴퓨터에 대한 AES-128의 안전성으로 가장 가까운 것은?
- 미국 NIST가 2024년 8월에 공표한 양자 내성 암호 표준과 그 종류의 조합으로 올바른 것은?
- ML-KEM 같은 키 캡슐화 메커니즘(KEM)의 사용 방법에 대한 설명으로 올바른 것은?
- 양자 내성 암호로 이행하는 도중에 사용되는, X25519(타원 곡선을 사용하는 디피-헬먼 키 교환)와 ML-KEM을 조합한 하이브리드 키 교환의 사고방식으로 올바른 것은?
- 암호 이행 시기를 생각할 때, '데이터를 비밀로 유지해야 하는 연수 x와 새로운 암호로의 이행에 걸리는 연수 y의 합이, 암호를 깰 수 있는 양자 컴퓨터가 나타날 때까지의 연수 z를 넘는다면 이미 위험하다'는 사고방식(모스카 부등식)이 있다. x = 10년, y = 5년이고 z를 가령 12년으로 할 때, 올바른 판단은?
- HSM(하드웨어 보안 모듈)의 역할로 올바른 것은?
- DEK를 데이터 암호화 키, KEK를 키 암호화 키라 한다. 클라우드 스토리지 등에서 사용되는 봉투 암호화에 대한 설명으로 올바른 것은?
- 암호 키를 일정 기간마다 새로운 키로 바꾸는 키 로테이션의 주된 목적은?
- 시스템 설계에서 암호 민첩성(암호 방식을 교체하기 쉽게 해 두는 성질)을 높이는 대처로 적절한 것은?
컴퓨터 시스템의 다른 분야
- 컴퓨터 산술 IEEE 754, 고정소수점, 반올림 오차
- 확률·통계와 대기행렬 경우의 수·확률 분포·추정과 검정·M/M/1
- 정보 이론과 부호의 기초 엔트로피·허프만 부호·해밍 부호·CRC
- ISA와 어셈블리 RISC-V, 주소 지정 방식, 호출 규약
- 컴파일러 구문 분석, SSA, 최적화, 레지스터 할당
- 링커, 로더, 실행 파일 ELF, 심벌 해석, 재배치, 동적 링킹
- OS와 하드웨어 인터럽트, 시스템 콜, 페이지 폴트
- Linux와 커맨드 라인 기초 셸·권한·파이프·스크립트
- 메모리 계층 구조 캐시, 교체 정책, 세 가지 미스
- 멀티코어와 동기화 MESI, 원자적 명령어, 메모리 배리어
- GPU 프로그래밍 워프, 공유 메모리, 병합 접근, 점유율
- AI 하드웨어·소프트웨어 스택 추론과 학습, 양자화, 루프라인 모델
- 머신러닝의 기초 학습의 종류·평가 지표·신경망
- 임베디드 시스템과 펌웨어 GPIO, UART/SPI/I2C, RTOS
- HDL과 검증 Verilog, 래치, 상태 머신, 테스트벤치
- I/O 인터페이스와 버스 PCIe, USB, SerDes, CXL
- 네트워크 기초 TCP/IP, 서브넷 계산, DNS, TLS
- 웹 기술 기초 HTTP·Cookie·REST·CORS·캐시
- 무선 통신의 기초 변조·OFDM·MIMO·RF 회로
- 정보 보안 기초 암호, 인증, 웹 공격과 대책
- 데이터베이스 기초 SQL, 정규화, 트랜잭션
- 자료 구조와 알고리즘 시간 복잡도, 탐색, 정렬, 그래프
- 프로그래밍의 기초(의사 코드 트레이스) 의사 코드, 트레이스, 배열, 재귀
- C 언어 기초 포인터·메모리·미정의 동작
- 소프트웨어 개발과 프로젝트 관리 개발 프로세스, 테스트, 일정·비용 관리
- 경영 전략과 회계의 기초(전략 분야) 회계, 손익분기점, 경영 전략, 마케팅
- 서비스 관리와 시스템 감사 SLA·인시던트와 문제·감사와 내부 통제
- 시스템 구성과 신뢰성 설계 이중화·RAID·백업·클라우드
- 클라우드와 컨테이너의 기초 Docker·Kubernetes·공동 책임 모델·IaC
- 성능 분석 암달의 법칙, CPI, 병목
- 하드웨어 보안 사이드 채널, 시큐어 부트, TEE, PUF
- 전력 관리 DVFS, 파워 게이팅, 슬립 상태