[TIL]230323 - 컴퓨터시스템보안 4주차: 고전 대칭키 암호(2)

Jimin·2023년 3월 23일
0

곱셈 암호(Multiplicative Ciphers)

  • 암호 알고리즘: 평문에 키를 곱하여 암호 -> C = (P x K) mod 26
  • 복호 알고리즘: 암호문에 키의 역원을 곱하여 복호화 -> P = (C x k^-1) mod 26

주의!
암호/복호화 시 모든 연산은 Z26*(Z26의 원소 중 곱셈에 대한 역원을 갖는 원소들만 모아놓은 것, 곱셈 암호에서의 키 공간)에서 모듈러 연산(mod 26)수행

  • 복호화를 위해 키를 나누는 과정은 Z26에서 해당 키의 곱셈에 대한 역원(k^-1)을 곱하는 과정
  • 복호화를 위해 곱셈에 대한 역원이 존재해야 하므로, Z6이 아닌 Z26*를 키 집합을 사용
    • 평문, 암호문의 각 글자 ∈ Z26
    • 키 값 ∈ Z26*
  • 모듈러 곱셈의 역원이 존재하지 않는 경우가 존재함 -> 이 key를 사용하면 복호화가 불가능함
  • 최소잉여집합 아래 최종 연산 => 모듈러 연산

곱셈 암호의 기본 개념

  • 송신자, 수신자 같은 키를 사용함 -> 대칭키 암호
  • cf) 비대칭키 암호
    • 암호화 키 공개 (일반적인 비대칭키 암호)
    • 복호화 키 공개: 암호화를 나만 알 수 있는 것 (전자서명, 공인인증서)

예제1) 26개의 알파벳에 대응되는 Z26에서 곱셈 암호에 대한 키 공간은?

  • 덧셈에 대한 역원: Z26 = {0,1,2,, ..., 25}
    • Z26에 속하는 모든 원소들은 덧셈에 대한 역원을 가짐
    • 그러나 모든 원소들이 곱셈에 대한 역원을 가지지는 않은ㅁ
  • 곱셈에 대한 역원: Z26 = {1,3,5,7,9,11,15,17,19,21,23,25} ⊂ Z26
    • Z26에서 곱셈에 대한 역원을 갖는 원소들로 구성된 Z26의 부분집합임

예제2) key = 7일 때, 평문 "hello"를 암호화하시오.

h: 7 -> (7x7) mod 26 = 23 -> X
e: 4 -> (4x7) mod 26 = 2 -> C
l: 11 -> (11x7) mod 26 = 25 -> Z
l: 11 -> (11x7) mod 26 = 25 -> Z
o: 14 -> (14x7) mod 26 = 20 -> U

예제3) key = 7일 때, 암호문 "XCZZU"를 복호화하시오.

  • Z26에서 7의 역원 (7^-1)은 15이다.

X: 23 -> (23x7^-1) mod 26 = 7 -> h
C: 2 -> (2x7^1) mod 26 = 4 -> e
Z: 25 -> (25x7^1) mod 26 = 11 -> l
Z: 25 -> (25x7^1) mod 26 = 11 -> l
U: 20 -> (20x7^1) mod 26 = 14 -> o


아핀 암호(Affine Cipher)

덧셈.곱셈 암호는 키 공간이 작기 때문에 보안에 취약함
key 2개를 사용하는 아핀 암호 등장

  • 암호 알고리즘 -> C = (p x k1 + k2) mod 26
  • 복호 알고리즘 -> P = ((C - k2) x k1^-1) mod 26
  • k1^-1은 k1의 곱셈에 대한 역원이고, -k2는 k2의 덧셈에 대한 역원

암호화: x -> +
복호화: +역원 -> x역원
복화화는 암호화의 역원이기 때문에 연산 순서도 반대가 됨

예제1) 키 쌍이 (7,2)인 아핀 암호를 사용해 평문 "hello"를 암호화하시오

  • 키 쌍이 (7,2) -> 곱셈 암호에 대한 키 k1 - 7, 덧셈 암호에 대한 k2 = 2
  • 암호화 공식 C = (P x k1 + k2) mod 26 이용

h: 7 -> (7x7+2) mod 26 = 25 -> Z
e: 4 -> (4x7+2) mod 26 = 4 -> E
l: 11 -> (11x7+2) mod 26 = 1 -> B
l: 11 -> (11x7+2) mod 26 = 1 -> B
o: 14 -> (14x7+2) mod 26 = 22 -> W

예제 2) 키 쌍이 (7,2)인 아핀 암호를 사용해 암로문 "ZEBBW"를 복호화하시오

  • 키 쌍이 (7,2) -> 곱셈 암호에 대한 키 k1 - 7, 덧셈 암호에 대한 k2 = 2
  • 복호화 공식 P = ((C - k2) x k1^-1) mod 26 이용
  • k1 = 7, Z26에서 역원은 15임

Z: 25 -> ((25-2)x7^-1) mod 26 = 7 -> h
E: 4 -> ((4-2)x7^-1) mod 26 = 4 -> e
B: 1 -> ((1-2)x7^-1)mod 26 = 11 -> l
B: 1 -> ((1-2)x7^-1)mod 26 = 11 -> l
W: 22 -> ((22-2)x7^-1)mod 26 = 14 -> o


다중문자 암호

  • 다중문자 대치(Polyalphabetic subtitution)에서는 각 문자가 다른 대치를 가짐
  • 평문 문자와 암호문 문자와의 관계 - > 일대다 대응 관계
  • 단일 문자 암호체계와 비교했을 때, 대비 단어 빈도 수 분석을 통한 암호문 해독이 더욱 어려운 장점이 있음
  • 다중 문자 암호를 구성하기 위해 메시지에서 평문 문자와 그 문자의 위치에 따라 암호문 문자를 생성함
    • 즉, 다중 문자 암호체계에서 사용되는 키 = 암호화 할 때 평문 문자의 위치에 따라 정해지는 부분키들로 구성된 키 수열

자동키 암호(Autokey cipher)

  • 키: 여러 개의 부분 키들로 구성된 수열
  • 각 부분키는 평문에서 대응되는 문자를 암호화하는 데 사용
    • 첫 번째 부분키: 송신자와 수신자가 비밀리에 합의한 사전에 정의된 값
    • 두 번재 부분키: 첫 번째 평문 문자 값
    • 세 번째 부분키: 두 번째 평문 문자 값
  • "자동키" 명칭의 유래: 암호화 과정 중 부분키가 평문으로부터 자동으로 생성됨을 의미함
    • 평문의 종류에 따라 전체적인 key값이 달라짐

자동키 암호의 암호화/복호화 원리

  • 암호화: Ci = (Pi + ki) mod 26
  • 복호화: Pi = (Ci - ki) mod 26
  • 키: k = (k1, P1, P2, ...)

자동키 암호 예제)

  • 송신자와 수신자가 초기 키 값을 12로 가진 자동키 암호를 사용한다고 가정하자. 이때, 송신자가 수신자에게 "attack is today"라는 메시지를 보내려고 한다. 이를 암호화하여라.

0개의 댓글