0x04 암호학과 TLS (Cryptography and TLS)
강의 목표
강의 목표:
├── 암호학 기초
├── 대칭키 암호화
├── 비대칭키 암호화 (공개키)
├── 해시 함수, MAC, HMAC
├── 공유 비밀 생성 (Diffie-Hellman)
└── 최종 목표: SSL/TLS에서 위 기술들의 통합
강의 전 주의사항
중요: 이 강의에서는 암호학의 수학적 세부사항이 아닌 큰 그림에 초점
보안 엔지니어와 프로그래머 관점:
What they do (무엇을 하는가) ✓
How they work (어떻게 작동하는가) △
이유: 검증된 암호 알고리즘을 Building Block으로 사용
1. 암호학 개요
1.1 암호학의 목표
주요 목표: 안전하지 않은 채널에서의 안전한 통신
보안 목표:
├── Confidentiality (기밀성)
├── Integrity (무결성)
└── Authenticity (인증성)
1.2 수천 년의 문제
고전적 시나리오
왕 → 메신저 → 장군
"읽자마자 후퇴하라" - 당신의 왕
세 가지 보안 문제
1. 기밀성 (Confidentiality)
- 적이 메신저를 잡아도 메시지 내용을 이해할 수 없어야 함
2. 무결성 (Integrity)
- 메시지가 도중에 변조되지 않았음을 보장
- 원래 메시지: "전선을 유지하라..."
- 변조된 메시지: "읽자마자 후퇴하라"
3. 인증성 (Authenticity)
- 메시지가 정말 왕으로부터 온 것인지 확인
고전적 해결책
기밀성: 암호화 (오직 키를 가진 자만 읽을 수 있음)
무결성: 봉인 (암호화된 메시지에 봉인)
인증성: 봉인 (발신자 확인용 봉인)
1.3 암호학의 역사
시대별 발전
기원전 405년: 그리스 스파르타 - 나무 막대기 암호
2000년 전: Caesar Cipher - 고정 숫자만큼 이동
1차/2차 대전: 기계적 암호화/복호화 장치 (ENIGMA)
현재: 수학과 전자 시스템 기반 현대 암호학
1.4 암호학 용어
Cryptology: 암호 생성과 해독의 예술과 과학
├── Cryptography: 암호 "생성"
└── Cryptanalysis: 암호 "해독"
암호 시스템 구성 요소:
Plaintext → [Cipher + Key] → Ciphertext → [Decrypt + Key] → Plaintext
암호 시스템 분류
- 대칭키: 암호화와 복호화에 같은 키 사용
- 공개키: 암호화용 공개키, 복호화용 개인키 사용
1.5 Kerckhoffs의 원칙
기본 가정:
• 시스템은 공격자에게 완전히 알려짐
• 오직 키만 비밀
• 암호 알고리즘은 비밀이 아님
이유:
• 비밀 알고리즘은 노출 시 취약함이 드러남
• 비밀 알고리즘은 영원히 비밀로 남지 못함
• 미리 약점을 찾는 것이 좋음
💡 추가 정보: 이는 Saltzer & Schroeder의 "Open Design Principle"의 암호학 버전입니다.
2. 고전 암호 분석
2.1 Caesar Cipher
암호화: 각 문자를 n만큼 이동
예시: A → D (n=3일 때)
분석 방법:
• 가능한 키: 26개
• 공격: 모든 키 시도 (Exhaustive Key Search)
2.2 치환 암호 (Permutation Cipher)
복잡도 분석
가능한 키 수: 26! > 2^88
무차별 대입 공격: 현실적으로 불가능
통계적 분석
영어 문자 빈도 분석:
E (12%), T (9%), A (8%), O (7%), I (7%), N (7%), S (6%), H (6%), R (6%)
공격 방법:
1. 암호문의 문자 빈도 계산
2. 가장 빈번한 문자를 'E'로 추정
3. 다른 문자들도 빈도 순으로 매핑
4. 언어적 패턴 활용하여 복호화
2.3 암호학적 보안 정의
안전한 암호 시스템: 알려진 최선의 공격이 모든 키 시도
불안전한 암호 시스템: 지름길 공격이 알려짐
역설: 불안전한 암호가 안전한 암호보다 깨기 어려울 수도 있음
3. 현대 대칭키 암호학
3.1 일회용 패드 (One-Time Pad)
암호화/복호화 과정
문자 인코딩: e=000, h=001, i=010, k=011, l=100, r=101, s=110, t=111
암호화: Plaintext ⊕ Key = Ciphertext
복호화: Ciphertext ⊕ Key = Plaintext
예시:
Plaintext: h e i l h i t l e r
001 000 010 100 001 010 111 100 000 101
Key: 111 101 110 101 111 100 000 101 110 000
Ciphertext: 110 101 100 001 110 110 111 001 110 101
s r l h s s t h s r
OTP의 완벽한 보안성
같은 암호문에 대해 여러 평문 가능:
Ciphertext: s r l h s s t h s r
Key1 → Plaintext1: "heil hitler"
Key2 → Plaintext2: "kill hitler"
Key3 → Plaintext3: "helike sake"
결론: 암호문이 평문에 대한 유용한 정보 제공하지 않음
OTP 요구사항
완벽한 보안 조건:
• 패드는 무작위여야 함
• 패드는 한 번만 사용
• 패드는 송신자와 수신자만 알고 있어야 함
• 패드 크기 = 메시지 크기
현실적 한계: 키 배송과 관리의 어려움
3.2 코드북 암호
개념: 코드워드가 가득한 책
Zimmerman Telegram 예시:
Februar → 13605
fest → 13732
finanzielle → 13850
...
현대 블록 암호 = 코드북!
가산 코드북
프로세스:
1. 코드북으로 메시지 암호화
2. 가산책에서 무작위 숫자 선택
3. 가산값을 더해서 최종 암호문 생성
4. 암호문 + 가산 위치(MI) 전송
5. 수신자는 가산값 빼고 복호화
목적: 패턴 은닉과 추가 보안
3.3 현대 대칭키 암호 분류
Stream Cipher (스트림 암호):
• 일회용 패드의 일반화
• 짧은 키를 긴 키스트림으로 확장
• 비트 단위 암호화
• 하드웨어 구현 용이, 빠른 속도
Block Cipher (블록 암호):
• 코드북의 일반화
• 고정 크기 블록 단위 암호화
• 높은 데이터 처리량
• Confusion과 Diffusion 사용
3.4 현대 암호화 방식 개요
현대 암호학 분류:
├── 대칭키 암호화 (Symmetric-Key)
│ ├── 스트림 암호
│ └── 블록 암호
├── 비대칭키 암호화 (Asymmetric-Key/Public-Key)
└── 해시 알고리즘
└── 일방향 암호화
3.5 난수 생성
난수의 중요성
암호 시스템에서 신뢰할 수 있는 난수 소스는 필수
용도: 키 생성, 초기화 벡터, 솔트 등
난수 생성기 종류
1. 진난수 생성기 (TRNG)
• 물리적 랜덤성 기반
• 반도체 노이즈, 디지털 회로 지터 등
• 통계적으로 무작위
• 하드웨어 구현
2. 의사난수 생성기 (PRNG)
• 초기 시드값으로부터 수열 생성
• 통계적으로 무작위한 바이트 스트림
• 시드를 알면 예측 가능
위험: 공격자가 시드를 알거나 영향을 미치면 예측 가능
3. 암호학적 안전 의사난수 생성기 (CSPRNG)
• 안전한 특성을 가진 특별한 PRNG
• 출력이 예측 불가능해야 함
• n개의 연속 비트가 주어져도 n+1번째 비트 예측 불가
4. 현대 대칭키 암호 시스템
4.1 대칭키 암호화 개념
특징:
• 암호화/복호화에 같은 키 사용
• 송신자와 수신자가 미리 공유 비밀키 보유
key key
plaintext → encrypt → ciphertext → decrypt → plaintext
4.2 DES (Data Encryption Standard)
DES 특징
개발: IBM + NSA 영향
표준화: 1977년 NIST
유형: 블록 암호 (스트림 암호로도 설정 가능)
블록 크기: 64비트
키 크기: 56비트
사용 기간: 30+ 년 (1970s~2000s)
현재 상태: 키 길이 부족으로 불안전
3DES
구성: DES를 3번 적용
키 크기: 168비트 (3 × 56비트)
상태: 2023년 NIST에서 폐지 권고
이유: AES가 더 효율적, 안전, 다양한 키 크기 지원
4.3 AES (Advanced Encryption Standard)
AES 기본 정보
개발자: Vincent Rijmen, Joan Daemen (벨기에)
NIST 채택: 공식 표준
유형: 블록 암호
블록 크기: 128비트
키 크기: 128, 192, 256, 512비트
AES 특징
동작: 128비트 블록에 다중 라운드 변환
변환 종류: 치환(substitution), 혼합(mixing), 키 추가
현재 상태: 골드 스탠더드
하드웨어 지원: Intel AES-NI, ARM 등 내장
4.4 AES 블록 암호 모드
주요 모드들
• ECB (Electronic Code Book)
• CBC (Cipher Block Chaining)
• OFB (Output Feedback)
• CFB (Cipher Feedback)
• CTR (Counter)
• GCM (Galois Counter Mode)
모드별 특성 비교표
| 모드 | 유형 | 설명 | 패딩 필요 | 특징 |
|---|---|---|---|---|
| ECB | Block | 각 블록 독립 암호화 | Yes | 패턴 누출, 비추천 |
| CBC | Block | 이전 암호문과 XOR 후 암호화 | Yes | IV 필요, 패딩 오라클 취약 |
| CTR | Stream-like | 카운터 암호화 후 평문과 XOR | No | 병렬화 가능, 현대 프로토콜 선호 |
| CFB | Stream-like | 이전 암호문으로 다음 평문 암호화 | No | 자체 동기화 스트림 |
| OFB | Stream-like | 암호화 출력 피드백으로 키스트림 생성 | No | 비자체 동기화 |
| GCM | Stream-like | CTR + 인증 (AEAD) | No | 빠름, 안전, 널리 사용 |
ECB 모드의 문제점
문제: 동일한 평문 블록 → 동일한 암호문 블록
결과: 암호문에서 패턴 인식 가능
예시: 같은 색상의 픽셀들이 같은 암호문 생성
CTR 모드
동작 방식:
1. 각 블록마다 카운터 값 추가
2. 새로운 키스트림 블록 계산
3. 평문과 XOR하여 암호문 생성
장점: 병렬 처리 가능, 무작위 접근 가능
GCM 모드
구성: CTR 모드 + MAC 계산
특징:
• C in GCM = Counter (CTR과 같은 방식)
• 암호화 중 MAC 동시 계산
• AEAD (Authenticated Encryption with Associated Data)
보장:
• Message Authentication: 원본 송신자 확인
• Message Integrity: 전송 중 변조 감지
4.5 ChaCha20
개발: Google
유형: 스트림 암호
보안성: AES와 동등한 안전성
표준: TLS 1.2, 1.3에 포함
성능 비교:
• AES: 고성능 머신에서 빠름
• ChaCha20: 모바일/임베디드 기기에서 빠름
• AES: 소프트웨어 안전 구현 어려움
5. 해시 함수
5.1 해시 함수 기본 개념
특징:
• 일방향 암호화 (언해싱/디해싱 불가능)
• 키 사용하지 않음: H(m) = h
• 빠른 계산 시간
대비: 암호화는 Enc(key, m) = c
5.2 해시 함수의 목적
용도:
1. 임의 길이 데이터의 고정 크기 "지문" 생성
2. 패스워드 해싱 (평문 저장 불필요)
3. 무결성 보장
6. MAC과 HMAC
6.1 MAC (Message Authentication Code)
정의: 키를 사용하는 일방향 함수
형태: MAC(k, m) = d
용도: 메시지 끝에 다이제스트 첨부하여 수신자 검증
6.2 MAC vs Hash 비교
MAC: Hash:
• 키 사용 • 키 미사용
• 무결성 + 인증성 보장 • 무결성만 보장
• 공유키 필요한 검증 • 누구나 검증 가능
6.3 HMAC
정의: Hash-based Message Authentication Code
특징: 현재 가장 널리 사용되는 MAC
구현: 해시 함수(예: SHA-256)로 MAC 구축
HMAC(K, m) = H((K' ⊕ opad) || H((K' ⊕ ipad) || m))
여기서:
• H: 암호학적 해시 함수
• K: 비밀키
• K': 블록 크기로 확장된 키
• opad, ipad: 패딩 상수
6.4 MAC 요약
MAC의 역할:
• 키와 메시지를 받아 다이제스트 생성
• 무결성 보장
• 인증성 보장
사용법: 메시지 끝에 다이제스트 첨부
현재 표준: HMAC이 해시 함수를 MAC으로 변환
7. 공개키 암호 시스템
7.1 공개키 암호의 역사
배경
1970년대 중반 이전: 모든 암호는 대칭키
현재: 대칭키가 여전히 2-3배수 더 빠름
질문: 왜 공개키 암호가 혁신적이었는가?
키 교환 문제
대칭키 시스템의 문제:
• Alice와 Bob이 공유 대칭키 Ks 필요
• 키 배송을 위한 안전한 채널 필요
• n명 참가자 시 n개 키 필요
인터넷 환경에서 더 큰 문제:
• 신뢰할 수 없는 매체
• Google 방문해서 물리적 키 교환 불가능
역사적 발전
1976: Whitfield Diffie, Martin Hellman (Stanford)
→ Diffie-Hellman Key Exchange 발표
1978: Ron Rivest, Adi Shamir, Leonard Adleman (MIT)
→ RSA 알고리즘 발표
1973: Clifford Cocks (영국 GCHQ)
→ RSA와 유사한 PKC 구현 (기밀)
7.2 공개키 암호 개념
키 생성
RSA 등 공개키 시스템 키 생성 결과:
Public Key (공개키):
• 데이터 암호화용
• 비밀이 아님
Private Key (개인키):
• 데이터 복호화용
• 비밀
실제 사용 예시
Github SSH 키 생성:
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
결과:
• id_rsa (개인키) - 비밀 보관
• id_rsa.pub (공개키) - Github에 등록
7.3 공개키 암호의 응용
세 가지 주요 응용
1. 암호화/복호화 (기밀성)
2. 디지털 서명 (인증성)
3. 키 교환
암호화/복호화
프로세스:
1. Bob이 공개키 쌍 생성
2. Bob이 공개키를 Alice에게 전송
3. Alice가 Bob의 공개키로 메시지 암호화
4. Alice가 암호문을 Bob에게 전송
5. Bob이 자신의 개인키로 복호화
디지털 서명
서명 과정:
1. 메시지 해시 계산: Hash(Msg)
2. 개인키로 해시 암호화: Enc(Hash, KPriv) = Signature
3. 메시지 + 서명 전송
검증 과정:
1. 받은 메시지의 해시 계산: Hash(Msg)
2. 공개키로 서명 복호화: Dec(Sig, KPub)
3. 두 해시값 비교
4. 일치하면 서명 유효
7.4 Diffie-Hellman 키 교환
동기
문제: 공개키 시스템이 대칭키보다 훨씬 느림
해결책: 하이브리드 암호 시스템
• 키 캡슐화: 공개키 시스템 사용
• 데이터 캡슐화: 대칭키 시스템 사용
DH의 핵심 아이디어
목표: 두 당사자가 "공유키를 함께 생성"
방법: 공개키 계산 구성 요소만 노출
결과: 제3자는 공유키 계산 불가능
개발자: Whitfield Diffie, Martin Hellman
💡 추가 정보: Diffie-Hellman은 현대 인터넷 보안의 기초가 되는 키 교환 메커니즘으로, TLS/SSL, VPN, SSH 등에서 널리 사용됩니다.
예상 시험문제
1. 대칭키 vs 비대칭키 암호 비교
문제: 대칭키 암호와 비대칭키 암호의 특징을 비교하고, 각각의 장단점과 적용 분야를 설명하시오.
모범답안:
대칭키 암호:
- 특징: 암호화/복호화에 같은 키 사용
- 장점:
- 빠른 속도 (비대칭키보다 2-3배수 빠름)
- 대용량 데이터 처리 적합
- 구현 단순
- 단점:
- 키 배송 문제 (안전한 채널 필요)
- 키 관리 복잡 (n명이면 n개 키 필요)
- 확장성 한계
- 적용: 대용량 데이터 암호화, 세션 암호화
비대칭키 암호:
- 특징: 공개키(암호화)와 개인키(복호화) 분리
- 장점:
- 키 배송 문제 해결
- 디지털 서명 가능
- 확장성 우수
- 단점:
- 느린 속도
- 복잡한 수학적 계산
- 키 크기 큼
- 적용: 키 교환, 디지털 서명, 인증
결론: 현대 시스템은 하이브리드 방식 사용 (공개키로 대칭키 교환, 대칭키로 데이터 암호화)
2. AES 블록 암호 모드 분석
문제: ECB, CBC, CTR, GCM 모드의 특징을 비교하고, 각각의 보안상 장단점을 설명하시오.
모범답안:
ECB (Electronic Code Book):
- 동작: 각 블록 독립 암호화
- 장점: 구현 단순, 병렬 처리 가능
- 단점: 패턴 누출 (같은 평문 → 같은 암호문)
- 결론: 보안상 권장하지 않음
CBC (Cipher Block Chaining):
- 동작: 이전 암호문과 XOR 후 암호화
- 장점: 패턴 은닉, 널리 사용됨
- 단점: 순차 처리만 가능, 패딩 오라클 공격 취약
- 요구사항: IV(Initialization Vector) 필요
CTR (Counter Mode):
- 동작: 카운터 암호화 후 평문과 XOR
- 장점: 병렬 처리 가능, 무작위 접근, 패딩 불필요
- 단점: 카운터 재사용 시 치명적
- 적용: 현대 프로토콜에서 선호
GCM (Galois Counter Mode):
- 동작: CTR + 인증 (AEAD)
- 장점: 암호화 + 인증 동시, 빠른 속도, 높은 보안
- 단점: 구현 복잡
- 적용: TLS, 디스크 암호화에서 널리 사용
3. One-Time Pad 분석
문제: One-Time Pad의 완벽한 보안성을 증명하고, 실제 사용이 어려운 이유를 설명하시오.
모범답안:
완벽한 보안성 증명:
같은 암호문에 대해 모든 평문이 동일한 확률로 가능:
Ciphertext: 110 101 100 001 110 110 111 001 110 101
Key1 → "heil hitler"
Key2 → "kill hitler"
Key3 → "helike sake"
결론: 암호문이 평문에 대한 어떤 정보도 제공하지 않음
수학적 증명:
- 키가 진정한 무작위이면 모든 평문이 동일한 확률
- 암호문 분석으로는 올바른 평문 식별 불가능
- 정보 이론적으로 완벽한 보안
실용적 한계:
- 키 크기: 패드 크기 = 메시지 크기
- 키 배송: 안전한 채널로 대용량 키 전달 필요
- 키 관리: 각 메시지마다 새로운 패드 필요
- 재사용 금지: 패드 재사용 시 보안 완전 붕괴
- 동기화: 송수신자 간 정확한 패드 동기화 필요
결론: 이론적으로 완벽하지만 실용성 부족으로 제한적 사용
4. 디지털 서명 시스템
문제: 디지털 서명의 동작 원리를 설명하고, 기존 손글씨 서명과 비교하여 장단점을 분석하시오.
모범답안:
디지털 서명 동작 원리:
서명 생성:
1. 메시지 해시 계산: H = Hash(Message)
2. 개인키로 해시 암호화: Signature = Encrypt(H, Private_Key)
3. 메시지 + 서명 전송
서명 검증:
1. 받은 메시지 해시 계산: H1 = Hash(Message)
2. 공개키로 서명 복호화: H2 = Decrypt(Signature, Public_Key)
3. H1 == H2 확인
4. 일치하면 서명 유효
손글씨 서명과의 비교:
| 특성 | 손글씨 서명 | 디지털 서명 |
|---|---|---|
| 위조 | 숙련자가 모방 가능 | 수학적으로 위조 극도로 어려움 |
| 검증 | 주관적, 전문가 필요 | 자동화된 객관적 검증 |
| 문서 결합 | 문서와 분리 가능 | 문서 내용과 암호학적 결합 |
| 변조 감지 | 어려움 | 즉시 감지 |
| 부인 방지 | 법적 증거 필요 | 수학적 증명 |
| 복사 | 원본과 사본 구별 어려움 | 각 문서마다 고유한 서명 |
장점:
- 강력한 부인 방지
- 자동화된 검증
- 무결성 보장
- 원격 서명 가능
단점:
- 개인키 보안 의존
- 기술적 복잡성
- 인프라 구축 필요
5. Kerckhoffs의 원칙
문제: Kerckhoffs의 원칙을 설명하고, 이 원칙이 현대 암호학에서 중요한 이유를 실제 사례와 함께 서술하시오.
모범답안:
Kerckhoffs의 원칙:
기본 가정:
• 암호 시스템은 공격자에게 완전히 알려짐
• 오직 키만 비밀
• 알고리즘은 공개됨
요구사항: 알고리즘이 공개되어도 키만 비밀이면 안전해야 함
중요한 이유:
-
비밀 알고리즘의 취약성:
- 역공학으로 알고리즘 노출 가능
- 내부자에 의한 누출
- 제품 분석으로 알고리즘 추출
-
검증 불가능성:
- 비밀 알고리즘은 공개적 검토 불가능
- 숨겨진 취약점 존재 가능
- 의도적 백도어 삽입 위험
-
표준화 어려움:
- 호환성 문제
- 구현 차이로 인한 취약점
- 업데이트 및 패치 어려움
실제 사례:
성공 사례:
- AES: 공개 경쟁을 통해 선정, 전 세계 암호학자들이 20년 이상 분석
- RSA: 1978년 공개 후 지속적 연구로 안전성 검증
실패 사례:
- DVD CSS: 비밀 알고리즘이었으나 역공학으로 쉽게 깨짐
- GSM A5/1: 비밀로 유지되었으나 누출 후 심각한 취약점 발견
- WEP: "보안을 위해" 비공개였으나 쉽게 해독됨
현대적 적용:
- 오픈소스 암호 라이브러리 선호
- 암호학적 프로토콜의 공개 표준화
- 지속적인 학계 검토와 개선
6. 하이브리드 암호 시스템
문제: 왜 현대 암호 시스템에서 대칭키와 비대칭키를 함께 사용하는지 설명하고, TLS에서 이것이 어떻게 구현되는지 서술하시오.
모범답안:
하이브리드 시스템 사용 이유:
-
성능 문제:
- 비대칭키: 대칭키보다 2-3배수 느림
- 대용량 데이터 암호화 시 성능 저하 심각
-
각각의 장점 활용:
- 비대칭키: 키 교환 문제 해결
- 대칭키: 빠른 데이터 암호화
하이브리드 시스템 구조:
Key Encapsulation (키 캡슐화):
• 공개키 암호로 대칭키 안전하게 교환
Data Encapsulation (데이터 캡슐화):
• 교환된 대칭키로 실제 데이터 암호화
TLS에서의 구현:
TLS Handshake (키 교환):
1. 서버 공개키 인증서 전송
2. 클라이언트가 임시 대칭키 생성
3. 서버 공개키로 대칭키 암호화하여 전송
4. 서버가 개인키로 대칭키 복호화
Data Transfer (데이터 전송):
1. 교환된 대칭키로 모든 데이터 암호화
2. AES-GCM 등 대칭키 알고리즘 사용
3. 빠른 속도로 대용량 데이터 처리
추가 보안 요소:
- Perfect Forward Secrecy: Diffie-Hellman으로 임시 키 생성
- 디지털 서명: 서버 인증 및 무결성 보장
- HMAC: 메시지 인증 및 무결성 검증
장점:
- 키 교환 보안성 (비대칭키)
- 데이터 전송 효율성 (대칭키)
- 확장성과 성능의 균형
- 각 알고리즘의 최적화된 활용
핵심 요약
- 암호학은 안전하지 않은 채널에서의 안전한 통신이 목표이며, 기밀성/무결성/인증성 보장
- Kerckhoffs의 원칙에 따라 알고리즘은 공개하고 키만 비밀로 유지
- 대칭키 암호는 빠르지만 키 교환 문제, 비대칭키 암호는 키 교환 해결하지만 느림
- AES는 현재 대칭키 표준이며, 모드별로 다른 보안 특성과 성능
- 해시 함수는 무결성, MAC/HMAC은 무결성과 인증성 보장
- 디지털 서명은 부인 방지와 인증성 제공
- 현대 시스템은 하이브리드 방식으로 각 암호 기술의 장점 활용
- 난수 생성의 품질이 전체 암호 시스템의 보안에 결정적 영향
💡 중요: 암호학은 개별 알고리즘이 아닌 시스템적 접근이 필요하며, 각 구성 요소들이 어떻게 상호 작용하여 전체적인 보안을 달성하는지 이해하는 것이 핵심입니다.