[암호학] Affine (아핀) 암호

2024. 4. 28. 01:01복습/암호학

Affine (아핀) 암호란?

 

덧셈 암호 방식과 곱셈 암호 방식을 모두 쓴 암호 방식이다. 

 

그렇기 때문에 키도 두 개를 가진다.  (하나는 덧셈 암호키, 하나는 곱셈 암호키)

 

 

평문에 곱셈 암호 방식을 이용해 먼저 암호화 시켜주고,

 

한 번 암호화된 암호문을 다시 덧셈 암호 방식을 이용해 암호화시켜준다.

 

 

복호화 시켜줄 땐 반대로 해주면 된다.

 

덧셈 암호를 먼저 풀어주고, 

 

곱셈 암호를 풀어주면 평문을 얻어낼 수 있다. 

 

 

대충 그림으로 나타내면 이렇다.

 

평문을 담은 상자를 곱셈 암호로 잠가주고, 다시 덧셈 암호로 잠가주면

 

평문을 다시 꺼내기 위해서는 덧셈 암호를 먼저 풀고, 곱셈 암호를 풀어주어야 한다. 

 

 

식으로 쓰면 좀 공포스러워 보일 수도 있지만 사실 저 그림이 전부다.

 

 

k1과 k2는 각각 곱셈 암호키와 덧셈 암호키를 나타낸다.

 

0~25 사이의 수에 k1을 곱하고 k2를 더해주면 25보다 큰 수가 나올 수도 있는데,

 

그럴 땐 mod 26을 해주어 0~25 사이의 수로 맞춰주고 해당 숫자의 알파벳으로 바꿔주어야 한다.

 

(우리가 25시라고 하지 않고 다음날 새벽 1시라고 하는 것처럼.. 편의상 그렇게 한다.)

 

 

보통 mod 26 연산은 곱셈과 덧셈이 모두 끝난 뒤에 해주는데, 

 

사실 곱셈 후에 mod 26을 했다고 값이 달라지진 않는다. 

 

 

하지만, 곱셈 후에 mod 26을 해주어도 만약 덧셈 암호키가 15 같이 큰 수라서

 

덧셈 후에도 mod 26 연산을 해줘야 할 수도 있기 때문에

 

굳이 곱셈 후에 먼저 mod 26 연산을 하지는 않길 바란다.

 

 

이해가 되지 않는다면, 

 

k1=3, k2=15 일 때, N(13) 을 암호화한다고 생각해보면,

 

N => 13 * 3 + 15 (mod 26)

 

이렇게 되는데, 

 

39 (mod 26) + 15 (mod 26) 

 

하는 것과 39 + 15 (mod 26) 하는 것은 차이가 없다는 것을 알 수 있다.

 

둘 다 답은 C (2) 가 된다. 

 

 

 

복호화도 간단하다. 

 

 

암호화할 때 쓰는 키와 복호화 할 때 쓰는 키가 다르다는 것은 

 

이미 잘 알고 있을 것이다. 

 

따라서, 복호화를 하기 위해서는 복호화 키를 다시 구해주어야 한다.

 

(보통 암호화키만 주어진다.)

 

암호화키와 복호화키는 서로 역원이기 때문에 역원을 구하면 된다.

 

 

덧셈에서의 역원은 부호만 바꿔주면 되는데,

 

만약 암호화 키가 3이었다면, 복호화 키는 -3이다. 

 

 

곱셈에서의 역원은 조금 까다롭다. 

 

단순히 역수를 취하는 게 아니라, 

 

확장 유클리드 알고리즘을 통해 구해주어야 한다. 

 

복호화 키가 3이라면, 3과 26으로 확장 유클리드 알고리즘을 거쳐준다.

 

확장 유클리드 알고리즘은 이미 설명했기 때문에 , 프로그램을 이용해서 구했다.

 

 

3의 복호화 키는 9라는 걸 알 수 있다. 

 

따라서 3으로 곱셈 암호화가 되어있다면, 9를 곱해주어 복호화시키면 된다.

 

(곱셈키와 26)을 확장 유클리드 알고리즘에 넣는다는 것만 기억하자. 

 

(+26은 알파벳의 개수가 총 26개이기 때문에 들어가는 것이다.)

 

 

 

이해가 되었다면, 이런 식으로 암호화 복호화 시키는 연습을 해주고 넘어가도록 하자.