Fascination
article thumbnail
Published 2023. 2. 10. 15:10
[Dreamhack] 현대 암호 Hacking Tech/Crypto

[Dreamhack] 현대 암호


# 서론

  • 대칭키 암호 시스템(Symmetric Key Cryptosystem): 송신자와 수신자가 같은 키를 공유해야하는 암호 시스템
    • ex) 카이사르 암호, 비제네르 암호
    • 같은 키를 갖고 있어야 하는 특성상, 대칭키 암호 시스템은 사전에 서로 키를 공유하는 과정이 반드시 필요하다.
  • 키 공유 알고리즘(Key-sharing Algorithm): 외부인이 키가 공유되는 과정을 도청해도, 공유되는 키는 알지 못하게 하는 방법
    • 현대에 많은 데이터가 오가는 네트워크는 도청에 취약하므로 키를 평문으로 공유하기에 부적절하기에 시작된 연구이다.
  • Diffie와 Hellman이 Diffie-Hellman 키 교환 알고리즘 제시
    • 송신자와 수신자가 서로 다른 키를 사용하는 공개키 암호 시스템의 개념을 창안
    • 이는 대칭키와 대비되어 비대칭키 암호 시스템(Asymmetric Cryptography)라고 불림

 

 

# 현대 암호

1. 혼돈

  • 암호문에서 평문의 특성을 알아내기 힘든 성질
  • ex) 단일 치환 암호를 사용하여 같은 평문을 두 번 암호화하면 출력된 두 암호문은 서로 같을 것. 공격자는 암호문을 보고 평문이 무엇인지 유추하지는 못하더라도 암호문을 생성한 두 평문이 같다는 것을 알 수 있음.
  • 위의 예시를 통해 단일 치환 암호는 혼돈 성질을 만족하지 못한다는 것을 알 수 있음

 

2. 확산

  • 평문의 작은 변화가 암호문의 큰 변화로 이어지는 성질
  • 대부분의 고전 암호에서 찾아보기 힘든 성질임

 

3. 대칭키 암호 시스템

  • 암호화와 복호화에 같은 키를 사용하는 암호 시스템
  • 크게 블록 암호와 스트림 암호로 구분

 

3.1 블록암호

  • 블록 암호(Block Cipher)는 평문을 정해진 크기의 블록 단위로 암호화하는 암호
  • ex) 블록의 크기가 4바이트라면 평문을 4바이트의 블록으로 쪼개어 각 블록마다 암호화를 진행

  • 평문의 크기가 블록 크기의 배수가 아니어서 블록으로 균등하게 쪼갤 수 없을 경우, 평문 뒤에 데이터를 추가하는 패딩(Padding)을 먼저 수행
  • 패딩은 평문이 블록 크기의 배수가 될 때까지 데이터를 추가함
  • 블록 암호의 대표적인 예시로는 DESAES가 있음

 

3.2 스트림 암호

  • 스트림 암호(Stream Cipher): 송신자와 수신자가 공유하는 데이터 스트림을 생성하고 이를 평문에 XOR하는 암호
  • 평문을 P, 암호문을 C, 스트림을 X라고 할 때, 암호문 C는 C=P⊕X로 복호화할 수 있음
  • 만약 송신자와 수신자가 평문 길이만큼의 스트림을 매번 공유할 수 있다면, 스트림을 모르는 공격자는 암호문을 복호화할 수 없음
  • 하지만 평문과 같은 길이의 스트림을 안전하게 공유할 수 있다면, 스트림을 공유하는 채널로 평문을 공유하면 되므로 암호화가 필요하지 않은 환경임을 의미함
    • 즉, 스트림을 '매번' 안전하게 공유할 수 있다면 그 채널은 외부 공격으로부터 안전하다는 의미로 수신자와 송신자가 안전하게 키를 주고받을 수 있게 됨
    • 그 채널에서 키를 주고 받는 것이 아닌, 평문 내용을 서로 주고 받으면 훨씬 안전하고, 생산적이고, 경제적일 수 있다는 의미임.
    • but, 안전한 채널은 일반 채널에 비해 훨씬 더 느리고 복잡하기 때문에 이를 사용할 경우 평문을 주고받는 과정에서 필요 이상으로 리소스를 많이 사용하게 될 수 있음 → 시드가 등장하게 된 이유
  • 일반적으로 송신자와 수신자는 스트림을 고유하는 대신, 시드(Seed)라고 불리는 작은 값을 공유하고, 이를 사전에 합의된 함수의 인자로 넣어 스트림을 각자 생성함
  • 스트림 암호는 단순한 연산으로만 구현되므로 속도가 매우 빠름
  • 그러나 블록암호보다는 안전하지 못하다고 알려져 연산 능력이 부족한 임베디드 기기나 속도가 중요한 환경에서만 제한적으로 사용됨

 

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

  • 대칭키 암호 시스템은 일반적으로 공개키 암호 시스템에 비해 속도가 빠름
  • 그러나 송신자와 수신자가 사전에 키를 교환해야 한다는 제약이 존재
  • 또한 대칭키 암호 시스템에서는 그룹 내에 여러 명이 있을 경우 두 사람마다 서로 다른 키를 생성해서 사용해야 함
  • 즉, N명의 사람이 있을 때 총 N(N-1)/2 개의 키가 필요함
  • 이후에도 새로운 상대와 통신할 때마다 계속 키를 생성해야 함
  • 공개키 암호 시스템에는 이와 같은 키 생성의 불편함이 없음

대칭키 교환

 

6. 공개키 암호 시스템

  • 공개키 암호 시스템에서 송신자는 수신자의 공개키(Public Key)로 데이터를 암호화하여 수신자에게 전송하고, 수신자는 자신의 비밀키(Private Key)로 이를 복호화 함
  • 명칭에서 알 수 있듯 공개키는 모두에게 공개되어 있으므로 공개키를 아는 사람은 누구나 수신자에게 암호문을 보낼 수 있음
  • 그러나 개인키는 수신자만 알고 있으므로, 공격자는 암호문을 도청해도 이를 복호화할 수 없음
  • 공개키 암호 시스템은 우체통에 비유할 수 있음
    • 누구나 수신자의 우체통으로 편지를 보낼 수 있지만, 편지를 꺼내서 볼 수 있는 사람은 열쇠를 가지고 있는 수신자 뿐임

 

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

  • 공개키 암호 시스템에서 그룹 내의 사람들이 각자의 공개키와 비밀키를 만든 후 공개키만 공개하면 되므로 N명의 사람이 있을 때 2N개의 키만 필요함
    • 이는 N(N-1)/2개의 키가 필요했던 대칭키 암호 시스템보다 훨씬 적음
  • 또한 한 번 키를 생성하고 나면, 새로운 상대와 통신하더라도 자신의 키를 다시 만들어야 할 필요가 없음
  • 반면, 공개키 암호 시스템은 일반적으로 대칭키 암호 시스템에 비해 다소 복잡한 연산이 필요하므로 속도가 느림
  • 또한, 대칭키 암호화 같은 안전성을 제공하려면, 대칭키 암호보다 긴 키를 사용해야 함
  • 예를 들어 대칭키 암호 시스템인 AES는 192 비트 이상의 키를 사용하면 충분히 안전하지만, 공개키 암호 시스템인 RSA는 2048 비트 이상의 키를 사용할 것이 권장됨

공개키 암호 시스템

 

8. 암호의 기능

기밀성(Confidentiality): 기밀성은 허락된 사람만이 정보를 열람할 수 있게 하는 기능을 의미하며 여기서 허락된 사람은 일반적으로 키를 가지고 있는 사람을 말함

무결성(Integrity): 무결성은 송신자가 보낸 정보에 변조가 일어나지 않았음을 의미함. 예를 들어, 송신자가 데이터를 보내는데, 누군가가 이를 가로채어 조작하고, 수신자에게 전달할 수 있음. 또는 네트워크 상의 문제로 이 중 일부가 변경될 수도 있음. 무결성은 이러한 데이터의 변화가 발생하지 않았음을 보증하는 기능임

인증(Authentication): 인증은 정보를 주고 받는 상대방의 신원을 확인하는 기능을 말함. 대표적인 예로는 공인인증서가 있으며 웹에서 아이디와 비밀번호를 입력하는 것도 인증의 영역에 속함

부인 방지(Non-repudiation): 부인 방지는 정보를 교환한 이후에 교환한 사실을 부인할 수 없게 하는 기능임. 온라인 상에서 거래가 발생했을 때 돈을 수신한 쪽에서 수신한 사실을 부인할 수 있다면 온라인 거래는 불가능할 것임

 

 

# 마치며

  • 키워드
    • 혼돈(Confusion): 암호문으로부터 평문의 정보를 유추하지 못하게하는 성질
    • 확산(Diffusion): 평문의 작은 변화가 암호문의 큰 변화로 나타나게 하는 성질
    • 대칭키 암호 시스템(Symmetric Cryptosystem): 수신자와 송신자가 같은 키를 공유하여 정보를 암호화하고 복호화하는 시스템. 속도가 빠르지만, 키 교환이 어렵다는 단점이 있음
    • 블록 암호(Block Cipher): 평문을 일정 크기의 블록으로 나누고, 각 블록을 암호화하는 대칭키 암호 방식
    • 스트림 암호(Stream Cihper): 수시자와 송신자가 공유하는 스트림을 이용하여 데이터를 암호화하는 방식. 속도는 빠르지만, 블록 암호보다 안전하지 않다고 알려져 있음. 일반적으로 성능이 부족한 임베디드 장비나 빠른 속도가 필요한 제한적 환경에서 사용됨
    • 공개키 암호 시스템(Public-Key Cryptosystem): 수신자와 송신자가 서로 다른 키를 사용하여 정보를 암호화하고 복호화하는 시스템. 암호화와 복호화에 사용되는 키가 다름. 사용되는 전체 키의 수는 적으나, 대칭키 암호보다 속도가 느림.
    • 현대 암호의 네 가지 기능: 기밀성(Confidentiality), 무결성(Integrity), 인증(Authentication), 부인 방지(Non-repudiation)

 

 

# Quiz

'Hacking Tech > Crypto' 카테고리의 다른 글

[Dreamhack] 고전 암호  (2) 2022.12.26
[Dreamhack] Cryptography Introduction  (0) 2022.12.24
profile

Fascination

@euna-319

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!