암호학 대전제
암호체계(알고리즘)은 공격자에게 이미 알려져있으며, key만이 secret하다. 즉 암호시스템의 안전은 key값에 있다.
(많은 암호화 알고리즘에 대한 내용이 알려져 있음)
암호화와 복호화에 동일한 키(비밀키)를 사용
공개키를 사용하여 암호화하며 비밀키를 사용해 복호화
가장 간단한 대치 암호 중 하나로, 알파벳 문자를 일정한 숫자 만큼 왼쪽 또는 오른쪽으로 이동하여 암호화
e.g 숫자 3 만큼 오른쪽으로 이동하는 Shift Cipher의 경우, "ABC" => "DEF"
문자를 바꾸는 대신, 문자의 순서를 바꾸어 암호화
e.g 특정한 방식으로 문자열의 순서를 바꾸는 경우, "HELLO" => "LLOEH".
알파벳 문자를 다른 문자나 기호로 대치하여 암호화
e.g "A"는 "Z"로 대치되는 경우, "HELLO" => "SVVOL"
자주 쓰이는 알파벳 통계를 바탕으로 빈도 분석을 통해 뚫릴 수 있음.
: 암호문을 통해 평문을 추측하는 것이 완전히 불가능한 것.
아래의 두 가지를 만족해야 완벽한 비밀성을 보장할 수 있음
computational security (계산적 안정성) :계산적으로 해독될 수 없는 강력한 보안을 제공하지만, 이론적으로는 해독될 가능성이 있습니다. (충분한 시간과 계산 리소스가 제공되면 계산적으로 해독될 수 o)
unconditional security (무조건적 보안) : 암호화된 메시지를 해독하는 것이 이론적으로 불가능한 수준의 보안을 의미합니다. 이는 암호화된 메시지를 해독하기 위해서는 필요한 정보가 매우 많기 때문에, 현재의 컴퓨팅 기술로는 해독이 불가능하다는 것
보안학에서 secure하다는 것?
i. secure : 전수 조사를 통해서만 key값을 유추할 수 있을 때
ii. insecure : 지름길을 통해 공격이 가능할 때
: 알파벳을 사용하여 평문을 암호화하는 다중 대치 암호의 일종
예시)
평문: ATTACKATDAWN
키: LEMONLEMONLE
암호문: LXFOPVEFRNHR
e.g 평문'T'이 key'E'(4)만큼 이동 => 암호문'X'
=> 충분히 긴 키를 사용하면, 기본적으로 빈도 분석 및 다른 전통적인 암호 분석 기술을 사용하여 해독하기 어려울 수 있습니다. 그러나, (i)키의 길이가 짧거나 (ii)키가 예측 가능하거나, 키가 다른 방법으로 노출되면 상대적으로 취약해질 수있음.
Encryption : Plaintext ⊕ Key = Ciphertext
Decryption : Ciphertext ⊕ Key = Plaintext
Vigenère 암호와의 차이점?
고정 길이의 키를 사용하며, 키를 반복하여 암호문을 생성합니다. 따라서, 이전에 암호문과 키가 노출되면, 이후의 암호문을 해독하는 것이 상대적으로 쉬워짐.
Vigenère 암호와 one-time pad는 키와 연산 방법에서도 차이점이 존재
: Vigenère 암호의 키는 알파벳 문자열이며, 알파벳의 상대적인 거리에 따라 이동 암호를 적용하여 평문을 암호화
<> one-time pad의 키는 랜덤 비트열이며, XOR 연산을 사용하여 평문을 암호화합니다.