Issuu on Google+

컴퓨팅 환경에서 보안 문제 인터넷미디어공학부 김상진

1

교육목표 „ „

컴퓨터 보안의 특징 이해 위협의 종류 이해

2/24

1


컴퓨터 보안이란? „

컴퓨터 보안의 정의 z

„

컴퓨팅 시스템을 비밀성(confidentiality), 무결성(integrity), 가용성(availability)에 대한 위협(threat)으로부터 보호하는 것

컴퓨팅 시스템 z z z z

컴퓨터(하드웨어, 소프트웨어) 컴퓨터 네트워크 정보 사용자

3/24

컴퓨터 보안이 제공해야 하는 특성 „

비밀성: 권한이 있는 참여자만 자산에 접근할 수 있도록 보장해야 함 (confidentiality, secrecy, privacy) z

„

무결성: 권한이 있는 참여자만이 자산을 조작할 수 있어야 함 (integrity) z z z

„

암호화(encryption)

인가되지 않은 변경 또는 적절하지 않은 변경 데이터 무결성, 원천지 무결성(authentication) 방지 메커니즘, 발견 메커니즘

가용성: 권한이 있는 참여자는 자산을 접근할 수 있어야 함 (availability, denial of service) 4/24

2


가용성 „

요구사항 z

z

서비스 또는 시스템을 의도된 방법을 통해 쉽게 사용할 수 있어야 한다. 요청에 대한 응답이 시기적절해야 한다. „

z

z

z

한계 대기, 받아들일 수 있는 시간 내에 완료

자원이 공정하게 할당되어, 어떤 요청이 다른 요청보다 선호되는 경우가 없어야 한다. 관련 서비스 또는 시스템은 결함 허용 기능을 제공해야 한다. 병행 접근을 적절하게 제어해야 한다.

5/24

컴퓨터를 이용한 정보보호의 특징 „ „

정보의 가치는 다양하다. 물리적 접촉없이 접근할 수 있다. z

„

원거리에서 통신을 이용한 공격이 가능하다.

자동화된 공격 z

salami attack

„

공격기술의 확산

„

여전히 정보보호에 대한 인식이 부족하다. 실제 침입이 발생하여도 이미지 손상을 우려하여 공개적 수사를 기피한다.

z

„

비전문가에 의한 공격이 가능하다.

6/24

3


컴퓨터 침입의 특징 „

쉬운 침투(easiest penetration) 원리 z

„

침입자는 침투할 수 있는 모든 가능한 방법을 사용한다는 것을 고려해야 한다.

약한 링크(weakest link)의 원리 z

보안은 그것의 가장 약한 링크보다는 안전할 수 없다.

7/24

가정과 신뢰 „

예) 문의 잠금 장치를 열기 위해서는 열쇠가 필요함. z

가정: 잠금 장치는 안전하다. „

z

숙련된 열쇠공은 열쇠가 없어도 열 수 있다.

열쇠공을 신뢰할 수 없는 환경에서는 이 가정은 잘못된 것이다. „ „

반대로 열쇠공을 신뢰한다면 이 가정은 유효하다. 열쇠공을 신뢰한다는 것은 열쇠공은 주인이 인가할 경우에만 문을 열어준다.

8/24

4


취약점, 위협, 제어 (I) „

„

취약점(vulnerability): 손실이나 해를 초래하기 위해 활용할 수 있는 보안 시스템의 약점 위협(threat): 손실이나 해를 초래할 수 있는 잠재력을 지닌 상황 z 위협은 취약점을 제어하여 방어한다 취약점

위협 • get wet, • get hurt, • drowned

9/24

취약점, 위협, 제어 (II) „

공격(attack): 취약점을 이용하여 침투를 시도하는 행위 z

„

공격의 분류: 능동(active), 수동(passive)

제어(control): 취약점을 제거하거나 줄이기 위한 행동, 장치, 절차, 또는 기술 z

이런 행동, 장치, 절차, 기술 등을 보호수단(countermeasure, safeguard)이라 하고, 보호수단을 관리하는 것을 제어라 하기도 한다.

10/24

5


위협의 분류 „

„

„

„

„

가로챔(interception): 권한이 없는 참여자가 자산에 대한 접근을 획득한 경우 방해(interruption): 시스템의 자산이 손실되거나 사용할 수 없게 된 경우 (unavailable, unusable) 변경(modification): 권한이 없는 참여자가 자산에 대한 접근을 획득하였을 뿐만 아니라 조작한 경우 위조(fabrication): 권한이 없는 참여자가 위조된 개체를 생성한 경우 또 다른 분류 z

disclosure, deception, disruption, usurpation

11/24

위협 관련 용어 „

snooping: 비인가된 정보의 가로챔 (disclosure)

„

alteration: 비인가된 정보의 변경

z

z

„

z

„ „ „

목적: deception, disruption, usurpation이 모두 가능

masquerading: 다른 개체로 위장(impersonation) z

„

예) 도청(wiretapping)

다른 말로 spoofing cf. delegation: 권한 위임

repudiation of origin: 전송한 것에 대한 거짓 부인 denial of receipt: 수신한 것에 대한 거짓 부인 delay: 일시적인 서비스 중지 denial of service: 장기적인 서비스 중지

12/24

6


방법, 기회, 동기 „

악의적인 공격자의 요구 조건 z

방법: 공격을 성공하기 위해 필요한 기술, 지식, 도구 등을 가지고 있어야 함 „

z

z

널리 알려져 있음

기회: 공격을 성공하기 위한 시간이 있어야 하며, 시스템에 대한 접근이 가능해야 함 동기: 공격을 해야 하는 이유가 있어야 함 취약한 시스템: 쉬우니까, 매우 안전한 시스템: 깨면 인정받을 수 있으니까 그러면 중간 정도의 보안을 갖춘 시스템이…

13/24

취약점 „

컴퓨터 시스템의 가능한 취약점 z

하드웨어 취약점

방해: 서비스 거부(DOS), 파괴

변경: 장치 추가, 장치 제거

가로챔: 도난

위조: 전체 시스템 교체

• 하드웨어 대한 공격의 목표: 가용성 약화 • 공격하기도 쉽지만 공격 여부를 알기도 쉽다. • 물리적 보안으로 극복

14/24

7


취약점 z

소프트웨어 취약점 가로챔

방해: 삭제 변경: • 트로이 목마 • 바이러스 • 트랩도어 • 정보 유출

위조: 불법복사

• 하드웨어 대한 공격보다는 알기가 쉽지 않다.

15/24

취약점 z

데이터 취약점 방해: 가용성과 관련

변경: 무결성과 관련

가로챔: 비밀성과 관련

위조

• 일반 대중에게는 HW나 SW보다 가치가 있다. • 데이터의 가치를 측정하는 것은 어렵다. • 데이터의 수명은 일관성이 없으며 예측하기 어렵다.

16/24

8


노출된 다른 자산 „

네트워크 z z z

„

접근 z

„

위치 확인의 어려움 공유된 안전하지 않은 매체의 사용 원격 사용자 인증 문제 비인가된 접근을 막을 수 있어야 한다.

사람 z z

권한의 집중을 피해야 한다. 내부자에 의한 공격이 가장 방어하기 어렵다. „

cf. social engineering 17/24

컴퓨터 범죄자 „

아마추어 z z

„

크래커(cracker) z z

z

„

전문 기술이 없는 사람들을 말함 가장 많은 범죄를 범함 자기 만족 또는 호기심에 의해 공격하는 사람들을 말함 보안 분야에서는 악의성이 없는 공격자를 해커(hacker)라 하고, 악의성이 있는 공격자를 크래커라 함. 현재는 악의성과 관계 없이 모두 해커라고 함

직업 컴퓨터 범죄자

18/24

9


정책과 메커니즘 „

„

정책(policy): 보안 정책이란 허용되는 것과 허용되지 않는 것을 나열한 문장을 말한다. 메커니즘(mechanism): 보안 메커니즘이란 보안 정책을 강요하기 위해 사용되는 방법, 도구, 절차 z z z z

P: 가능한 모든 상태의 집합 Q: 가능한 안전한 상태의 집합 R: 메커니즘에 의해 제한되는 상태의 집합 메커니즘의 분류: 안전(R ⊆ Q), 일치(R = Q), 넓음(∃r∈R s.t r∉Q)

19/24

메커니즘 „

메커니즘들이 성공적이라는 것은 z

z z z

각 메커니즘은 보안 정책의 하나 이상의 부분을 구현하기 위해 설계되어 있음 메커니즘들의 합은 보안 정책의 모든 측면을 구현함 메커니즘들은 올바르게 구현되어 있음 메커니즘들이 설치되어 있고 올바르게 관리되고 있음

20/24

10


위협을 다루는 유형 „

방지(prevent): 공격을 막거나 취약점을 제거 z

„ „ „

단념(deter): 불가능하지는 않지만 공격이 어렵도록 만듬 반사(deflect): 다른 목표가 더 매력이 있도록 만듬 발견(detect): 공격이 이루어질 때 또는 사후에 발견할 수 있도록 고안 z

„

정상적인 동작에 영향을 줄 수 있음

지속적인 모니터링 필요

복구(recover): 공격을 중단시키고 평가하여 공격에 의한 손상을 복구해야 함 z z

추후 같은 공격이 가능하지 않도록 취약점을 찾아 제거해야 함 보복 공격(retaliation)

21/24

방어 방법 „ „

암호기술 소프트웨어 제어 z z

z z

„

하드웨어 제어 z

„

프로그램 내부 제어: 프로그램 자체에 구현된 제어 운영체제에 의한 제어: 사용자 인증, 파일 시스템 접근 제어 독립제어 프로그램: 백신, 침입탐지 도구 등 개발 제어: 취약점이 될 수 있는 소프트웨어 허점 제거 스마트카드, 침입차단 시스템 등

물리적 제어 22/24

11


제어의 효과 „ „

보안의 필요성 인식 효과성 원리(principle of effectiveness) z

„ „

제어는 제대로 사용되어야지만 효과를 발휘한다.

제어의 중첩 주기적 재검토 z

영구적으로 효과가 있는 제어는 거의 없다.

23/24

12


암호기술 개요

인터넷미디어공학부 김상진

1

교육목표 „

암호기술에 대한 개략적 이해 z z z z z

암호기술 용어 대칭 암호알고리즘 vs. 비대칭 암호알고리즘 전자서명 해쉬함수 암호해독과 암호알고리즘의 안전성

2/24

1


기본 용어 „ „ „

„

„

„

„

국내 정보보호용어 표준 http://www.kisa.or.kr/standard/word_search/ 정보통신용어 표준 http://www.tta.or.kr/CV/front/index.jsp

평문(plaintext, cleartext) 암호문(ciphertext) 암호화(encryption, encipherment): 평문을 암호문으로 바꾸는 과정. cf. encrypt, encipher: 암호화하다. 복호화(decryption, decipherment): 암호문을 평문으로 바꾸는 과정. cf. decrypt, decipher: 복호화하다. 암호기술(cryptography): 메시지를 안전하게 유지하는 기술과 학문. cf. 암호기술자(cryptographer) 암호해독기술(cryptoanalysis): 암호문으로부터 평문을 추정하는 기술과 학문. cf. 암호해독자(cryptoanalyst) 암호학(cryptology): 암호기술 + 암호해독기술. cf. 암호학자(cryptologist) 3/24

보안 목적 (I) „

비밀성(confidentiality, secrecy, privacy) z

„

무결성(integrity) z

„

비밀을 유지해야 하는 기간에 따라 처리하는 방법이 달라야 한다. 예) 암호키의 길이 변경의 종류: 삽입, 삭제, 교체

인증(authentication): 식별(identification)+검증(verification) z z

주장된 것을 검증하는 것 유형 „ 메시지 인증: 무결성과 같음 „ 메시지 원천지 인증: 메시지를 발신된 위치 또는 송신자의 검증 ‰ 위치는 정보보안에서는 중요하지 않음 „ 실체 인증(entity authentication): 주장된 신원을 검증

4/24

2


보안 목적 (II) „

부인방지(non-repudiation): 개체가 지난 행위나 약속(commitment)을 부인하지 못하도록 하는 서비스 z z z z

발신 부인방지(Non-Repudiation of Origin, NRO) 전달 부인방지(Non-Repudiation of Delivery, NRD) 제출 부인방지(Non-Repudiation of Submission, NRS) 수신 부인방지(Non-Repudiation of Receipt, NRR)

서비스 NRO

부인방지 내용

부인자

제공자

메시지의 송신

발신자

발신자

NRR

메시지의 수신

수신자

수신자

NRS

메시지의 제출

메시지 전달 기관

메시지 전달 기관

NRD

메시지의 수신

메시지 전달 기관

메시지 전달 기관

5/24

암호알고리즘 „

„

암호알고리즘(cryptographic algorithm): 암호화와 복호화 과정에 사용되는 수학 함수 현대 암호화 함수와 복호화 함수는 모두 키(key)를 사용 z

표기법

E ( M , K ) = C , D (C , K ) = M EK ( M ) = C , {M }K = C ,

z

„ „

DK (C ) = M {C}−K1 = M

암호키(cryptographic key): 암호화/복호화에 사용되는 키

현대 암호알고리즘의 안전성은 키에 의존해야 함. 키 대신에 알고리즘의 비밀성에 의존할 경우에는 제한적 알고리즘(restricted algorithm)이라 한다. z 알고리즘을 공유할 수 없다. z 역공학(reverse engineering)의 가능성이 존재한다. 6/24

3


암호시스템 „

다음 5개의 투플을 암호시스템(cryptosystem) 또는 암호계라 한다. P

가능한 평문의 유한집합

C

가능한 암호문의 유한집합

K

키공간, 가능한 암호키의 유한집합

E: P Æ C 암호화 함수(전단사함수) D: C Æ P 복호화 함수, ∀p ∈ P , D (E ( p )) = p

7/24

키 용어 암호키(cryptographic key)

암호알고리즘에 사용되는 모든 종류의 키

암호화키(encryption key)

암호화 과정에 사용되는 암호키

복호화키(decryption key)

복호화 과정에 사용되는 암호키

비밀키(secret key)

대칭 암호알고리즘에 사용되는 암호키

개인키(private key)

비대칭 암호알고리즘에서 각 개인이 비밀로 하는 암호키

공개키(public key)

비대칭 암호알고리즘에서 각 개인이 공개하는 암호키

세션키(session key)

특정 통신 세션에서만 사용되는 일회성 비밀키 8/24

4


대칭 암호알고리즘 „

대칭 암호알고리즘(symmetric, conventional, secret key algorithm): 암호화키=복호화키 z

„

„

비밀키 암호알고리즘

암호화하여 전송하는 사람과 그것을 수신하는 사람은 같은 키를 공유하고 있어야 함 종류 z

z

스트림(stream) 암호방식: 평문의 각 비트(or 바이트)를 하나씩 암호화하는 방식 블록(block) 암호방식: 평문을 일정한 크기로 나누어, 각 블록을 암호화하는 방식

9/24

비대칭 암호알고리즘 „

비대칭 암호알고리즘(asymmetric, public key algorithm): 암호화키≠복호화키 z

„

공개키 암호알고리즘

대칭 암호알고리즘과 달리 사전에 공유된 키가 없어도 메시지를 암호화하여 교환할 수 있다. z

공개키의 인증이 가장 중요 비밀키 암호알고리즘

공개키 암호알고리즘

키관계

암호화키=복호화키

암호화키≠복호화키

키길이

짧다 비트 조작 연산

상대적으로 길다

성능(|)

성능(°)

DES, AES

RSA

기본연산 소프트웨어 구현 대표 알고리즘

수학 연산

10/24

5


전자서명 „

일반 서명의 요구사항 z

z z

z z

„

인증(authentic): 누가 서명하였는지 확인이 가능해야 함 Æ 각 서명자마다 서명이 독특해야 한다. 위조불가(unforgeable): 위조가 불가능해야 함 재사용불가(not reusable): 서명을 다시 사용할 수 없어야 함 (cut-and-paste). Æ 서명은 메시지에 의존해야 한다. 변경불가(unalterable): 서명된 문서의 내용을 변경할 수 없어야 함 부인방지(non-repudiation): 나중에 부인할 수 없어야 한다.

일반 서명과 전자 서명의 차이점 z

z

일반 서명과 달리 전자 서명은 수학적으로 서명자를 검증할 수 있 는 메카니즘이 존재한다. 일반 서명은 서명마다 동일한 형태를 지니지만 전자 서명은 서명하는 문서마다 다른 형태를 지닌다. 11/24

전자서명 „

전자 서명의 구성요소 z z z z

z

„

M: 서명할 수 있는 메시지의 유한 집합 S: 고정된 길이의 서명의 유한 집합 S((M,-K)ÆS): 서명을 생성하기 위해 사용되는 함수 V((M,S,+K)Æ{true, false}): 서명을 검증하기 위해 사용되는 함수 -K: 서명키(signature key, signing key), +K: 확인키(verification key, verifying key)

요구사항 z

z

s∈S가 m∈M에 대한 유효한 서명이 되기 위한 필요충분조건은 V(m,+K,s)=true이다. -K를 모르는 사람이 V(m,+K,s)=true인 임의의 m∈M과 s∈S를 찾는 것은 계산적으로 어렵다. 12/24

6


해쉬함수 „

„

해쉬함수(hash function): 임의의 길이에 이진 문자열을 고정된 길이의 이진 문자열(해쉬값, 메시지 다이제스트, 메시지 지문)로 매핑하여 주는 함수 요구사항 z z z

z

z

압축 계산의 용이성: x가 주어지면 H(x)는 계산하기 쉬워야 함 일방향성(one-wayness): 입력을 모르는 해쉬값 y가 주어졌을 때, H(x’)=y를 만족하는 x를 찾는 것은 계산적으로 어렵다. (OWHF) 약한 충돌회피성(weak collison-resistance): H(x)가 주어졌을 때 H(x’)=H(x)인 x’(≠ x)을 찾는 것은 계산적으로 어렵다. 강한 충돌회피성(strong collison-resistance): H(x’)=H(x)인 서로 다른 임의의 두 입력 x와 x’을 찾는 것은 계산적으로 어렵다. (CRHF) 13/24

암호해독 „

보안을 위협하는 자 z

„

암호해독: 키를 모르는 상태에서 암호문으로부터 평문을 얻어내는 행위 z

„

공격자: attacker, intruder, penetrator, interloper, adversary, enemy, eavesdroper, interceptor, tapper

성공적인 암호해독: 키 또는 평문을 얻은 것

암호해독 외에 다른 방법으로 키가 알려진 것을 노출(compromise)되었다고 한다.

14/24

7


암호해독 공격의 분류 „

전사 공격(brute-force attack): 가능한 모든 키를 검사하는 방법(exhaustive key search) z

„

암호해독 공격은 아님

암호문 단독 공격(ciphertext-only attack) 알고 있는 것

C1 , C2 ,… , Cn

목표

1) P1 , P2 ,… , Pn 2) K 3) 알고리즘: Cn+1 → Pn +1

15/24

암호해독 공격의 분류 „

„

기지 평문 공격(known-plaintext attack) 알고 있는 것

( P1 , C1 ), ( P2 , C2 ),… , ( Pn , Cn )

목표

1) K 3) 알고리즘: Cn+1 → Pn +1

선택 평문 공격(chosen-plaintext attack) 알고 있는 것 목표

( P1 , C1 ), ( P2 , C2 ),… , ( Pn , Cn )

공격자가 P1 , P2 ,… , Pn 를 선택 1) K 3) 알고리즘: Cn+1 → Pn +1

16/24

8


암호해독 공격의 분류 „

적응적 선택 평문 공격(adaptive chosen-plaintext attack) z

z

„

선택 평문 공격은 공격자가 (평문,암호문) 쌍들을 얻기 전에 해독에 사용할 모든 평문을 선택해야 한다. 적응적 선택 평문 공격은 얻은 암호문을 바탕으로 새로운 평문에 대한 암호문을 얻을 수 있다.

선택 암호문 공격(chosen-ciphertext attack)

z

알고 있는 것

( P1 , C1 ), ( P2 , C2 ),… , ( Pn , Cn ) 공격자가 C1 , C2 ,… , Cn 를 선택

목표

1) K 3) 알고리즘: Cn+1 → Pn +1

주로 공개키 알고리즘을 공격할 때 사용

17/24

알고리즘에 대한 공격 결과 „ „

„

„

완전 성공(total break): 암호키를 발견 광역 성공(global deduction): 암호키를 발견하지 못하였지만 복호화할 수 있는 알고리즘을 발견 인스턴스 성공(instance deduction): 어떤 한 암호문으로부터 그것의 평문을 얻어냄 정보 추출(information deduction): 암호문으로부터 평문의 일부나 암호키와 관련된 정보를 얻어냄

18/24

9


공격의 복잡성 척도 „

„

„

데이터 복잡성(data complexity): 공격이 성공하기 위해 필요한 데이터의 양 처리 복잡성(processing complexity): 공격이 성공 하기 위해 필요한 시간(work factor) 저장공간 요구사항(storage requirement): 공격하기 위해 필요한 메모리 공간

19/24

암호알고리즘의 안전성 „ „

암호알고리즘을 해독하기 위해 요구되는 노력에 의해 측정 계산적 안전성(computationally secure): 암호알고리즘을 해독하기 위한 지금까지 알려진 가장 우수한 방법이 불합리하게 많은 컴퓨터 시간을 요구할 경우. z

„

증명가능 안전성(provably secure): 어렵다고 알려진 문제와 등가일 경우. 예) 소인수분해 문제 z

„

공격 방법이 기준

안전성에 대한 절대적 증명은 아님

무조건적(절대적) 안전성(unconditionally secure): 무한한 컴퓨터 자원을 가져도 암호알고리즘을 해독할 수 없는 경우.

20/24

10


고전 암호알고리즘

인터넷미디어공학부 김상진

1

교육목표 „

고전 암호알고리즘에 대한 이해 z z

치환과 자리바꿈 암호 방식 고전 암호알고리즘의 암호해독 방법 „

Kasiski 방법, IC(Index of Coincidence)

2/18

1


치환 암호 방식 „

„

치환 암호 방식(substitution cipher): 평문을 구성하는 요소의 값을 다른 값으로 바꾸는 암호방식 단순 치환 암호 방식 z z

z

다른 말로 monoalphabetic cipher라 한다. 예1) Caesar cipher(shift cipher) „ 0 ≤ K ≤ 25, EK(P)=P+K mod 26, DK(C)=C-K mod 26 „ 예) K=3, ‘A’Æ‘D’

예2) 치환 암호 방식

A B C D E F G H

I

J K L M N O P Q R S T U V W X Y Z

X N Y A H P O G Z Q W B T S F L R C V M U E K J D

I

3/18

치환 암호 방식 - 계속 „

예3) Affine cipher z

K=(a, b), EK(P)=aP+b mod 26, DK(C)=a-1(Y-b) mod 26 „

a: gcd(a,26)=1, a가 역원을 가지기 위한 필요충분조건 z

„ z „

서로 소(relatively prime, coprime)

a-1:

법 26에서 a의 곱셈에 대한 역원

예) K=(3, 5), 8=3x1+5, 1=9(8-5)

단순 치환 암호 방식의 문제점 z

문자의 출현 빈도(frequency)를 은닉하지 못함

4/18

2


치환 암호 방식 - 계속 „

극복 방안 z

z

z

Homophonic 치환 암호 방식: 한 문자가 여러 개의 다른 값으로 매핑되는 방식 „ ‘A’ Æ 5, 13, 17, 25 Polygram 치환 방식: 문자들을 블록 단위로 교환하는 방식 „ “ABA” Æ “RTQ” 다중 치환 암호 방식(polyalphabetic cipher): 주기적으로 문자 위치마다 다른 단순 치환 암호 방식을 사용하는 방식 „ Vigenere cipher: K = (k1 , k2 ,… , km )

E ( p1 , p2 ,… , pn ) = ( p1 + k1 mod 26,… , pm + km mod 26, pm +1 + k1 mod 26,…) D(c1 , c2 ,… , cn )

=

(c1 − k1 mod 26,… , cm − km mod 26, cm +1 − k1 mod 26,…)

5/18

자리바꿈 암호 방식 „

„

자리바꿈 암호 방식(transposition, permutation cipher): 평문을 구성하는 요소들의 위치를 바꾸는 암호 방식 p1 p2 p3 p4 단순 열기준 자리바꿈 암호 방식 p p p p z

P = p1 p2 … p16

z

C = p1 p5 p9 p13 … p12 p16

z z

„

P=

5

6

7

8

p9

p10

p11

p12

p13

p14

p15

p16

평문: LASTNITEWASHEAVENPLEASEMARRYME 암호문: LTELAAEAERSWVARTALESYNSNEMIHPME

자리바꿈 암호 방식도 추측 공격이 가능하다. z z

자리바꿈을 반복하면 할수록 추측이 어려워진다. 암호문: LEVSMTAAYIEERNHLRTSPASANMAWEEE

6/18

3


자리바꿈 암호 방식 „

컴퓨터 자리바꿈 z

z

„

- 계속

자리바꿈 맵을 사용 1

2

3

4

5

6

7

8

1

4

8

7

3

6

2

5

예) ILOVEYOU Æ IVUOOYLE

치환과 자리바꿈을 결합하면 안전성을 높일 수 있다. z

product cipher: 현대 대칭 암호알고리즘의 기반

7/18

고전 암호 알고리즘에 대한 암호해독 „

영문에 등장하는 각 문자의 출현 빈도는 일정하다. z

z

z z

z

z

‘e’, ‘t’, ‘a’, ‘o’ 등은 다른 문자들에 비해 출현 빈도가 매우 높다. 단어의 시작에서 가장 많이 사용되는 문자는 ‘t’이고, 단어 끝에 가장 많이 사용되는 문자는 ‘e’이다. 길이가 1인 단어는 ‘a’와 ‘I’가 유일하다. 길이가 2인 단어 중 가장 많이 사용되는 것은 “to”와 “in”이다. 세 개의 문자 조합 중 가장 많이 사용되는 것은 “ing”, “ion”, “ent”이다. 모음 다음에 가장 많이 등장하는 문자는 ‘n’이다.

8/18

4


Kasiski 방법 „ „ „

„

다중 치환 암호 방식에서 키의 길이를 구하는 방법 영어에서 높은 빈도로 등장하는 패턴(세 문자 이상)을 이용 기본원리: 길이가 n인 키를 사용하여 메시지를 다중 치환 암호 방식으로 암호화할 때, 어떤 특정 단어 또는 문자 그룹이 평문에 k번 등장하면 그것은 같은 문자로 거의 k/n번 암호화된다. 암호문에서 반복하여 나타나는 길이가 3이상인 영문 패턴을 찾아 그 위치를 기록하고, 나타난 위치 간에 공약수를 찾아 키의 길이를 결정할 수 있다.

9/18

Kasiski 방법의 예) „

암호문 예) z vyclhtufpvmvpwtujckxtrjsxhzlxmkflhbvlqtw vfzttefkeekdccmvyccbvscrtovycbpjsamnrrte agcdinvqtxokmabmvagtebcgyqirwxdrbvnajycw jrazxtwmgmjvedhfxsnlkucubpvywtebcgturlxg fztxwwrjlaqvvextzktgvjuxmjkftekdgitvzmcl qwqnlvvkhyqigcmgcjtvvlyavwigdlkkwdkuyctk rccplwiciagnmgwfvqrkkschtrvphhpngiacgygm ktsattjcihhjixenjycwpfrpicirxvwcyglgkmuf qiyalvycgxcicvhqufpvmvphtpuzpwjrazxtjhjl vrqiagicpkgxmdwrcsbxtjycwdrbeewdcgl z

vcy: 0,55,66,325, jyc: 116,296,381 10/18

5


Index of Coincidence „

영문을 단순 치환 암호 방식으로 암호화하면 대응되는 암호문의 문자와 평문의 문자는 같은 빈도를 가지게 된다. z

암호문에 등장하는 빈도 분포가 실제 분포와 어떤 차이가 있는지 확인함으로써 키의 길이를 예측할 수 있다. λ =z

„ „

Proba: 문자 ‘a’가 평문에 등장할 확률, ∑ λ =aProbλ = 1 모든 영문자가 동일한 확률로 균일하게 영문에 등장한다면 다음이 성립한다. Prob a =

„

= Prob z = 1/ 26 = 0.0384

균등 분포와의 차이는 표준편차를 이용하여 구할 수 있다. 2

λ=z 1  λ=z 1  var = ∑  Probλ −  = ∑ Probλ2 − 26  λ = a 26 λ =a 

11/18

Index of Coincidence „ „

- 계속

Freq (Freq − 1)

λ λ 표준편차를 구하기 위해 Probλ2를 로 추정한다. n(n − 1) IC(Index of Coincidence)는 다음과 같이 정의된다.

Freq λ (Freq λ − 1) n(n − 1) λ =a λ =z

IC = ∑ „

키 길이와 IC와의 관계 키의 길이

1

2

3

4

5

10

>10

IC

.068

.052

.047

.044

.044

.041

.038

12/18

6


Index of Coincidence

- 계속

예) 슬라이드 10의 암호문에 대한 빈도

„

A

B

C

D

E

F

G

H

I

J

K

L

M

14

10

33

10

12

11

22

13

16

17

19

16

16

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

8

2

14

11

18

7

27

10

30

19

17

15

8

z

IC=0.044028

13/18

슬라이드 10의 암호문의 해독 „

„

„

„

„

[1]= vtmuthkvvekvvopnanomeqdajtjfkpeufwqtvjkv qvqgvwkurwgfkrpckthnpcwgqvcqmpjtvggrtdw [2]= yuvjrzflffdysvjrgvkvbirjrwvxuvbrzrvzjkdz wviclikycinvsvngtjjjfickiyiuvurjrixcjrd [3]= cfpcjllqzkcccysrcqmacrbyamescycltjvkufgm qkgjygwcccmqcpgysciyrrymyccfpzahqcmsybc [4]= lpwksxhtteccrcatdtaggwvczgdnuwgxxletxtic nhctaddtpigrhhigaixcpxguagvphpzjipdbceg [5]= hvtxxmbwtembtbmeixbtyxnwxmhlbttgwaxgmetl lymvvlkklawkthamthewivlflxhvtwxlakwxwel z

tÆv: key=2, eÆv: key=17, eÆc: key=-2=24, tÆg: key=13, eÆt: key=15

14/18

7


슬라이드 10의 암호문의 해독 „

„

„

-계속

theysrdhcgkerjessexiralfifinkxionumtusghtobgecomrp imepxthepmtbeeemeapmnsunxlatgpypeqtlesgimtonmkecte cketjortjibadiyysaphhacmirfotxhegqsdguawidehmneaje cketesankr… tÆv: key=3, eÆv: key=17, eÆc: key=-2=24, eÆt: key=15, eÆx: key=19 thewordhackerhasseveraldefinitionsitusedtobeacompl imentthenitbecameaninsultlatelypeopleseemtolikecra ckerforthebadguysandhackerforthegoodguysidefineaha ckerasanindividualwhoexperimentswiththelimitations ofsystemsforintellectualcuriosityorsheerpleasureth eworddescribesapersonwithaparticularsetofskillsand notaparticularsetofmoralstherearegoodhackersandbad hackersjustastherearegoodplumersandbadplumers

15/18

XOR를 이용한 암호알고리즘 „

간단한 XOR 암호 알고리즘 z z

XOR 연산의 특징: a ⊕ a = 0, 암호화/복호화 알고리즘 „

z

a⊕b⊕b = a

EK ( P) = P ⊕ K , DK (C ) = C ⊕ K = P

간단한 XOR 암호 알고리즘에 대한 공격 „ „ „

가정: 평문은 ASCII 텍스트이며, 키의 길이는 길지 않다. Kasiski 방법 또는 IC 값을 구하여 키 길이를 결정한다. 암호문과 키의 길이 만큼 이동한 암호문을 XOR 한다.

16/18

8


XOR를 이용한 암호알고리즘 „

- 계속

One-time pad z

z z

암호문 단독 공격에 대해 무조건적으로 안전하다는 것이 증명된 암호알고리즘 이 시스템은 키가 무한히 긴 다중 치환 암호 방식이다. 예) vernam cipher: 키는 오직 한번만 사용 n ∈ , ki , pi , ci ∈ {0,1}, K = {k1 , k2 ,… , kn ) E ( p1 , p2 ,… , pn ) = ( p1 ⊕ k1 , p2 ⊕ k2 ,… , pn ⊕ kn ) D(c1 , c2 ,… , cn ) = (c1 ⊕ k1 , c2 ⊕ k2 ,… , cn ⊕ kn )

z

무한하고 랜덤한 키를 사용하기 때문에 실제 이 암호 방식을 사용하는 것은 어렵다.

17/18

Diffuse/Confuse „

단순 치환과 단순 자리바꿈 암호 방식은 개별적으로는 높은 안전성을 제공하지 못한다. z

„

„

그러나 치환과 자리바꿈을 결합하면 높은 안전성을 얻을 수 있다.

치환 암호 방식은 암호문과 암호키 간에 관계를 알기 어렵도록 해준다. Æ confusion 자리바꿈 암호 방식은 암호문과 평문 사이의 관계를 알기 어렵도록 해준다. Æ diffusion

18/18

9


대칭 암호알고리즘 I

인터넷미디어공학부 김상진

1

교육목표 „

대칭 암호알고리즘에 대한 이해 z z

암호화 모드 스트림 암호방식에 대한 이해

2/24

1


대칭 암호알고리즘 „ „

„

크게 블록 암호방식과 스트림 암호방식으로 분류됨. 블록 암호방식은 메시지를 일정한 크기로 나누어 각 블록을 암호화하는 방식이며, 스트림 암호방식은 한번에 한 비트 또는 한 바이트를 암호화하는 방식이다. 블록 암호방식에서 같은 평문 블록은 항상 같은 암호문 블록으로 암호화된다. Æ 극복방안으로 암호 모드 (cryptographic mode) 등장 z

„

스트림 암호방식에서 각 바이트 또는 비트는 암호화될 때마다 항상 다른 바이트 또는 비트로 암호화된다. (영구적인 것은 아님)

암호화 모드는 일반적으로 암호알고리즘, 피드백(feedback), 단순 연산으로 구성된다. z

암호모드를 도입하여도 기존 알고리즘의 성능에 큰 영향을 주어서는 안 된다. 3/24

ECB(Electronic CodeBook) Mode „

피드백을 사용하지 않는 모드: 문제점에 대한 극복방안이 아님. z z

„

„

암호화: Ci=EK(Pi) 복호화: Pi=DK(Ci)

암호화된 메시지의 블록들의 위치를 바꾸면 복호화된 평문 메시지의 블록 위치들도 동일하게 바뀌게 된다. 오류 확산: 암호화된 메시지의 한 블록의 오류는 그 블록의 복호화에만 영향을 준다.

4/24

2


Padding „

평문 메시지의 크기가 정확하게 블록 크기의 배수가 아닌 경우에 필요 z

„

Padding: 완전하지 않은 마지막 블록 끝에 규칙적인 일련의 비트 (예: 모두 0, 모두 1)를 추가하여 완전한 블록을 만드는 것

일반적인 padding 방법: z

pn: 평문의 마지막 블록(k 바이트), 블록 크기: 8 바이트 | 실제 평문

8-k=0 | | | | | | | | pn

z z z z z z z 8 pn+1

z padding된 평문

8-k ≥ 1 | | | z z z z 5 pn

5/24

Padding „

- 계속

끝 표시 문자 사용 방법: 8-k=0 | | | | | | | | pn 8-k ≥ 1 | | | … z z z z pn z

„

… z z z z z z z pn+1 z

… 끝 표시 문자

문제점: 끝 표시 문자의 선택

끝 표시 문자는 평문에 의해 결정된다.

일반적인 padding 방법이나 끝 표시 문자 사용 방법이나 모두 모든 메시지를 항상 padding하여야 한다.

6/24

3


Ciphertext Stealing „

암호문 훔침 기법(ciphertext stealing): 바로 전 암호문 블록 이용하여 padding 하는 방식 z

암호화된 메시지의 크기와 평문의 크기가 같아진다. Pn-1

Pn

EK

Cn

Cn-1

C'

EK

DK

Cn-1

C'

Cn || C ′ =

EK ( Pn −1 )

Pn

Pn-1

C'

Pn −1

C'

DK

Pn || C ′ =

= EK ( Pn || C ′)

Cn −1

Cn

DK (Cn −1 )

= DK (Cn || C ′)

7/24

CBC(Cipher Block Chaining) Mode „

같은 평문 블록들도 서로 다른 암호문 블록으로 암호화된다. Pi-1

Pi

Pi+1

Ci-1

Ci

Ci+1

DK

DK

DK

Pi-1

Pi

Pi+1

XOR

EK

EK

EK

Ci-1

Ci

Ci+1

Ci = EK ( Pi ⊕ Ci −1 )

Pi = DK (Ci ) ⊕ Ci −1

병렬 수행 가능

8/24

4


CBC Mode „

C0: 초기화 벡터(IV, Initalization Vector) z z z

„

보통 랜덤 블록을 사용함 같은 메시지를 다시 암호화하여도 결과가 다르다. 초기 벡터의 비밀성을 유지할 필요는 없다.

Ci: Pi와 Pi 앞에 있는 모든 평문 블록들에 의해 결정된다. z

„

- 계속

암호문 블록들의 위치를 변경하면 올바르게 복호화되지 않는다.

Padding z z

일반적인 방법이나 끝 문자 표시 방법을 사용할 수 있음 Ciphertext stealing Cn || C ′ = EK ( Pn −1 ⊕ Cn − 2 ) Cn −1

= EK ({Pn || 0} ⊕ {Cn || C ′})

Pn || C ′ = DK (Cn −1 ) ⊕ {Cn || 0} Pn −1 = DK (Cn || C ′) ⊕ Cn − 2

0으로 padding 9/24

CBC Mode „

- 계속

오류 확산 z

Pi에 오류가 발생하면 Ci에 영향을 줄 뿐만 아니라 Ci 이후 모든 암호문 블록에 영향을 준다. „

z

마지막 블록을 MAC(Message Authentication Code)로 사용할 수 있음

Ci에 오류가 발생하면 복호화 때 Pi와 Pi+1에만 영향을 준다. „ „

자체 회복(self-recovering) 기능을 지니고 있다고 한다. Ci의 j번째 비트 오류 z Pi는 쓰레기, Pi+1는 j번째 비트만 잘못된다.

10/24

5


CBC Mode „

- 계속

보안 문제 z z

z

z

암호화된 메시지 끝에 임의의 블록을 추가할 수 있다. 암호문 블록을 변경하여 예측할 수 있는 변경을 도입할 수 있다. „ Ci의 한 비트를 변경하여 Pi+1의 특정 비트를 변경할 수 있다. 평문의 패턴은 chaining 때문에 은닉되지만 메시지가 매우 길 경우에는 패턴이 다시 등장한다. „ 블록의 크기가 m이면 2m/2 블록 다음에는 같은 패턴이 다시 등장할 수 있다.

Ci와 Cj가 같으면 다음이 성립한다.

Pi ⊕ Pj = Ci −1 ⊕ C j −1

11/24

스트림 암호방식 „

가장 단순한 스트림 암호화 방식 z 키 스트림 생성기(keystream generator)를 이용한다. z 암호화하는 사용자와 복호화하는 사용자는 같은 키 스트림 생성기를 가지고 있다. z 암호화하는 키 스트림에서 출력하는 비트(바이트)와 평문의 비트 (바이트)를 하나씩 XOR하여 암호문의 비트(바이트)를 얻는다. z 이 방식의 안전성은 키 스트림 생성기의 출력에 의해 결정된다. „ 키 스트림 생성기가 정말로 랜덤한 비트를 출력할 경우에는 one-time pad와 동일한 안전성을 제공한다. 키 스트림 생성기

키 스트림 생성기

ki pi

ki ci

pi

12/24

6


스트림 암호방식 „

- 계속

문제점 공격자가 암호문과 그것에 해당하는 평문을 가지고 있으면 키 스트림을 얻을 수 있다. z 공격자가 같은 키 스트림으로 암호화된 두 개의 암호문을 가지고 있으면 그것을 XOR하여 두 개의 평문을 XOR한 데이타를 얻을 수 있다. 이것을 공격하여 평문을 얻는 것은 비교적 쉽다. Æ 매번 키 스트림이 달라야 한다. z

„

이와 같은 문제 때문에 스트림 암호방식도 암호키를 사용한다. z

공격자가 키 스트림을 얻어도 키를 바꾸면 처음부터 다시 해독 공격을 해야한다.

13/24

스트림 암호방식 „

- 계속

키 스트림 생성기의 세가지 구성요소 z z

z

내부 상태(internal state): 키 스트림 생성기의 현재 상태 다음 상태 함수(next-state function): 내부 상태를 입력으로 받아 새로운 상태를 출력하여 주는 함수 출력 함수(output function): 키와 내부 상태를 입력받아 키 스트림 비트를 생성하여 주는 함수 내부상태

다음상태함수

K

출력함수

14/24

7


자체 동기화 스트림 암호알고리즘 „

자체 동기화 스트림 암호알고리즘 내부상태 출력 함수

pi z

z

내부상태

K

ci

출력 함수

pi

각 키 스트림 비트는 고정된 개수의 이전 암호문 비트에 의해 결정된다. 내부 상태가 암호문의 첫 n비트에 의존하면 의미없는 데이터를 n비트 전송하여 상호 키 스트림을 동기화할 수 있다. 15/24

자체 동기화 스트림 암호알고리즘 „

„

- 계속

오류 확산: 암호문에 한 비트 오류가 발생하면 n비트 평문에 영향을 준다. 재전송 공격에 취약하다. z

전달되는 몇 개의 암호문 비트를 기록한 후에 재전송하면 처음 동기화하는 동안은 쓸모없는 데이터를 얻게 되지만 그 이후에 올바르게 복호화된다.

16/24

8


자체 동기화 스트림 암호알고리즘 „

- 계속

64 비트 블록 암호방식을 이용한 8비트 스트림 암호방식 shift register

K

shift register

블록 암호

K ki

ki pi z

블록 암호

ci

ci

pi

CFB(Cipher-FeedBack) 모드

17/24

CFB Mode „

암호화 연산만 사용한다. Pi-1

Pi

EK

Ci-1

Pi+1

Ci-1

EK

Ci Ci = Pi ⊕ EK (Ci −1 )

Ci

EK

Ci+1

Pi-1

Ci+1

EK

Pi

Pi+1

Pi = Ci ⊕ EK (Ci −1 )

병렬 수행 가능

18/24

9


CFB Mode - 계속 „ „

데이터를 블록 단위보다 작은 단위로 암호화할 수 있다. 초기 벡터: CFB 모드에서는 항상 다른 것을 사용해야 한다. z

같은 IV를 사용하면 해독자들은 평문을 다음과 같이 얻을 수 있다. C1 = P1 ⊕ EK (C0 ) C1′ = P1′⊕ EK (C0′ ) C1 ⊕ C1′ = P1 ⊕ P1′

„

오류 확산 z

암호화하기 전에 평문 블록 Pi에 오류 „ Pi에 오류가 발생하면 Ci 이후 모든 암호문 블록에 영향을 준다. z CBC와 마찬가지로 마지막 암호문 블록은 MAC 코드로 사용 할 수 있다.

19/24

CFB Mode - 계속 „

오류 확산 계속 z

암호화가 완료된 이후 암호문 블록 Ci에 오류 „ n비트 CFB 모드에서 Ci에 오류가 발생하면 Pi와 Pi이후   m / n  블록의 복호화 과정에 영향을 준다. (m: 블록의 크기) „ 이 때 Pi는 Ci와 동일한 위치에 오류가 발생한다. „ 그러나 영향을 받은 나머지 블록들의 결과는 예측할 수 없다.

20/24

10


OFB(Output FeedBack) Mode „

CFB와 마찬가지로 암호화 연산만 사용한다. Pi-1

Pi

EK

Ci-1

Pi+1

Ci-1

EK

Ci

Ci

EK

Ci+1

Ci = Pi ⊕ Si , Si = EK ( Si −1 )

Pi-1

Ci+1

EK

Pi

Pi+1

Pi = Ci ⊕ Si , Si = EK ( Si −1 )

전처리 가능

21/24

OFB Mode - 계속 „

Si는 암호알고리즘 대신 해쉬함수를 사용하여 생성할 수 있다. z

„ „ „

S0=IV, Si=H(Si-1)

데이터를 블록 단위보다 작은 단위로 암호화할 수 있다. IV: CFB 모드와 마찬가지로 항상 다른 것을 사용해야 한다. 오류 확산 z

z

암호화하기 전에 평문 블록 Pi에 오류 „ Pi에 오류가 발생하면 Ci에 같은 위치에 오류가 발생하며, 다른 암호문 블록에는 영향을 주지 않는다. „ 마지막 블록을 MAC으로 사용할 수 없다. 암호화가 완료된 이후 암호문 블록 Ci에 오류 „ Pi에 같은 위치에 오류가 발생하지만 다른 암호문 블록에는 영향을 주지 않는다.

22/24

11


8비트 OFB 모드 shift register

K

shift register

블록 암호

ki

ki pi

„

블록 암호

K

ci

ci

pi

이처럼 하는 것을 내부 피드백(internal feedback)이라 한다.

23/24

암호화 모드의 비교 ECB

CBC

CFB

OFB

평문 패턴의 은닉

±

|

|

|

평문의 조작

|

U

U

|

전처리 여부

±

±

U

|

병렬 수행

Enc:(|) Dec:(|)

Enc:(±) Dec:(|)

Enc:(±) Dec:(|)

Enc:(±) Dec:(±)

오류 확산

단일 블록

Pi 전체 Pi+1 특정

Pi 특정 Pi+1 전체

Pi 특정

±

±

|

|

블록보다 작은 단위 암호화

24/24

12


대칭 암호알고리즘 II

인터넷미디어공학부 김상진

1

교육목표 „

대표적인 대칭 암호알고리즘 소개 z

DES(Data Encryption Standard)

2/18

1


DES(Data Encryption Standard) „

1972년도에 NIST(National Institute of Standards)에서 표준화 작업 착수 z

IBM에서 제안한 암호알고리즘(Lucifer)에 기반함 „

z

„

H. Feistel이 제안함

NSA(National Security Agency)에서 자문 „ IBM이 원래 제안했던 키 길이(128 비트)를 56 비트로 축소함. „ 내부 동작 메커니즘 중 일부를 교체 z NSA가 DES에 트랩도어를 포함했다고 믿는 사람들의 근거 z NSA가 공표하지는 않았지만 어떤 허점을 알고 있다는 근거

1977년에 표준으로 공식 채택 (FIPS PUB 46) z

유효기간을 10년으로 정함 „

(Federal Information Processing Standard)

그러나 20년 동안 표준으로 사용됨 3/18

DES(Data Encryption Standard) „

1997년에 새 표준안 AES 작업 착수

„

블록방식의 대칭 암호알고리즘

z

z z z

z

2000년 10월에 Rijndael 알고리즘을 새 표준으로 채택 블록크기: 64비트 키의 길이: 56비트(패리티를 추가하여 64비트로 표현) 16 라운드로 구성 „ 각 라운드에서 치환과 자리바꿈 연산을 수행 (product cipher)

현재는 키 길이 때문에 안전하지 않다.

4/18

2


평문

DES

IP K1

L0

R0

f −1

DES( M , K ) = IP J −1

K16 16

K2 2

K1 1

" J J IP( M )

DES (C , K ) = IP J " J 2K15 J1K16 IP(C ) -1

K1 16

R1= L0⊕f(R0,K1)

L1 = R0

IP( M ) = L0 R0 C = IP −1 ( R16 L16 )

L15 = R14

K16

J ( Li −1 || Ri −1 ) = Li || Ri , Ki i

R15= L14⊕f(R14,K15)

f

where Li = Ri −1 , Ri = Li −1 ⊕ f ( Ri −1 , K i ) R16= L15⊕f(R15,K16)

L16 = R15 IP-1 암호문

5/18

DES – IP와

1

IP-1

40

1

아무런 암호학적 의미가 없음

Initial Permutation(IP)

Final Permutation(IP-1)

58 50 42 34 26 18 10

2

40

8

48 16 56 24 64 32

60 52 44 36 28 20 12

4

39

7

47 15 55 23 63 31

62 54 46 38 30 22 14

6

38

6

46 14 54 22 62 30

64 56 48 40 32 24 16

8

37

5

45 13 53 21 61 29

57 49 41 33 25 17

9

1

36

4

44 12 52 20 60 28

59 51 43 35 27 19 11

3

35

3

43 11 51 19 59 27

61 53 45 37 29 21 13

5

34

2

42 10 50 18 58 26

63 55 47 39 31 23 15

7

33

1

41

9

49 17 57 25

6/18

3


DES - ROUND 암호화

복호화

Li-1

Ri-1

Li-1

Ri-1

expansion permutation

expansion permutation

Ki

Ki

s-box substitution

s-box substitution

P-box permutation

P-box permutation

Li

Ri

Li

Li = Ri −1 , Ri = Li −1 ⊕ f ( Ri −1 , K i )

Ri

Li −1 = Ri ⊕ f ( Ri −1 , K i ), Ri −1 = Li

HW. DES의 inverse가 성립함을 증명하시오.

Feistel Cipher

7/18

DES – Expansion/P-box Permutation P-box

Expansion Permutation

32

1

2

3

4

5

4

5

6

7

8

9

8

9

10 11 12

avalanche effect

16

7

20 21

29 12 28 17

24 25 26 27 28

00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 13 Æ 같은 키로 암호화 17 결과는 매우 다르다. 21 대략: 34 곳 25 만약 이런 효과가 없으면 29 범위가 좁혀질 수 있다.

28 29 30 31 32

1

12 13 14 15 16 16 17 18 19 20 20 21 22 23 24

1

15 23 26

5

18 31 10

2

8

32 27

24 14 3

9

19 13 30

6

22 11

25

4

8/18

4


DES – S-box (substitution-box) 48 비트 S1

S2

S3

S4

S5

S6

S7

S8 32 비트

S1 0 0 14 1 0 2 4 3 15

1 4 15 1 12

2 13 7 14 8

3 4 5 1 2 15 4 14 2 8 13 6 2 4 9

6 11 13 2 1

7 8 1 11 7

8 3 10 15 5

9 10 6 12 11

10 6 12 9 3

11 12 11 7 14

12 5 9 3 10

13 9 5 10 0

14 0 3 5 6

15 7 8 0 13

S1(011011) = S1(01, 1101) = S1(1, 13) = 5 = 0101 S1(110011) = S1(11, 1001) = S1(3, 9) = 11 = 1011 S 박스의 각 행은 0부터 15의 permutation이다.

„ „ „

9/18

DES – Key Scheduling 28 비트 Rotate left

28 비트 • 1,2,9,16 : 1 • rest : 2

Rotate left

compression permutation

compression permutation

24 비트 14 17 11 24

1

3

24 비트

5

41 52 31 37 47 55

28 15

6

21 10

30 40 51 45 33 48

23 19 12

4

26

8

44 49 39 56 34 53

27 20 13

2

46 42 50 36 29 32

16

7

10/18

5


DES 분석 „

S 박스를 제외한 모든 계산은 선형(linear)이다. z

linear transform이란 f ( x + y ) = f ( x ) + f ( y ) f (α x ) = α f ( x )

z z

z

선형 암호방식은 기지 평문 공격으로 쉽게 키를 계산할 수 있다. DES의 안전성에 가장 중요한 부분 „ NSA가 이 부분에 자신들만이 알고 있는 trapdoor를 포함하지 않았을까? 아직까지 발견된 것은 없음 „ 거꾸로 NSA가 IBM을 믿지 못하였기 때문에 변경하였을 것이라고 추측하는 사람도 많음. 차분 해독법(differential cryptanalysis)이라는 해독공격에 안전하도록 설계되어있다고 나중에 Biham과 Shamir이 증명함 „ IBM 개발자는 이미 개발할 당시부터 이 해독공격 방법을 알고 있었지만 공표하지 않음 11/18

DES 분석 „

- 계속

DES의 가장 큰 문제점은 키 길이가 너무 짧다는 것이다. z

z

z

z

DES의 전신은 128비트 Æ 원래 제안은 64비트 Æ 패리티의 필요성 때문에 56비트 1977년: Diffie와 Hellman은 $20,000,000이면 하루만에 DES 키를 찾아내는 특수 하드웨어를 제작할 수 있음을 보임 1993년: Weiner는 $100,000이면 하루 반만에 DES 키를 찾아내는 특수 하드웨어를 제작할 수 있음을 보임 Triple-DES 등장, 새 표준의 필요성 대두 Paul Kocher

RSA – DES Challenge III 예산: $250,000 시간: 56 hours

12/18

6


DES 분석 „

암호키는 내부적으로 16개의 서브키로 변경되어 사용된다. z

모두 0이거나 모두 1이면 서브키가 모두 같아진다. „

z

z

E K ( E K ( x )) = x , ∃x s.t E K ( x ) = x

DES의 weak key „ 0000000 0000000, 0000000 FFFFFFF, FFFFFFF 0000000, FFFFFFF FFFFFFF 이 외에 6개의 semiweak key 쌍들이 있다. „ „ „

„

- 계속

E K1 ( E K 2 ( x )) = x , ∃x s.t E K ( x ) = x

예) 01FE 01FE 01FE 01FE와 FE01 FE01 FE01 FE01 이들은 두 종류의 서브키만 만든다.

적은 수를 암호키로 사용하지 말아야 한다. (전사공격에 약함)

13/18

DES 분석 „

DES는 보수 특성(complementation property)을 가지고 있다. z z

z

„

- 계속

EK ( P ) = C , EK ( P ) = C

이것의 의미는 256개의 키 대신에 255개만 검사하면 된다. „ ( P , C1 ), (P , C 2 ) 를 가지고 있으면 E K ( P ) = C 를 구하여 C = C1 이면 검사한 키가 올바른 것이고, C = C 2이면 키의 보수가 올바른 키이다!!! HW. 이 특성이 성립함을 증명하라.

DES는 군이 아니다. z z

(not closed): ¬∃K 3 s.t E K ( E K ( P )) = E K ( P ) (not pure): ¬∃K 4 s.t E K ( E K ( E K ( P ))) = E K ( P ) 2

3

1

2

3

1

4

14/18

7


Double-DES „ „

암호화: C = E K ( E K ( P )) 복호화: P = DK ( DK ( P )) z

„

2

1

2

1

DES가 그룹이면 Double-DES는 DES와 안전성이 같다.

Meet-in-the-Middle Attack z z

Double-DES에서는 E K ( P ) = DK (C ) 이 성립한다. 공격자는 알고 있는 쌍 (P, C)를 이용하여 다음과 같이 기지 평문 공격을 한다. 1

P

E

모든 키(256 개)

2

X1 X2 Xi

Y1 Y2

X 256

Y256

D

Yj 모든 키(256 개)

C O(256x2)=O(257) not O(2112)!!!

15/18

Double-DES z z

z

z z

- 계속

주어진 평문 P의 가능한 암호문은 264 중 하나다. 가능한 키는 2112 개이며, 각 키로 암호화하였을 때 그 결과가 특정 값이 될 확률이 모두 같다고 하자. 그러면 주어진 암호문 C를 생성하는 키는 대략 이 중 2112/264=248 개이다. 따라서 이 공격은 대략 248 개의 false alarm을 주게된다. (P, C) 쌍이 하나만 더 있으면 이제는 매핑이 2128에서 2128이 된다. 따라서 false alarm을 발생할 확률은 2112/2128=2-16으로 감소한다.

16/18

8


2-Key Triple-DES „ „ „

암호화: C = E K ( DK ( E K ( P ))) 복호화: P = DK ( E K ( DK (C ))) E K 대신에 DK 를 사용한 이유

„

1

1

2

1

O(256+256) 256 (P, C) 필요

DES와 호환을 위해: K1=K2 이면 DES와 같음

Meet-in-the-middle 공격? z

„

2

2

2

z

1

2

X = E K1 ( P ) → 256 , Y = E K 2 ( DK1 (C )) → 2112

Triple-DES

Merkle과 Hellman의 선택 평문 공격 D

? =

D

0 1

D

1

3 4

모든 키

모든 키

17/18

2-Key Triple-DES „

– 계속

Oorschot와 Wiener 기지 평문 공격 ? =

D

기지 평문/암호문 쌍

? =

D

a

D

추측 1

3 2 z z z z

모든 키

모든 키 2

4 5

하나 (P, C)가 주어졌을 때 올바른 a를 선택할 확률은 1/264. n개의 쌍이 있으면 성공할 확률은 n/264. 성공하기 위해 시도해야 하는 회수는 264/n. O((256+256)x264/n)

18/18

9


암호수학

인터넷미디어공학부 김상진

1

교육목표 „

암호수학 이해 z z

정수론 대수학(군, 환, 체, 다항식 체)

2/28

1


표기법 ]

정수 집합

]n

n의 양의 정수일 때, 0부터 n-1까지의 정수의 집합 예) ] 10 = {0,1, 2, 3, 4, 5, 6, 7, 8, 9}

]*n

] n 의 원소 중에서 n과 서로 소(relatively prime, coprime)인 원소들의 집합을 말한다. * 예) ] 10 = {1, 3, 7, 9}

gcd(a, b) a와 b의 최대공약수 lcm(a, b) a와 b의 최소공배수 a|b

a가 b를 나눈다. 예) 2 | 10

대문자

집합

소문자

원소 3/28

정수론 ���초 „

„

(나눗셈 정리) 정수 a와 양의 정수 b가 주어졌을 때 다음을 만족하는 유일한 정수 q와 r이 존재한다. a = bq + r, 0 ≤ r < b z 여기서 q를 몫(quotient), r를 나머지(remainder, residue)라 한다. gcd(a, b): 양의 정수 c가 a와 b의 최대공약수가 되기 위한 조건 z c|a와 c|b가 성립 z

„

z

„

∀d s.t d | a ∧ d | b → d | c

유클리드(Euclid) 알고리즘: a = bq + r이면 gcd(a, b) = gcd(b, r) gcd(a , b) = gcd(b, a mod b )

(정수론의 기본정리) 모든 정수 n > 1은 소수의 곱으로 표현되며, 소수 의 순서를 무시하면 그 표현은 유일하다. z 예) 20=22 ± 5

4/28

2


합동식 „

„

„

„

„

a ≡ b (mod n)이면 n|(a-b)이다. 예) 2 ≡ 7 (mod 5) z 법 n에서 a와 b는 합동(congruent)이라고 한다. ab ≡ 1 (mod n)이면 b를 법 n에서 a의 곱셈에 대한 역원(mutiplicative inverse)이라 한다. 예) 2 ± 3 ≡ 1 (mod 5) a가 법 n에서 곱셈에 대한 역원을 가지기 위한 필요충분조건은 gcd(a, n)=1이다. 예) 5 ± 5 ≡ 1 (mod 6), 2 ± ? ≡ 1 (mod 6) a, b, c와 n>0이 정수일 때 gcd(c, n)=1이고 ac ≡ bc (mod n)이면 a ≡ b (mod n) 이다. 예) 2 ± 3 ≡ 7 ± 3 (mod 5) n이 양의 정수일 때 법 n에 관한 기약잉여계(reduced set of residues modulo n)란 n과 서로 소인 각 잉여류를 대표하는 정수를 정확하게 하나만 포함하는 정수의 집합을 말한다. z 예) 법 8에 관한 기약잉여계: {1,3,5,7}, {3,5,7,9}, {±1, ±3}

5/28

Multiplicative Inverse „

Extended Euclid Algorithm: 법 m에서 b의 곱셈에 대한 역원 z z z z z z z z

단계 1. (A1, A2, A3) Å (1,0,m), (B1, B2, B3) Å (0,1,b) 단계 2. B3=0이면 A3=gcd(m, b); no inverse 단계 3. B3=1이면 B3=gcd(m, b); B2≡b-1 (mod m) 단계 4. Q=A3/B3 (정수 나눗셈) 단계 5. (T1, T2, T3) Å (A1-QB1, A2-QB2, A3-QB3) 단계 6. (A1, A2, A3) Å (B1, B2, B3) 단계 7. (B1, B2, B3) Å (T1, T2, T3) 단계 8. goto 단계 2

6/28

3


Multiplicative Inverse „

- 계속

Extended Euclid Algorithm 예) 법 1759에서 550의 역원 Q

A1

A2

A3

B1

B2

B3

1

0

1759

0

1

550

3

0

1

550

1

-3

109

5

1

-3

109

-5

16

5

21

-5

16

5

106

-339

4

1

106

-339

4

-111

355

1

1=1-0±3, -3=0-1±3,

1759=550±3+109 550=109±5+5 109=5±21+4 5=4±1+1 gcd(1759,550)=1 1 =5-4±1 =5-(109-5±21) =-109+5±22 =-109+(550-109±5)±22 =550±22-109±111 =550±22-(1759-550±3)±111 =550±355 –1759±111 550±355 =1759±111+1 7/28

오일러 함수 „

„

n이 양의 정수일 때 오일러 함수(Euler function)는 n보다 작은 양의 정수 a>0 중 n과 서로 소인 정수의 개수로 정의된다. φ ( n) =| {a | 1 ≤ a < n ∧ gcd(a , n) = 1} | z 예) φ(5) = 4, φ(6) = 2 (오일러 정리) n>0은 정수이고 gcd(a, n)=1이면 aφ(n) ≡ 1 (mod n)이다. z b1, b2, …, bφ(n)이 n를 법으로 하는 기약잉여계이면 ab1, ab2, …, abφ(n)도 n를 법으로 하는 기약잉여계이다. ab1ab2…abφ(n) ≡ b1b2…bφ(n) (mod n) z gcd(b1b2…bφ(n), n)=1이므로 다음이 성립한다. aφ(n) ≡ 1 (mod n)

„ „ „

p가 소수이면 φ(p)=p-1이다. 예) φ(5)=4 gcd(m, n)=1이면 φ(mn)=φ(m)φ(n)이다. 예) φ(10)=φ(5)φ(2)=4x1=4 p가 소수이면 모든 i ≥ 1에 대해 φ(pi)=pi-pi-1이다. 8/28

4


군(Group) „

어떤 연산 D 에 의해 닫혀 있으며, 다음을 만족하는 집합을 군이 라 한다. z

(결합법칙) 모든 a , b, c ∈ G에 대해 다음을 만족하여야 한다. a D (b D c ) = (a D b ) D c

z

z

(항등원) 모든 a ∈ G 에 대해 다음을 만족하는 항등원(identity element) e ∈ G 가 존재하여야 한다. aDe = eDa = a (역원) 모든 a ∈ G 에 대해 다음을 만족하는 역원(inverse element) a −1 ∈ G 이 존재하여야 한다. a D a −1 = a −1 D a = e

군이 다음 특성을 추가로 만족하면 아벨군(abelian group)이라 한다. z (교환법칙) 모든 a , b ∈ G에 대해 다음을 만족하여야 한다. aDb = bDa

9/28

군(Group) - 계속 „

„

„

„

예) ] 5 = {1, 2, 3, 4} 는 법 5에서 곱셈에 대해 군을 형성한다. Æ 곱셈군 z 항등원은 1, 예) 1±1 mod 5 = 1, 1±2 mod 5 = 2, … z 역원: 1±1 mod 5 = 1, 2±3 mod 5 =1, 4±4 mod 5 = 1 군의 원소의 개수 |G|가 유한하면 그 군을 유한군(finite group)이라 하며, 이 때 원소의 개수를 군의 위수(order)라 한다. 예) ]*5 = 4 z 위수가 n인 유한군은 Gn으로 표기한다. i 만약 모든 a ∈ G에 대해 a = g 를 만족하는 원소 g ∈ G 와 어떤 정수 i가 존재하면 G는 순환군(cyclic group)이라 하며, G=<g>로 표현한다. 이 때 g는 이 군의 생성자(generator, primitive element)라 한다. * 예) ] 5 = {1, 2, 3, 4} *

* 21=2, 22=4, 23=3, 24=1 Æ ] 5 = 2 a ∈ G 의 위수는 ai=e를 만족하는 가장 작은 양의 정수를 말한다.

z

„

z

* 예) ] 5 에서 2의 위수는 4이며, 4의 위수도 2이다.

10/28

5


군(Group) - 계속 „

„

„

„

공집합이 아닌 G의 부분집합 G'이 G의 연산에 대해 군을 형성하면 G'을 G의 부분군(subgroup)이라 한다. * z 예) {1,4}는 ] 5 의 부분군: 항등원은 1이며, „ 1±1 mod 5 = 1, 4±1 mod 5 = 4, 4±4 mod 5 = 1, 유한순환군 Gn=<g>에서 a=gi의 위수는 n/gcd(i, n)이다. z 3=23의 위수는 4/gcd(3,4)=4이다. 31=3, 32=4, 33=2, 34=1 a=gi이 유한순환군 Gn=<g>의 생성자가 되기 위한 필요충분조건은 gcd(i, n)=1이다. z a가 유한순환군의 생성자가 되기 위해서는 그것의 위수가 군의 위수와 같아야 한다. 위수가 소수 q인 유한순환군 Gq=<g>에서 1를 제외한 모든 원소는 Gq 의 생성자가 된다. z gcd(i, q)는 항상 1이다. 11/28

군(Group) - 계속 „

„

„

유한순환군 G의 모든 부분군은 유환순환군이다. z G'이 G의 부분군이고 gd∈G'이 G'의 원소 중 g에 대한 거듭제곱으로 표현하였을 때 가장 작은 양의 지수를 가지는 원소라 하자. z 이 때 gs∈G'이면 나눗셈 원리에 의해 s=qd+r인 q와 r이 존재한다. z 그런데 gs(g-d)q=gr이 성립하므로 d가 가장 작은 양의 지수라는 것은 모순이다. 그러므로 r=0이며, 모든 gs∈G'에 대해 d|s이므로 G' =<gd>이다. 유한순환군 Gn=<g>에 대해 gi는 위수가 n/gcd(i, n)인 부분군을 생성한다. 유한순환군 Gn=<g>에 대해 d가 n의 약수이면 위수가 d인 Gn의 부분군은 오직 하나 존재한다.

12/28

6


] n 와 ]*n 군 „

] n : 덧셈 연산에 대해 위수가 n인 덧셈군이다.

„

]*n : 곱셈 연산에 대해 위수가 φ(n)인 곱셈군이다.

„

]*n 가 생성자를 가지기 위한 필요충분조건은 n = 2, 4, pk, 2pk이다.

„

„

여기서 p는 소수이고, k ≥ 1이다. z 다른 말로 표현하면 순환군이 되기 위한 필요충분조건이다. ]*p : 곱셈 연산에 대해 위수가 p-1인 곱셈군이며, 순환군이다. * z d | p-1이면 위수가 d인 ] p 의 부분군 Gd이가 존재하며, 이 군은 순환군이다. z 이 때 q=d가 소수이면 Gq에서 1를 제외한 모든 원소는 Gq의 생성자가 된다. 예) ]*13 = {1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12} , 생성자 = 2 * z {1,3,9}는 위수가 3인 ] 13의 부분군이며, 3(31=3 mod 13, 32=9, 33=1)과 9(91=9,92=3,93=1)는 이 군의 생성자이다. 13/28

환(Ring) „ „

„

„

환은 {R, +, ±}로 표기하며, 군과 달리 두 개의 연산에 의해 정의된다. 환이 되기 위한 조건 z R은 덧셈에 대해 아벨군이어야 하며, 이 때 항등원은 0이고, a ∈ R의 역원은 –a이다. z 곱셈에 대해 닫혀 있어야 한다. 즉, a, b ∈ R이면 ab ∈ R이어야 한다. z 곱셈에 대해 결합법칙이 성립해야 한다. z 분배법칙이 성립해야 한다. „ 모든 a, b, c ∈ R 대해 a(b + c) = ab + ac이며, (a + b)c = ac + bc이 어야 한다. 환이 추가로 곱셈에 대한 교환법칙이 성립하면 가환환(commutative ring)이라 한다. 예) ] n과 법 n에서 덧셈, 곱셈 연산은 가환환을 형성한다.

14/28

7


체(Field) „

„

„

가환환이 추가로 다음을 만족하면 정역(integral domain)이라 한다. z 곱셈에 대한 항등원 존재 z a, b ∈ R이고 ab = 0이면 a = 0 또는 b = 0이어야 한다. 체는 {F, +, ±}로 표기하며, 다음을 만족하는 정역이다. z 0을 제외하고 곱셈에 대한 역원 존재 ] n와 법 n에서 덧셈, 곱셈 연산이 체가 되기 위해서는 n이 소수이어야 한다. z ] p : 위수가 p인 체이다. 이것을 GF(p)로 표기한다. (Galois Field)

갈로아 15/28

Finite Fields of the form GF(p) „ „ „

유한체의 위수는 반드시 소수의 거듭제곱승 형태로 표현된다. 위수가 pn인 유한체는 GF(pn)으로 표기한다. 예) GF(2) +

0

1

±

0

1

w

-w

w-1

0

0

1

0

0

0

0

0

-

1

1

0

1

0

1

1

1

1

addition

multiplication

inverse

16/28

8


Polynomial Arithmetic „

다항식 산술의 세 분류 z z z

„

일반 다항식 산술 계수에 대한 산술이 법 p에서 이루어지는 다항식 산술 다항식이 어떤 다항식 m(x)을 법으로 정의되며, 계수에 대한 산술이 법 p에서 이루어지는 다항식 산술

일반 다항식 산술 z

n(≥0)차 다항식은 다음과 같이 표현된다.

n

f ( x ) = an x n + an −1 x n −1 + " + a1 x + a0 = ∑ ai x i i =0

z z

여기서 ai는 계수 집합이라고 하는 어떤 지정된 수의 집합 S의 원소이며, an≠0이다. 0차 다항식: 다른 말로 상수 다항식이라 한다. an =1이면 monic polynomial이라 한다. 17/28

Polynomial Arithmetic with Coefficients in ] p „

예) 일반 산술, z z z z

„

f ( x ) = x 3 + x 2 + 1, g ( x ) = x 2 + x + 1 x

덧셈: f ( x ) + g( x ) = x + 2 x + x + 2 +1 x2 + x + 1 x3 + x2 3 뺄셈: f ( x ) − g( x ) = x − x 3 2 5 4 3 2 + + x x x 곱셈: f ( x ) × g( x ) = x + 2 x + x + 2 x + 2 x + 1 − x +1 나눗셈: f ( x ) = xg( x ) + ( − x + 1) 3

2

예) GF(2)에서 다항식 산술 z z z z

덧셈: f ( x ) + g( x ) = x 3 + x 3 뺄셈: f ( x ) − g( x ) = x + x 5 3 곱셈: f ( x ) × g( x ) = x + x + 1 나눗셈: f ( x ) = xg( x ) + ( x + 1)

x x + x + 1 x3 + x2 2

+1

x3 + x2 + x x +1

18/28

9


Polynomial Arithmetic with Coefficients in ] p „

기약다항식(irreducible polynomial): f(x)가 f(x)보다 차수가 낮은 두 개의 다른 다항식의 곱으로 표현할 수 없는 경우 z z

„

예1) x 3 + x + 1 4 3 2 예2) x + 1 = ( x + x + x + 1)( x + 1)

최대공약수 찾기 z

Euclid 알고리즘을 다항식에도 적용할 수 있다.

z

5 4 3 2 4 2 예) a( x ) = x + x + x + x + x + x + 1, b( x ) = x + x + x + 1

gcd(a ( x ), b( x )) = gcd(b( x ), a ( x )mod b( x )) 6

b( x ) = x 4 + x 2 + x + 1, a ( x )mod b( x ) = x 3 + x + 1 a ( x )mod b( x ) = x 3 + x + 1, b(x) mod (a ( x )mod b( x )) = 0 gcd(a ( x ), b( x )) = x 3 + x + 1

19/28

Finite Fields of the form GF(2n) „

동기 z

0부터 2n-1 사이의 정수를 이용하고 싶다. „ n 비트 워드를 사용하여 표현 가능하다. „ 예) 8 비트 데이터를 조작하고 싶다. z ] 256은 체가 아니다. z ] 251은 체이지만 251에서 255까지의 수는 사용하지 않는다. „ 예) 3 비트 데이터를 조작하고 싶다. z ] 8 은 체가 아니다. 또한 각 수의 등장 비율이 다르다. z GF(23)은 체이며, 각 수의 등장 비율이 같다.

20/28

10


Finite Fields of the form GF(2n) - 계속 ±

0

1

2

3

4

5

0

0

0

0

0

0

0

1

0

1

2

3

4

5

2

0

2

4

6

0

2

6

7

±

0

1

2

3

4

5

6

7

0

0

0

0

0

0

0

0

0

0

0

6

7

1

0

1

2

3

4

5

6

7

4

6

2

0

2

4

6

3

1

7

5

3

0

3

6

1

4

7

2

5

3

0

3

6

5

7

4

1

2

4

0

4

0

4

0

4

0

4

4

0

4

3

7

6

2

5

1

5

0

5

2

7

4

1

6

3

5

0

5

1

4

2

7

3

6

6

0

6

4

2

0

6

4

2

6

0

6

7

1

5

3

2

4

7

0

7

6

5

4

3

2

1

7

0

7

5

2

1

6

4

3

]8

GF(23) x ± x2+1 mod (x3+x+1) = 1 21/28

Modular Polynomial Arithmetic „

계수 집합 S = ] p 인 n-1차 다항식을 생각하여 보자. n −1

f ( x ) = an −1 x n −1 + an− 2 x n − 2 + " + a1 x + a0 = ∑ ai x i i =0

z z

z

총 pn개의 다항식이 존재한다. 예) p=2, n=3이면 총 8개의 다음과 같은 다항식이 존재한다.

0(000)

x+1(011)

x2+x(110)

1(001)

x2(100)

x2+x+1(111)

x(010)

x2+1(101)

산술 연산을 적절하게 정의하면 이들 다항식들은 유한체가 된다.

22/28

11


Modular Polynomial Arithmetic - 계속 „

Modular Polynomial Arithmetic z z z

„

산술을 다음 두 가지를 제외하고는 일반 다항식 산술과 같다. 계수에 대한 산술은 법 p에서 이루어진다. 곱셈 결과가 n-1차보다 커지면 어떤 n차 기약다항식 m(x)를 이용하여 축약한다. 즉, m(x)로 나누었을 때 나머지를 취한다.

예) GF(28) z z z

m ( x ) = x 8 + x 4 + x 3 + x + 1, f ( x ) = x 6 + x 4 + x 2 + x + 1, g( x ) = x 7 + x + 1

덧셈: f ( x ) + g( x ) = x 7 + x 6 + x 4 + x 2 13 11 9 8 6 5 4 3 곱셈: f ( x ) × g( x ) = x + x + x + x + x + x + x + x + 1 =

x7 + x6 + 1

23/28

Modular Polynomial Arithmetic - 계속 „

3 2 3 예) GF(23): x + x + 1, x + x + 1

000

001

010

011

100

101

110

111

+

0

1

x

x+1

x2

x2+1

x2+x

x2+x+1

000

0

0

1

x

x+1

x2

x2+1

x2+x

x2+x+1

001

1

1

0

x+1

x

x2+1

x2

x2+x+1

x2+x

010

x

x

x+1

0

1

x2+x

x2+x+1

x2

x2+1

011

x+1

x+1

x

1

0

x2+x+1

x2+x

x2+1

x2

100

x2

x2

x2+1

x2+x

x2+x+1

0

1

x

x+1

101

x2+1

x2+1

x2

x2+x+1

x2+x

1

0

x+1

x

110

x2+x

x2+x

x2+x+1

x2

x2+1

x

x+1

0

1

111

x2+x+1

x2+x+1

x2+x

x2+1

x2

x+1

x

1

0

24/28

12


Modular Polynomial Arithmetic - 계속 „

3 2 3 예) GF(23): x + x + 1, x + x + 1

000

000 001

001

010

011

100

101

110

111

x2+1

x2+x

x2+x+1

X

0

1

x

x+1

x2

0

0

0

0

0

0

0

0

0

x2+1

x2+x

x2+x+1

x2+x+1

x2+1 x

1

010

x

011

x+1

100

x2

101

x2+1

110

x2+x

111

x2+x+1

1

x

x+1

x2

0

x

x2

x2+x

x+1

1

0

x+1

x2+x

x2+1

x2+x+1

x2

1

0

x2

x+1

x2+x+1

x2+x

x

x2+1

1

0

x2+1

1

x2

x

0

x+1

x2+x

0

x2+x

x2+x+1

1

x2+1

x+1

x

x2

0

x2+x+1

x2+1

x

1

x2+x

x2

x+1

0

25/28

Computation Consideration „

GF(2n)의 다항식 f(x)는 n −1

f ( x ) = an −1 x n −1 + an− 2 x n − 2 + " + a1 x + a0 = ∑ ai x i i =0

„

„

n개의 이진 계수 (an-1an-2…a0)로 독특하게 나타낼 수 있다. 덧셈: 두 다항식의 덧셈은 해당 계수들을 더하는 것이므로 다르게 표현하면 XOR 연산과 같다고 볼 수 있다. 예) GF(28) z z z z

m ( x ) = x 8 + x 4 + x 3 + x + 1, f ( x ) = x 6 + x 4 + x 2 + x + 1, g( x ) = x 7 + x + 1 ( x 6 + x 4 + x 2 + x + 1) + ( x 7 + x + 1) = x 7 + x 6 + x 4 + x 2 (01010111) ⊕ (10000011) = (11010100) 57 + 83 = D4

26/28

13


Computation Consideration - 계속 „

곱셈: 덧셈과 다르게 XOR처럼 간단하게 처리할 수 있는 방법은 없다. 다음을 이용한 곱셈 기법이 있다.

„

8 4 3 예) GF(28): x mod m ( x ) = [m( x ) − x ] = x + x + x + 1

„

x n mod p( x ) = [ p( x ) − x n ] 8

z

f ( x ) = b7 x 7 + b6 x 6 + b5 x 5 + b4 x 4 + b3 x 3 + b2 x 2 + b1 x + b0

z

xf ( x ) = b7 x 8 + b6 x 7 + b5 x 6 + b4 x 5 + b3 x 4 + b2 x 3 + b1 x 2 + b0 x

z z z

b7=0이면 xf ( x ) = b6 x 7 + b5 x 6 + b4 x 5 + b3 x 4 + b2 x 3 + b1 x 2 + b0 x b7=1이면 xf ( x ) = (b6 x 7 + b5 x 6 + b4 x 5 + b3 x 4 + b2 x 3 + b1 x 2 + b0 x ) + x 4 + x 3 + x + 1 따라서 x±f(x)는 다음과 같이 구할 수 있다. b6 b5 b4 b3 b2 b1b0 0 if b7 = 0  x × f ( x) =  ⊕ ( b b b b b b b 0) (00011011) if b7 = 1  6 5 4 3 2 1 0

27/28

Computation Consideration - 계속 „

예) m ( x ) = x 8 + x 4 + x 3 + x + 1, f ( x ) = x 6 + x 4 + x 2 + x + 1, g ( x ) = x 7 + x + 1 z 01010111±10000011 = 01010111±10000000 + 01010111±00000010 + 01010111±00000001 z 01010111±00000001 = 01010111 z 01010111±00000010 = 10101110 z 01010111±10000000 = (((((((01010111 ± 00000010) ± ) …))))) „ (1) 10101110 „ (2) 01011100 ⊕ 00011011 = 01000111 „ (3) 10001110 „ (4) 00011100 ⊕ 00011011 = 00000111 „ (5) 00001110 „ (6) 00011100 „ (7) 00111000 z 00111000 ⊕ 10101110 ⊕ 01010111 = 11000001

f ( x ) × g( x ) = x 7 + x 6 + 1 28/28

14


대칭 암호알고리즘 III

인터넷미디어공학부 김상진

1

교육���표 „

대표적인 대칭 암호알고리즘 소개 z

AES(Advanced Encryption Standard)

Rijndael. the chief drawback to this cipher is the difficulty Americans have pronouncing it. Bruce Schneier

2/24

1


AES(Advanced Encryption Standard) „ „

DES의 키 길이는 현대의 기준으로 너무 짧다. 3-DES를 사용할 수 있지만 DES보다 성능이 떨어지며, DES 또한 하드웨어 구현을 목표로 설계되었기 때문에 IDEA와 같은 다른 대칭 암호알고리즘에 비해 소프트웨어로 구현하였을 때에는 성능이 떨어진다. 1997

call for proposal

1998

15 accepted

1999

reduced to 5

2001

Rijndael accepted

block size: 128 bits, key length support: 128, 196, 256

MARS, RC6, Rijndael, Serpent, Twofish developed by: J. Daemen, V. Rijmen FIBS PUB 197

3/24

plaintext

Rijndael

add round key substitute bytes

ROUND 1

블록: 128비트 키길이: 128비트

w[0,3] expand key

plaintext add round key inverse sub bytes

shifts rows

inverse shifts rows

mix columns

inverse mix cols

add round key

w[4,7]

add round key inverse sub bytes

block length key length

key

substitute bytes inverse shifts rows

128 192 256

shifts rows

10

12

14

mix columns

192

12

12

14

add round key

256

14

14

14

substitute bytes

inverse sub bytes

shifts rows

inverse shifts rows

Number of Rounds

ROUND 10

128

add round key ciphertext

inverse mix cols w[36,39]

w[40,43]

add round key

add round key ciphertext

4/24

2


Rijndael „

„

„

„

- 계속

Feistel 구조가 아니다. z 총 10 라운드로 구성되어 있음 키는 44개의 32비트 워드로 확장되어 사용된다. z 각 라운드에서 4개의 워드가 사용된다. 각 라운드에서 하나의 자리바꿈과 세 개의 치환 연산을 사용한다. z S-박스: GF(28)을 사용하여 구성함 z shift row: 단순 자리바꿈 z mix column: GF(28)을 이용한 치환 z add round key: XOR 연산을 사용 구조가 매우 단순하다.

5/24

Rijndael „

„

„

- 계속

add round key 단계만 키를 사용한다. 이 외에 단계들은 confusion, diffusion, nonlinearity를 제공하지만 그 자체만으로는 어떤 안전성 도 제공하지 못한다. 각 단계는 쉽게 역을 취할 수 있다. z S-박스, shift row, mix column은 모두 역함수가 존재한다. z add round key는 같은 키를 다시 XOR하여 역을 취할 수 있다. 다른 대부분의 알고리즘과 마찬가지로 복호화는 키를 역순으로 사용한다.

6/24

3


Substitute Bytes Transformation „

128 비트를 128 비트로 치환 z 128 비트를 16개의 8 비트로 나누어 각 8 비트를 16±16 S-박스를 이용하여 치환한다. z 8 비트를 상위 4 비트가 행, 하위 4 비트를 열로 사용하여 치환 z 예) EA

04

65

85

87

F2

4D

97

83

45

5D

96

EC

6E

4C

90

5C

33

98

B0

4A

C3

46

E7

F0

2D

AD

C5

8C

D8

95

A6

7/24

Substitute Bytes Transformation

- 계속

FORWARD SUBSTITUTE BYTES TRANSFORMATION

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

0

63

7C

77

7B

F2

6B

6F

C5

30

01

67

2B

FE

D7

AB

76

1

CA

82

C9

7D

FA

59

47

F0

AD

D4

A2

AF

9C

A4

72

C0

2

B7

FD

93

26

36

3F

F7

CC

34

A5

E5

F1

71

D8

31

15

3

04

C7

23

C3

18

96

05

9A

07

12

80

E2

EB

27

B2

75

4

09

83

2C

1A

1B

6E

5A

A0

52

3B

D6

B3

29

E3

2F

84

5

53

D1

00

ED

20

FC

B1

5B

6A

CB

BE

39

4A

4C

58

CF

6

D0

EF

AA

FB

43

4D

33

85

45

F9

02

7F

50

3C

9F

A8

7

51

A3

40

8F

92

9D

38

F5

BC

B6

DA

21

10

FF

F3

D2

8

CD

0C

13

EC

5F

97

44

17

C4

A7

7E

3D

64

5D

19

73

9

60

81

4F

DC

22

2A

90

88

46

EE

B8

14

DE

5E

0B

DB 79

A

E0

32

3A

0A

49

06

24

5C

C2

D3

AC

62

91

95

E4

B

E7

C8

37

6D

8D

D5

4E

A9

6C

56

F4

EA

65

7A

AE

08

C

BA

78

25

2E

1C

A6

B4

C6

E8

DD

74

1F

4B

BD

8B

8A

D

70

3E

B5

66

48

03

F6

0E

61

35

57

B9

86

C1

1D

9E

E

E1

F8

98

11

69

D9

8E

94

9B

1E

87

E9

CE

55

28

DF

F

8C

A1

89

0D

BF

E6

42

68

41

99

2D

0F

B0

54

BB

16

8/24

4


Substitute Bytes Transformation „ „

- 계속

S-박스는 기약다항식 m( x ) = x + x + x + x + 1 을 사용하여 구성함 구성하는 방법 z 먼저 S-박스 00, 01, …, FF 순으로 초기화한다. z 이 값들은 GF(28)에서 곱셈에 대한 역원으로 매핑한다. 00 Æ 00 z 한 항의 값이 b7b8b6b5b4b3b2b1b0이면 다음과 같이 변형한다. 8

4

3

 b0′   10001111   b0   1   b′        1   11000111   b1   1   b2′   11100011   b2   0          b3′  =  11110001   b3  +  0   b4′  11111000   b4   0          b5′   01111100   b5   1   b′   00111110   b   1   6   6    b7′   00011111  b7   0 

예) 95 - 95-1 = 8A  10001111   0   1   1   1   0   11000111   1   1   0  1   1              11100011   0   0  0  0   0              11110001   1  ⊕  0 =  1  ⊕  0  =  1  = 2A 11111000   0   0  0  0   0              01111100   0   1   0  1   1   00111110   0   1   1   1   0              00011111  1   0  0  0   0 

9/24

Substitute Bytes Transformation

- 계속

FORWARD SUBSTITUTE BYTES TRANSFORMATION

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

0

63

7C

77

7B

F2

6B

6F

C5

30

01

67

2B

FE

D7

AB

76

1

CA

82

C9

7D

FA

59

47

F0

AD

D4

A2

AF

9C

A4

72

C0

2

B7

FD

93

26

36

3F

F7

CC

34

A5

E5

F1

71

D8

31

15

3

04

C7

23

C3

18

96

05

9A

07

12

80

E2

EB

27

B2

75

4

09

83

2C

1A

1B

6E

5A

A0

52

3B

D6

B3

29

E3

2F

84

5

53

D1

00

ED

20

FC

B1

5B

6A

CB

BE

39

4A

4C

58

CF

6

D0

EF

AA

FB

43

4D

33

85

45

F9

02

7F

50

3C

9F

A8

7

51

A3

40

8F

92

9D

38

F5

BC

B6

DA

21

10

FF

F3

D2

8

CD

0C

13

EC

5F

97

44

17

C4

A7

7E

3D

64

5D

19

73

9

60

81

4F

DC

22

2A

90

88

46

EE

B8

14

DE

5E

0B

DB 79

A

E0

32

3A

0A

49

06

24

5C

C2

D3

AC

62

91

95

E4

B

E7

C8

37

6D

8D

D5

4E

A9

6C

56

F4

EA

65

7A

AE

08

C

BA

78

25

2E

1C

A6

B4

C6

E8

DD

74

1F

4B

BD

8B

8A

D

70

3E

B5

66

48

03

F6

0E

61

35

57

B9

86

C1

1D

9E

E

E1

F8

98

11

69

D9

8E

94

9B

1E

87

E9

CE

55

28

DF

F

8C

A1

89

0D

BF

E6

42

68

41

99

2D

0F

B0

54

BB

16

10/24

5


Substitute Bytes Transformation

- 계속

INVERSE SUBSTITUTE BYTES TRANSFORMATION

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

0

52

09

6A

D5

30

36

A5

38

BF

40

A3

9E

81

F3

D7

FB

1

7C

E3

39

82

9B

2F

FF

87

34

8E

43

44

C4

DE

E9

CB

2

54

7B

94

32

A6

C2

23

3D

EE

4C

95

0B

42

FA

C3

4E

3

08

2E

A1

66

28

D9

24

B2

76

5B

A2

49

6D

8B

D1

25

4

72

F8

F6

64

86

68

98

16

D4

A4

5C

CC

5D

65

B6

92

5

6C

70

48

50

FD

ED

B9

DA

5E

15

46

57

A7

8D

9D

84

6

90

D8

AB

00

8C

BC

D3

0A

F7

E4

58

05

B8

B3

45

06

7

D0

2C

1E

8F

CA

3F

0F

02

C1

AF

BD

03

01

13

8A

6B

8

3A

91

11

41

4F

67

DC

EA

97

F2

CF

CE

F0

B4

E6

73

9

96

AC

74

22

E7

AD

35

85

E2

F9

37

E8

1C

75

DF

6E

A

47

F1

1A

71

1D

29

C5

89

6F

B7

62

0E

AA

18

BE

1B

B

FC

56

3E

4B

C6

D2

79

20

9A

DB

C0

FE

78

CD

5A

F4

C

1F

DD

A8

33

88

07

C7

31

B1

12

10

59

27

80

EC

5F

D

60

51

7F

A9

19

B5

4A

0D

2D

E5

7A

9F

93

C9

9C

EF

E

A0

E0

3B

4D

AE

2A

F5

B0

C8

EB

BB

3C

83

53

99

61

F

17

2B

04

7E

BA

77

D6

26

E1

69

14

63

55

21

0C

7D

11/24

Substitute Bytes Transformation „

- 계속

S-박스에 대한 고찰 z 알려진 공격에 안전하도록 설계됨 z fixed point가 없도록 설계됨. S-box(a)=a z opposite fixed point가 없도록 설계됨. S-box(a)=ā z S-box는 역을 취할 수 있다. IS-box[S-box(a)]=a z 그러나 S-box(a)=IS-box(a)는 아니다.

12/24

6


Shift row, Mix Column Transformation „

„

Forward shift row transformation S0,0 S0,1 S0,2 S0,3

S0,0 S0,1 S0,2 S0,3

S1,0 S1,1 S1,2 S1,3

S1,1 S1,2 S1,3 S1,0

S2,0 S2,1 S2,2 S2,3

S2,2 S2,3 S2,0 S2,1

S3,0 S3,1 S3,2 S3,3

S3,3 S3,0 S3,1 S3,2

avalanche effect

Forward mix column transformation S0,0

S0,1

S0,2

S0,3

S1,0

S1,1

S1,2

S1,3

S2,0

S2,1

S2,2

S2,3

S3,0

S3,1

S3,2

S3,3

     

S'0,0

S'0,1

S'0,2

S'0,3

S'1,0

S'1,1

S'1,2

S'1,3

S'2,0

S'2,1

S'2,2

S'2,3

GF(28)에서 계산

S'3,0

S'3,1

S'3,2

S'3,3

2 1  1  3

3 1 1  2 3 1   × 1 2 3    1 1 2 

    =      

13/24

Shift row, Mix Column Transformation „

예)

87

F2

4D

97

47

40

A3

4C

6E

4C

90

EC

37

D4

70

9F

46

E7

4A

C3

94

E4

3A

42

A6

8C

D8

95

ED

A5

A6

BC

({02}±{87}) ⊕ ({03} ±{6E}) ⊕ {46} ⊕ {A6} ={47} x ± (x7+x2+x+1) = x8+x3+x2+x x8+x3+x2+x mod (x8+x4+x3+x+1)= x4+x2+1=0001 0101

0001 0101 1011 0010 0100 0110 1010 0110 = 0100 0111 = 47

(x+1) ± (x6+x5+x3+x2+x) = x7+x5+x4+x x7+x5+x4+x mod (x8+x4+x3+x+1)= x7+x5+x4+1=1011 0010 14/24

7


Shift row, Mix Column Transformation „

„

Inverse shift row transformation S0,0 S0,1 S0,2 S0,3

S0,0 S0,1 S0,2 S0,3

S1,0 S1,1 S1,2 S1,3

S1,3 S1,0 S1,1 S1,2

S2,0 S2,1 S2,2 S2,3

S2,2 S2,3 S2,0 S2,1

S3,0 S3,1 S3,2 S3,3

S3,1 S3,2 S3,3 S3,0

Inverse mix column transformation S0,0

S0,1

S0,2

S0,3

S1,0

S1,1

S1,2

S1,3

S2,0

S2,1

S2,2

S2,3

S3,0

S3,1

S3,2

S3,3

 0E 0B 0D 09    09 0E 0B 0D    ×  0D 09 0E 0B       0B 0D 09 0E  

    =      

     

S'0,0

S'0,1

S'0,2

S'0,3

S'1,0

S'1,1

S'1,2

S'1,3

S'2,0

S'2,1

S'2,2

S'2,3

S'3,0

S'3,1

S'3,2

S'3,3

15/24

Shift row, Mix Column Transformation „

Mix Column  0E 0B 0D 09   2  09 0E 0B 0D   1  ×  0D 09 0E 0B   1     0B 0D 09 0E   3

3 1 1 1 2 3 1   0 = 1 2 3 0   1 1 2 0

0 0 0 1 0 0 0 1 0  0 0 1

({0E}±{02}) ⊕ {0B} ⊕ {0D} ⊕ ({09} ±{03}) ={01} (x3+x2+x) ± x = x4+x3+x2 x4+x3+x2 mod (x8+x4+x3+x+1)= x4+x3+x2=0001 1100 (x3+1) ± (x+1) = x4+x3+x+1 x4+x3+x+1 mod (x8+x4+x3+x+1)= x4+x3+x+1=0001 1011

0001 1100 0000 1011 0000 1101 0001 1011 = 0000 0001 = 01

16/24

8


Rijndael Key Expansion „

128 비트 키를 11개의 128 비트 키로 확장 k0

k4

k8

k12

k1

k5

k9

k13

k2

k6

k10 k14

k3

k7

k11 k15

w0

w1

w2

w3

left rotate

S-box

round constant

w4

w5

w6

w7

round constant: 01, 02, 04, 08, 10, 20, 40, 80, 1B, 36

17/24

9


공개키 암호알고리즘

인터넷미디어공학부 김상진

1

교육목표 „

정수론 기반 문제 z z

„

인수분해 문제 이산대수 문제

대표적인 공개키 암호알고리즘 z z

RSA ElGamal

2/21

1


인수분해 문제 „

„

„

„

정수 인수분해 문제: 양의 정수 n이 주어졌을 때 n = p1 p2 pl 을 만족하는 서로 다른 소수 pi와 양의 정수 ei를 찾는 문제 (소수 검사 vs. 인수분해) 어떤 정수가 복합수인지 소수인지 결정하는 것은 그것을 소인수분해하는 것보다 쉽다. 가장 쉽게 생각할 수 있는 방법: “trial division” 알고리즘 z 최악의 경우: n 보다 작은 소수는 모두 시도를 해보아야 한다. 가장 빠른 방법: number field sieve 알고리즘 (n=pq, |p|≈|q|) e1

e2

el

time period of one year

n의 길이(bits)

컴퓨터 수(500MHz Pentium 기준)

메모리

430

1

-

760

215,000

4 GB

1020

342,000,000

170 GB

1620

1.6 ± 105

120 TB

From RSA Laboratories, Factoring Challenge FAQ

3/21

이산대수 문제 „

„ „

정의. 유한순환군 G=<g>에서 기저 g에 대한 y∈G의 이산대수 (discrete logarithm)란 y=gx인 x, 0≤x≤|G|를 말하며, loggy로 표기한다. 어떤 원소의 이산대수를 다른 말로 그 원소의 색인(index)이라 한다. 일반 로그 관련 성질은 이산대수에서도 성립한다. Gn=<g>이고, a,b,c ∈Gn이면 다음이 성립한다. z z

∀x ∈ , log g a x ≡ x log g a (mod n) log g (ab ) ≡ log g a + log g b (mod n) „

예) log g ( g 3 g 5 ) ≡ log g g 3 + log g g 5 ≡ 3 + 5 ≡ 8 (mod n)

4/21

2


이산대수 문제 „

„

- 계속

정의. 유한순환군 G=<g>와 어떤 y∈G가 주어졌을 때, y=gx인 x, 0≤x≤|G|를 찾는 것을 이산대수 문제(DLP, Discrete Logarithm Problem)라 한다. 유한순환군에서 DLP의 해를 찾는 알고리즘의 분류 z (범용 알고리즘) Pollard의 rho 알고리즘, Baby-step/Giant-step 알고리즘과 같이 임의의 군에 적용할 수 있는 알고리즘 n . „ 알고리즘의 복잡성: 군의 위수가 n이면 O „ Pohling-Hellman 알고리즘: 군의 위수가 작은 소인수만을 가지는 경우에만 효율적으로 적용할 수 있는 알고리즘 z (전용 알고리즘) Index Calculus 알고리즘처럼 특정 군에만 적용가능한 알고리즘 * (1/ 2 + o (1)) ln p ln ln p „ 알고리즘의 복잡성: . p에서 O e

( )

(

)

5/21

이산대수 문제 „

- 계속

* p

와 위수가 소수인 그것의 부분군 Gq에서 이산대수 문제 * p 는 index calculus 알고리즘을 적용하는 것이 가장 빠르다. * * * z G q는 p 의 부분군이므로 p 와 마찬가지로 p에 대한 index calculus 알고리즘을 적용하여 구할 수 있고, Gq에 대해 직접 범용 알고리즘을 적용할 수 있다. z p가 512비트이고, q가 140비트 정도이면 index calculus 알고리즘을 적용하나 범용 알고리즘을 적용하나 복잡성은 대략 O ( 270 ) 이다. z 군의 위수가 작아졌음에도 불구하고 이산대수 계산의 어려움은 같다. z 또한 Gq의 위수는 소수이므로 1를 제외한 모든 원소는 Gq의 생성자가 된다. z

6/21

3


Diffie-Hellman 문제 „

„

Diffie-Hellman 문제(DHP): 유한순환군 G=<g>와 G의 두 원소 gu과 gv이 주어졌을 때, G의 원소 guv을 찾는 문제 Diffie-Hellman 결정문제(DDHP): 유한순환군 G=<g>와 G의 세 원소 gu, gv, gw이 주어졌을 때, gw과 guv이 같은지 결정하는 문제 z DLP가 해결되면 DHP를 해결할 수 있다. z DHP가 해결되면 DDHP를 해결할 수 있다. „ 그러나 각 두 문제가 등가임이 증명되어 있지는 않다.

7/21

RSA 공개키 알고리즘 „

„ „

MIT의 Rivest, Shamir, Adleman에 의해 1977년도에 개발 z ACM Turing Award 수상 (2002년도) 인수분해 문제의 어려움에 기반한 알고리즘 현재 가장 널리 사용되고 있는 공개키 암호알고리즘

R. Rivest, A. Shamir, L. Adleman

8/21

4


RSA 공개키 쌍 생성 „ „ „ „ „

„

단계 1. 두 개의 소수 p와 q를 선택 Æ 임의로 선택하고 소수인지 검사 단계 2. n=pq를 계산 단계 3. φ(n)=(p-1)(q-1)를 계산 * 단계 4. gcd(e, φ(n))=1인 e ∈ φ ( n )를 선택 * 단계 5. ed ≡ 1 (mod φ(n))인 d ∈ φ ( n )를 선택 z 공개키: (n, e), 개인키: (n, d) 1 0 160 0 1 21 RSA 공개키 쌍 생성의 예) 7 0 1 21 1 -7 13 z p=11, q=17, n=187, φ(n)=160 1 1 -7 13 -1 8 8 z e=21, 1 1 8 8 2 -15 5 gcd(160,21)=gcd(21,13)=1 1 2 -15 5 -1 23 3 z d=61 1 -1 23 3 3 -38 2 z 21 ± 61 ≡ 1281 ≡ 1 (mod 160) 1

3

-38

2

-4

61

1

9/21

RSA 암호화/복호화 알고리즘 „

암호화: M<n z C = Me mod n

„

복호화

오일러 정리 gcd(M, n)=1이면 Mφ(n) ≡ 1 (mod n)

Cd = (Me)d = Med = Mkφ(n)+1 = (Mφ(n))kM = M mod n n이 서로 다른 소수들의 곱이고 a ≡ b (mod φ(n))이면 모든 정수 M에 대해 Ma ≡ Mb (mod n)이다. (Med ≡ M1 (mod n)) z n = p1p2…pl이면 a ≡ b (mod φ(n))이므로 a ≡ b (mod φ(pi))이다. z 즉, a – b = kφ(pi)이므로 a = b + kφ(pi)이다. a b z gcd(M, pi)이면 오일러 정리에 의해 M ≡ M (mod pi)이다. a b z pi|M이면 M ≡ M (mod pi)은 당연히 성립한다. z Ma - Mb는 pi의 공배수이므로 lcm(p1, p2,…, pl)|(Ma - Mb)이다. z 따라서 Ma ≡ Mb (mod n)이다. z

„

10/21

5


RSA 암호화/복호화 알고리즘의 예 „

RSA 공개키 쌍 생성의 예) z p = 5, q = 11, n = 55, φ(n) = 40, e = 7, d = 23 z M = 5 z 57 mod 55 = (53)2 ± 5 = (15)2 ± 5 = 5 ± 5 = 25 z C = 25 z 2523 mod 55 = 546 = (56)7 ± 54 = 57 ± 54 = 56 x 55 = 56 = 5

11/21

RSA 알고리즘의 안전성 „

„

전사공격 z 일반적으로 공개키 알고리즘에서 사용하는 키의 길이는 대칭 암호알고리즘에 비해 길기 때문에 전사공격에 대해서는 고려하지 않는다. 즉, n를 인수분해하는 것이 더 빠르다. 수학적 공격 z 인수분해: n를 인수분해할 수 있으면 φ(n)를 계산할 수 있고, φ(n)를 계산할 수 있으면 공개키 (n, e)로부터 d를 계산할 수 있다. „ 미래를 고려하였을 때 n이 1024비트 이상되도록 하는 것이 안전하다.

12/21

6


Universal Exponent „

„

„

„

RSA 공개키를 생성할 때 universal exponent λ를 φ(n) 대신에 사용할 수 있다. * universal exponent란 모든 a ∈ n 에 대해 aλ ≡ 1 (mod n)를 만족하는 가장 작은 정수를 말한다. z λ는 모든 a의 위수의 최소공배수이다. z λ|φ(n) 이다. z n=pq이면 λ=lcm(p-1, q-1)이다. φ(n) 대신에 λ를 사용하면 e와 d값이 작아진다. 따라서 암/복호화의 성능을 향상시킬 수 있다. 여전히 λ를 계산하기 위해서는 n을 인수분해할 수 있어야 한다.

13/21

RSA 알고리즘의 특성 „

Homomorphic 특성 ( M 1 M 2 )e ≡ M 1e M 2e ≡ C1C 2 (mod n)

„

Homomorphic 특성을 이용한 선택 암호문 공격 z 목표: C를 복호화하고 싶다. n 를 선택하고 다음을 계산한다. z 공격자는 r ∈R e „ x = r mod n „ y = xC mod n „ t = r-1 mod n z 공격자는 개인키를 가지고 있는 사람에게 y의 복호화를 요청할 수 있다고 하자. 즉, u=yd mod n을 얻었다고 하자. 그러면 공격자는 다음을 계산한다. „ tu mod n = r-1yd mod n = r-1xdCd mod n = Cd mod n = M

14/21

7


Fixed-point, Cycling Attack „

„

RSA에는 fixed-point가 존재한다. z 즉, Me ≡ M (mod n)인 M인 존재한다. „ 예) M = 0, M = 1 „ Me-1 ≡ 1 (mod n)이면 fixed-point이다. z 정확하게 (1+gcd(e-1, p-1))(1+gcd(e-1, q-1))개 존재한다. „ e-1, p-1, q-1은 모두 짝수이므로 최소 9개는 존재한다. z 그러나 e, p, q를 랜덤하게 선택하면 fixed-point의 수는 무시할 정도로 적다. 2

M → Me → Me →

k

→ M e ≡ M (mod n)

주기 = k e e Cycling attack: C ≡ C ( mod n) 이면 M ≡ C 따라서 주기가 작으면 위험하다. k

z z

k −1

( mod n) 이다.

15/21

공통된 법을 사용할 경우 „

두 사용자가 같은 n을 사용한다고 하자. z Alice는 (n, e1)을 Bob은 (n, e2)를 사용하고, gcd(e1, e2)=1이라 하자. z Alice와 Bob이 모두 같은 M을 암호화하였다고 하자.

z

z

„

C1 = M e1 mod n

„

C 2 = M e2 mod n

확장 유크리드 알고리즘을 사용하면 re1+se2=1인 r과 s를 찾을 수 있다. r이 음수라고 하면 다음과 같이 공격자는 M을 구할 수 있다. „

(C 1−1 )− r C 2 ≡ M re1 M se2 ≡ M ( mod n)

Moral: Don’t share n among a group of users

16/21

8


ElGamal 공개키 암호알고리즘 „ „

„

„ „ „

„

같은 메시지를 암호화하여도 이산대수 기반 공개키 암호알고리즘 그 결과가 다르다. 확률 알고리즘(probabilistic algorithm) Æ cf 결정 알고리즘(deterministic algorithm) 환경 설정 * z 512비트 정도의 소수 p를 선택 Æ p * z 160비트 정도의 p-1의 소인수 q를 선택 Æ Gq군( p의 부분군) z Gq군의 생성자 g 선택 개인키: x ∈ q 공개키: y = gx mod p 암호화: M ∈ Gq ( A, B ) = ( g r , y r M ) 을 계산. z r ∈R q를 선택한 다음 복호화 z

B ( A x ) = y r Mg − rx = y r y − r M = M −1

17/21

ElGamal 공개키 암호알고리즘 예 „ „ „

„ „

„

p=23, 23 = {1, 2,… , 22} q=11, G11 = {1, 2, 3, 4, 6, 8, 9,12,13,16,18} g=2, 21=2, 22=4, 23=8, 24=16, 25=9, 26=18, 27=13, 28=3, 29=6, 210=12, 211=1 x=5, y=25=9 예1) M=7 z 암호화: r=3, (A, B)=(23,93±7) = (8,16±7) = (8, 20) z 복호화: 20±(85)-1=20±(16)-1=20±13=7 예2) M=7 z 암호화: r=7, (A, B)=(27,97±7) = (13,4±7) = (13,5) z 복호화: 5±(135)-1=5±(4)-1=5±6=7 *

18/21

9


ElGamal 공개키 암호알고리즘의 안전성 „

„

ElGamal 공개키 암호알고리즘의 안전성은 DHP에 의존한다. z y, g, A, B가 주어졌을 때 M을 얻기 위해서는 Ax를 알아야 한다. z 즉, gx과 gr으로부터 grx를 계산할 수 있으면 복호화할 수 있다. z 물론 DLP를 계산할 수 있어도 복호화가 가능하다. 매번 다른 r을 사용해야 한다. z 같은 r을 이용하여 M1과 M2를 암호화하였다면 다음이 성립한다. „ B1(B2)-1=(yrM1)(yrM2)-1=(M1)(M2)-1 z 즉, M1을 알고 있으면 M2를 계산할 수 있다.

19/21

타원곡선 공개키 암호알고리즘 „

„

„

RSA나 ElGamal 암호알고리즘은 컴퓨터의 성능이 발달하고 인수분해, 이산대수 계산 알고리즘이 발달함에 따라 점점 긴 길이의 키를 사용해야 안전성을 확보할 수 있다. z 키 길이의 증가는 성능에 큰 영향을 준다. 타원곡선(elliptic curve) 암호알고리즘의 장점은 RSA보다는 상대적으로 작은 길이의 키를 사용하여 같은 안전성을 제공할 수 있다. 타원곡선 문제는 타원 곡선 상에서 덧셈 연산을 이용한다. z y=g±x=(g+g+…+g)로부터 x를 구하는 것이 타원곡선 문제이다. z cf. 이산대수 문제는 y=gx로부터 x를 구하는 것

„

타원곡선 문제는 다음과 같은 형태의 방정식을 이용한다.

„

y2+axy+by=x3+cx2+dx+e 이산대수 문제는 쉽게 타원곡선 문제로 바꿀 수 있다. z

20/21

10


타원곡선의 예 일반 형태:

y2 = x3 + ax + b

4 3

예:

y2 = x3 − 4x = x(x −2)(x +2)

R

P

2 1

Q

0

2S

-1

S

-2

R'

-3 -4 -3

-2

-1

0

1

2

3 21/21

11


해쉬함수

인터넷미디어공학부 김상진

1

교육목표 „ „ „

해쉬함수 birthday paradox 대표적인 해쉬함수 z

SHA

2/11

1


해쉬함수 „

„

해쉬함수(hash function): 임의의 길이에 이진 문자열을 고정된 길이의 이진 문자열(해쉬값, 메시지 다이제스트, 메시지 지문)로 매핑하여 주는 함수 요구사항 z z z

z

z

압축 계산의 용이성: x가 주어지면 H(x)는 계산하기 쉬워야 함 일방향성(one-wayness): 입력을 모르는 해쉬값 y가 주어졌을 때, H(x’)=y를 만족하는 x를 찾는 것은 계산적으로 어렵다. (OWHF) 약한 충돌회피성(weak collison-resistance): H(x)가 주어졌을 때 H(x’)=H(x)인 x’(≠ x)을 찾는 것은 계산적으로 어렵다. 강한 충돌회피성(strong collison-resistance): H(x’)=H(x)인 서로 다른 임의의 두 입력 x와 x’을 찾는 것은 계산적으로 어렵다. (CRHF) 3/11

Birthday Paradox „

„ „

임의로 N명을 선택했을 때 이 중에 생일이 같은 사람이 있을 확률은? z Prob = 1-(N명의 사람이 모두 생일이 다를 확률) z 가정. 사람들의 생일이 균일하게 분포되어 있다. 이 확률이 50%이상이 되기 위한 N의 최소값은? Æ 23명 일반화 z M개의 통에 N개의 구술을 임의로 넣는다. z M개의 통 중에 2개 이상의 구술이 들어 있는 통이 있을 확률은? „ Prob = 1-(N개의 구슬이 모두 다른 통에 들어갈 확률)  M −1 M − 2   M − N + 1 Prob = 1 −   "   M  M  M    1  2   N − 1  N −1  i    1 − M   1 − M "  1 − M  = ∏  1 − M       i =1   4/11

2


Birthday Paradox „

- 계속

2 3 Maclaurin series expansion: e − x = 1 − x + x − x + "

2!

z

3!

x가 매우 작으면 1-x ≈ e-x로 근사화할 수 있다. N −1

i

− N ( N − 1) −∑  M i =1 = e 2M =e 

„

i  N −1  −Mi  ∏ 1− M  ≈ ∏  e  i =1  i =1 

„

즉, 우리가 찾고자 하는 확률은 다음으로 근사화할 수 있다.

N −1

ε ≈ 1− e „

− N ( N −1) 2M

,

e

− N ( N − 1) 2M

≈ 1− ε

양변에 로그을 취하면 − N ( N − 1) ≈ ln(1 − ε ), 2M

N 2 − N ≈ 2 M ln

1 1− ε

5/11

Birthday Paradox „

„ „ „

-N 항을 무시하면

- 계속

1 1−ε ε = .5를 위 식에 대입하면 N ≈ 1.17 M N ≈ 2 M ln

M = 365이면 22.35 해쉬함수에 birthday paradox 적용 z 해쉬의 결과가 128비트일 때, 264개를 검사하면 H(x')=H(x)인 서로 다른 두 입력 x와 x'을 찾을 확률이 50%가 넘는다. z 현재는 해쉬의 결과는 160비트 정도가 되어야 안전하다.

6/11

3


Secure Hash Algorithm „

SHA(Secure Hash Algorithm) z NIST(National Institute of Standards and Technology)에서 개발 z 1993년에 표준으로 발표 (FIPS 180) z 1995년에 개선된 버전 발표 (FIPS 180-1) Æ SHA-1 z 해쉬길이: 160 비트(5개의 32 비트 워드) z 입력: 264 비트 보다 작은 임의의 크기의 입력 „ 512비트 단위로 적용 „ 전체 입력의 크기가 512 비트의 배수가 아니면 padding을 한다. z 마지막 64 비트에는 실제 크기를 기록한다.

7/11

Secure Hash Algorithm „

„ „

- 계속

512 비트 입력은 80개의 32비트 블록으로 확장 z Wt = Mt, t = 0,…,15 z Wt = (Wt-3 ⊕ Wt-8 ⊕ Wt-14 ⊕ Wt-16) <<< 1, t = 16,…,79 „ <<<: circular left shift 4 라운드, 라운드 당 20 단계 5 개의 32 비트 초기 값을 사용 z A = 0x67452301 z B = 0xefcdab89 z C = 0x98badcfe z D = 0x10325476 z E = 0xc3d2e1f0

8/11

4


Secure Hash Algorithm A

B

C

D

E

f[0…19], K[0…19], W[0…19] 20 steps f[20…39], K[20…39], W[20…39] 20 steps f[40…59], K[40…59], W[40…59] 20 steps f[60…79], K[60…79], W[60…79] 20 steps

- 계속

FOR t = 0 to 79 TEMP = (a <<< 5) + ft(b, c, d) + e + Wt + Kt e=d d=c c = b<<<30 b=a a = TEMP Kt = 0x5a827999, t = 0, …, 19 Kt = 0x6ed9eba1, t = 20, …, 39 Kt = 0x8f1bbcdc, t = 40, …, 59 Kt = 0xca62c1d6, t = 60, …, 79 ft(X, Y, Z) = (X ∧ Y) ∨ ((¬X) ∧ Z), t = 0, …, 19 ft(X, Y, Z) = X ⊕ Y ⊕ Z, t = 20, …, 39 ft(X, Y, Z) = (X ∧ Y) ∨ (X ∧ Z) ∨ (Y ∧ Z), t = 40, …, 59 ft(X, Y, Z) = X ⊕ Y ⊕ Z, t = 60, …, 79

9/11

Secure Hash Algorithm „

- 계속

One SHA Step A

B

C

D ft

+

addition modulo 232

+

<<< 5

<<< 30

A

E

B

C

D

+

Wt

+

Kt

E

„

안전성 z 전사공격 „ 역 구하기: O(2160) „ 충돌 찾기: O(280) z 해독공격: 알려진 공격 방법이 아직 없음

10/11

5


해쉬함수의 응용 „

유닉스에서 패스워드 관리 z 패스워드을 그대로 저장 Æ 패스워드가 저장된 파일에 대한 비밀성 유지가 필수 z 패스워드의 해쉬값 보관 „ 사전공격(dictionary attack): 흔하게 사용하는 패스워드에 대한 해쉬값을 모두 구한 후에 저장되어 있는 해쉬값과 비교 „ Salt의 사용: 해쉬값을 구할 때 임의의 랜덤값인 salt를 포함하여 계산 z 사전공격을 어렵게 함 ƒ salt는 어디에? z 같은 패스워드를 선택한 여러 사람의 해쉬값도 서로 다름

11/11

6


공개키 기반구조

인터넷미디어공학부 김상진

1

교육목표 „

공개키 기반구조 z z z

구성요소: 인증기관, 등록기관, 인증서 디렉토리 등 인증서, 인증서 폐지 목록 신뢰 모델

2/22

1


인증서(Certificate) „

인증서는 공개키와 그것의 소유자를 바인딩시켜주는 전자문서이다. z 보통 신뢰할 수 있는 인증기관(CA, Certification Authority)이 전자서명하여 생성한다. z 인증기관이 공개키를 공증해준다고 생각하면 된다. z 표준: X.509

3/22

공개키 인증의 필요성 C C

B

C

A private key

A

C

B

B

public key

4/22

2


인증서의 구성 일련번호: 발급 CA 내의 유일번호 버전: X.509 버전 Æ 현재 버전 3 z 발급자, 주체: X.500 명명 방식을 이용 z 유효기간: not before, not after z 공개키 정보: 공개키값, 알고리즘/파라미터 z

일련번호 버전 CA 서명 알고리즘

z

발급자 유효기간

해쉬함수

주체(발급대상) 주체의 공개키 정보 키사용 용도

전자서명

CA의 개인키

확장 서명

5/22

인증서의 검증 „

„ „ „

인증서의 서명 확인: 발급 인증기관의 공개키 이용 z 인증기관의 인증서를 추가로 확인해야 함 z 인증기관의 인증서는 보통 상위 인증기관이 발급함 „ 상위 인증기관의 인증서를 추가로 확인해야 함 „ 계층구조 모델에서는 취상위 인증기관까지 확인해야 함 „ 최상위 인증기관은 자체 서명 인증서를 사용함 z 한번 확인된 인증서는 캐시에 보관할 수 있음 „ 나중에는 유효기관과 폐지여부만 확인하면 됨 인증서의 유효기간 확인 인증서의 사용 용도 확인: 예) 서명, 암호화 인증서의 폐지 여부

6/22

3


공개키 기반구조의 구성요소 „

„

„ „

„

„ „ „

정책승인기관(PAA, Policy Approving Authority): 공인인증 서비스 전반의 정책과 절차 수립 정책인증기관(PCA, Policy Certification Authority): PAA에서 승인 된 전반적인 정책을 확장하거나 세부화된 정책 생성 인증기관(CA, Certification Authority): 인증서를 발급하는 기관 등록기관(RA, Registration Authority): 가입자의 등록과 초기 인증(신원확인)을 담당 인증서 디렉토리(Certificate Repository): 인증서 검색 서비스를 제공 키 복구 서버(key recovery server) 타임 서버(time server) OCSP(Online Certification Status Protocol) 서버: 인증서의 철회 여부를 온라인으로 확인하는 서비스를 제공하는 서버

7/22

공개키 기반구조 가입자

사용자

RA

1. 등록신청 5. 등록확인

2. 신원확인 6. 인증서발급 요청

8. 인증서요청 9. 인증서전달

4. 등록확인

3. 등록요청 7. 인증서공표 7. 인증서발급

CA Certificate Repository 8/22

4


정책승인기관, 정책인증기관 „

„

정책승인기관: root CA 역할 z PKI 전반에 사용되는 정책과 절차를 수립 z 하위 기관들의 정책 준수 상태 및 적정성을 감시 z PKI 내/외에서 상호인증을 위한 정책 수립 및 승인 z 하위기관의 공개키를 인증하고, 인증서, 폐지목록 등을 관리 정책인증기관 z PAA 아래 계층으로 자신의 도메인 내의 가입자와 인증기관이 따라야 할 정책을 수립 z 하위기관의 공개키를 인증하고, 인증서, 폐지목록 등을 관리

9/22

등록기관 „

역할 z 가입자의 신원 확인 „ RA가 없으면 CA가 RA 역할까지 수행함 z 신원 확인 증명서를 인증기관에 전달 z 가입자를 대신하여 공개키 쌍의 생성 z 키 복구 또는 백업을 위한 요청 승인 z 인증서 폐지 요청 승인

10/22

5


인증기관 „

역할 z 인증서 발급(certification issuance) „ 인증기관의 서명키의 안전성이 매우 중요!!! „ 다른 인증기관의 상호 인증서 발급 z 인증서 폐지(certificate revocation) „ 유효기간을 적절하게 설정하여도 유효기간 내에 인증서를 폐기하고 새로 발급받을 필요가 있다. z 예) 키의 분실, 키의 도난 „ 전통적인 방법: 인증서 폐지 목록(CRL, Certificate Revocation List) z 인증서 정지: 일시적으로 인증서의 사용을 정지하는 것 z 인증서 갱신: 인증서의 유효기간 갱신하는 것

11/22

인증서 디렉토리 „

인증서 디렉토리(certificate directory, certificate repository) 역할 z 인증기관의 인증서, 가입자의 인증서, CRL의 공개 보관소

„

표준: X.500

„

z

보통 LDAP(Lightweight Directory Access Protocol)을 이용하여 구현됨: RFC 1777, 1778 „ X.500 프로토콜보다는 사용하기가 편리함

12/22

6


CRL CRL 발급자 서명알고리즘 식별자 버전 발급 날짜 다음 발급 날짜 인증서 일련번호

폐지날짜

„

인증서의 유효성을 확인할 때 함께 받아 사용함

해쉬함수

폐지 사유 인증서 일련번호

폐지날짜

전자서명

폐지 사유

확장

CRL 발급자의 개인키

서명

13/22

CRL „

„

„

„

CRL 분배점(CRL distribution point) z CRL이 너무 커지는 문제를 해결하기 위한 방법 z CRL를 관리할 수 있는 크기로 나누어 제공 Delta CRL z 이전 CRL에서 추가되거나 변경된 부분만 포함하는 CRL „ 참고. 유효기간이 지난 인증서는 CRL에 유지할 필요가 없다. Indirect CRL z 여러 인증기관에서 발급하는 CRL를 하나로 결합하여 사용하는 방식 ARL(Authority Revocation List): 인증기관 인증서의 폐지 목록

14/22

7


신뢰 모델 상호인증

Root CA - self-signed

Intermediate CA

leaf CA - 일반 가입자의 인증서 발급

순수 계층 구조

네트워크 구조 15/22

신뢰 모델 - 계속 교육부 CA 충남교육청 CA

KUT CA

„

서울시교육청 CA

단국대 CA

한양대 CA

„

A

B

C

A 입장 z 가정: KUT CA를 신뢰함 „ 자신의 인증서를 발급한 CA를 신뢰하는 것은 z B의 인증서: 충남교육청 CA 가 필요함 z C의 인증서: 확인하기 위해서 는 한양대 CA, 서울시 교육청 CA가 모두 필요함 A에서 B를 확인하기 위한 인증 경로(certification path)는 z KUT CA Æ 충남교육청 CA Æ 단국대 CA

16/22

8


신뢰 모델 - 계속 „ „

„

„ „

인증 경로는 짧을 수록 처리 비용이 저렴하다. 네트워크 구조는 기본적으로 여러 개의 인증 경로가 존재하며, full mesh 구조를 사용하면 확장성이 떨어지며, 그렇지 않으면 가장 짧은 경로를 찾아야 한다는 문제점이 있다. 단일 순수 계층구조 PKI가 전세계의 모든 사용자를 서비스하기는 불가능함. z 각 나라마다 다른 정책, 각 기업마다 다른 정책을 사용할 수 있음 현재는 계층구조+네트워크 구조를 사용한다 상호인증 인증서는 비계층구조의 신뢰 경로를 만들기 위해 사용 z 인증기관은 상호 다른 인증기관의 공개키를 서명하여 인증서를 발급하여 준다. z 인증기관간에 상호인증 협정이 선행되어야 함

17/22

상호인증 순방향 인증서

상호인증서 쌍

역방향 인증서 IME

서명

ITE

ITE

서명

IME

A B

서명

IME

Alice의 인증서: IME CA가 발급

서명

ITE

Bob의 인증서: ITE CA가 발급

18/22

9


Push Model VS. Pull Model „

„

Push 모델: 인증서를 전달할 때 관련되는 모든 인증서를 함께 전달하는 방식 Pull 모델: 하나의 인증서만을 전달하고, 이 인증서를 확인하기 필요한 추가적인 인증서들은 사용자가 직접 문의하여 얻는 방식 z 인증서에는 발급자 정보가 포함되어 있으므로 필요한 인증서는 스스로 얻을 수 있다.

19/22

국내 인증체계 상호인증 외국정부

국외 국외 국외 인증기관 인증기관 인증기관

정보통신부

상호인증

행정자치부

민간최상위인증기관 (KISA) www.rootca.or.kr

금융결제원 전자인증센터 www.yessign.co.kr

상호인증

공인인증기관

등록기관 각 종 금융기관 가입자

가입자

정부최상위인증기관 (정부전산정보관리소) www.gcc.go.kr

공인인증기관

전자민원 서비스 제공기관

공인인증기관

전자민원 서비스 제공기관

20/22

10


공개키 쌍의 생성 기본 키 생성 방식

중앙집중 방식

A

장점 안전성, 부인방지

A

A

서명

장점 키 복구의 용이 A

A

A

서명

CA

CA

A CA/RA

A

CA

21/22

OCSP „ „

가입자의 수가 증가함에 따라 CRL을 사용하는 것이 부담스럽다. OCSP(Online Certificate Status Protocol)은 온라인으로 인증서의 상태를 문의할 수 있는 프로토콜이다. z 기존의 CRL를 다운받아 처리하는 것보다 효율적임 z 보통 HTTP로 구현 CA z 표준: RFC 2560 상태전달 1. OCSP 요청 2. 검색

3. OCSP 응답 good, revoked, unknown

OCSP 서버

X.500 디렉토리 22/22

11


전자서명

인터넷미디어공학부 김상진

1

교육목표 „ „ „ „ „ „

전자서명 개요 RSA 전자서명 ElGamal 전자서명 Schnorr 전자서명 DSA 은닉서명

2/20

1


전자 서명의 요구사항 „

„ „

„ „

인증(authentic): 누가 서명하였는지 확인이 가능해야 함 z 각 서명자마다 서명이 독특해야 한다. 위조불가(unforgeable): 위조가 불가능해야 함 재사용불가(not reusable): 서명을 다시 사용할 수 없어야 함 z cut-and-paste: 서명은 메시지에 의존해야 한다. z reuse as a whole: 서명에 타임스템프를 포함해야 한다. 변경불가(unalterable): 서명된 문서의 내용을 변경할 수 없어야 함 부인방지(non-repudiation): 나중에 부인할 수 없어야 한다.

3/20

일반 서명과 전자 서명의 차이점 „ „

„

전자 서명은 수학적으로 서명자를 검증할 수 있다. 일반 서명은 문서 위에 하지만 전자 서명은 보통 문서와 별도로 존재한다. Æ 전자 서명은 문서에 의존해야 함 z 일반 서명은 서명마다 동일한 형태를 지니지만 전자 서명은 서명하는 문서마다 다른 형태를 지닌다. 전자 서명은 원본과 복사본을 구분하기가 어렵다.

4/20

2


전자 서명 방식의 종류 „

„

직접 서명 방식(direct digital signature): 서명자가 홀로 서명 알고리즘을 수행하여 서명하는 방식 z 문제점: 서명키의 분실/도난 „ 서명자가 직접 서명시간을 서명에 포함할 경우에는 서명키를 획득한 공격자의 부정을 증명할 방법이 없다. 중재 서명 방식(arbitrated digital signature): 중재자와 프로토콜을 수행하여 서명하는 방식 z 중재자는 서명의 증인 역할을 하게 된다. Arbiter: A

User: U M, SignU(H(M)||TU) SignA(TA||SignU(H(M)||TU))

5/20

전자 서명 알고리즘의 분류 „

„

메시지 복구 여부에 따른 분류 z 서명으로부터 메시지를 복구할 수 있는 서명 알고리즘(DSS with recovery) z 검증에 원 메시지가 필요한 서명 알고리즘(DSS with appendix)

결정 vs. 확률 서명 알고리즘 z

z

결정(deterministic) 서명 알고리즘은 메시지가 같으면 항상 서명이 같은 알고리즘을 말하며, 확률(probabilistic, randomized) 서명 알고리즘은 메시지가 같아도 서명할 때마다 그 결과가 달라지는 알고리즘

6/20

3


전자 서명의 구성요소 „

전자 서명의 구성요소 z M: 서명할 수 있는 메시지의 유한 집합 z MS: 서명 알고리즘에 적용할 수 있는 값들의 집합 z S: 고정된 길이의 서명의 유한 집합 z R: M에서 MS로 일대일 매핑, redundancy function z MR: R의 치역 z h(MÆMh): 충돌회피 해쉬함수 z R: 특정한 서명 함수를 식별하는 색인 요소들의 집합 „ |R|>1이면 확률 서명 알고리즘이다.

7/20

검증에 원 메시지가 필요한 전자 서명 „

키 생성 z 각 서명자 A는 매핑 집합 SA = {SA,k | k∈R}를 서명키로 선택한다. „ SA,k는 Mh에서 S로의 일대일 매핑 z

각 서명자의 확인키 VA는 다음과 같은 Mh±S에서 {true,false}로 의 매핑이다.  ) = s* true if S ( m  A,k  , s*) =  VA ( m false otherwise  = h( m ) ∈ Mh , s* ∈ S , where m

서명 생성

서명 검증

Step 1. k ∈ R  = h( m ) Step 2. m ) Step 3. s* = S A ,k ( m

 = h( m ) Step 1. m  , s*) ? true Step 2. VA ( m

요구사항 A를 제외하고는  , s*) = true 인 VA ( m  ∈Mh을와 s*∈S을 m 찾는 것이 계산적으로 어려워야 한다.

8/20

4


메시지 복구가 가능한 전자 서명 „

키 생성 z 각 서명자 A는 매핑 집합 SA = {SA,k | k∈R}를 서명키로 선택한다. „ SA,k는 Mh에서 S로의 일대일 매핑 z

각 서명자의 확인키 VA는 다음을 만족해야 한다. )=m , m  ∈ MS VA D S A,k ( m

서명 생성

서명 검증

Step 1. k ∈ R  = R( m ) Step 2. m ) Step 3. s* = S A ,k ( m

 = VA ( s*) Step 1. m  ? ∈ MR Step 2. m ) Step 3. m = R −1 ( m

A를 제외하고는 VA(s*)∈MR을 찾는 것이 계산적으로 어려워야 한다.

9/20

전자 서명에 대한 공격 결과 „ „

„

„

완전 파괴(total break): 공격자가 서명자의 서명키를 계산한 경우 완전 위조(universal forgery): 서명자의 서명 알고리즘과 등가인 또 다른 효율적인 서명 알고리즘을 찾은 경우 선택 위조(selective forgery): 특정한 메시지 또는 특정한 종류의 메시지에 대해서는 서명 위조가 가능한 경우 존재 위조(existential forgery): 최소한 하나의 메시지에 대한 서명을 위조한 경우로서, 공격자가 위조 가능한 메시지를 선택할 수 없는 경우

10/20

5


전자 서명에 대한 공격의 종류 „

„

암호문 공격(key-only attack): 공격자가 서명자의 확인키만 가지고 있는 경우 메시지 공격(message attack): 공격자가 메시지와 서명 쌍 목록을 가지고 있는 경우 z 알려진 메시지 공격(known-message attack): 공격자가 메시지를 선택할 능력이 없는 경우 z 선택 메시지 공격(chosen-message attack): 공격자가 메시지를 선택할 능력이 있지만 메시지에 대한 서명을 얻기 전에 서명 받을 모든 메시지를 선택해야 하는 경우 z 적응적 선택 메시지 공격(adaptive chosen-message attack): 공격자는 메시지를 선택할 능력이 있을 뿐만 아니라 지난 요청의 결과에 따라 다음 요청을 선택할 수 있는 경우

11/20

RSA 전자 서명 A의 서명키는 (n, d)이고, 확인키는 (n, e)이다. deterministic RSA signature with recovery 서명 생성

서명 검증

 = R( m ) Step 1. m  d mod n Step 2. s = m

 = s e mod n Step 1. m  ? ∈ MR Step 2. m ) Step 3. m = R −1 ( m

deterministic RSA signature with appendix 서명 생성

서명 검증

 = h( m ) Step 1. m  d mod n Step 2. s = m

 = h( m ) Step 1. m  ? ≡ s e mod n Step 2. m

12/20

6


RSA 전자 서명의 안전성 „ „

인수분해에 의존: 인수분해가 가능하면 완전 파괴 d d d 곱셈 특성: s1 ≡ m 1 (mod n), s2 ≡ m 2 (mod n) ⇒ s1 s2 ≡ ( m 1m 2 ) (mod n) z 따라서 ∀a , b ∈ M, R( ab ) ≠ R(a ) R(b ) 이어야 한다. z 또한 다음과 같은 공격도 가능하다. Step 1. s ∈R ] n Step 2. m* = s e mod n Step 3. m = R −1 ( m*)

13/20

ElGamal 전자 서명 512비트보다 큰 소수 p 선택, p-1의 소인수 중 160비트 이상인 q 선택 A의 서명키: x ∈ Z q x A의 확인키: p, q , g ∈ Gq , y = g

g m ?≡ h( m ) g ?≡

yW W s (mod p ) g xW g ws (mod p )

g h( m ) ? ≡ g h( m ) ? ≡ g h( m ) ? ≡

g xW g w ( h( m )− xW ) w (mod p ) g xW g h( m )− xW (mod p ) g h( m ) (mod p)

−1

probabilistic ElGamal signature with appendix 서명 생성 Step 1. w ∈ R Z q Step 2. W = g w mod p Step 3. s = ( h( m ) − xW )w −1 mod q

서명 검증  = h( m ) Step 1. m Step 2. g m ? ≡ yW W s (mod p)

14/20

7


ElGamal 전자 서명의 안전성 „ „

„

„

„

y로부터 x를 계산: 이산대수 문제 W ∈R Gq 를 선택한 다음에 g h( m ) ≡ yW W s (mod p ) 를 만족하는 s를 찾는 것

Æ 이산대수 문제 s ∈R Z q 를 선택한 다음에 g h( m ) ≡ yW W s (mod p) 를 만족하는 W를 찾는 것Æ? W ∈R Gq 와 w ∈R Z q를 선택한 다음에 g h( m ) ≡ yW W s (mod p)를 만족하는 h(m)를 찾는 것 Æ 이산대수 문제 ElGamal 전자 서명을 할 때마다 다른 w를 사용해야 한다. g h( m1 ) g h ( m2 )

≡ ≡

g h( m1 )− h( m2 ) ≡ W s1 − s2 (mod p)

yW W s1 (mod p)   yW W s2 (mod p) 

h( m1 ) − h( m2 ) ≡ w(s1 − s2 ) (mod q )

같은 w를 사용한 두 개의 ElGamal 서명

w

x 15/20

Schnorr 전자 서명 512비트보다 큰 소수 p 선택, p-1의 소인수 중 160비트 이상인 q 선택 hq : {0,1}* → Z q 충돌회피 해쉬함수 A의 서명키: x ∈ Z q

A의 확인키: p, q , g ∈ Gq , y = g

x

g s yc g w − cx g xc

?≡ ?≡

g w (mod p) g w (mod p)

probabilistic Schnorr signature with appendix 서명 생성

서명 검증

Step 1. w ∈ R Z q Step 2. c = hq ( m || g w )

Step 1. c ? ≡ hq ( m || g s y c )

Step 3. s = w − cx mod q

16/20

8


Schnorr 전자 서명의 안전성 „

y로부터 x를 계산: 이산대수 문제

„

w ∈R Z q 를 선택한 다음에 c를 계산하고 g s y c ≡ g w (mod p) 를 만족하는

s를 찾는 것 Æ 이산대수 문제 „

ElGamal 서명과 마찬가지로 서명마다 다른 w를 사용해야 한다. gw gw

≡ ≡

g s1 − s2 ≡ g x ( c2 − c1 ) (mod p)

g s1 y c1 (mod p)   g s2 y c2 (mod p) 

x≡

같은 w를 사용한 두 개의 ElGamal 서명

s1 − s2 (mod q ) c2 − c1

17/20

DSA(Digital Signature Algorithm) „ „

1991년 NIST에서 전자서명 표준에 사용하기 위해 제안된 알고리즘 ElGamal 서명의 변형 512비트보다 큰 소수 p 선택, p-1의 소인수 중 160비트 이상인 q 선택 x ∈ Zq

A의 서명키: x A의 확인키: p, q , g ∈ Gq , y = g

g h( m )( h( m )+ xW )

−1

w

g xW ( h( m )+ xW )

= g ( h( m )+ xW )( h( m )+ xW )

−1

w

−1

w

= gw

probabilistic DSA signature with appendix 서명 생성 Step 1. w ∈ R Z q Step 2. W = ( g w mod p) mod q Step 3. s = ( h( m ) + xW )w −1 mod q

서명 검증 Step 1. e1 = h( m ) s −1 mod q Step 2. e2 =Ws −1 mod q Step 3. ( g e1 y e2 mod p) ? ≡ W (mod q )

18/20

9


은닉서명(blind signature) „

„

은닉서명을 서명 내용을 보지 않고 서명해주는 서명 프로토콜로서, 전자화폐, 전자선거 등에서 사용자의 프라이버시를 보장하기 위해 사용된다. 은닉서명의 원리 먹지

#13

#13 서명자 은닉서명

19/20

RSA 은닉서명 프로토콜 서명자 서명키: (n, d) 확인키: (n, e)

r ∈R Z*n 

 = hn ( m )r e mod n m

m  →

 −1 mod n s = sr

s ← 

hn ( m )? ≡ s e (mod n)

 d mod n s = m



서명자의 부정

 →m 1) m 2) s → s 3) s ⇒ s′

20/20

10


키 확립 프로토콜

인터넷미디어공학부 김상진

1

교육목표 „ „ „

암호프로토콜 개요 키 확립 프로토콜 개요 키 확립 프로토콜에 사용되는 기법 z z

„ „ „

Naming 기법 타임스템프, nonce를 이용한 메시지 최근성 보장

Needham-Schroeder 프로토콜 Kerberos, EKE, AEKE Diffie-Hellman 키 동의 프로토콜

2/32

1


프로토콜 „

„

„

„

„ „ „

정의: 어떤 목적을 달성하기 위해 2명 이상이 참여하는 유한한 일련의 단계(sequence of steps)를 말한다. 프로토콜의 특성 z 사전에 알고 있어야 한다. z 참여자 간에 동의하고 있어야 한다. z 모호하지 않아야 한다. z 완전해야 한다. (목적이 달성되어야 한다.) 암호 프로토콜(cryptographic protocol): 암호 기술을 사용하는 프로토콜 암호 기술을 사용하는 목적: 프로토콜의 각 메시지의 의미를 보장하고, 참여자 또는 제3자가 부정을 하지 못하도록 하기 위함 일반 프로토콜과의 차이점: 공격자의 존재를 가정함 일반 프로토콜: 완전성(completeness) 암호 프로토콜: 안전성(secureness) 3/32

암호프로토콜의 분류

transcript

자체 강화 프로토콜 „

중재자(arbitrator)가 필요 없는 프로토콜 z 가장 이상적인 형태 z 모든 상황을 이 형태 로 해결할 수 없다.

중재 프로토콜 „

판결 프로토콜 „

분쟁이 발생한 경우에만 판결자(adjudicator)가 참여하는 프로토콜

평상시에 수행하는 프로„ 토콜(nonarbitrated subprotocol)과 분쟁이 발생하였을 때 수행하는 프로토콜(adjudicated subprotocol)로 나뉘어 진다.

프로토콜은 분쟁을 해결할 수 있도록 증거 자료를 남겨야 하며, 중재자는 제시된 증거 를 검사하여 분쟁을 명 확하게 해결할 수 있어 야 한다.

중재자가 프로토콜에 항상 참여하는 프로토콜

4/32

2


키 확립 프로토콜 „

„

„

키 확립 프���토콜(key establishment protocol): 둘 이상의 참여자들 이 비밀키를 공유할 수 있도록 해주는 프로토콜 키 확립 프로토콜을 통해 얻어지는 비밀키는 단일 세션에 사용하기 위한 세션키이다. 세션키를 사용하는 이유 z 같은 키로 암호화된 암호문을 제한하기 위해 (암호해독공격에 대한 방어) z 키가 노출되었을 때 누설되는 정보의 기간과 양을 제한하기 위해 z 키 저장에 관한 문제를 해결하기 위해 (세션키는 메모리에 유지할 수 있음) z 세션 간에 또는 응용프로그램 간에 독립성을 만들기 위해

5/32

키 확립 프로토콜 - 계속 „

키 확립 프로토콜의 분류 z 키 교환 프로토콜(key exchange(transport) protocol)}: 참여자 중 한 명이 키를 생성하거나 획득한 후에 다른 참여자에게 키를 안전하게 전달하여 주는 프로토콜 „ 다른 말로 키 분배(distribution) 프로토콜이라 한다. „ 보통 신뢰하는 키 서버를 사용하는 중재 방식의 프로토콜 z 키 동의 프로토콜(key agreement protocol)}: 쌍 방간에 정보를 교환한 후에, 이 정보를 이용하여 각자 같은 키를 생성하는 자체 강화 방식의 프로토콜

6/32

3


키 확립 프로토콜 - 계속 „

„

키 확립 프로토콜의 요구사항 z 참여자는 의도한 다른 참여자들과 사용할 수 있는 새로운 키를 얻어야 한다. „ 의도한 참여자: 참여자가 인증(entity authentication)되어야 함을 의미한다. „ 새로운 키(key freshness): 키가 최근에 생성되었다는 것을 증명할 수 있어야 함. z 새로운 키는 의도된 참여자 외에 다른 참여자들은 얻을 수 없어야 한다. 키 확립 프로토콜의 구성 z 키 교환 또는 동의 과정 z 키 확인 과정: 상대방이 자신과 같은 키를 가지고 있는지 확인하는 과정

7/32

키 확립 프로토콜 - 계속 „

„

키 확립 프로토콜의 특성 z 함축적 키 인증(implicit key authentication): 자신이 명시한 참여 자만이 특정한 비밀키를 얻을 수 있다는 것을 보장하여 주는 특성 z 키 확인(key confirmation): 다른 참여자가 실제로 특정한 비밀키 를 소유하고 있다는 것을 증명하여 주는 특성 z 명백한 키 인증: 함축적인 키 인증과 키 확인 특성이 모두 성립할 경우 키 확립 프로토콜에 대한 공격 z long-term 비밀키의 노출 „ 완전한 전방향 안전성(perfect forward secrecy): long-term 비밀키가 노출되어도 과거의 세션키가 노출되지 않는 경우 z 세션키의 노출 „ known-key attack: 노출된 과거의 세션키를 이용하여 미래의 세션키를 얻는 공격방법

8/32

4


키 교환 프로토콜 „

„

„

대부분의 키 교환 프로토콜은 신뢰성 있는 서버가 참여하는 중재 프로 토콜이다. 중재 프로토콜을 사용하는 이유는 키 생성 권한을 일반 사용자에게 주 는 것은 위험하기 때문이다. z 일반 사용자가 생성한 키를 믿는 것보다 신뢰성 있는 중재자가 생성 한 키를 믿는 것이 보다 더 안전함 키 교환 프로토콜에서 중재자를 키 분배 센터(KDC, Key Distribution Center) 또는 키 번역 센터(key translation center)라 한다. z 키 분배 센터: 키를 직접 생성하여 참여자에게 안전하게 전달하여 주는 중재자 z 키 번역 센터: 참여자가 생성한 키를 다른 사용자에게 안전하게 전달하여 주는 중재자

9/32

키 교환 프로토콜 „

- 계속

키 분배 센터와 키 번역 센터를 이용한 키 교환 프로토콜의 기본구조

2

1

1 2

1 2

3

1 2

3

3

키 번역 센터

키 분배 센터 10/32

5


키 교환 프로토콜 „ „

„

- 계속

현재 여러 종류의 키 교환 프로토콜이 발표되어 있다. 각 프로토콜 간에 명확한 차이점도 없으며, 왜 이렇게 많은 종류의 프로토콜이 필요한 것인지에 대해서도 명확하지 않다. 이것에 대한 일반적인 견해는 다음과 같다. z 모든 프로토콜은 항상 동일한 기본적인 목적을 지니고 있지만, 기본 목적 외에 각 프로토콜마다 추가적으로 달성해야 하는 목적들이 다를 수 있다. z 메시지를 교환하는 순서에 대한 제한이 있을 수 있다.

11/32

Denning과 Sacco의 프로토콜 Alice

CertA, {{Kab||Ta}.-Ka}.+Kb

Bob

„

자체 강화 방식의 키 교환 프로토콜 +Kb를 통해 세션키의 비밀성 유지, -Ka를 통해 인증 문제점: Alice는 Bob에게 +Kb로 암호화하여 보냄으로써 Kab과 Bob와 사용할 세션키임을 나타내고자 하였다. z Bob은 Carol에게 다음과 같은 메시지를 보내 A로 위장할 수 있다.

„

해결책: 메시지를 다음과 같이 구성해야 한다.

„ „

CertA, {{Kab||Ta}.-Ka}.+Kc CertA, {{Kab||B||Ta}.-Ka}.+Kb „

교훈: 모든 메시지는 그것의 용도와 의미를 명확하게 말해야 한다. 즉, 메시지의 해석은 메시지 내용에 의존해야 한다. 12/32

6


Naming 기법 „

„

„

Naming 기법: 메시지의 의미를 명확하기 위해 참여자의 식별자를 암 호문 내에 포함하는 기법 대칭 암호알고리즘을 사용하는 경우 z 키 서버가 참여자 A와 B간에 사용할 세션키 Kab를 참여자 A에게 전달하는 방법 SÆA: {A||B||Kab}.Kas „ 여기서 A는 생략 가능, Kas로부터 A는 유추 가능 비대칭 암호알고리즘을 사용하는 경우 z 같은 용도의 메시지 SÆA: {{A||B||Kab}.-Ks}.+Ka „ 여기서는 A를 생략할 수 없음

13/32

Wide-Mouthed Frog 프로토콜 A, {Kab||B||Ta}.Kas Alice „ „ „

„

{Kab||A||Ta}.Kbs Server

Bob

키 번역 프로토콜 가정. Alice와 Bob은 Server와 Kas, Kbs를 각각 공유하고 있음 문제점: 이 프로토콜은 일반 사용자가 세션키를 생성하고 있다. 따라서 이 프로토콜이 안전하기 위해서는 상대방을 키 생성에 대해 신뢰해야 한다. 그러나 이런 신뢰는 적절하지 못하다. 교훈: 프로토콜들은 어떤 신뢰 관계를 가정한다. 이런 신뢰 관계는 바람직하지 않다고 할 수는 있지만 틀렸다고는 할 수 없다. z

프로토콜이 가정하는 신뢰 관계는 명백하게 제시되어야 하며, 프로토콜을 사용하는 측에서는 이런 신뢰 관계를 수용할 수 있는지 검토해야 한다.

14/32

7


암호화된 데이터에 포함되는 잉여정보 „

„

„

일반적으로 암호문 내에 여분(redundant) 정보를 포함하여 복호화하였을 때 올바른 키를 사용하였는지 판단할 수 있게 해준다. 여분 정보의 분류 z 명백한 여분 정보: 누구나 알 수 있는 정보, 예) 사용자 식별자 „ 수동적인 암호해독 공격을 용이하게 해준다. z 함축적 여분 정보: 오직 수신자와 송신자만이 알고 있는 정보 예) 여분 정보를 포함하는 가장 쉬운 방법 z {M||h(M)}.K Æ 여기서 h(M)은 명백한 여분 정보

15/32

암호프로토콜에서 암호화의 용도 „

„

„

비밀성을 보장하기 위해 사용 z 오직 의도된 수신자들만이 메시지를 복호화하기 위한 키를 알고 있음. 예) {M}.+Kb 인증을 보장하기 위해 사용 z 오직 송신자만이 암호화된 메시지를 생성할 수 있음. 예) {M}.-Ka 메시지의 구성요소를 바인딩 하기 위해 z {X||Y}.K를 수신하는 것과 {X}.K, {Y}.K를 수신하는 것은 의미가 다르다. 예) {A||Kab}.Kbs z 바인딩을 위해 암호화를 사용할 경우에는 일반 암호알고리즘보다 는 일방향 해쉬함수를 사용하는 것이 바람직하다.

16/32

8


암호프로토콜에서 암호화의 용도 „

„

- 계속

주의사항 z 암호화를 하는 이유가 명확하여야 한다. „ 암호화는 저렴한 연산이 아니므로 불필요한 암호화는 피해야 한다. „ 암호화를 하였기 때문에 무조건 비밀성이 보장되는 것은 아니다. A가 B에게 안전하게 공유된 비밀키로 메시지를 암호화하여 전송하였 다고 하여 z A는 오직 B만이 메시지의 내용을 알고 있다고 가정할 수 없다. „ B는 수신한 메시지를 다른 사용자에게 전달하거나 보여줄 수 있다. z B도 오직 A만이 메시지의 내용을 알고 있다고 가정할 수 없다. „ A가 다른 사용자가 알고 있는 내용을 전달하여 줄 수 있다. 17/32

메시지의 최근성/시기적절성 „

„

„

„

암호프로토콜에서 메시지를 수신하면 정해진 다음 해동을 취하기 위해 여러 가지 검사를 하게 된다. z 이 때 보통 메시지의 최근성(freshness, timeliness)을 검사한다. 메시지의 최근성을 검사한다는 것은 메시지가 이전 세션에 사용된 메시지가 아니라 현재 프로토콜 수행(run)을 위해 새롭게 작성된 메시지임을 확인하는 것을 말한다. 메시지의 최근성은 메시지의 구성요소로부터 유추되어야 하며, 어떤 메카니즘을 사용하던 간에 재전송(replay) 메시지에는 포함될 수 없거나 재전송 메시지와 현재 메시지를 구별할 수 있어야 한다. 메시지와 특정 프로토콜 수행과의 연결은 일반적으로 시간적인 관계 (temporal relationship) 또는 인과 관계(causal relationship)를 통해 이루어진다.

18/32

9


메시지의 최근성/시기적절성 „

„

„

- 계속

시간적 관계 또는 인과 관계는 일반적으로 관계를 증명할 수 있는 식별자를 메시지에 포함함으로써 형성된다. 관계를 형성하는 과정에는 다음과 같은 세 종류의 참여자가 관여한다. z 제공자(supplier): 식별자를 제공하는 참여자 z 입증자(prover): 제공된 식별자를 메시지에 포함시키는 참여자 z 검증자(verifier): 메시지에 포함된 식별자를 통해 메시지의 최근성을 확인하는 참여자 메시지의 최근성을 보장하기 위한 식별자로 가장 널리 사용되는 것은 타임스템프(timestamp)와 nonce이다.

19/32

메시지의 최근성/시기적절성 „

„

„

- 계속

타임스템프 기반 기법에서는 메시지에 메시지 작성 시간과 메시지의 유효기간을 기록한다. nonce(a Number to be used just ONCE) 기법은 시도(challenge)과 그것에 대한 응답(response)을 통해 메시지의 최근성을 보장하는 기법이다. 어떤 특정한 값이 최근성 식별자로서 적합하기 위해서는 불예측성과 같은 값의 특성뿐만 아니라 값을 어떻게 사용하느냐에 따라 결정된다.

20/32

10


타임스템프 „

„

„

타임스템프를 이용한 메시지의 최근성 증명 AÆB: {Ta||…}.Kab z B는 위 메시지를 수신하면 자신의 지역 클럭의 현재 값 Tb와 Ta를 비교하여 두 시간의 차이가 허용할 수 있는 범위 내에 있으면 메시지가 최근에 생성된 메시지로 인식하게 된다. z A: 제공자/입증자, B: 검증자 타임스템프를 유효한 값으로 허용하는 범위를 허용 윈도우 (acceptance window)라 하며, 메시지 통신 지연과 클럭 동기화 (synchronization) 메커니즘에 의해 결정된다. 취약점: 허용 윈도우 내에 재전송하는 공격 z 따라서 메시지 중복 검사가 반드시 필요하며, 이를 위해서는 지난 t초(t: 허용 윈도우의 길이) 내에 수신한 모든 메시지를 보관하고 있어야 한다.

21/32

타임스템프 - 계속 „

„

„

모든 참여자가 메시지에 타임스템프를 첨부하고 확인하기 위해서는 타임스템프의 형태를 알고 있어야 한다. z 타임스템프의 형태는 공개되어있다고 가정한다. 타임스템프의 값은 미래 또는 과거의 어느 한 순간을 나타낸다. z 제공자는 쉽게 특정 순간을 가리키는 타임스템프를 사용할 수 있다. 검증자는 제공자가 정직하게 타임스템프를 부여한다는 것을 신뢰할 수 있어야만 한다. 또한 입증자가 실수로 잘못된 타임스템프를 부여하 지 않는다는 것을 믿을 수 있어야 하며, z 입증자는 이런 능력(competence)을 가지고 있어야 한다.

22/32

11


타임스템프 - 계속 „

„

„

장점 z 제공자와 입증자가 동일인이며, 일방향 통신으로(하나의 메시지로) 최근성을 보장할 수 있다. 단점 z 입증자를 신뢰할 수 있어야 한다. z 타임스템프의 사용은 시스템간에 클럭 동기화가 요구된다. „ 클럭 동기화 메카니즘이 시스템 보안성에 미치는 영향이 크다. „ 따라서 암호 프로토콜을 이용하여 클럭 동기화 메카니즘을 구현하여야 한다는 것을 뜻한다. 이 때 사용되는 암호프로토콜 은 타임스템프 기반 기법을 사용할 수 없다. (irony) 타임스템프 기법의 안전성을 결정하는 요인 z 클럭 동기화, 입증자의 정직성, 입증자의 능력

23/32

NONCE „

„

„

„

„

„

Nonce란 특정한 순간을 증명하기 위해 생성된 값을 말한다. z 다른 표현: freshness identifier, liveness indicator 메시지 M에 대한 응답 메시지는 오직 M의 내용을 알고 있을 경우에만 생성할 수 있도록 하는 기법이다. z 시도와 응답간에 인과 관계가 성립하며, 두 메시지를 바인딩하는 역할을 한다. Nonce 기법에서는 일반적으로 제공자와 입증자는 다르며, 제공자와 검증자는 동일인이다. Nonce 기법은 최소한 두 개의 메시지를 필요로 한다. z 이 기법을 사용하면 일방향 통신으로 최근성을 보장할 수 없다. Nonce의 값으로 사용되는 것 z 타임스템프, 카운터, pseudo-random number 장점: 검증자는 입증자의 정직성과 competence에 대해 신뢰할 필요가 없다.

24/32

12


Nonce를 사용하는 네 가지 전형적인 방식 방 식 1

1

방 식 2

1

방 식 3

1

방 식 4

1

2

2

2

2

Na {Na}.K

„

„

{Na}.K Na „

{Na}.K {f(Na)}.K

방식 1과 2의 문제점: Na는 명백한 여분 정보가 된다. 방식 2의 경우에는 Na를 예측할 수 없어야 한다. z 예측이 가능하면 누구나 응답할 수 있음 방식 3에서 f()는 메시지 1과 메시지 2를 구별하기 위한 함수이다. z 보통 증가함수를 사용

Na h(Na||K)

25/32

Timestamp VS. Nonce Timestamp

Nonce

제공자=입증자≠검증자

제공자=검증자≠입증자

입증자의 정직성이 요구됨

값의 선택은 제공자의 책임

하나의 메시지로 최근성을 보장함

최소한 두 개의 메시지가 필요

동기화 메커니즘 필요

동기화 메커니즘 불필요

메시지 바인딩 기능 없음

메시지 바인딩 기능 제공

26/32

13


Needham-Schroeder 프로토콜 Message 1. A Æ S: A, B, Na Message 2. S Æ A: {Na||B||Kab||{Kab||A}.Kbs}.Kas Message 3. A Æ B: {Kab||A}.Kbs Message 4. B Æ A: {Nb}.Kab Message 5. A Æ B: {Nb+1}.Kab „ „ „

„

키 분배 센터를 이용한 중재 방식의 프로토콜 Nonce 기법을 이용하여 메시지 최근성 보장 문제점: 세션키 Kab가 노출되면 메시지 3을 재전송하여 A로 위장할 수 있음 해결책: 메시지 2에 타임스템프 추가 {Na||B||Kab||{Kab||Ts||A}.Kbs}.Kas

27/32

Kerberos

MIT에서 개발한 네트워크 인증시스템

접속 세션마다 한번 서비스 종류마다 한번 single-sign-on

청 켓요 티 요청 키 티켓 세션 + 티켓 켓 요청 요청 티 스 비 서 세션키 티켓 +

User

Authentication Server

user DB

server DB

Ticket Granting Server

서비스 요청 서비스 제공

서비스 요청마다

Server

28/32

14


Kerberos V 프로토콜 Message 1. A Æ S(KDC) Message 2. S Æ A Message 3. A Æ T(TGS) Message 4. T Æ A Message 3. A Æ B Message 4. B Æ A „

„ „

„

: A, T, Na : {Kat||T||Na}.Kas, {Ts||L||Kat||A}.Kts : {Ts||L||Kat||A}.Kts, {A||Ta}.Kat, B, N’a : {Kab||B||N’a}.Kat, {Tt||L||Kab||A}.Kbt : {Tt||L||Kab||A}.Kbt, {A||T’a}.Kab : {T’a}.Kab

키 분배 센터를 이용한 중재 방식의 프로토콜 z 실제 프로토콜의 축약된 형태 Nonce 기법을 이용하여 메시지 최근성 보장 티켓 방식: {Ts||L||Kat||A}.Kts z L: 티켓의 수명 Ta: 타임스템프이지만 nonce 역할을 하고 있음

29/32

SNAKE 프로토콜 Msg 1. A Æ B: A, Na, L Msg 2. B Æ S: A, B, Na, Nb Msg 3. S Æ B: {Kab}.Kas, h(Na||B||Kas||Kab), {Kab}.Kbs, h(Nb||B||Kbs||Kab) Msg 3. B Æ A: {Kab}.Kas, h(Na||B||Kas||Kab) {A||Kab||Tb||T’b}.Kbb, {h(tckab)||N’b}.Kab Msg 5. A Æ B: {N’b}.Kab „ „ „

Msg 1. A Æ B: Na, {A||Kab||Tb||T’b}.Kbb Msg 2. B Æ A: Nb, {Na}.Kab Msg 3. A Æ B: {Nb}.Kab

키 분배 센터를 이용한 중재 방식의 프로토콜 Nonce 기법을 이용하여 메시지 최근성 보장 티켓 방식: tckab={A||Kab||Tb||Tb’}.Kbb z Tb: 시작시간, Tb’: 종료시간 z Kbb: 티켓 생성을 위한 비밀키 z 티켓 방식임에도 불구하고 시스템간에 클럭동기화가 필요없음

30/32

15


Encrypted Key Exchange Message 1. A Æ B: A, {+K}.P Message 2. B Æ A: {{Kab}.+K}.P Message 3. A Æ B: {Na}.Kab Message 4. B Æ A: {Na||Nb}.Kab Message 5. A Æ B: {Nb}.Kab P: A와 B가 공유하는 패스워드 +K,-K: 일회용 공개키 쌍 Kab: 세션키

Augmented EKE Message 1. A Æ B: A, {ga}.h(P) Message 2. B Æ A: {gb}.h(P), {Nb}.Kab Message 3. A Æ B: {Na||Nb}.Kab Message 4. B Æ A: {Na}.Kab Kab=gab

Bellovin과 Merrit에 의해 제안 사용자와 서버 간에 패스워드를 공유하고 있을 때 사전 공격에 방어력을 가지는 키 교환 프로토콜 P를 추측하여 메시지 1을 복호화하여도 +K가 랜덤값이므로 추측의 정확성을 알 수 없음 단점: 보통 서버는 패스워드 대신에 패스워드의 다이제스트만 보관

„ „

„

„

31/32

Diffie-Hellman 키 동의 프로토콜 K=gab

„ „

ga gb

K=gab

안전성: 이산대수 문제와 Diffie-Hellman 문제 문제점: 서로 ga와 gb가 상대방이 보낸 값인지 알 수 없다. z Man-in-the-middle attack 가능

Station-to-Station Protocol ga K=gab

gb, {{ga||gb}.-Kb}.K

K=gab

{{ga||gb}.-Ka}.K

32/32

16


전자화폐, 전자선거

인터넷미디어공학부 김상진

1

교육목표 „ „

전자화폐 전자선거

2/42

1


전자상거래 초고속 인터넷의 확산 인터넷의 대중화 웹기술의 발달 보안기술의 발달

컴퓨터의 폭넓은 보급 이용자 수의 급증 새로운 사이버 시장 형성 (전자상거래)

소액의 멀티미디어 정보에 대한 거래 수요 증가

전자화폐의 필요성 대두

3/42

전자상거래의 특징 „

„

장점 z 시간적, 공간적 제약 극복 z 전 세계인을 대상으로 한 마케팅 가능 z 상점의 유지와 관리가 용이하며 비용이 저렴함 z 사용의 편리성 단점 z 기존 지불 매체를 적용하기가 곤란함 „ 새로운 개념의 지불수단이 요구됨 „ 보안 문제가 크게 대두

4/42

2


기존 실물화폐 „

„

장점 z (오프라인) 은행의 참여 없이 지불 가능 z 은행의 참여 없이 양도 가능 z 고객의 프라이버시 보장 단점 z 고정된 몇 종류의 액면가만 제공됨 z 중액/소액에만 적합 z 생성/관리/처리 비용이 고가 z 분실/도난의 위험 z 돈세탁, 협박과 같은 범죄에 악용 가능 z 정보로 취급할 수 없음(bearer instrument)

5/42

명령에 의한 지불 „

„

수표, 직불카드, 신용카드 z 가치 자체를 전달하기 보다는 은행에게 특정 금액을 수취인에게 지불하라는 명령을 전달하는 방식 „ 정보로 취급 가능 z 분실/도난의 위험이 상대적으로 감소함 단점 z 안전성이 취약함: 육필서명의 위조가능성, PIN번호 노출가능성, 허 위 청구, 트로이 목마 사이트 등 „ 암호기술과 IC 카드화를 통해 어느 정도 극복 가능 z 온라인 지불방식: 지불에 대한 은행의 승인이 필요 z 모든 지불은 추적이 가능 z 처리비용과 수수료 때문에 소액지불에 부적합

6/42

3


전자화폐 „

„ „

„

어떤 금액 가치를 지니는 디지털 정보 z 기존 실물화폐의 장점: 프라이버시, 오프라인 z 명령에 의한 지불의 장점: 정보로 취급가능 모든 처리가 전자적으로 이루어짐 전자서명과 같은 암호기술을 사용하여 실현 z 이론적으로는 보다 안전함 요구사항 z 높은 수용성(acceptability) z 프라이버시를 보장하면서도 범죄 예방 기능 제공 z 보관과 이동에 대한 편의 제공 z 분실, 도난, 우연한 삭제에 대한 보호기능 제공

7/42

지불시스템의 구성원 발행기관(은행)

인출

입금 환불 상점

고객

„

지불 기타 참여자 z 익명성 철회 서비스를 위한 신뢰기관 z 인증기관(certification authority) z 중재기관 8/42

4


지불의 단계 „

„

„

„

계정 개설 z 참여자: 발행기관, 고객 z 지불 및 인출에 필요한 정보, S/W, H/W를 받는 과정 인출 프로토콜 z 참여자: 발행기관, 고객 z 필요한 만큼의 화폐를 미리 인출하여 보관한다. 지불 프로토콜 z 온라인: 고객, 상점, 발행기관 z 오프라인: 고객, 상점 입금 프로토콜 z 참여자: 상점, 발행기관 z 오프라인 방식에서만 사용됨

„

„

환불 프로토콜 z 참여자: 발행기관, 고객 z 인출한 전자화폐를 다시 실물화폐로 바꾸거나 갱신하기 위해 „ 유효기간 경과로 인하여 불가피할 수 있음 복구 프로토콜 z 하드웨어 고장이나 분실로 인하여 인출하여 보관 중인 전자화폐를 잃어버렸을 경우에 사용하는 프로토콜

9/42

전자화폐의 형태 „

„

전자화폐에 포함되어야 하는 내용 z 일련번호 z 액면가 정보 z 유효기간 z 신원 정보 z 추적 정보

12795432101 1500원 VALID 2002. 5 THRU

발행기관이 전자서명을 하여 발행함으로써 z 각 정보를 조작할 수 없도록 하고, z 화폐를 위조할 수 없도록 한다.

10/42

5


전자화폐 발행키의 생명주기 확인키 분배 확인키 공표

공개키 쌍 생성 발행키/확인키

발행키 활성화

일반적 사용

인출 없음 화폐의 유통기간

발행키의 인출 중지

환불만 허용

확인키의 지붏 사용 중지

확인키의 환불 사용 중지

백업

확인키의 삭제

발행키 삭제 인출 지불 환불

11/42

전자화폐의 형태 - 계속 „

„

일련번호 z 화폐를 독특하게 만들기 위해 필요함 „ 이중사용을 발견하기 위해 „ 화폐 자체가 독특하도록 구성되면 일련번호를 위한 별도의 값을 사용하지 않음 z 익명의 화폐: 인출할 때 은닉되어야 함 „ 고객이 생성 액면가 정보 z 누구나 쉽게 확인할 수 있어야 함 z 보통 은행의 발행키와 액면가를 연관시켜 표현 „ 문제점: 여러 개의 키를 관리하여야 함 z 하드웨어 방식의 경우에는 카운터를 이용하는 경우도 있다. Æ 레지스터 기반 화폐(register-based cash)

12/42

6


전자화폐의 형태 - 계속 „

„

„

유효기간 z 입금 데이터베이스의 크기를 제한하기 위해 필요함 z 일련번호와 같은 값의 우연한 일치를 막기 위해 필요함 z 서명키의 수명 때문에 필요함 신원 정보 z 오프라인 전자화폐에서만 필요함: 이중사용의 사전 방지가 어렵기 때문 z 화폐에 숨겨져 있으며, 이중사용을 하였을 경우에만 계산할 수 있음 추적 정보 z 조건부 익명성을 제공하기 위해 사용함 z 아무나 이 정보를 활용할 수 없어야 함

13/42

전자화폐의 요구사항 „ „ „ „ „ „ „ „

안전성(security) 익명성(anonymity) 경제성(economy, cost-effective) 수용성(acceptability) 독립성(independence) 확장성(scalability) 분할성(divisibility) 양도성(transferability)

14/42

7


전자화폐의 안전성 „

„

„

„

위조불가능성(unforgeability) z 서명의 안전성 조작불가능성 z 인출 프로토콜의 안전성 이중사용(double spending) z 사전방지 또는 사후검출 z 입금 데이터베이스 유지 „ 데이터베이스에 저장되는 정보량: 지불시스템을 평가하는 하나의 척도로 사용됨 은행 협박 공격(bank robbery attack) z 은행 직원 등을 협박하여 발행키를 얻는 방법

15/42

익명성 „ „

„

„

불관찰성(unobservability): 민감한 정보를 암호화하여 교환 불추적성(untraceability) z 인출 과정과 그 과정에서 발행된 화폐를 서로 연관할 수 없어야 함 z 발행기관과 상점이 공모를 하여도 추적할 수 없어야 함 불연계성 (unlinkability) z 같은 고객의 두 지불을 서로 연관할 수 없어야 함 „ 익명의 화폐를 실명으로 거래할 수도 있음 „ 환불 익명성이 제공되기 위한 조건 z Be one of many z Do not stand out in the crowd z Be unpredictable(익명채널에 대한 가정)

16/42

8


익명성 제공 메커니즘의 변천 „

„

은닉서명 z 오프라인 화폐 등장 „ 고객의 신원 정보을 화폐에 포함하여야 함 은닉서명 + cut-and-choose #33,SJK #31,SJK

z

#99,HKO #33,SJK

계산량과 정보교환량이 많음

n-1개 확인 확인하지 않은 것에 은닉서명 수신자는 서명자가 어떤 것을 확인할지 모름

17/42

익명성 제공 메커니즘의 변천 - 계속 „

„

가명(pseudonym), 차명계좌 z 발행기관이 아닌 신뢰할 수 있는 제3의 신뢰기관으로부터 가명을 얻어 사용하는 방식 z 익명 철회가 용이 z 문제점: 가명에 대한 정보가 누설되면 같은 가명으로 사용한 모든 지불의 익명성이 제거됨 Æ 불연계성을 제공 못함 제한적 은닉서명 z 가명도 사용하지 않고, cut-and-choose도 사용하지 않고, 올바른 신원 정보의 포함을 보장하여 준다. z 은닉할 수 있지만 제한적인 방법으로…

18/42

9


조건부 익명성 „

„

익명의 전자화폐는 범죄에 악용될 수 있음 z 실물화폐보다 범죄에 악용하기가 더 수월함 „ 빠르게 많은 금액을 네트워크를 통해 옮길 수 있음 z 정부의 요구사항 익명성 철회(anonymity revocation) 방법의 변천 z 신뢰기관이 인출과정에 항상 참여 z 신뢰기관이 철회가 필요할 때에만 참여 „ 고객은 자신의 화폐가 추적되었다는 사실을 알 수 없음 „ 신뢰기관의 권한 남용 가능성 존재 z 신뢰기관을 사용하지 않는 감사추적(audit tracing) 방법

19/42

조건부 익명성 „

- 계속

추적 메커니즘의 종류 z 화폐추적(coin tracing): 인출 과정에서 얻은 정보를 이용하여 나중에 화폐가 입금될 때 어느 과정에서 인출된 화폐인지를 식별할 수 있도록 해주는 메커니즘 „ 협박과 같은 범죄에 대응하기 위한 수단 z 인출자추적(owner tracing): 입금 과정에서 얻은 정보를 이용하여 그 화폐를 사용한 고객을 식별할 수 있도록 해주는 메커니즘 „ 돈세탁, 불법구매와 같은 범죄에 대응하기 위한 수단

20/42

10


양도성 „

„

„

양도 가능한 화폐란 z 화폐를 은행에 중재 없이 고객간에 양도할 수 있는 경우 보통 전자화폐는 특정 정보를 알고 있는 사람만이 사용할 수 있도록 고안되어 있음. z 이 정보를 다른 사람에게 주면 그 사람은 화폐를 사용할 수 있음 z 즉, 모든 전자화폐는 양도가 가능 그러나 전자화폐에서 필요한 양도성의 요구사항은 다음과 같다. z 양도한 사람은 그 화폐를 더 이상 사용할 수 없어야 함 z 양도받은 사람이 그 화폐를 불법적으로 사용하면 그 책임은 양도받은 사람에게 전가되어야 함 „ 오프라인의 경우 화폐에 포함된 신원 정보가 변경되어야 함 z 양도한 사람은 나중에 자신이 양도한 화폐를 식별할 수 없어야 함 z 익명성 등 양도 전에 화폐의 특성이 그대로 유지되어야 함 21/42

분류: 온라인 vs. 오프라인 „

„ „

„

은행과 같은 제3의 참여자가 지불에 항상 참여하는 방식 별도의 입금 과정이 없음 단점 z 추가적인 통신비용 z 통신지연 발생가능 z 병목현상 및 서비스 중단 장점 z 이중사용 사전방지 z 설계의 용이성

고객

발행기관

인출 상점 지불 승인

22/42

11


분류: 온라인 vs. 오프라인 „

„ „ „

고객과 상점만이 지불에 참여하는 방식 별도의 입금 과정이 필요함 전자화폐의 궁극적인 모습 단점 z 이중사용: 사후검출

고객

발행기관

인출 상점 지불

입금

23/42

기타 분류 „

„

„

„

선불방식 vs. 후불방식 z 선불방식: 이중사용 문제를 해결해야 함 z 후불방식: 기본적으로 익명성을 제공하지 못함 고액화폐 vs. 소액화폐 z 고액화폐: 이중사용을 사전에 방지해야 함 하드웨어 지원방식 vs. 순수 소프트웨어 방식 z 하드웨어 지원방식의 단점 „ 하드웨어 사용에 따른 추가 비용 발생 „ 사용할 수 있는 환경 제한 z 하드웨어 지원방식의 장점: 보안 요구사항을 만족하기가 쉬움 범용화폐 vs. 판매자 전용 화폐 z 판매자 전용 화폐: 상점이 이중사용을 확인함

24/42

12


전자동전 „

„

„

고정된 액면가를 지닌 동전을 이용하여 지불 z 익명성 때문에 제한된 종류의 액면가만을 제공 지불대금과 정확하게 일치하도록 지불 z 보통 여러 개의 동전을 이용하여 지불 단점 z 많은 동전이 요구되면 효율성이 떨어짐 z 지불대금을 맞출 수 없으면 지불할 수 없음

25/42

전자수표 „

거스름을 사용하는 방식 z 수표의 액면가보다 적은 금액에 대해서는 항상 지불 가능 z 교환되는 정보량/필요한 연산량이 지불대금과 무관함 z 거스름액의 다양성 때문에 액면가 표현방법이 복잡함 z 거스름과 지불 수표를 연관할 수 없어야 함 z 보다 편리한 지불수단이 되기 위해서는 거스름을 지불에 사용할 수 있어야 함 1500원

700원

800원 26/42

13


분할방식 „

분할 가능한 화폐 z 화폐의 액면가가 v일 때, 이 화폐를 v보다 적은 액면가를 지닌 여러 개의 화폐로 분할이 가능 z 이 때 분할된 각 화폐의 총액은 v이어야 함 z

z

„ 임의로 분할할 수 있어야 함 현존하는 대부분의 분할 가능한 화폐는 분할된 각 화폐의 불연계성을 제공하지 못함 „ 환불의 어려움 보통 이진트리 구조를 사용함

27/42

이진트리를 이용한 분할화폐 „

z

z

z

z

„

1600원

요구사항 노드의 액면가는 자식노드들의 액면가의 합이어야 함 (경로 노드 규칙) 한 노드가 지불에 사용되면 모든 자손과 조상 노드는 지불에 사용할 수 없어야 함 (동일 노드 규칙) 노드는 오직 한번 밖에 사용할 수 없어야 함 공개된 노드 값으로부터 다른 노드의 값을 유추할 수 없어야 함

문제점 z

모든 노드는 루트에 의해 연결되므로 불연계성을 제공 못함

0

00

000

„

01

001

010

800원

011 400원

트리 생성하는 방법 z

z

모든 노드를 인출할 때 만들어야 하는 경우 인출할 때는 루트만 만들고, 지불할 때 필요한 노드만 생성

28/42

14


도전방식 „ „

„ „

하나의 화폐를 여러 번 다양한 액면가로 지불 근본적으로 불연계성을 제공 못함 z 환불의 어려움 인출과 지불비용이 가장 저렴 이중사용 개념이 아닌 초과사용 개념 500원

700원

1500원

29/42

지불방법에 따른 분류의 비교 동전방식

수표방식

분할방식

도전방식

≥1

1

≥1

1

액면가 이하로 항상 지불 가능 지불할 때 사용하는 화폐의 개수 거스름 연결불가능성 환불의 어려움

30/42

15


원자성 „ „

„

„

데이터베이스 트랜잭션에서 말하는 원자성과 같은 개념 원자성은 참여자의 고의적인 행동이나 부인에 의해 또는 시스템/네트워크 오류에 의해 위배될 수 있음 보통 다음 두 종류의 프로토콜을 제공함 z 복구 프로토콜(recovery protocol) z 분쟁 해결 프로토콜(resolve protocol) 시스템의 각 과정마다 원자성을 보장하여야 함 z 인출 원자성 z 지불-배달 원자성 „ 공정한 교환 방법(fair exchange) „ 고객은 익명으로 참여한다는 것을 고려해야 함 z 입금 원자성

31/42

공정한 교환 „

공정한 교환(fair exchange) z 교환 과정이 끝나면 두 참여자가 모두 교환하고자 한 것을 얻거나 둘 다 얻지 못하는 방법을 말함 z 원자성 보장을 위해 필요 z 제3의 신뢰기관을 중개자로 이용하면 쉽게 해결 가능 „ 온라인 형태이므로 지불에 적용하기에는 부적합 z 낙관적인(optimistic) 방법 사용 „ 분쟁이 발생한 경우에만 신뢰기관이 참여(판결 프로토콜)

32/42

16


전자화폐에 사용되는 기술 „

해쉬체인(hash chain) z 효율적인 해쉬함수의 일방향성을 이용한 구조 z 소액지불 시스템, m-commerce에 널리 사용됨 z 길이가 100인 해쉬체인의 생성 „ 랜덤값 R을 선택하여 h100 = h(R)을 계산 „ hi-1=h(hi)을 반복적으로 계산 „ 해쉬체인: h0, h1, h2, …, hn, 여기서 h0를 해쉬체인의 루트라 함 z 사용은 h1부터 사용 z 해쉬체인을 생성한 자를 제외하고는 hi를 얻으면 h0부터 hi-1은 구할 수 있어도 hi+1부터 hn까지는 해쉬함수의 일방향성 때문에 구할 수 없음

사 용

h0 h1

생 성

33/42

PayWord „ „

„

„

„

오프라인이며 후불방식의 판매자 전용화폐 계정 개설 z 인증서 발행: 화폐 생성 권한을 줌 „ CertU = {B, U, +KU, E, …}.-KB B: 은행식별자, U: 고객식별자, E: 유효기간 „ 인출과정이 없이 해쉬체인을 생성하고 다음과 같은 서약을 만들어 지불 z 서약: M = {w0, S, L, TU}.-KU w0: 해쉬체인의 루트, L: 해쉬체인의 길이, S: 상점 식별자, TU: 지불 시간 „ 지불: 고객은 상점에게 CertU, M, wi를 전달하여 지불함 z 상점은 CertU를 이용하여 M의 유효성을 확인하고, z w0 ?= hi(wi)을 확인하여 금액을 확인함 입금:상점은 CertU, M, wj를 은행에 전달하여 입금함. z 여기서 wj는 고객이 사용한 해쉬체인의 최종 값 z 은행은 유효성을 확인하고 상점 계좌에 금액을 입금한다. z 고객에게는 나중에 청구한다. 34/42

17


전자선거시스템 „

„

전자선거시스템이란 z 네트워크를 통해 선거의 모든 요소를 전자적으로 처리하는 시스템 필요성 z 현행 선거의 시간적/공간적 제약 극복 „ 저조한 투표율 문제 극복 z 선거비용 절약 „ 투표, 집계에 드는 비용 절감 z 다양한 의견 수렴 도구로 활용 가능

35/42

전자선거시스템의 요구사항 „ „

„

완전성(completeness): 모든 유효한 표는 집계에 반영되어야 한다. 건전성(soundness): 정직하지 않은 유권자는 선거를 방해할 수 없어야 한다. 비밀성(privacy): 유권자가 투표한 내용을 알 수 없어야 한다. z 투표한 내용의 암호화가 필요함. (확률적 암호) z 개별 표의 복호화 없이 집계를 할 수 있어야 함. z 복호화 권한을 누구에게?

36/42

18


전자선거시스템의 요구사항 „ „

„

„

„

선거권(eligibility): 인가된 유권자만이 선거에 참여할 수 있어야 한다. 이중투표 방지 (unreusability): 모든 유권자는 한 표만 투표할 수 있어야 한다. z 선거권과 이중투표 방지를 합쳐 민주주의 특성이라고 한다. 공정성(fairness): 선거에 영향을 주는 것이 없어야 한다. z 예) 선거의 중간 결과를 알 수 없어야 한다. 표의 복사 가능성(vote duplication): 다른 유권자가 투표한 것을 복사하여 투표할 수 없어야 한다. 강건성(robustness): 어떤 수 이하의 참여자의 부정은 허용할 수 없어야 한다. z 여러 명의 선거관리자를 두어, 일정 수 이상이 협력하여야 집계를 할 수 있도록 고안함

37/42

전자선거시스템의 요구사항 „

검증성(verifiability): 선거가 제대로 이루어졌는지 확인할 수 있어야 한다. z 개별검증(individual verifiability): 선거에 참여한 유권자만 자신의 표가 집계에 올바르게 반영되었는지를 확인할 수 있음 z 전체검증(universal verifiability): 선거의 참여 여부와 상관없이 누구나 개별 투표지의 유효성과 집계 결과의 유효성을 확인할 수 있어야 한다.

38/42

19


전자선거시스템의 요구사항 „

매표방지(receipt-freeness): 유권자는 선거 과정에서 얻은 정보를 이용하여 다른 사람에게 자신이 투표한 내용을 증명할 수 없어야 한다. z 전체검증과 매표방지는 목적에 있어 상충하므로 동시에 충족되도록 하는 것이 어렵다. z cf. 강요불가능성(uncoercibility) z 새 공격: random voting attack z

혼자 암호화를 할 경우에는 매표방지를 제공할 수 없음 „ 프로토콜을 통해 표를 구성

39/42

전자선거 과정 1

3

2 3

3 유권자

„

방법 1.

Randomizer

3

방법 2. 2

1-out-of-K

표 구성 단계(후보자의 수 K) 1 z 방법 1. „ 유권자는 randomizer에게 1-out-of-K 증명 „ Randomizer는 유권자에게 재암호화 증명 z 방법 2. „ Randomizer는 유권자에게 1-out-of-K 증명을 K번 z 지정된 확인자 증명(designated verifier proof) „ 유권자는 K-out-of-1 증명

3 1 3 1 2

3 K-out-of-1 40/42

20


전자선거 과정 - 계속 „

재암호화 z 전자선거는 보통 ElGamal 암호알고리즘 사용 z m이 표이면 다음과 같이 암호 및 재암호화한다. ( g r1 , y r1 m ), ( g r1 + r2 , y r1 + r2 m )

„

„

지정된 확인자 증명 z 지정된 사람 외에는 확인할 수 없는 증명 z 지정된 사람은 받은 증명을 이용하여 또 다른 사람에게 증명할 수 없음 매표방지가 제공되기 위해서는 표를 구성하는 프로토콜을 수행할 때 이 과정을 제3자가 관찰할 수 없어야 한다. z 도청불가능한 채널 가정

41/42

전자선거 과정 - 계속 „

„

투표 z 유권자는 공개 게시판의 자신 영역에 최종표와 이것의 유효성을 확인할 수 있는 정보를 게시하여 투표함 집계 z 개별 표를 복호화하여 집계하면 비밀성이 만족되지 않음 z ElGamal 암호알고리즘의 준동형 특성 이용 ( g r1 , y r1 m1 ), ( g r2 , y r2 m2 ) ⇒ ( g r1 + r2 , y r1 + r2 m1 m2 ) z z

모든 표를 합친 후에 threshold 방식으로 복호화 (n, t) threshold 암호시스템: n명중 t명 이상이 협조하여야 복호화할 수 있는 암호시스템

42/42

21


computer_security