CSS Tutor Study Hub 메인으로

Computersystemsicherheit 2025/26

실제 시험 문제 09

단답형 · Krypto / Angreifermodelle

단답형

문제

근거 신뢰도 높음실제 시험지 대조 완료단답형2점

독일어 원문

Beschreiben Sie das Angreifermodell IND-CCA (Chosen Ciphertext Attack).

한국어 해석

IND-CCA(Chosen Ciphertext Attack) Angreifermodell을 설명하라.

IND-CPA / IND-CCA 게임 시뮬레이터

Adversaryoracle query →Challengerchallenge c* →Guess b

모델을 고르고 query의 합법성을 시험하세요.

단계별 힌트

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

0/6
채점 기준으로 내 답안 점검하기
  • Indistinguishability game의 목표를 적는다.
  • Chosen Ciphertext/decryption oracle access를 명시한다.
  • Challenge ciphertext itself는 forbidden query라고 적는다.
  • 마지막 guess와 advantage 개념을 언급한다.

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

0/4 slots

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

공격자는 decryption oracle을 이용할 수 있지만 challenge ciphertext 자체 질의는 금지되고, 목표는 challenge ciphertext의 plaintext 후보를 구별하는 것이다.

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

BEGINNER LESSON

2-(a) IND-CCA 공격자 모델을 처음부터 이해하기

ZERO-BASE START

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

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

기초 개념 01

공격자 모델과 oracle을 게임처럼 읽는 법

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

시험장에서 계산기는 허용하지만 인터넷은 금지하는 것처럼, 공격자에게 허용되는 도구를 정확히 적어야 난이도와 성공 조건을 말할 수 있다.

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

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

공격자 모델(Angreifermodell)은 공격자가 어떤 정보를 보고 어떤 기능을 사용할 수 있는지 정한 규칙이다. Oracle은 공격자가 질문을 보내면 정해진 계산 결과를 돌려주는 가상의 상자다. Encryption oracle은 공격자가 고른 평문을 암호화해 주고, decryption oracle은 고른 암호문을 복호화해 준다. 보안 정의는 강한 공격자에게 이런 기능을 허용해도 목표를 달성하지 못하는지 시험한다.

TERMS FROM ZERO

전문 용어를 한 단어씩 풀기

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

Attacker model

공격자가 무엇을 보고, 선택하고, 질문하고, 바꿀 수 있는지를 정확히 정한 가정입니다.

Oracle

보안 게임에서 공격자가 정해진 형식으로 질의하고 답을 받을 수 있는 가상 인터페이스입니다.

Challenge

공격자가 구별하거나 위조해야 하는 중심 시험값입니다.

Advantage

공격자의 성공 확률이 무작위 추측보다 얼마나 높은지를 나타내는 값입니다.

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

  1. 공격자가 처음에 알고 있는 정보를 적는다.
  2. 어떤 oracle에 언제 질의할 수 있는지 적는다.
  3. Challenger가 숨긴 값을 포함한 challenge를 만든다.
  4. 금지된 질의와 공격자의 최종 성공 조건을 적는다.

왜 여기서 많이 틀릴까요?

공격자가 ‘강하다’라고만 쓰면 정의가 되지 않는다. 질의 가능 대상, 시점, 금지 조건을 구체적으로 써야 한다.

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

기초 개념 02

IND-CPA와 IND-CCA를 0부터 구분하기

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

두 상자 중 하나를 잠가 보여 주고 어느 상자인지 맞히는 게임이다. CCA에서는 다른 잠긴 상자를 열어 달라고 물을 수 있지만 바로 시험에 나온 상자 c*를 열어 달라고 할 수는 없다.

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

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

IND는 indistinguishability, 즉 두 메시지 중 어느 것이 암호화됐는지 구별하기 어렵다는 뜻이다. 공격자는 같은 길이의 메시지 m0와 m1을 제출하고 Challenger는 무작위 bit b를 골라 mb의 암호문 c*를 준다. 공격자가 b를 1/2보다 의미 있게 높은 확률로 맞히지 못하면 안전하다고 본다. CPA에서는 encryption oracle을, CCA에서는 decryption oracle까지 허용한다.

TERMS FROM ZERO

전문 용어를 한 단어씩 풀기

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

CPA

Chosen-Plaintext Attack입니다. 공격자가 고른 plaintext의 암호문을 받아볼 수 있습니다.

CCA

Chosen-Ciphertext Attack입니다. 제한 아래 공격자가 고른 ciphertext의 복호 결과까지 질의할 수 있습니다.

IND

Indistinguishability입니다. 두 후보 plaintext 중 어느 것이 암호화됐는지 구별하기 어려워야 한다는 목표입니다.

Challenge ciphertext

보안 게임에서 숨겨진 bit에 따라 두 후보 중 하나를 암호화한 시험 암호문입니다.

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

  1. m0와 m1의 길이를 같게 해 길이만으로 답을 맞히지 못하게 한다.
  2. Challenger가 b를 무작위로 선택하고 c*=Enc(mb)를 만든다.
  3. IND-CCA2에서는 challenge 이후에도 다른 암호문의 복호화를 질의할 수 있다.
  4. c* 자체의 복호화는 금지하고 마지막에 b'를 추측한다.

왜 여기서 많이 틀릴까요?

CPA와 CCA의 차이는 평문 종류가 아니라 공격자가 사용할 수 있는 oracle의 차이다.

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

핵심부터 말하면 IND-CCA는 공격자가 선택한 암호문을 복호화해 주는 decryption oracle을 이용할 수 있는 강한 보안 모델이다. 공격자는 두 후보 메시지 중 하나를 암호화한 challenge ciphertext를 받은 뒤 어느 메시지인지 맞혀야 하지만, 그 challenge ciphertext 자체를 oracle에 복호화 요청할 수는 없다.

이 문제가 어려운 이유

처음 보면 IND, CCA, oracle, challenge라는 낯선 단어가 한꺼번에 등장한다. 그러나 시험 문제의 본질은 '공격자에게 어떤 능력을 주고도 비밀을 구별하지 못하게 해야 하는가?' 한 문장이다. 먼저 암호화 실험을 게임으로 이해하면 암기할 항목이 줄어든다.

이 글에서 익힐 것

  • 암호화 스키마 Gen·Enc·Dec의 역할을 설명한다.

  • 공격자 모델이 공격 기법 하나가 아니라 공격자에게 허용된 능력의 목록임을 이해한다.

  • oracle, challenge, indistinguishability advantage의 뜻을 안다.

  • IND-CCA 게임을 시간 순서대로 재현한다.

  • challenge ciphertext 복호화 금지 규칙이 왜 필요한지 설명한다.

개념부터 차근차근

  • 암호화 스키마 Π=(Gen, Enc, Dec)

    Gen은 키를 생성하고, Enc는 키와 평문 m을 받아 암호문 c를 만들며, Dec는 키와 암호문 c를 받아 평문을 복원한다. 대칭 암호라면 같은 비밀키를 쓰고, 공개키 암호라면 Enc에는 public key, Dec에는 private key를 쓴다. 정상 사용에서는 Dec(sk, Enc(pk,m))=m이어야 한다.

  • 공격자 모델(Angreifermodell)

    암호가 안전하다는 말은 공격자가 무엇을 할 수 있는지를 정하지 않으면 의미가 없다. 암호문만 볼 수 있는 공격자와, 서버에 조작한 암호문을 보내 복호화 결과의 단서를 얻는 공격자는 능력이 다르다. 공격자 모델은 공격자에게 주는 자료·질의 권한·금지사항·승리 조건을 정확히 정한 실험이다.

  • Oracle은 질문에 답해 주는 검은 상자

    공격자는 내부 키를 보지 못하지만 입력을 넣고 결과를 받을 수 있다. Encryption oracle Enc_k(·)에는 평문을 넣고 암호문을 받고, decryption oracle Dec_k(·)에는 암호문을 넣고 평문을 받는다. 현실에서는 로그인 서버, 스마트카드, API 또는 오류 메시지가 oracle처럼 행동할 수 있다.

  • IND는 indistinguishability, 즉 구별 불가능성

    공격자가 직접 고른 같은 길이의 두 메시지 m₀,m₁ 중 하나가 암호화된다. 암호문을 보고 어느 쪽인지 유의미하게 더 잘 맞히지 못하면 두 메시지의 암호화가 구별 불가능하다고 한다. 무작위 추측 성공률은 1/2이며, 안전한 스키마에서는 효율적인 공격자의 추가 이득 advantage가 무시할 만큼 작아야 한다.

  • CCA는 Chosen-Ciphertext Attack

    공격자가 스스로 암호문을 만들어 복호화 oracle에 질문할 수 있다는 뜻이다. 단순히 우연히 얻은 암호문을 보는 것이 아니라 공격 목적에 맞게 변형하거나 새 암호문을 선택하고 그 복호화 결과를 학습한다.

단계별로 따라가기

  1. 0. Setup

    Challenger가 보안 파라미터에 따라 키를 만든다. 공격자는 키의 비밀 부분을 알지 못한다. 공개키 암호라면 public key는 당연히 받는다.

  2. 1. 학습 질의

    공격자는 자신이 고른 암호문 c를 decryption oracle에 보내 Dec(c)를 받을 수 있다. adaptive CCA에서는 이전 답을 보고 다음 질의를 바꿀 수 있다.

  3. 2. 후보 메시지 제출

    공격자는 같은 길이의 두 평문 m₀와 m₁을 제출한다. 길이를 같게 제한하는 이유는 암호문 길이만 보고 답을 알아내는 사소한 누출을 시험에서 제외하기 위해서다.

  4. 3. Challenge 생성

    Challenger가 비밀 bit b∈{0,1}를 무작위로 고르고 c*=Enc(m_b)를 공격자에게 준다. 공격자의 목표는 b를 맞히는 것이다.

  5. 4. Challenge 이후 질의

    IND-CCA2에서는 공격자가 계속 다른 암호문을 복호화 oracle에 질의할 수 있다. 단, 정확히 c* 자체는 질의할 수 없다. 보통 c*와 관련된 암호문을 조작해 묻는 것은 허용되므로 암호문의 malleability까지 견뎌야 한다.

  6. 5. 추측

    공격자가 b'를 출력한다. b'=b일 확률이 1/2보다 무시할 수 없을 만큼 높지 않다면 그 스키마를 IND-CCA secure라고 한다.

왜 그런지 이해하기

Bad game

c* 자체를 Dec oracle에 보낼 수 있다면 oracle이 즉시 m_b를 돌려준다. 공격자는 m₀·m₁과 비교해 b를 100% 맞힌다.

Meaning

그것은 암호의 약점을 시험하는 것이 아니라 시험관에게 정답지를 그대로 보여 달라고 하는 것과 같다. 그래서 유일한 핵심 금지사항으로 challenge ciphertext 자체의 복호화 질의를 막는다.

Important precision

금지되는 것은 대개 정확히 c*다. 공격자가 c*를 조금 변형한 c'를 묻고도 정보를 얻지 못해야 하므로 IND-CCA가 강한 목표가 된다.

시험 답안으로 정리하기

밀봉 상자와 판독 기계

교수가 'JA' 또는 'NEIN' 쪽지를 무작위로 골라 특수 상자 c*에 봉인한다. 학생은 다른 상자를 마음대로 만들어 판독 기계에 넣고 안의 문구를 받을 수 있다. 그러나 시험 상자 c* 자체는 기계에 넣을 수 없다. 다른 상자의 판독 결과를 아무리 활용해도 c*가 JA인지 NEIN인지 동전 던지기보다 잘 구별하지 못해야 IND-CCA 안전이다.

Real world bridge padding oracle

  • CBC 서버가 공격자가 보낸 암호문을 복호화한 뒤 'padding valid'와 'padding invalid'를 다른 오류·시간으로 구별해 준다고 하자.

  • 서버가 전체 평문을 직접 돌려주지는 않아도 이 한 비트 반응이 제한된 decryption oracle 역할을 한다.

  • 공격자는 이전 암호문 블록의 바이트를 체계적으로 바꾸고 oracle 반응을 관찰해 평문을 바이트 단위로 복원할 수 있다.

  • 이것이 adaptive chosen-ciphertext attack의 현실적 직관이다. 정식 IND-CCA game의 oracle은 더 강하게 전체 복호화 결과를 주는 이상화된 모델이며, 그 강한 모델에서도 안전함을 목표로 한다.

헷갈리는 개념 비교하기

  • CCA1(lunchtime/non-adaptive after challenge): challenge를 받기 전에는 복호화 질의를 할 수 있지만 challenge 이후에는 못 한다.

  • CCA2(adaptive CCA): challenge 이후에도 c* 이외의 암호문에 질의할 수 있다. 일반적으로 IND-CCA라고 하면 강한 IND-CCA2를 뜻하는 경우가 많고, 강의 해설도 이를 gold standard로 다룬다.

  • 시험 2점 답안에서는 이 구분까지 필수는 아니지만, challenge 자체 금지와 decryption oracle은 반드시 써야 한다.

문제를 푸는 순서

  1. 1단계: CCA를 '공격자가 선택한 암호문을 복호화해 보는 능력'이라고 해석한다.

  2. 2단계: decryption oracle이라는 핵심 권한을 적는다.

  3. 3단계: 같은 길이 m₀,m₁ 중 하나의 challenge c*=Enc(m_b)를 받는다고 적는다.

  4. 4단계: c* 자체의 복호화 질의는 금지된다고 적는다.

  5. 5단계: 목표는 b를, 즉 어느 메시지가 암호화됐는지 1/2보다 유의미하게 잘 맞히는 것이라고 마무리한다.

시험장에서는 이렇게 쓰기

Two point german

Beim IND-CCA-Modell besitzt der Angreifer Zugriff auf ein Entschlüsselungsorakel und darf von ihm gewählte Ciphertexte entschlüsseln lassen. Er erhält außerdem einen Challenge-Ciphertext c*=Enc(m_b) für eines von zwei gleich langen gewählten Nachrichten m₀,m₁ und soll b unterscheiden; nur c* selbst darf er nicht beim Entschlüsselungsorakel anfragen.

Shorter german

Der Angreifer darf gewählte Ciphertexte über ein Decryption Oracle entschlüsseln lassen, jedoch nicht den Challenge-Ciphertext selbst. Trotzdem soll er nicht erkennen können, welche von zwei gewählten Nachrichten im Challenge verschlüsselt wurde.

Korean skeleton

복호화 oracle 권한 → 두 같은 길이 후보 → 무작위 하나의 challenge → challenge 자체 질의 금지 → 어느 후보인지 구별이 목표.

채점 포인트

  • decryption oracle을 명시했는가?

  • 공격자가 ciphertext를 선택할 수 있다고 했는가?

  • challenge ciphertext 또는 두 후보 메시지 구별 목표를 설명했는가?

  • challenge ciphertext 자체 질의 금지를 적었는가?

  • 단순히 'ciphertext를 해독하는 공격'이라고만 쓰지 않았는가?

자주 틀리는 지점

  • CCA를 공격 알고리즘 하나의 이름으로 쓰는 것. 이는 공격자 권한과 보안 실험을 정의하는 모델이다.

  • 공격자가 private key를 안다고 쓰는 것. oracle에 질문할 뿐 키 자체는 모른다.

  • challenge c*도 복호화할 수 있다고 쓰는 것. 그러면 게임이 자명해져 보안 정의가 성립하지 않는다.

  • 목표를 무조건 secret key 복구라고 쓰는 것. IND 게임의 직접 목표는 두 후보 중 어떤 메시지가 암호화됐는지 구별하는 것이다.

  • 암호화 oracle만 설명하는 것. 그것은 CPA 쪽 핵심 능력이다.

  • 성공률이 정확히 50%여야만 안전하다고 쓰는 것. 정확히는 효율적인 공격자의 1/2 초과 advantage가 negligible해야 한다.

한 줄로 기억하기

CCA의 C는 Ciphertext, D는 직접 단어에 없지만 핵심 도구는 Decryption oracle이다. '다른 봉투는 열어 달라고 할 수 있지만 시험 봉투 c*만은 못 연다'고 기억한다.

스스로 확인하기

  • IND-CCA 공격자가 oracle에 넣는 입력은 plaintext인가 ciphertext인가?

    ciphertext이며 복호화 결과를 받는다.

  • 왜 m₀와 m₁의 길이를 같게 하는가?

    길이 누출만 보고 challenge를 구별하는 사소한 승리를 제외하기 위해서다.

  • challenge c*를 그대로 복호화 요청할 수 있는가?

    없다. 다른 암호문에 대한 질의는 모델에 따라 허용된다.

  • 무작위 추측의 성공률은?

    1/2이다. 안전한 스키마에서는 그보다 유의미한 추가 이득을 얻지 못해야 한다.

설명의 근거

  • Gedächtnisprotokoll Computersystemsicherheit WS2025_26.md, Krypto / Angreifermodelle, 2-(a), 2 Punkte — 복기 원문.

  • Übung 1 Lösung, p.11-12 — Gen/Enc/Dec, CPA·CCA oracle, challenge ciphertext 예외, IND-CCA2.

  • Übung 2 Lösung, p.1-2 — CBC Padding Oracle을 adaptive chosen-ciphertext attack의 현실 사례로 설명.

예제로 확인하기

  • 공격자 모델과 oracle을 게임처럼 읽는 법을 구체적인 순서로 보기

    시험장에서 계산기는 허용하지만 인터넷은 금지하는 것처럼, 공격자에게 허용되는 도구를 정확히 적어야 난이도와 성공 조건을 말할 수 있다.

    1. 공격자가 처음에 알고 있는 정보를 적는다.

    2. 어떤 oracle에 언제 질의할 수 있는지 적는다.

    3. Challenger가 숨긴 값을 포함한 challenge를 만든다.

    4. 금지된 질의와 공격자의 최종 성공 조건을 적는다.

    각 단계에서 입력이나 message가 어떻게 달라지는지 확인한 뒤 현재 문제의 조건과 결론에 연결합니다.

  • IND-CPA와 IND-CCA를 0부터 구분하기을 구체적인 순서로 보기

    두 상자 중 하나를 잠가 보여 주고 어느 상자인지 맞히는 게임이다. CCA에서는 다른 잠긴 상자를 열어 달라고 물을 수 있지만 바로 시험에 나온 상자 c*를 열어 달라고 할 수는 없다.

    1. m0와 m1의 길이를 같게 해 길이만으로 답을 맞히지 못하게 한다.

    2. Challenger가 b를 무작위로 선택하고 c*=Enc(mb)를 만든다.

    3. IND-CCA2에서는 challenge 이후에도 다른 암호문의 복호화를 질의할 수 있다.

    4. c* 자체의 복호화는 금지하고 마지막에 b'를 추측한다.

    각 단계에서 입력이나 message가 어떻게 달라지는지 확인한 뒤 현재 문제의 조건과 결론에 연결합니다.

AI 구두시험용 프롬프트

한 문항만 풀어라. 먼저 정답을 열지 말고 90초 안에 답안을 말한 뒤, css-ws2025-26-crypto-ang-001의 채점 프레임으로 스스로 채점하라. 문제: IND-CCA(Chosen Ciphertext Attack) Angreifermodell을 설명하라.

학습 기록

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