본문 바로가기

Cryptography/Cryptography

[Dreamhack] Cryptography - 현대암호

Kerchhoffs’ principle 케르크호프스의 원리

  • 키를 제외한 시스템의 다른 모든 내용이 알려지더라도 암호 체계는 안전해야한다.
  • 암호 알고리즘의 원리를 모두가 알고 있더라고 키 없이는 복호화가 불가능해야한다는 뜻

 

Confusion & Diffusion 혼돈과 확산

 

Confusion 혼돈

  • 암호문에서 평문의 특성을 알아내기 힘든 성질

Diffusion 확산

  • 평문의 작은 변화가 암호문의 큰 변화로 이어지는 성질

 

Symmetric key cryptosystem 대칭키 암호 시스템

  • 송신자와 수신자가 같은 키를 공유해야하는 암호 시스템
  • 사전에 키를 공유하는 과정이 반드시 필요
  • 키를 평문으로 공유하기에는 부적절 → Key exchange algorithm 키 교환 알고리즘

 

Block cipher 블록 암호

  • 평문을 정해진 크기의 블록 단위로 암호화하는 암호
  • DES, AES
  • 평문이 블록 크기의 배수가 될 때까지 데이터를 추가한다 → Padding 패딩

 

Stream cipher 스트림 암호

  • 송수신자가 공유하는 데이터 스트림을 생성하고 이를 평문과 특정한 연산을 수행해 암호문을 생성하는 암호
  • 보통 XOR (Exclusive OR) 연산을 사용함
  • 암호화시 송수신자는 같은 key stream을 가지고 있어야함
  • key stream : 평문에 XOR 같은 연산을 해서 암호문을 만드는데 쓰이는 비트열

⇒ 긴 key stream을 직접 서로 주고 받으려면, 평문이랑 길이가 같아서 사실상 평문을 그대로 주고받는거랑 비슷해서 보안상 의미가 없음

  • 이에 대한 해결책으로 Seed(시드)를 사용함
  • 실제로는 짧은 값 Seed만 송수신자가 공유하면 됨.
  • 송수신자 같은 암호 알고리즘에 Seed를 넣으면 똑같은 Key stream이 생성됨
  • 단순한 연산으로만 구현되므로 속도가 빨라서 연산 능력이 부족한 임베디드 기기나 속도가 중요한 환경에서 사용됨

 

대칭키 암호 시스템의 장단점

 

장점

  • 속도가 빠르다

단점

  • 송수신자가 사전에 키를 교환해야함
  • 그룹 내 여러 명이 있을 경우 두 사람마다 서로 다른 키를 생성해 사용해야함
  • 새로운 상대와 통신할 때마다 계속 키를 생성해야함

 

Asymmetric cryptography 비대칭키 암호 시스템

= Public key cryptosystem 공개키 암호 시스템

  • 송신자와 수신자가 서로 다른 키를 사용하는 암호 시스템
  • 송신자는 수신자의 Public Key(공개키)로 데이터를 암호화하여 수신자에게 전송
  • 수신자는 자신의 Private Key(비밀키)로 데이터를 복호화

 

공개키 암호 시스템의 장단점

 

장점

  • N명의 사람이 있으면 N개의 키 쌍만 필요함
  • 한 번 키를 생성하고 나면, 새로운 상대와 통신하더라도 자신이 키를 다시 만들어야할 필요가 없음

단점

  • 복잡한 연산이 필요해서 상대적으로 속도가 느림
  • 안정성을 제공하려면 대칭키 암호보다 긴 키를 사용해야함