본문 바로가기
공부/암호학

처음 배우는 암호학 ch1 암호화

by 맑은청이 2020. 7. 29.
728x90
반응형
  평문 암호문 암호질의 복호질의
COA x o x x
KPA o o x x
CPA o o o x
CCA o o o o

 

선택된 암호문을 공격하는 모형인 CCA 는 암호가 깨진 게 아니다. 중요한 건 비밀 키를 알아내는 것이다.

 

 

보안 목표

= 비구별성(indistinguishability, IND)

평문 p1,p2를 공격자가 암호질의를 수행해도 어떤 평문을 암호화한 것인지 구별할 수 없어야함

= 비가소성(non-malleability,NM)

p1과 c1을 알때 p1과 연관이 있는 p2의 c2를 알 수 없어야한다. 

 

반전(OTP는 알수 있음) 

같은 키로 암호화한 평문을 XOR 연산을 통해 알 수 있다. 

 

 

보안 개념

다음과 같은 형식으로 이루어진다. 

-IND-CPA : 선택된 평문에 대한 비구별성

-NM-CCA : 선택된 암호문 공격에 대한 비가소성

 

IND-CPA(의미론적 보안, semantic security)

: 공격자가 암호문으로 부터 평문에 관한 어떤 정보도 알아낼 수 없음.

만족시키기 위해서는 같은 평문을 두번 암호화 했을 때 'C1 != C2' 해야함. 

 

달성하기 위한 간단한 구축 방법

-결정론적 비트 발생기(DRBG) 사용 

-> 주어진 비밀 값에 기초해서 무작위로 보이는 비트열을 생성하는 알고리즘

E(K,R,P) = (DRBG(K||R) XOR P, R)

 

R은 암호화 수행할 때마다 새롭게 무작위로 선택되는 비트

K||R은 이어붙은 비트열

 

 

 

DRBG 가 실제로 무작위 비트열 생성한다고 가정

IND-CPA 보안 증명하기 위해 귀류법 사용

1. 암호문은 무작위 비트열로 부터 구별( 가정)

 

1이 참이면 

2. DRBG(K||R) XOR P 무작위 비트열로부터 구별

 

CPA 에 의해서 XOR R 을 한번 더 함

3. DRBG(K||R) 을 무작위 비트열로부터 구별

 

무작위 비트열을 생성한다는 것을 DRBG(K||R) 을 무작위 비트열로부터 구분할 수 없다는 가정과 모순  

 

즉 공격자가 암호문으로 부터 비트열을 구분 못한다는 의미는 이 암호가 안전하다는 의미이다. 

 

 

보안 개념들 함의 관계

CPA 가 가능한거는 CCA 도 가능하다.

 

 

비대칭 암호화은 핵심은 개인키를 알고 있으면 공개키 계산이 가능하지만 공개키만 알고 있을 때는 개인키 계산이 불가능한 것이다. 

공격자가 암호화 질의를 하는 CPA 는 늘 공개키로 질의를 하는 거다. 

 

 

 

 


  • 인증 암호화(Authenticated Encryption, AE)

대칭 암호화 일종 

ex) 메시지에 카운터 번호 포함시키는 방법 

무결성(integrity) 보장 

-> 중간에 공격자가 가로챌 경우 카운터가 올라감으로 누가 복호화 했다는 사실을 알 수 있다.

 

  • AEAD(Authenticated Encryption with Associated Data)

K 뿐만 아니라 암호화가 되지 않는 어떤 자료를 함께 넣어준다. 

 

 

  • 형태 보존 암호화(Format-Preserving Encryption, FPE)

IP 주소를 암호화하면 IP 주소가 나오고 이런 식으로 형식을 지켜주는 암호화 방법

 

  • 완전 준동형 암호화(Fully Homomorpyhic Encryption, FHE)

암호학자들의 성배와 같은 방식인데 이는 암호문을 복호화 과정없이 다른 암호문으로 암호화하는 방식이다. 

2009년도에 고려된 방식인데 느리다는 단점 때문에 제대로 사용되지 못하고 있다. 

 

 

  • 검색 가능 암호화(Searchable Encryption)

검색 질의 자체를 암호화한다. 가능한지의 여부를 아직 모르는 실험적인 암호화 방식이다. 

 

  • 조율 가능 암호화(Tweakable Encryption,TE)

조율값(Tweak) 존재

같은 제품 사용 고객이 다른 고객을 해킹하는 것을 방지한다. 

디스크 암호화가 핵심 -> 블록이나 섹터 번호를 조율값으로 사용한다.

 

 

이 이외에도 특성기반 암호화, 방송 암호화, 함수 암호화, 식별자 기반 암호화, 메시지 잠금 암오화, 프록시 재암호화 등이 있다. 

728x90
반응형