CSS Tutor Study Hub 메인으로

Computersystemsicherheit 2025/26

실제 시험 문제 01

Wahr/Falsch · Krypto / Multiple Choice

Wahr/Falsch

문제

근거 신뢰도 높음실제 시험지 대조 완료Wahr/Falsch2점

독일어 원문

Bei Blockchiffren muss man eine Auffüllungsfunktion (padding function) benutzen, um alle Blöcke auf die gleiche Länge zu bringen.

한국어 해석

블록 암호(Blockchiffren)에서는 모든 블록 길이를 같게 만들기 위해 padding function을 반드시 써야 한다. Wahr/Falsch?

Wahr/Falsch 즉시 채점

ECB/CBClast blockpadding?CTR stream
확신도

선택 후 즉시 개념 함정을 확인하세요.

단계별 힌트

막혔을 때만 한 단계씩 여세요. 정답을 바로 읽는 것보다 기억을 꺼내는 시간이 중요합니다.

0/6
채점 기준으로 내 답안 점검하기
  • Wahr/Falsch를 Falsch로 표시한다.
  • Blockchiffren은 고정 Blocklänge를 처리한다고 설명한다.
  • 평문 길이가 배수가 아니면 Padding이 필요하다는 조건을 적는다.
  • CTR/Stromchiffre식 사용 또는 이미 정렬된 메시지 예외를 언급한다.

답안 슬롯 자가 점검 — 실제로 말하거나 쓴 항목만 체크하세요.

0/4 slots

정답과 핵심 해설 확인하기
wahr_falsch

Falsch

short_ko

항상 반드시 쓰는 것은 아니다. 필요한 경우는 평문 길이가 블록 길이에 맞지 않는 블록 모드이다.

개념부터 다시 보는 상세 풀이

BEGINNER LESSON

1-(a) 블록 암호라면 Padding을 반드시 써야 할까?

ZERO-BASE START

정말 아무것도 모른다고 가정하고 시작합니다

전문 용어를 알고 있다고 가정하지 않습니다. 먼저 일상적인 장면을 보고, 그 장면의 사람과 행동에 실제 보안 용어를 하나씩 붙인 뒤, 시스템에서 일어나는 순서를 따라갑니다.

기초 개념 01

암호화의 가장 기본적인 등장인물

1타 강사식 시작: 이름은 잠시 가리고 장면부터 봅시다

누구나 자물쇠의 설계도를 볼 수 있지만 실제 열쇠가 없으면 열지 못하는 자물쇠를 생각하면 된다. 설계도를 숨기는 것이 아니라 열쇠를 관리하는 것이 핵심이다.

지금은 이 비유를 완벽히 외울 필요가 없습니다. 누가 무엇을 가지고 있고, 무엇을 하려 하며, 어느 지점에서 문제가 생기는지만 찾으면 됩니다.

이제 실제 용어를 하나씩 붙여 봅시다

평문(plaintext)은 보호하기 전의 원래 데이터이고 암호문(ciphertext)은 암호화 후 읽기 어렵게 바뀐 데이터다. 암호화(encryption)는 평문과 키(key)를 알고리즘에 넣어 암호문을 만드는 과정이고 복호화(decryption)는 올바른 키를 이용해 평문을 되찾는 과정이다. 키는 문을 여는 실제 열쇠에 해당하며, 현대 암호에서는 알고리즘 자체가 공개되어도 키가 비밀이면 안전해야 한다고 본다.

TERMS FROM ZERO

전문 용어를 한 단어씩 풀기

아래 단어는 이미 안다고 가정하지 않습니다. 먼저 쉬운 뜻을 읽고, 본문에서 같은 단어가 나오면 이 정의로 다시 바꾸어 읽으세요.

Plaintext

암호화하기 전의 원래 메시지입니다. 사람이 읽는 문장뿐 아니라 파일의 byte도 plaintext가 될 수 있습니다.

Ciphertext

암호화 결과입니다. 숨겨진 원문과 같은 말이 아니라, key 없이는 원문을 알아내기 어려워야 하는 출력입니다.

Key

암호 알고리즘의 동작을 결정하는 값입니다. 알고리즘 자체가 아니라 key를 비밀로 관리하는 것이 현대 암호의 기본입니다.

Encryption / Decryption

Encryption은 plaintext를 ciphertext로, decryption은 올바른 key로 ciphertext를 다시 plaintext로 바꾸는 과정입니다.

프로그램이나 프로토콜 안에서는 다음 순서로 움직입니다.

  1. 누가 평문을 가지고 있는지 확인한다.
  2. 어떤 키로 암호화하고 누가 복호화 키를 가지는지 확인한다.
  3. 암호문이 노출되어도 공격자가 어떤 정보를 얻지 못해야 하는지 적는다.

왜 여기서 많이 틀릴까요?

암호화는 기본적으로 내용을 숨긴다. 누가 보냈는지, 내용이 바뀌지 않았는지, 서비스가 계속 동작하는지까지 저절로 보장하지는 않는다.

조건을 생략하거나 서로 다른 기능을 같은 것으로 취급했는지 확인하세요. 정답 문장을 외우는 것보다 틀린 이유를 말할 수 있어야 변형 문제를 풀 수 있습니다.

기초 개념 02

Block cipher, mode, padding을 서로 구분하기

1타 강사식 시작: 이름은 잠시 가리고 장면부터 봅시다

네 칸짜리 상자만 처리하는 기계가 block cipher다. 상자를 어떤 순서로 연결해 보낼지가 mode이고, 마지막 상자에 물건이 한 개만 있을 때 남은 칸을 약속된 재료로 채우는 것이 padding이다.

지금은 이 비유를 완벽히 외울 필요가 없습니다. 누가 무엇을 가지고 있고, 무엇을 하려 하며, 어느 지점에서 문제가 생기는지만 찾으면 됩니다.

그림 읽는 법 같은 평문 블록이 반복될 때 ECB는 같은 암호문 패턴을 남기고, CBC는 직전 암호문을 다음 블록에 연결합니다. CTR은 필요한 길이만큼 keystream을 사용하므로 짧은 마지막 조각에 별도 padding이 필요하지 않습니다. 모바일에서는 그림 안을 좌우로 움직이며 각 mode를 읽으세요. AES·ECB·CBC·CTR 완전 초보 상세 강의로 이동 →

이제 실제 용어를 하나씩 붙여 봅시다

Block cipher는 AES처럼 정확히 정해진 길이의 데이터 블록 하나를 키로 변환하는 부품이다. 긴 메시지를 여러 블록으로 처리하는 사용 규칙을 mode of operation이라고 하며 ECB, CBC, CTR 등이 있다. 마지막 조각이 블록보다 짧을 때 규칙에 맞는 값을 덧붙여 길이를 맞추는 것이 padding이다. XOR는 두 bit, 즉 0 또는 1인 두 자리 값이 서로 다를 때 1을 만드는 연산이다. 모든 mode가 padding을 요구하는 것은 아니다.

TERMS FROM ZERO

전문 용어를 한 단어씩 풀기

아래 단어는 이미 안다고 가정하지 않습니다. 먼저 쉬운 뜻을 읽고, 본문에서 같은 단어가 나오면 이 정의로 다시 바꾸어 읽으세요.

Block cipher

AES처럼 정해진 크기의 한 block을 key로 변환하는 암호 primitive입니다.

Mode of operation

한 block짜리 암호를 긴 메시지에 안전하게 반복 적용하는 연결 규칙입니다. ECB, CBC, CTR 등이 있습니다.

Padding

마지막 plaintext 조각이 block보다 짧을 때 필요한 길이를 채우는 규칙입니다.

IV / Nonce

같은 key로 암호화해도 결과가 반복되지 않게 mode에 넣는 시작값입니다. mode에 따라 무작위성·유일성 요구가 다릅니다.

프로그램이나 프로토콜 안에서는 다음 순서로 움직입니다.

  1. 블록 크기와 키 길이는 서로 다른 값임을 구분한다.
  2. ECB와 CBC는 보통 완전한 마지막 블록이 필요하므로 짧으면 padding한다.
  3. CTR은 keystream의 필요한 부분만 평문과 XOR할 수 있어 별도 padding 없이 부분 블록을 처리할 수 있다.
  4. CBC에서 중간 블록을 복호화하려면 현재 암호문과 직전 암호문 또는 IV가 필요하다.

왜 여기서 많이 틀릴까요?

‘블록 암호를 쓴다’에서 곧바로 ‘항상 padding이 필요하다’ 또는 ‘어디서나 독립 복호화가 가능하다’로 넘어가면 안 된다. mode를 먼저 확인해야 한다.

조건을 생략하거나 서로 다른 기능을 같은 것으로 취급했는지 확인하세요. 정답 문장을 외우는 것보다 틀린 이유를 말할 수 있어야 변형 문제를 풀 수 있습니다.

핵심부터 말하면 정답은 Falsch(거짓). Padding은 블록 암호의 모든 사용에서 무조건 필요한 것이 아니라, 사용 중인 운영 모드가 완전한 블록을 요구하고 마지막 평문 블록이 짧을 때 필요하다.

이 글에서 익힐 것

  • 평문(Klartext), 암호문(Ciphertext), 키(Schlüssel), 블록(Block)의 뜻을 구분한다.

  • 블록 암호(Blockchiffre)가 정확히 무엇을 입력받는지 이해한다.

  • Padding이 왜 필요한지 숫자 예시로 설명한다.

  • ECB/CBC와 CTR에서 Padding 필요 여부가 다른 이유를 말할 수 있다.

  • 시험 문장의 절대 표현 muss를 발견하고 조건부 명제로 고쳐 쓸 수 있다.

개념부터 차근차근

  • 암호화의 네 가지 기본 단어

    보내려는 원래 정보가 평문(Klartext 또는 Plaintext)이다. 평문을 알아볼 수 없게 바꾸는 과정이 암호화(Verschlüsselung), 그 결과가 암호문(Ciphertext), 허가받은 사람이 다시 평문으로 돌리는 과정이 복호화(Entschlüsselung)다. 키(Schlüssel)는 이 변환을 제어하는 비밀값이다. 같은 알고리즘을 쓰더라도 키가 다르면 보통 결과도 달라진다.

  • 블록 암호는 정해진 크기의 상자만 받는 기계다

    블록 암호는 임의 길이 문장을 한 번에 받는 기계가 아니다. 정확히 b비트짜리 평문 블록 하나를 받아 같은 b비트 길이의 암호문 블록 하나를 만든다. AES의 블록 크기는 128비트, 즉 16바이트다. 여기서 블록 크기와 키 길이는 다른 개념이다. AES는 블록 크기가 128비트로 고정이지만 키는 128·192·256비트 중 하나일 수 있다.

  • 운영 모드(Betriebsmodus)가 필요한 이유

    실제 메시지는 16바이트보다 길 수도 짧을 수도 있다. 그래서 블록 암호 한 번의 변환을 여러 번 연결해 긴 메시지를 처리하는 규칙이 필요하다. 이 연결 규칙이 ECB, CBC, CTR 같은 운영 모드다. 같은 AES를 사용해도 모드가 달라지면 블록 사이의 의존관계, 병렬 처리 가능성, Padding 필요 여부가 달라진다.

  • Padding은 마지막 상자의 빈칸을 채우는 규칙이다

    ECB나 CBC처럼 블록 단위로 평문을 넣어야 하는 모드에서 메시지 길이가 블록 크기의 배수가 아니면 마지막 조각이 너무 짧다. 이때 정해진 규칙으로 바이트를 덧붙여 마지막 블록을 완성하는 것이 Padding(Auffüllungsfunktion)이다. 단순히 아무 0이나 붙이는 것이 아니라, 복호화 뒤 어디까지가 진짜 메시지이고 어디부터가 채움인지 확실히 제거할 수 있는 역연산 unpad가 있어야 한다.

예제로 확인하기

상황 설정

설명을 쉽게 하기 위해 블록 크기가 4바이트인 장난감 블록 암호를 생각한다. 실제 AES는 16바이트 블록을 쓴다.

풀이 순서

  1. 평문이 ABCDEFGH라면 길이는 8바이트다. 4바이트씩 ABCD | EFGH로 정확히 나뉜다. 이 단순 예에서는 마지막의 짧은 조각이 없으므로 길이를 맞추기 위한 Padding이 필요하지 않다.

  2. 평문이 ABCDE라면 길이는 5바이트다. ABCD | E까지 나뉘며 두 번째 블록에는 3바이트가 부족하다. ECB/CBC가 완전한 4바이트 입력만 받는다면 E 뒤에 규칙에 따른 채움 3바이트를 붙여야 한다.

  3. PKCS#7 방식의 직관은 부족한 바이트 수 자체를 각 채움 바이트에 기록하는 것이다. 3바이트가 부족하면 [03 03 03]을 붙인다. 복호화한 쪽은 마지막 값 03을 보고 끝의 3바이트를 제거한다.

  4. 메시지가 정확히 블록에 맞더라도 PKCS#7 같은 구체적 규격은 완전한 Padding 블록을 하나 더 붙인다. 그렇지 않으면 원래 데이터의 마지막 바이트가 우연히 채움처럼 보이는 경우를 구분하기 어렵기 때문이다. 따라서 '정렬되어 있으면 언제나 Padding이 전혀 없다'도 모든 Padding 규격에 보편적으로 참인 문장은 아니다.

헷갈리는 개념 비교하기

  • ECB

    평문을 완전한 블록으로 나누어 각 블록을 직접 암호화하므로, 일반적으로 마지막 블록이 짧으면 Padding이 필요하다.

    시험 포인트 같은 평문 블록은 같은 키 아래 같은 암호문 블록이 되어 패턴이 노출되는 큰 단점이 있다.

  • CBC

    각 평문 블록을 이전 암호문 블록과 XOR한 뒤 암호화한다. XOR와 블록 암호 입력 모두 블록 크기를 요구하므로, 전통적인 CBC에서는 마지막이 짧을 때 Padding이 필요하다.

    시험 포인트 Padding 오류를 공격자에게 구별해 주면 CBC Padding Oracle Attack으로 이어질 수 있으므로 Padding은 단순 길이 문제가 아니라 보안 문제이기도 하다.

  • CTR

    Counter 값을 블록 암호로 암호화해 keystream을 만들고 평문과 XOR한다. 마지막에는 필요한 keystream 부분만 잘라 XOR할 수 있으므로 임의 길이 메시지에 별도의 Padding이 필요 없다.

    시험 포인트 CTR은 블록 암호를 기반으로 하지만 사용 모습은 Stromchiffre와 비슷하다. 이 예외가 원문의 muss를 거짓으로 만드는 가장 강한 반례다.

문장을 하나씩 판별하기

  • 문장의 주어 Blockchiffren만 보고 바로 판단하지 않는다. 블록 암호 primitive와 그것을 긴 메시지에 적용하는 mode를 구분해야 한다.

  • 핵심 함정 단어는 muss, 즉 반드시다. 반드시라는 문장은 반례 하나만 찾아도 거짓이다.

  • CTR 모드에서는 별도 Padding 없이 마지막 부분 블록을 처리할 수 있다. 따라서 모든 블록 암호 사용에 Padding이 반드시 필요하다는 보편 명제는 깨진다.

  • 다만 ECB/CBC에서 마지막 평문 블록이 짧다면 Padding이 필요하다는 핵심 개념 자체는 맞다. 문제는 필요한 조건을 생략하고 항상이라고 일반화한 데 있다.

정답까지 사고 과정

  1. 1단계: 문장에서 절대 표현 muss를 표시한다.

  2. 2단계: 블록 암호가 고정 길이 블록을 처리한다는 정의를 떠올린다.

  3. 3단계: 메시지 길이가 블록 크기의 배수인지, 그리고 어떤 운영 모드를 쓰는지 조건을 나눈다.

  4. 4단계: ECB/CBC의 짧은 마지막 블록에는 Padding이 필요함을 확인한다.

  5. 5단계: CTR은 임의 길이 비트열을 처리해 별도 Padding이 필요 없다는 반례를 제시한다.

  6. 6단계: 반례가 있으므로 '항상 반드시'라는 원문을 Falsch로 판정한다.

시험장에서는 이렇게 쓰기

최소 답안

Falsch.

안전한 두 문장 답안

Falsch. Eine Blockchiffre verarbeitet zwar Blöcke fester Länge, aber Padding ist nur nötig, wenn der verwendete Modus vollständige Blöcke verlangt und die Klartextlänge nicht passt. Im CTR-Modus kann auch ein letzter Teilblock ohne Padding verarbeitet werden.

한국어 의미

거짓. 블록 암호는 고정 길이 블록을 처리하지만, Padding은 사용 모드가 완전한 블록을 요구하면서 평문 길이가 맞지 않을 때만 필요하다. CTR에서는 마지막 부분 블록도 Padding 없이 처리할 수 있다.

자주 틀리는 지점

  • Blockchiffre라는 단어를 보는 즉시 '블록이니까 Padding'이라고 답하고 muss의 범위를 확인하지 않는 것.

  • 블록 크기와 키 길이를 혼동해 AES-128의 128을 키와 블록 모두의 유일한 크기라고 생각하는 것.

  • Padding을 암호문 블록들의 길이를 서로 맞추는 과정이라고만 외우는 것. 정확히는 암호화 전 평문의 마지막 조각을 입력 블록 크기에 맞춘다.

  • CTR도 내부에 블록 암호를 쓰니 반드시 Padding이 필요하다고 생각하는 것.

  • 0만 붙이면 된다고 생각하는 것. 제거 가능하고 모호하지 않은 Padding 규칙이 필요하다.

  • Padding이 암호의 보안을 무조건 높인다고 쓰는 것. 기본 목적은 길이 맞춤이며, 처리 오류는 오히려 Padding Oracle 취약점을 낳을 수 있다.

한 줄로 기억하기

블록 암호는 16칸짜리 계란판, Padding은 빈칸 채우기다. 하지만 CTR은 계란을 필요한 만큼 꺼내 쓰는 스트림 방식이므로 빈칸을 억지로 채울 필요가 없다. 따라서 '블록 암호면 무조건 Padding'은 거짓이다.

스스로 확인하기

  • AES-CBC로 30바이트 평문을 처리한다. AES 블록은 16바이트다. 마지막 조각은 몇 바이트이며 왜 Padding이 필요한가?

    16바이트와 14바이트로 나뉜다. CBC의 블록 입력을 완성하려면 마지막 14바이트에 Padding을 추가해야 한다.

  • AES-CTR로 30바이트 평문을 처리할 때 별도 Padding이 필요한가?

    필요 없다. 마지막 14바이트에 필요한 keystream 14바이트만 XOR하면 된다.

  • 원문의 정답을 바꾸는 핵심 단어 하나는?

    muss(반드시). 조건부로 필요한 사실을 보편 명제로 과장했다.

설명의 근거

  • Gedächtnisprotokoll Computersystemsicherheit WS2025_26.md — Krypto / Multiple Choice: 복기 원문.

  • Übung 2 - Lösung (2. Update 10.11).pdf, p.1-2 — Blockchiffren, Stromchiffren, Auffüllungsfunktion 및 ECB/CBC/CTR 설명.

  • Vorlesung 03 Symmetrische Kryptographie.pdf, p.5-9 — 고정 블록 정의와 Padding; p.22-26 — CTR의 XOR 구조와 스트림형 처리; p.30 — Stromchiffren 및 CTR 연결.

이 문제가 어려운 이유

짧은 문제 문장 ‘블록 암호(Blockchiffren)에서는 모든 블록 길이를 같게 만들기 위해 padding function을 반드시 써야 한다. Wahr/Falsch?’ 안에 정의, 조건, 처리 순서가 압축되어 있습니다. 아래 예시에서는 이를 한 단계씩 펼쳐 확인합니다.

AI 구두시험용 프롬프트

한 문항만 풀어라. 먼저 정답을 열지 말고 90초 안에 답안을 말한 뒤, css-ws2025-26-crypto-mc-001의 채점 프레임으로 스스로 채점하라. 문제: 블록 암호(Blockchiffren)에서는 모든 블록 길이를 같게 만들기 위해 padding function을 반드시 써야 한다. Wahr/Falsch?

학습 기록

이 문항을 얼마나 이해했나요?