공통 운영 모드 ( Mode of Operation )

황제낙엽 2013.03.07 13:49 조회 수 : 3470

운영 모드 ( Mode of Operation )
 
스트림 사이퍼의 경우에는 비트 혹은 바이트 단위의 평문을 곧바로 처리하지만 블록 사이퍼의 경우에는 블록 단위로 처리하므로 몇 가지 고려할 점이 생기게 됩니다.
 
1) 패딩 ( Padding )
평문이 반드시 블록 비트 수의 배수 길이로 존재하지는 않으므로 마지막 블록을 처리할 때는 블록 비트 수보다 적은 경우가 많습니다.
(예) DES에서 입력 평문의 비트 수가 100비트라면 첫 블록 64비트를 처리한 후 36비트가 남게 됨
 
이런 경우 64비트를 맞추어 주기 위해 보통 100000000000... 과 같은 형태로 비트를 첨가하여 주는데 이렇게 비트열을 첨가하여 블록 길이를 맞추는 것을 패딩(padding)이라고 합니다.  대부분의 암호 알고리즘 표준에서는 여러 가지 패딩 방법을 명시해 둡니다.
 
2) 모드 ( Mode )
기본 암호화 연산 단위를 연결하여 큰 길이의 평문을 처리하는 방법을 모드(mode)라고 하며 암호 알고리즘에 따라 여러 가지 방법이 정의되어 있습니다. 여기에서는 일반적으로 대칭키 암호에 많이 활용되는 DES의 운용 모드(mode of operation) 네 가지를 살펴보도록 하겠습니다.

█ ECB(Electronic Code Book)
► 가장 기본적인 운용 방법으로 입력 평문 X1 X2 ... Xn에 대하여 각각의 대응되는 암호문 Y1 Y2 ... Yn을 생성하는 방법
► 앞뒤 블록 간에 아무런 연관이 없으므로 병렬 처리가 가능하고 속도가 빠름
► 평문-암호문의 상관 관계가 쉽게 드러나 known-plaintext attack이나 블록의 일부를
다른 것으로 바꾸는 블록 재생 공격(replay attack)에 대하여 매우 취약
 
█ CBC(Cipher Block Chaining)
► 이전 블록의 암호문을 평문 블록과 XOR한 후 암호화 하는 방법으로 가장 많이 사용되는 모드
► 최초 평문 블록에 대해서는 초기화 벡터(Initialization Vector)가 필요하며, 평문-암호문의 패턴이 감추어지고 평문의 첫 블록이 암호문의 마지막 블록까지 영향을 주므로 known-plaintext attack이나 재생 공격에 대해 강함
► 암호화 용도 뿐 아니라 인증을 위한 MAC을 생성할 때 많이 사용됨
 
█ CFB(Cipher Feedback)
► 이전 블록의 암호문을 암호화한 후 평문 블록과 XOR하는 것으로 블록 사이퍼를 스트림 사이퍼처럼 구현하는 방법
► 최초 평문 블록에 대해서는 초기화 벡터가 필요하며, 평문-암호문의 패턴이 감추어지고 평문의 첫 블록이 암호문의 마지막 블록까지 영향을 주는 특성을 갖고 있음
 
█ OFB(Output Feedback)
► 초기화 벡터로부터 반복적으로 암호화하면서 매 결과 블록을 평문 블록과 XOR하여 암호문을 구하는 것으로 역시 블록 사이퍼를 스트림 사이퍼처럼 구현하는 방식
► 암호화를 시작하기 전에 미리 초기화 벡터를 암호화한 비트 열을 계산해 둘 수 있어 효율적인 연산이 가능함


번호 제목 글쓴이 날짜 조회 수
공지 [계속 추가중] SBOM 용어 정의 황제낙엽 2025.04.10 21560
공지 [계속 추가중] Keycloak 용어 및 설정 옵션 정의 황제낙엽 2024.02.02 20404
146 SPDX 2.3, 계속 써도 되나요? — 3.0으로 넘어갈 때를 판단하는 실무 기준 황제낙엽 2026.08.11 54
145 같은 OSS 지만 여러 버전을 등록해야 하는 경우 황제낙엽 2026.04.24 1971
144 [FOSSLight Dependency Scanner] Android Project 의 Dependency Scan 을 위한 Android SDK 설치와 설정 황제낙엽 2026.04.23 1842
143 FOSSLight Hub 의 REST API 이용 (v2) 황제낙엽 2026.03.19 2500
142 [FOSSLight/검토용] 개발그룹의 sbom-info.yaml 분석 및 피드백 절차 황제낙엽 2026.03.16 1981
141 [FOSSLight/관리용] Project Identification 진행에서 최종 SBOM SPDX 문서 추출 황제낙엽 2026.02.09 1916
140 [FOSSLight] 'Download Location' 컬럼 값에 'Different from DB' 라는 푸른색 메세지가 출력 file 황제낙엽 2026.02.06 3611
139 [FOSSLight] Project Identification 진행시의 신규 OSS 등록 처리 방법 황제낙엽 2026.02.06 3750
138 [FOSSLight Hub] License 정보를 직접 등록시 필요한 항목 목록 황제낙엽 2026.02.06 3579
137 [FOSSLight Hub] Open Source 정보를 직접 등록시 필요한 항목 목록 황제낙엽 2026.02.06 3352
136 [OSS] Microsoft.Web.WebView2 황제낙엽 2026.02.06 3351
135 [FOSSLight] fosslight 프로젝트의 'Pre-Review' > 'Open Source' 팝업창의 세 버튼에 대한 용도 황제낙엽 2026.02.06 3571
134 [FOSSLight/검토용] prechecker convert 결과 Hub 등록후 Identification 처리 file 황제낙엽 2026.02.05 3287
133 python venv 설치, fosslight source scanner , binary scanner 설치, 버전 확인 황제낙엽 2026.02.02 3507
132 SPDX 템플릿 다운로드 및 온라인 변환기 황제낙엽 2026.01.22 3866
131 SBOM(Software Bill of Materials) 및 소프트웨어 공급망 보안 관련 주요 정부 기관 및 단체 황제낙엽 2026.01.22 3605
130 [FOSSLight] online guide link 황제낙엽 2026.01.14 1843
129 identification 에서 출력하는 warning, error 메세지 황제낙엽 2025.12.29 1425
128 sbom-info.yaml 을 이용한 dependency scan excel 작성 file 황제낙엽 2025.12.29 3576
127 binary scan 결과물에 대해 취약점이 없는데 왜 SBOM에 넣어야 하나? 황제낙엽 2025.12.17 3484