CSS 1타 강사 · CONCEPT 06/25
IND-CPA와 IND-CCA 게임에서 공격자는 무엇을 할 수 있을까요?
IND 게임에서 공격자는 길이가 같은 m0, m1을 내고 둘 중 하나의 암호문 c*를 받습니다. IND-CPA는 encryption oracle을, IND-CCA는 여기에 decryption oracle도 허용합니다. 단, CCA에서도 challenge ciphertext c* 자체의 복호화 질문은 금지됩니다.
전문 용어를 보기 전에 이 장면부터 잡으세요
출제자가 두 상자 중 하나를 잠가 주고 어느 상자인지 맞히게 합니다. CCA에서는 다른 상자는 열어 달라고 부탁할 수 있지만 시험 상자 자체를 열어 달라고 할 수는 없습니다.
공격자가 사용할 수 있는 oracle을 그리는 게임
00
한 장면으로 문제를 시작해 봅시다
이번 페이지에서 끝까지 따라갈 예시
Eve가 길이가 같은 m0='YES'와 m1='NO!'를 제출하고, challenger가 둘 중 하나를 암호화해 c*를 돌려주는 게임을 생각합니다.
비유와 실제 시스템을 정확히 연결하기
- 동전으로 두 상자 중 하나를 고르는 심판random challenge bit b
- 원하는 물건을 잠가 달라는 창구encryption oracle
- 잠긴 상자를 열어 달라는 창구CCA의 decryption oracle
이 예시에서 사람·장치·데이터·화살표를 먼저 찾습니다. 아직 용어를 완벽히 몰라도 “누가 무엇을 가지고, 어떤 처리를 거쳐, 무엇이 달라지는가”를 말할 수 있으면 출발점은 충분합니다.
01
긴 이름을 작은 용어로 분리하기
한 제목에 여러 단어가 들어 있어도 같은 기능을 뜻하지 않습니다. 아래 카드를 하나씩 읽고 각 용어의 대상과 역할을 따로 잡으세요.
공격자 모델과 oracle을 게임처럼 읽는 법
공격자 모델(Angreifermodell)은 공격자가 어떤 정보를 보고 어떤 기능을 사용할 수 있는지 정한 규칙이다. Oracle은 공격자가 질문을 보내면 정해진 계산 결과를 돌려주는 가상의 상자다. Encryption oracle은 공격자가 고른 평문을 암호화해 주고, decryption oracle은 고른 암호문을 복호화해 준다. 보안 정의는 강한 공격자에게 이런 기능을 허용해도 목표를 달성하지 못하는지 시험한다.
TERMS FROM ZERO
공격자 모델과 oracle을 게임처럼 읽는 법 핵심 용어
아래 단어는 이미 안다고 가정하지 않습니다. 먼저 쉬운 뜻을 읽고, 본문에서 같은 단어가 나오면 이 정의로 다시 바꾸어 읽으세요.
Attacker model
공격자가 무엇을 보고, 선택하고, 질문하고, 바꿀 수 있는지를 정확히 정한 가정입니다.
Oracle
보안 게임에서 공격자가 정해진 형식으로 질의하고 답을 받을 수 있는 가상 인터페이스입니다.
Challenge
공격자가 구별하거나 위조해야 하는 중심 시험값입니다.
Advantage
공격자의 성공 확률이 무작위 추측보다 얼마나 높은지를 나타내는 값입니다.
IND-CPA와 IND-CCA를 0부터 구분하기
IND는 indistinguishability, 즉 두 메시지 중 어느 것이 암호화됐는지 구별하기 어렵다는 뜻이다. 공격자는 같은 길이의 메시지 m0와 m1을 제출하고 Challenger는 무작위 bit b를 골라 mb의 암호문 c*를 준다. 공격자가 b를 1/2보다 의미 있게 높은 확률로 맞히지 못하면 안전하다고 본다. CPA에서는 encryption oracle을, CCA에서는 decryption oracle까지 허용한다.
TERMS FROM ZERO
IND-CPA와 IND-CCA를 0부터 구분하기 핵심 용어
아래 단어는 이미 안다고 가정하지 않습니다. 먼저 쉬운 뜻을 읽고, 본문에서 같은 단어가 나오면 이 정의로 다시 바꾸어 읽으세요.
CPA
Chosen-Plaintext Attack입니다. 공격자가 고른 plaintext의 암호문을 받아볼 수 있습니다.
CCA
Chosen-Ciphertext Attack입니다. 제한 아래 공격자가 고른 ciphertext의 복호 결과까지 질의할 수 있습니다.
IND
Indistinguishability입니다. 두 후보 plaintext 중 어느 것이 암호화됐는지 구별하기 어려워야 한다는 목표입니다.
Challenge ciphertext
보안 게임에서 숨겨진 bit에 따라 두 후보 중 하나를 암호화한 시험 암호문입니다.
Ciphertext-only와 Known-plaintext 공격
Ciphertext-only attack(COA)은 공격자가 암호문만 가지고 평문이나 키에 대한 정보를 찾는 모델이다. Known-plaintext attack(KPA)은 일부 평문과 그에 대응하는 암호문 쌍을 이미 알고 있는 모델이다. 공격자가 원하는 평문을 직접 고를 수 있는 CPA는 KPA보다 더 큰 능력을 준다.
TERMS FROM ZERO
Ciphertext-only와 Known-plaintext 공격 핵심 용어
아래 단어는 이미 안다고 가정하지 않습니다. 먼저 쉬운 뜻을 읽고, 본문에서 같은 단어가 나오면 이 정의로 다시 바꾸어 읽으세요.
Ciphertext-only attack
공격자가 ciphertext들만 알고 분석하는 공격 상황입니다.
Known-plaintext attack
일부 plaintext와 그에 대응하는 ciphertext 쌍을 공격자가 알고 있는 상황입니다.
Chosen-plaintext attack
공격자가 plaintext를 직접 골라 그 암호문을 받을 수 있는 더 강한 상황입니다.
Known pair
서로 대응하는 plaintext와 ciphertext 한 쌍입니다.
02
실제 시스템에서는 이 순서로 움직입니다
예시를 단계별로 해체하기
- 1단계Challenger가 secret key를 생성합니다.
- 2단계공격자는 같은 길이의 challenge message m0와 m1을 선택합니다.
- 3단계Challenger는 random bit b를 고르고 c*=Enc(k,mb)를 반환합니다.
- 4단계CPA에서는 encryption oracle, CCA에서는 추가로 decryption oracle을 사용할 수 있습니다.
- 5단계CCA에서도 challenge ciphertext c* 자체를 복호화해 달라는 질문은 금지됩니다.
- 6단계공격자가 b를 1/2보다 유의미하게 잘 맞히지 못하면 indistinguishable하다고 봅니다.
이 단계들은 시험 답안에서 원인과 결과가 빠지지 않도록 만든 설명 순서입니다.
손으로 따라가는 초보 예제
YES와 NO! 중 어느 것이 암호화됐는지 맞히는 게임
공격자 Eve가 같은 길이의 `YES`와 `NO!`를 내고 challenger가 둘 중 하나를 암호화합니다.
- 1단계Challenger가 secret key를 만들지만 Eve에게는 주지 않습니다.
- 2단계Eve는 길이가 같은 `m0=YES`, `m1=NO!`를 제출합니다. 길이가 다르면 ciphertext length가 답을 누설할 수 있습니다.
- 3단계Challenger는 비밀 bit b를 고르고 `c*=Enc(k, mb)`를 돌려줍니다.
- 4단계IND-CPA에서 Eve는 다른 plaintext의 encryption을 질의할 수 있고, IND-CCA에서는 다른 ciphertext의 decryption도 질의할 수 있습니다.
- 5단계단, CCA에서도 `c*` 자체를 열어 달라고 하면 게임이 즉시 끝나므로 금지됩니다.
- 6단계Eve가 b를 무작위 1/2보다 유의미하게 잘 맞히지 못하면 scheme이 해당 모델에서 indistinguishable하다고 봅니다.
그래서 무엇을 배웠나? CPA와 CCA의 차이는 공격자에게 허용된 oracle이며, 보안 목표는 plaintext 자체 복원뿐 아니라 두 후보의 구별도 어렵게 하는 것입니다.
03
관련 개념도 하나씩 따로 이해하기
공격자 모델과 oracle을 게임처럼 읽는 법
비유에서 실제 시스템으로 옮겨 보기
먼저 떠올릴 장면 · 시험장에서 계산기는 허용하지만 인터넷은 금지하는 것처럼, 공격자에게 허용되는 도구를 정확히 적어야 난이도와 성공 조건을 말할 수 있다.
정확한 뜻 · 공격자 모델(Angreifermodell)은 공격자가 어떤 정보를 보고 어떤 기능을 사용할 수 있는지 정한 규칙이다. Oracle은 공격자가 질문을 보내면 정해진 계산 결과를 돌려주는 가상의 상자다. Encryption oracle은 공격자가 고른 평문을 암호화해 주고, decryption oracle은 고른 암호문을 복호화해 준다. 보안 정의는 강한 공격자에게 이런 기능을 허용해도 목표를 달성하지 못하는지 시험한다.
- 1단계공격자가 처음에 알고 있는 정보를 적는다.
- 2단계어떤 oracle에 언제 질의할 수 있는지 적는다.
- 3단계Challenger가 숨긴 값을 포함한 challenge를 만든다.
- 4단계금지된 질의와 공격자의 최종 성공 조건을 적는다.
IND-CPA와 IND-CCA를 0부터 구분하기
비유에서 실제 시스템으로 옮겨 보기
먼저 떠올릴 장면 · 두 상자 중 하나를 잠가 보여 주고 어느 상자인지 맞히는 게임이다. CCA에서는 다른 잠긴 상자를 열어 달라고 물을 수 있지만 바로 시험에 나온 상자 c*를 열어 달라고 할 수는 없다.
정확한 뜻 · IND는 indistinguishability, 즉 두 메시지 중 어느 것이 암호화됐는지 구별하기 어렵다는 뜻이다. 공격자는 같은 길이의 메시지 m0와 m1을 제출하고 Challenger는 무작위 bit b를 골라 mb의 암호문 c*를 준다. 공격자가 b를 1/2보다 의미 있게 높은 확률로 맞히지 못하면 안전하다고 본다. CPA에서는 encryption oracle을, CCA에서는 decryption oracle까지 허용한다.
- 1단계m0와 m1의 길이를 같게 해 길이만으로 답을 맞히지 못하게 한다.
- 2단계Challenger가 b를 무작위로 선택하고 c*=Enc(mb)를 만든다.
- 3단계IND-CCA2에서는 challenge 이후에도 다른 암호문의 복호화를 질의할 수 있다.
- 4단계c* 자체의 복호화는 금지하고 마지막에 b'를 추측한다.
Ciphertext-only와 Known-plaintext 공격
비유에서 실제 시스템으로 옮겨 보기
먼저 떠올릴 장면 · COA는 자물쇠로 잠긴 상자만 보는 상황, KPA는 몇 개 상자의 잠그기 전 내용과 잠근 뒤 모습을 함께 본 상황, CPA는 원하는 물건을 골라 상자에 넣어 잠근 결과를 요청할 수 있는 상황이다.
정확한 뜻 · Ciphertext-only attack(COA)은 공격자가 암호문만 가지고 평문이나 키에 대한 정보를 찾는 모델이다. Known-plaintext attack(KPA)은 일부 평문과 그에 대응하는 암호문 쌍을 이미 알고 있는 모델이다. 공격자가 원하는 평문을 직접 고를 수 있는 CPA는 KPA보다 더 큰 능력을 준다.
- 1단계공격자가 평문을 전혀 모르는지 일부 쌍을 아는지 구분한다.
- 2단계알려진 평문을 공격자가 선택했는지 우연히 관찰했는지 구분한다.
- 3단계더 많은 능력을 가진 모델을 견디면 보통 더 약한 모델도 견딘다는 방향을 확인한다.
04
강의 스크립트 원본과 연결하기
IND-CPA challenge game과 oracle capability를 보여 주는 대표 슬라이드입니다. 먼저 위의 초보 설명을 읽고, 원본에서는 같은 개념이 어떤 기호와 독일어·영어 용어로 표현되는지 확인하세요.
Vorlesung/02_Grundlagen_Krypto_RMU_v2.pdf · p.56, p.57, p.60 · IND-CPA challenge game과 oracle capability02_Grundlagen_Krypto_RMU_v2.pdf· p.56, p.57, p.60
05
시험 함정과 답안에 적용하기
- 공격자 모델과 oracle을 게임처럼 읽는 법 · 공격자가 ‘강하다’라고만 쓰면 정의가 되지 않는다. 질의 가능 대상, 시점, 금지 조건을 구체적으로 써야 한다.
- IND-CPA와 IND-CCA를 0부터 구분하기 · CPA와 CCA의 차이는 평문 종류가 아니라 공격자가 사용할 수 있는 oracle의 차이다.
- Ciphertext-only와 Known-plaintext 공격 · Known plaintext와 chosen plaintext를 같은 말로 쓰지 않는다. KPA에서는 공격자가 그 평문을 선택할 권한이 없을 수 있다.
서술형 답안 골격
attacker capability → challenge → forbidden query → 성공 조건 순서로 네 칸을 채웁니다.
정의 → 등장 주체 또는 입력 → 작동 순서 → 보안 효과 → 조건과 한계 순서로 쓰고, 위 단계별 예시에서 필요한 문장을 골라 붙이세요.
책을 덮고 “IND-CPA와 IND-CCA 게임에서 공격자는 무엇을 할 수 있을까요?”에 대해 핵심 용어 두 개, 작동 단계 세 개, 대표 함정 하나를 말해 보세요.
다음 개념으로 넘어가기 전 확인
- Challenge message 두 개의 길이를 같게 하는 이유는?
- CCA가 CPA보다 강한 공격자 모델인 이유는?
- CCA에서 challenge ciphertext 복호 질의를 금지하는 이유는?