[보안] 암호화 기초

양현지·2023년 4월 25일
2

0. Crypto

  • 암호학 대전제
    암호체계(알고리즘)은 공격자에게 이미 알려져있으며, key만이 secret하다. 즉 암호시스템의 안전은 key값에 있다.
    (많은 암호화 알고리즘에 대한 내용이 알려져 있음)

    1). 기본 용어

    Cyptography(암호화) : making secrete codes(ciphers)

    Cryptanalysis(암호해독) : breaking them('secret codes')

    Cryptology : study of both

    Crypto : all of the above

    2) Basic Definition

    plain text(clear text) => encrypt => cipher text

    cipher text => decrypt => plain text

    key : used to configure cryptosystem(암호 체계)

    symmetric key(대칭키) : 암호화와 복호화에 동일한 키를 사용

    asymmetric key(public key) : public key로 암호화 & private key로 복호화

Types of Crypto

1. 대칭키 암호화

암호화와 복호화에 동일한 키(비밀키)를 사용

2. 비대칭키 암호화

공개키를 사용하여 암호화하며 비밀키를 사용해 복호화

1. History of Cipher

1) shift cipher (이동암호)

가장 간단한 대치 암호 중 하나로, 알파벳 문자를 일정한 숫자 만큼 왼쪽 또는 오른쪽으로 이동하여 암호화
e.g 숫자 3 만큼 오른쪽으로 이동하는 Shift Cipher의 경우, "ABC" => "DEF"

2) Transposition Cipher (전치암호)

문자를 바꾸는 대신, 문자의 순서를 바꾸어 암호화
e.g 특정한 방식으로 문자열의 순서를 바꾸는 경우, "HELLO" => "LLOEH".

3) substitution cipher (단일대치암호)

알파벳 문자를 다른 문자나 기호로 대치하여 암호화
e.g "A"는 "Z"로 대치되는 경우, "HELLO" => "SVVOL"

자주 쓰이는 알파벳 통계를 바탕으로 빈도 분석을 통해 뚫릴 수 있음.

4) Perfect Secrecy (완벽한 비밀성)

: 암호문을 통해 평문을 추측하는 것이 완전히 불가능한 것.
아래의 두 가지를 만족해야 완벽한 비밀성을 보장할 수 있음

  • computational security (계산적 안정성) :계산적으로 해독될 수 없는 강력한 보안을 제공하지만, 이론적으로는 해독될 가능성이 있습니다. (충분한 시간과 계산 리소스가 제공되면 계산적으로 해독될 수 o)

  • unconditional security (무조건적 보안) : 암호화된 메시지를 해독하는 것이 이론적으로 불가능한 수준의 보안을 의미합니다. 이는 암호화된 메시지를 해독하기 위해서는 필요한 정보가 매우 많기 때문에, 현재의 컴퓨팅 기술로는 해독이 불가능하다는 것

    보안학에서 secure하다는 것?
    i. secure : 전수 조사를 통해서만 key값을 유추할 수 있을 때
    ii. insecure : 지름길을 통해 공격이 가능할 때

5) Vigenère cipher(비즈네르)

: 알파벳을 사용하여 평문을 암호화하는 다중 대치 암호의 일종

예시)
평문: ATTACKATDAWN
키: LEMONLEMONLE
암호문: LXFOPVEFRNHR

e.g 평문'T'이 key'E'(4)만큼 이동 => 암호문'X'

=> 충분히 긴 키를 사용하면, 기본적으로 빈도 분석 및 다른 전통적인 암호 분석 기술을 사용하여 해독하기 어려울 수 있습니다. 그러나, (i)키의 길이가 짧거나 (ii)키가 예측 가능하거나, 키가 다른 방법으로 노출되면 상대적으로 취약해질 수있음.

6) one-time pad : Vigenère cipher의 variant

  • key length = 원문 length
  • key값 재사용x (한번 쓰고 버림)
  • key값이 공유되어야 하며 랜덤값을 가짐

Encryption : Plaintext ⊕ Key = Ciphertext
Decryption : Ciphertext ⊕ Key = Plaintext

Vigenère 암호와의 차이점?
고정 길이의 키를 사용하며, 키를 반복하여 암호문을 생성합니다. 따라서, 이전에 암호문과 키가 노출되면, 이후의 암호문을 해독하는 것이 상대적으로 쉬워짐.

Vigenère 암호와 one-time pad는 키와 연산 방법에서도 차이점이 존재
: Vigenère 암호의 키는 알파벳 문자열이며, 알파벳의 상대적인 거리에 따라 이동 암호를 적용하여 평문을 암호화
<> one-time pad의 키는 랜덤 비트열이며, XOR 연산을 사용하여 평문을 암호화합니다.

0개의 댓글