Daily CS) Computer Memory

goldenGlow_21·2025년 4월 16일
0

Daily CS

목록 보기
41/50

Computer Memory

device that stores information, such as data and programs, for immediate use in the computer

(사진은 삼성의 SDRAM)

최근 데스크탑을 구매하기도 했고, IoT기기의 하드웨어를 분석하는 프로젝트를 수행하면서 메모리에 대한 공부를 꽤 해볼 수 있었다. 다만 그 종류와 사용되는 기술들이 다양하고 많은 바, 조금 헷갈리기 시작해 한번 날 잡고 정리해보고 싶어 준비해보았다.


1. 컴퓨터 메모리의 분류 체계와 기본 개념

1.1 주기억장치 vs 보조기억장치

주기억장치(Main Memory) 는 CPU가 직접 접근 가능한 메모리로, 시스템이 실행 중인 프로그램과 데이터를 일시적으로 저장한다. 대표적으로 DRAM 기반의 RAM이 여기에 해당한다. 전원이 꺼지면 저장된 데이터가 사라지는 휘발성(Volatile) 메모리이다. CPU는 연산 과정에서 이 메모리를 거쳐야 하므로, 속도가 매우 중요하다.

보조기억장치(Secondary Storage) 는 데이터의 영구 저장을 위한 장치로, 전원이 꺼져도 데이터가 유지된다. 대표적으로는 HDD, SSD, USB 플래시 드라이브, SD 카드 등이 있다. 다만 CPU가 직접 접근할 수 없기 때문에, 데이터는 RAM을 통해 중간적으로 전달된다.

구분주기억장치보조기억장치
속도빠름 (ns~µs 단위)느림 (ms 단위)
휘발성 여부휘발성비휘발성
예시DRAM, SRAMSSD, HDD, USB
접근 경로CPU 직접 접근 가능CPU 직접 접근 불가

1.2 휘발성 vs 비휘발성 메모리

휘발성 메모리(Volatile Memory) 는 전원이 꺼지면 저장된 데이터가 모두 삭제되는 메모리다. 대표적으로 SRAMDRAM이 있다. 시스템 성능과 응답속도를 결정하는 핵심 요소이며, 일시적인 작업공간으로 활용된다.

  • SRAM(Static) 은 리프레시(refresh)가 필요 없어 속도가 빠르지만, 비싸고 용량이 작다.
  • DRAM(Dynamic) 은 주기적인 리프레시가 필요하지만, 용량이 크고 저렴하다.

비휘발성 메모리(Non-Volatile Memory) 는 전원이 차단되어도 데이터가 보존된다. 주로 부팅 시 필요한 정보, 펌웨어, 설정값 등을 저장하는 데 사용된다.

  • ROM: 하드코딩된 정보 (수정 불가)
  • EEPROM: 바이트 단위 수정 가능
  • Flash Memory: 블록 단위 삭제 및 쓰기 (SSD, USB 등)
  • NVRAM: RAM처럼 빠르지만 데이터 유지됨 (배터리 백업 or 특수 소자)
종류휘발성 여부용도예시
SRAM휘발성CPU 캐시L1/L2 캐시
DRAM휘발성시스템 메인 메모리DDR4/DDR5 RAM
Flash비휘발성펌웨어 저장, 대용량 저장SSD, USB
EEPROM비휘발성설정값 저장IoT 디바이스
NVRAM비휘발성빠른 설정 저장라우터 설정 영역

1.3 메모리 계층 구조와 접근 속도

메모리 계층 구조(Memory Hierarchy) 는 속도와 비용에 따라 메모리를 구분하는 체계로, 전체 시스템의 성능 최적화를 위한 구조다. 위로 갈수록 빠르고 비싸며, 용량이 작다.

  1. 레지스터(Register): CPU 내부의 가장 빠른 저장소. 수십 비트 크기.
  2. 캐시 메모리(Cache): CPU와 RAM 사이의 고속 SRAM. 일반적으로 L1, L2, L3 단계로 구성된다.
  3. 주기억장치(Main Memory): DRAM 기반. 실행 중인 프로그램과 데이터를 저장.
  4. 보조기억장치(Storage): SSD/HDD. 실행 전 프로그램과 영구 데이터 저장.
  5. 원격 저장소/클라우드: 가장 느리지만 무제한 확장이 가능.
계층종류평균 접근 속도비고
1단계레지스터1 ns 이내CPU 코어 내부, 초고속
2단계L1/L2/L3 캐시1~10 nsSRAM 기반, 최근 사용 데이터 저장
3단계DRAM50~100 ns메인 메모리
4단계SSD100 µs 이상플래시 메모리 기반 저장소
5단계HDD/클라우드ms 단위가장 느리지만 대용량 저장 가능

이 계층 구조를 통해 고속 데이터 접근은 상위 계층에서, 대용량 데이터 저장은 하위 계층에서 이루어지며, 운영체제는 이를 투명하게 연결해 성능과 효율을 동시에 달성한다.


2. ROM 계열 메모리: 특성과 용도

2.1 ROM의 원리와 제조 방식

ROM(Read-Only Memory) 은 한 번 데이터를 기록하면 변경이 불가능하거나 극히 제한적인 방식으로만 변경 가능한 비휘발성 메모리다. 주로 부트스트랩 코드, 펌웨어, 하드웨어 초기화 정보 등을 저장하는 데 사용된다. 전원이 꺼져도 데이터가 유지되며, CPU가 직접 읽기만 가능하다.

제조 방식

ROM은 제조 시 다음 두 가지 방식 중 하나로 제작된다:

  • 마스크드 ROM(Masked ROM): 반도체 제작 공정 중 특정 위치에 전기적으로 '0' 또는 '1'이 되도록 영구적으로 회로가 형성된다. 데이터는 변경 불가능하며, 보통 대량생산 제품(예: 완성형 디지털 기기)에 쓰인다.

  • Field-Programmable ROM (PROM): 사용자가 처음 1회만 데이터를 기록할 수 있는 방식으로, 생산 후 사용자에 의해 소거 없이 1회 프로그래밍된다.

ROM의 가장 큰 장점은 안정성이며, 단점은 유연성이 없다는 점이다. 펌웨어를 업데이트해야 하는 상황에서는 EEPROM이나 플래시 메모리로 대체된다.

2.2 PROM, EPROM, EEPROM의 차이

항목PROMEPROMEEPROM
수정 가능성1회 프로그래밍만 가능자외선을 통해 전체 삭제 후 재기록 가능전기적으로 특정 바이트 단위 삭제/기록 가능
삭제 방식불가자외선(UV) 소거 (창 있는 패키지)전기 신호를 통한 삭제/수정 가능
사용 예시단일 프로그래밍 펌웨어개발 및 테스트용 펌웨어 저장부트로더, 설정 정보 저장
접근 단위전체전체바이트 단위
쓰기 속도빠름느림상대적으로 느림

요약:

  • PROM(Programmable ROM): 제조 후 초기 1회만 기록 가능, 오류 시 재사용 불가.
  • EPROM(Erasable Programmable ROM): 자외선을 비춰서만 초기화 가능, 기록 시 전체 지워야 함.
  • EEPROM(Electrically Erasable Programmable ROM): 바이트 단위로 수정 가능하여 내장형 설정값 저장에 널리 사용됨. 하지만 쓰기 사이클 수명이 존재하여 지속적인 기록에는 부적합.

2.3 플래시 메모리의 구조와 블록 관리 기법

플래시 메모리(Flash Memory) 는 EEPROM에서 파생된 형태로, 블록 단위로 데이터를 삭제하고 다시 기록할 수 있는 비휘발성 저장장치이다. SSD, USB, SD 카드, 라우터 펌웨어 등에서 폭넓게 사용된다.

구조적 특징

  • 플래시는 셀(Cell) 로 구성되며, 각 셀은 전하의 유무로 데이터를 표현한다.
  • 셀의 배치는 보통 페이지(Page)블록(Block)플래시 칩 전체로 계층화된다.
    • 1 페이지: 보통 2KB ~ 8KB
    • 1 블록: 수십 페이지 (예: 128KB ~ 512KB)

주요 관리 기법

  1. 웨어 레벨링(Wear Leveling)

    • 각 블록의 쓰기 횟수를 분산시켜 특정 영역의 수명이 짧아지는 것을 방지.
    • FTL(Flash Translation Layer)이 이를 자동으로 처리.
  2. Garbage Collection (GC)

    • 사용되지 않는 페이지들을 주기적으로 정리하여 공간 확보.
    • SSD에서는 TRIM 명령과 연계됨.
  3. FTL(Flash Translation Layer)

    • 물리 주소와 논리 주소 간의 매핑을 담당하며, 쓰기/삭제/재배치를 효율적으로 처리.
    • NAND 플래시는 직접 덮어쓰기(overwrite)가 불가능하므로, 쓰기 지연(latency)를 고려한 설계가 중요.

SLC vs MLC vs TLC

  • SLC(Single-Level Cell): 셀당 1비트, 빠르고 내구성 좋음 (산업용 SSD)
  • MLC(Multi-Level Cell): 셀당 2비트, 일반 소비자용 SSD
  • TLC(Triple-Level Cell): 셀당 3비트, 저가형, 수명 짧음

3. RAM 계열 메모리의 작동 원리와 특징

3.1 SRAM과 DRAM의 구조적 차이

RAM(Random Access Memory) 은 데이터를 임의 접근 방식으로 읽고 쓸 수 있는 휘발성 메모리로, 시스템에서 작업 중 데이터 임시 저장소로 사용된다. 대표적인 RAM 종류는 SRAM(Static RAM)DRAM(Dynamic RAM) 이며, 이 둘은 구조, 속도, 전력 소모, 집적도 등에서 뚜렷한 차이를 가진다.

SRAM (Static RAM)

  • 구조: 각 비트를 저장하기 위해 6개의 트랜지스터(6T)를 사용하는 플립플롭 회로 기반. 별도의 커패시터는 없음.

  • 특징:

    • 리프레시(refresh) 필요 없음 → 데이터가 유지됨 (전원 공급 중에만)
    • 접근 속도 매우 빠름 → 나노초(ns) 단위
    • 전력 소비 크고, 집적도 낮음 → 칩 면적 많이 차지
    • 비용이 높고 용량은 작다
  • 용도: CPU의 L1/L2/L3 캐시 메모리, 고속 임베디드 칩 내부 메모리

DRAM (Dynamic RAM)

  • 구조: 1개의 트랜지스터 + 1개의 커패시터(1T1C)로 구성된 셀

  • 특징:

    • 커패시터 전하로 데이터 저장 → 전하가 방전되므로 주기적 리프레시 필요
    • 속도는 SRAM보다 느리나, 고집적/대용량 구현 가능
    • 제조 단가 저렴, 공간 효율 우수
  • 용도: PC 메모리, 노트북, 스마트폰 등의 시스템 메모리

비교 요약

항목SRAMDRAM
셀 구성6T (트랜지스터만)1T1C (트랜지스터 + 커패시터)
리프레시 필요XO
속도매우 빠름느림
밀도낮음높음
용도캐시 메모리, 고속 임베디드 칩시스템 메모리

3.2 DRAM의 리프레시 메커니즘

DRAM의 핵심 기술적 특징 중 하나는 정기적인 리프레시(refresh) 다. 이는 데이터 손실을 방지하기 위한 필수 절차로, DRAM이 CPU에 데이터를 제공하는 효율성과 직접 연결된다.

작동 원리

  • 커패시터는 시간이 지나면서 전하가 자연 방전됨.
  • 이를 보완하기 위해, 주기적으로 데이터를 재읽고 재기록하는 동작을 수행 → "리프레시"
  • 보통 64ms마다 모든 셀을 한 번씩 갱신(refresh)

리프레시 방식

  • Auto Refresh: 메모리 컨트롤러가 자체적으로 정해진 주기마다 블록 단위로 자동 리프레시
  • Distributed Refresh: 리프레시 부하를 분산하기 위해 매 클럭마다 소수의 행(row)만 갱신
  • Self Refresh: 절전 모드에서 DRAM이 독립적으로 리프레시를 수행 (스탠바이 모드 등)

성능 영향

  • 리프레시 중에는 해당 셀의 접근이 불가능 → 지연(latency) 유발
  • 고용량 DRAM일수록 리프레시 시간 증가 → 성능 저하 요소
  • 이를 해결하기 위한 방식으로 Bank Interleaving, 다중 채널 메모리 구성 등이 사용됨

3.3 고성능 응용을 위한 캐시 메모리(SRAM) 활용

캐시 메모리(Cache Memory) 는 CPU와 메인 메모리(DRAM) 간의 속도 차이를 극복하기 위한 고속 버퍼로서, 대부분 SRAM으로 구성된다. 가장 많이 사용하는 데이터나 명령어를 임시로 저장함으로써 메모리 접근 속도를 대폭 향상시킨다.

캐시 계층 구조

  • L1 캐시: CPU 코어 내부, 매우 작고 빠름 (수십 KB)
  • L2 캐시: L1보다 크고 느림 (수백 KB ~ 수 MB)
  • L3 캐시: CPU 다수 코어가 공유, 메인 메모리보다 빠름

SRAM 기반 캐시의 장점

  • 비트 반응 속도(ns 단위) → CPU 클럭 속도에 거의 맞춰 작동
  • 리프레시 필요 없음 → 일관된 응답 시간
  • 다중 포트 지원 가능 → 동시 접근 효율적

캐시 미스(Miss) 관리

  • Cache Hit: CPU가 원하는 데이터가 캐시에 있음 → 즉시 처리
  • Cache Miss: CPU가 원하는 데이터가 없음 → 메인 메모리(DRAM) 접근 필요

이를 줄이기 위해 다양한 캐시 정책이 적용됨:

  • LRU(Least Recently Used), FIFO, Write-Back, Write-Through 등

응용 분야

  • 고성능 CPU (x86, ARM 등)
  • 네트워크 장비의 패킷 버퍼링
  • 실시간 응답이 필요한 RTOS 기반 임베디드 시스템

4. NVRAM과 특수 목적 메모리

4.1 NVRAM과 일반 RAM의 차이

NVRAM (Non-Volatile RAM) 은 이름 그대로 전원이 꺼져도 데이터가 유지되는 RAM이다. 휘발성인 일반 RAM과 달리, 비휘발성과 고속성을 동시에 갖추기 위한 기술적 중간지점에 위치하며, 특히 설정 값 저장 등 민감한 데이터의 영속성 확보에 사용된다.

일반 RAM과 NVRAM의 핵심 차이

항목일반 RAM (SRAM/DRAM)NVRAM
휘발성 여부휘발성 (전원 차단 시 데이터 소실)비휘발성 (전원 차단 후에도 데이터 유지)
저장 속도매우 빠름빠름 (SRAM과 유사 수준)
내구성쓰기 무제한비교적 제한적 (수십~수백만 회)
용도실행 중 데이터 저장 (주기억장치)설정 정보, 환경 변수 저장 등

대표적인 NVRAM 구현 방식

  • 배터리 백업 SRAM: 실제 SRAM 칩에 리튬 전지 등을 연결하여 전원 공급 지속 → 비휘발성처럼 동작
  • 플래시 기반 NVRAM: EEPROM 또는 NOR Flash를 마이크로컨트롤러에서 RAM처럼 사용
  • 현대적 구현: NVSRAM, FeRAM, MRAM 등의 새로운 비휘발성 메모리로 대체 중

활용 사례

  • 네트워크 장비에서 라우터/스위치 설정 저장
  • POS 단말기, 산업용 PLC, 임베디드 기기
  • BIOS/UEFI에서 설정값 저장 (과거에는 CMOS와 연결되어 동작)

4.2 RTC와 CMOS 메모리

RTC(Real-Time Clock)CMOS 메모리는 전통적인 PC 구조에서 BIOS 설정 및 시스템 시계 유지를 위한 핵심 부품이다.

RTC (실시간 시계 칩)

  • 기능: 시스템 시간이 꺼져 있어도 흐르도록 유지
  • 구성: 일반적으로 소형 리튬 배터리와 함께 독립된 RTC 회로로 구현됨
  • 예시 칩셋: DS1307, PCF85263, RX-8025 등

CMOS 메모리

  • 역사적 용도: BIOS 설정값 저장

  • 기술적 특성:

    • 실제로는 소형 SRAM (수십~수백 바이트)으로 구성됨
    • RTC 배터리 또는 메인보드 배터리로 구동
    • 전원이 끊기면 설정 초기화
  • 현대적 변화:

    • 최신 시스템은 설정값을 SPI Flash, NVRAM 등 다른 저장소에 저장
    • UEFI 체계에서는 CMOS 사용이 점차 줄어드는 추세

실제 용도 예시

  • 시스템 부팅 순서
  • CPU/메모리 설정
  • 하드웨어 활성/비활성 상태 정보 저장

4.3 FRAM, MRAM 등 차세대 NVM 기술

전통적인 EEPROM과 플래시 메모리는 쓰기 속도와 내구성, 전력 측면에서 한계가 있다. 이를 극복하고 DRAM/SRAM 수준의 속도 + 비휘발성을 동시에 갖추기 위한 신세대 비휘발성 메모리 기술들이 개발되고 있다.

FRAM (Ferroelectric RAM)

  • 원리: 강유전체(ferroelectric) 물질을 이용한 전하 분극(polarization)

  • 특징:

    • DRAM 수준의 빠른 읽기/쓰기 속도
    • 매우 낮은 전력 소비
    • 쓰기 수명이 100조 회 이상
    • 용량 한계가 존재 (수십 KB~수 MB)
  • 용도: 스마트 카드, 의료기기, 센서 데이터 로깅, 실시간 로깅 시스템

MRAM (Magnetoresistive RAM)

  • 원리: 자기저항(magnetoresistance)을 이용해 데이터 저장 (스핀트로닉스 기반)

  • 특징:

    • SRAM과 유사한 속도, 낮은 지연
    • 매우 높은 내구성 (SRAM 수준)
    • 비휘발성 + 무제한 쓰기 가능성
    • 제조 공정 복잡, 비용 높음
  • 응용처: 산업용 임베디드 시스템, 항공/우주, 군수 장비

기타 기술들

  • ReRAM (Resistive RAM): 저항 변화 기반 저장, NAND 플래시 대체 가능성
  • PCM (Phase-Change Memory): 상변화 물질로 0/1을 표현

5. 임베디드 시스템에서의 메모리 구성 전략

5.1 코드 저장용 vs 데이터 저장용 메모리 분리

임베디드 시스템에서는 성능과 안정성, 비용 효율을 극대화하기 위해 코드와 데이터 저장소를 분리하는 것이 일반적이다. 이는 다음과 같은 이유에 기초한다.

코드 저장용 메모리 (Code Memory)

  • 역할: 프로그램 명령어, 펌웨어 저장

  • 주요 메모리 종류: ROM, Flash, OTP

  • 특징:

    • 읽기 위주 접근
    • 보안 측면에서 코드 변경이 어려움 (불변성 강조)
    • 부팅 시 가장 먼저 접근되는 위치
  • 설계 예시:

    • 부트로더 → Flash 저장
    • 메인 루프 함수, 인터럽트 핸들러 → ROM 또는 Flash에 저장

데이터 저장용 메모리 (Data Memory)

  • 역할: 센서 값, 사용자 입력, 상태 변수 등 실시간 데이터 저장

  • 주요 메모리 종류: SRAM, DRAM, EEPROM, NVRAM

  • 특징:

    • 읽기/쓰기 빈도가 높음
    • 데이터 변경 가능성이 큼
    • 실시간 응답성 고려 필요

메모리 분리의 이점

  • 프로그램 코드가 의도치 않게 덮어써지는 위험 방지
  • 코드 보안성과 데이터 처리 유연성 동시 확보
  • 파워 다운 이후에도 필요한 설정값만 선택적으로 저장 가능

5.2 Flash vs EEPROM vs NVRAM 비교

임베디드 환경에서는 비휘발성 저장소가 중요하며, 대표적으로 Flash, EEPROM, NVRAM이 사용된다. 각각의 특성은 용도에 따라 큰 차이를 만든다.

항목FlashEEPROMNVRAM
저장 단위블록 단위 (수백~수천 바이트)바이트 단위바이트 또는 SRAM 단위
쓰기 속도느림 (수백 us ~ 수 ms)느림 (수 ms)빠름 (SRAM 수준, ns ~ us)
쓰기 내구성10,000 ~ 100,000 회1,000,000 회 이상수백만 ~ 수십억 회
전력 소모쓰기 시 전력 소모 큼쓰기 시 전력 소모 보통매우 낮음
용도코드 저장, 펌웨어 업데이트설정값 저장, 사용자 변수 저장설정값 저장, 로그, 캐시 메모리 등

요약

  • Flash: 대용량 코드 저장에 적합, 대체로 읽기 전용으로 취급
  • EEPROM: 소량의 설정값 저장에 적합, 수정 빈도는 낮아야 함
  • NVRAM: 빈번한 쓰기와 고속 처리 요구에 적합, SRAM 기반 제품이 많음

5.3 마이크로컨트롤러 내장 메모리 구성 예시

대다수 마이크로컨트롤러(MCU)는 내장 메모리로 다양한 메모리 블록을 통합하고 있으며, 하드웨어 자원의 제약 속에서도 효율적 구성이 요구된다.

AVR 계열 MCU (예: ATmega328P)

  • Flash: 32KB, 프로그램 코드 저장
  • SRAM: 2KB, 런타임 변수 저장
  • EEPROM: 1KB, 영속적인 설정값 저장
  • 특징: Flash는 셀프 프로그래밍 가능, EEPROM은 라이브러리 통해 접근 가능

ARM Cortex-M 계열 MCU (예: STM32F103)

  • Flash: 64KB~1MB, 코드 저장
  • SRAM: 10KB~96KB, 런타임 변수, 스택, 힙 저장
  • 내장 EEPROM 없음: 설정값 저장은 Flash 일부 영역을 “에뮬레이션”으로 활용
  • 특징: DMA 접근 가능, Dual Bank Flash로 OTA 업데이트 가능

ESP32 (Wi-Fi 내장 SoC)

  • SPI Flash 외장 연결: 4MB 이상, 코드 및 리소스 저장
  • SRAM: 520KB, 데이터 처리
  • NVS (Non-Volatile Storage): Flash에 키-값 형식으로 저장
  • 특징: FreeRTOS 기반으로 메모리 영역을 분할 관리

6. 메모리 선택 시 고려 요소 및 보안 이슈

6.1 쓰기 내구성, 전력 소모, 접근 속도

메모리 선택 시 가장 핵심적으로 고려되어야 할 세 가지 요소는 쓰기 내구성, 전력 소모, 그리고 접근 속도다. 특히 임베디드 시스템, IoT, 산업용 제어기기 등에서는 각 요소 간 절충이 필요하다.

1) 쓰기 내구성 (Write Endurance)

  • Flash 메모리: 일반적으로 1만 ~ 10만 회의 쓰기 사이클
  • EEPROM: 약 100만 회 이상
  • FRAM/MRAM: 수천만 ~ 수억 회까지 가능
  • 영향: 빈번한 설정값 저장, 로그 기록 용도라면 Flash보다는 EEPROM/NVRAM이 적합
    • 예시: 실시간 계량기 → 설정값 10초마다 기록 → Flash 쓰기 한계 초과 가능성 존재

2) 전력 소모 (Power Consumption)

  • 휘발성 RAM (SRAM/DRAM)은 동작 중 지속적인 전력 공급 필요
  • Flash, EEPROM은 비휘발성이나, 쓰기/삭제 시 전력 소모가 큼
  • NVRAM 계열 (예: FeRAM, MRAM)은 낮은 소비 전력과 비휘발성 동시 제공
  • 저전력 시스템: 배터리 기반 IoT 장비 → Flash는 전력 효율 낮아 비적합

3) 접근 속도 (Access Time)

  • SRAM: ns 단위, 가장 빠름 → 캐시용 적합
  • DRAM: 빠르지만 리프레시 필요 → 메인 메모리
  • Flash/EEPROM: 접근 속도 느림 (us ~ ms) → 부트 코드 저장 등

6.2 펌웨어 보호와 보안 부트

펌웨어의 무결성 보장은 시스템 보안의 핵심이다. 메모리에 저장된 부트로더나 펌웨어가 변조되면 전체 시스템이 공격자에 의해 제어될 수 있다.

펌웨어 보호 방법

  • Read-out Protection (ROP): 외부에서 메모리 덤프 불가능하도록 MCU 내에서 설정
  • 코드 암호화 저장: 펌웨어를 암호화된 형태로 Flash에 저장하고, 부트로더에서 복호화
  • FUSE 설정: AVR, ARM MCU에서 제공되는 FUSE 비트를 통해 외부 접근 차단

보안 부트 (Secure Boot)

  • 부팅 시 디지털 서명된 펌웨어의 무결성 검증 수행
  • TPM (Trusted Platform Module) 또는 ROM 기반 Root of Trust 활용
  • 예시:
    • STM32 Secure Boot: ST사의 OEM 키를 이용한 펌웨어 서명 및 검증
    • NXP i.MX Secure Boot: HAB(Hardware Authenticated Boot) 지원

문제 사례

  • Cisco 라우터의 IOS 이미지 위변조 → 백도어 삽입
  • U-Boot 미보호 구성 → 디버그 콘솔을 통한 임의 명령 실행

6.3 메모리 침해 기법 및 대응 방안

공격자는 메모리에 직접 접근해 시스템 정보를 탈취하거나 변조할 수 있으며, 그 방식은 점점 더 정교해지고 있다. 이에 따른 대응 전략도 필요하다.

침해 기법

기법설명
물리적 덤핑Flash, EEPROM을 외부 프로그래머로 추출
Glitching전원 변조를 통해 부트보안 우회 시도 (e.g. Voltage Fault Injection)
Cold Boot AttackDRAM의 잔류 데이터 복원
DMA 공격외부 디바이스를 통한 메모리 읽기/쓰기
Buffer Overflow스택 상에 저장된 리턴 주소 덮어쓰기 등

대응 방안

  1. 메모리 접근 제어

    • MPU(Memory Protection Unit) 또는 MMU를 통해 코드/데이터 영역 분리
    • 권한 없는 접근 차단 (NX bit 등)
  2. 암호화 저장

    • 중요한 설정값은 EEPROM/Flash에 암호화 후 저장
    • AES-GCM 등으로 무결성 검증 포함 가능
  3. 디버깅 포트 차단

    • SWD, JTAG 등의 디버깅 포트를 물리적으로 비활성화
    • Lock bit, 보안 Fuse 설정을 통한 접근 방지
  4. 동적 무결성 검증

    • 부팅 시 뿐 아니라 런타임 중에도 메모리 내용 무결성 검사
    • Checksum, Hash, HMAC 기반 방식 사용

7. 마무리

오늘은 그래도 배경지식이 조금 있어서 빠를 줄 알았는데, 역시 오래 걸리고 내용도 많았다. 거기다가 약자가 유난히 많아서인지, 알던 것들도 쓰다 말고 헷갈리는 일이 많았다. 뭐 그래도 계속 써보고 접해보고 하면 점점 익숙해지지 않을까 싶다.

내일이면 주문한 새 컴퓨터가 온다! 환경 세팅하는 데 못해도 하루는 걸릴테니... 내일은 높은 확률로 하루 쉬게 될수도? 아마 주말에 보충해야겠지...

profile
안드로이드는 리눅스의 꿈을 꾸는가

0개의 댓글