1. 메모리 시스템 (Memory Systems)
- 메모리 계층 구조 (Memory Hierarchy): 데이터 지역성(locality)을 이용해 성능 향상.
- Temporal Locality: 최근 접근한 데이터는 곧 다시 접근.
- Spatial Locality: 인접 데이터 접근 가능성 높음.
- 주요 계층: Registers > Cache > Main Memory > Disk.
- 캐시 성능 지표:
- Miss Rate = 캐시 미스 비율.
- AMAT = Hit Time + (Miss Rate × Miss Penalty).
- Mapping 방식: Direct-mapped, Set-associative, Fully-associative.
- 가상 메모리 (Virtual Memory):
- 프로세스 간 메모리 분리 및 보호.
- TLB (Translation Lookaside Buffer): 가상 주소와 물리 주소 매핑 캐시.
2. 사이드 채널 공격 (Side-Channel Attacks)
- 사이드 채널: 의도치 않은 데이터 유출 경로.
- 예: 실행 시간 차이, 전력 소비, 전자파 방출.
- 공격 유형:
- Cache Timing Attacks:
- Prime+Probe, Flush+Reload.
- Functional Unit Contention: 자원 공유로 인해 발생.
- Memory Hierarchy: 캐시 히트/미스 기반 공격.
- Cache Timing Attacks:
- 방어 기법:
- 하드웨어 기반: 캐시 파티셔닝, 랜덤화.
- 소프트웨어 기반: 플러시 상태, 스케줄링 수정.
3. 스펙터 및 멜트다운 (Spectre & Meltdown)
- 스펙터 (Spectre):
- Variant 1: 조건 분기 우회 (Boundary Check Bypass).
- Variant 2: 분기 타겟 주입 (Branch Target Injection).
- 공격 원리: 예측 실행(speculative execution)을 통해 민감 정보 유출.
- 멜트다운 (Meltdown):
- 커널 메모리 접근 허용 문제.
- 인텔 CPU에서 사용자-커널 메모리 간 격리 문제 발생.
- 방어 기법:
- LFENCE: 예측 실행 차단.
- KPTI: 커널/사용자 메모리 분리.
4. DRAM 신뢰성 및 RowHammer 공격
- RowHammer:
- DRAM 행을 반복적으로 활성화하면 인접 행에 간섭 발생.
- 보안 문제: 비트 플립으로 페이지 테이블 수정 가능.
- 방어 기법:
- Refresh 간격 단축, Naive Counter-based Protection.
- 확률적 인접 행 활성화.
5. 리눅스 커널 및 하드웨어 취약점
- 주요 취약점: Spectre, Meltdown, MDS, TAA 등.
- CPU 취약점 확인:
- /sys/devices/system/cpu/vulnerabilities 디렉토리 활용.
- 대응:
- 소프트웨어 패치: Retpoline, KPTI.
- 하드웨어 완화: SMT 비활성화, 캐시 플러시.
6. 방어 전략 (Defenses)
- InvisiSpec: 안전하지 않은 로드 명령을 캐시 계층에 보이지 않게.
- CleanupSpec: 잘못된 예측 실행으로 인한 캐시 상태를 원래대로 복구.
- Secure Cache:
- 파티셔닝: 공격자와 피해자 격리.
- 랜덤화: 주소 매핑과 타이밍 간의 상관관계 제거.
아래는 예상 문제 30개와 정답입니다.
1. 메모리 시스템
- 메모리 계층 구조에서 데이터 지역성(Locality)의 두 가지 유형을 설명하시오.
- Temporal Locality: 최근 접근한 데이터가 곧 다시 접근될 가능성이 높음.
- Spatial Locality: 인접한 메모리 주소들이 함께 접근될 가능성이 높음.
- AMAT(Average Memory Access Time)의 계산 공식을 쓰고, 각 요소를 설명하시오.
- 공식: AMAT=Hit Time+(Miss Rate×Miss Penalty)
- AMAT=Hit Time+(Miss Rate×Miss Penalty)\text{AMAT} = \text{Hit Time} + (\text{Miss Rate} \times \text{Miss Penalty})
- Hit Time: 캐시에서 데이터를 찾는 데 걸리는 시간.
- Miss Rate: 캐시에서 데이터를 찾지 못할 확률.
- Miss Penalty: 캐시 미스 후 데이터를 가져오는 데 걸리는 추가 시간.
- 캐시의 매핑 방식(Direct-mapped, Set-associative, Fully-associative)을 비교하시오.
- Direct-mapped: 한 블록은 특정 캐시 라인에만 매핑 가능. 단순하지만 충돌 빈번.
- Set-associative: 블록이 특정 세트의 여러 캐시 라인 중 하나에 매핑 가능. 균형적.
- Fully-associative: 블록이 모든 캐시 라인에 매핑 가능. 복잡하지만 유연.
- 캐시 미스의 세 가지 유형(Compulsory, Conflict, Capacity)을 설명하시오.
- Compulsory Miss: 캐시에 데이터가 처음 로드될 때 발생.
- Conflict Miss: 두 데이터가 같은 캐시 라인을 공유할 때 발생.
- Capacity Miss: 캐시 용량이 부족하여 발생.
- TLB(Translation Lookaside Buffer)의 역할과 작동 방식을 설명하시오.
- 역할: 가상 주소를 물리 주소로 매핑하여 메모리 접근 속도를 높임.
- 작동 방식: 가상 페이지 번호를 기반으로 물리 페이지 번호를 캐싱하고 빠르게 변환.
2. 사이드 채널 공격
- 사이드 채널과 코버트 채널(Covert Channel)의 차이를 설명하시오.
- 사이드 채널: 의도치 않은 정보 누출. 피해자가 정보를 무의식적으로 유출.
- 코버트 채널: 설계되지 않은 통신 채널. 주로 내부자 간 의도적 통신.
- 캐시 타이밍 공격(Cache Timing Attack)의 기본 원리를 설명하시오.
- 캐시 히트와 미스의 시간 차이를 이용해 민감 데이터를 추측.
- Prime+Probe와 Flush+Reload 공격을 비교하시오.
- Prime+Probe: 공격자가 캐시를 초기화 후 피해자의 접근 패턴을 모니터링.
- Flush+Reload: 공격자가 특정 데이터 플러시 후 피해자의 재로딩 여부를 확인.
- Functional Unit Contention이란 무엇이며, 이를 악용한 공격 사례를 설명하시오.
- 여러 스레드가 동일한 하드웨어 자원을 공유할 때 성능이 저하되는 현상.
- 사례: 공격자가 하드웨어 자원 사용 패턴을 모니터링하여 민감 데이터 추출.
- 사이드 채널 공격 방어를 위한 하드웨어와 소프트웨어 기반 전략을 각각 서술하시오.
- 하드웨어: 캐시 파티셔닝, 랜덤화, 노이즈 추가.
- 소프트웨어: 스케줄링 수정, 민감 데이터 접근 제한.
3. 스펙터(Spectre)와 멜트다운(Meltdown)
- 스펙터(Spectre) 공격에서 Variant 1과 Variant 2의 차이를 설명하시오.
- Variant 1: 경계 검사 우회(Bounds Check Bypass).
- Variant 2: 분기 타겟 주입(Branch Target Injection).
- 멜트다운(Meltdown) 공격의 원리와 보안 취약점을 서술하시오.
- 원리: 사용자 공간에서 커널 메모리에 접근.
- 취약점: 잘못된 접근 시 데이터가 캐시에 남음.
- Retpoline과 KPTI의 역할과 차이를 설명하시오.
- Retpoline: 간접 분기 보호를 위한 소프트웨어 패치.
- KPTI: 사용자와 커널 메모리 공간 분리.
- 예측 실행(speculative execution)이란 무엇이며, 왜 취약점으로 이어질 수 있는지 설명하시오.
- 정의: 분기를 미리 실행하여 성능 향상.
- 취약점: 잘못된 분기 결과도 캐시에 남음.
- 스펙터와 멜트다운이 현대 CPU 설계에 미친 영향을 논하시오.
- 성능 저하를 감수하고 보안 강화 설계 도입.
4. DRAM 신뢰성 및 RowHammer
- RowHammer 공격의 원리를 설명하시오.
- 특정 행을 반복 활성화하여 인접 행의 데이터 비트가 뒤집힘.
- RowHammer 공격이 발생할 수 있는 하드웨어 조건은 무엇인가?
- DRAM의 낮은 전압 안정성, 높은 밀도.
- RowHammer로 인한 비트 플립(Bit Flip)이 보안에 미치는 영향을 서술하시오.
- 페이지 테이블 수정, 메모리 접근 권한 상승.
- DRAM Refresh 간격 단축의 장점과 단점을 설명하시오.
- 장점: RowHammer 공격 완화.
- 단점: 전력 소비 증가.
- Probabilistic Adjacent Row Activation의 원리와 보안 효과를 설명하시오.
- 인접 행을 확률적으로 리프레시하여 간섭 감소.
5. 리눅스 커널 및 하드웨어 취약점
- 리눅스에서 CPU 취약점을 확인할 수 있는 경로와 명령어를 쓰시오.
- 경로: /sys/devices/system/cpu/vulnerabilities
- 명령어: grep . /sys/devices/system/cpu/vulnerabilities/*
- iTLB Multihit 공격의 원리와 완화 방법을 설명하시오.
- 원리: iTLB 항목이 중복되어 CPU 락업 발생.
- 완화: 모든 iTLB 항목을 4K로 강제 변환.
- MDS(Microarchitectural Data Sampling) 공격의 주요 특징과 영향을 설명하시오.
- 특징: CPU 버퍼에서 데이터 유출.
- 영향: 민감 데이터 노출.
- 리눅스 커널에서 Spectre Variant 2 방어를 위해 사용하는 방법을 서술하시오.
- Retpoline, IBPB(간접 분기 예측 차단).
- TSX Asynchronous Abort(TAA) 공격이란 무엇이며, 영향을 받는 CPU 유형을 서술하시오.
- 정의: TSX 메모리 트랜잭션 롤백 중 데이터 유출.
- CPU: TSX 지원 인텔 프로세서.
6. 방어 전략
- InvisiSpec의 작동 원리와 주요 장단점을 설명하시오.
- 원리: 안전하지 않은 로드를 캐시 계층에서 숨김.
- 장점: 정보 유출 방지.
- 단점: 성능 저하.
- CleanupSpec의 역할과 캐시 상태 복구 과정을 서술하시오.
- 역할: 잘못된 예측 실행 후 캐시 복구.
- 복구 과정: L1/L2 캐시 라인 무효화.
- Secure Cache의 세 가지 주요 설계 기법(Partitioning, Randomization, Differentiation)을 설명하시오.
- Partitioning: 캐시 공간 분리.
- Randomization: 주소 매핑 랜덤화.
- Differentiation: 민감 데이터 레이블링.
- 캐시 파티셔닝(Cache Partitioning)의 정적(static)과 동적(dynamic) 방식의 차이를 비교하시오.
- 정적: 고정된 파티션.
- 동적: 필요에 따라 크기 조정.
- Scatter Cache의 랜덤화 기법이 공격 방어에 미치는 영향을 설명하시오.
- 메모리 주소와 캐시 매핑 간의 관계를 분리하여 타이밍 공격 방지.
이 예상 문제와 정답으로 충분히 시험 준비를 할 수 있을 것입니다. 추가 질문이 있으면 알려주세요!
Rcmd
Sdscv