[보안] Playfair 암호
Playfair 암호에서 키값에 따라 키 매트릭스가 달라지는데,
올바른 키 값을 사용해 키 매트릭스를 만들었을 경우에,
송신자가 원하는 Plaintext를 수신자가 알아볼 수 있습니다.
키 매트릭스를 만들 때에는, 키 값을 왼쪽 위부터 순서대로, 그리고 중복 문자가 없도록 집어넣은 다음, 남은 알파벳을 전부 기입하는 형식으로 만들 수 있습니다.
-> 상호간 인지된 키 값 : MONARCHY
ABCDEFGHIJKLMNOPQRSTUVWXYZ
BDEFGIJKLPQSTUVWXZ
->MONARCHYBDEFGIJKLPQSTUVWXZ
M | O | N | A | R |
C | H | Y | B | D |
E | F | G | I/J | K |
L | P | Q | S | T |
U | V | W | X | Z |
-> 키 매트릭스.
키 매트릭스를 사용하여, 원하는 Plaintext를 암호화 할 수 있는데
방법은 다음과 같다.
Playfair 암호화 규칙
1. Plaintext의 철자를 두 글자씩 묶어 문장을 나눈다.
ex) MATERIAL -> MA TE RI AL
(단, 중복되는 철자가 나올 경우, X등의 잘 사용하지 않는 글자(스페셜 레터)를 사용하여 나눈다.)
// 단어의 혼란을 방지하기 위해서 스페셜 레터를 사용한다.
ex) BALLOON -> BA LX LO ON
(Plaintext가 홀수일 경우에는 마지막에 스페셜 캐릭터를 사용한다.)
ex) RESIN -> RE SI NX
2. 두 글자가 같은 행에 있을 경우에는, 각각의 단어에서 오른쪽에 있는 글자를 사용 한다.
ex) G->I/J
3. 두 글자가 같은 열에 있을 경우에는, 각각의 단어에서 아래쪽에 있는 글자를 사용 한다.
ex) G->Q
4. 두 글자가 다른 행렬일 경우에는, 타겟 글자의 같은 행, 파트너 글자의 열이 같은 글자를 사용한다. ex) YS -> BQ
ex) BALLOON -> BA LX LO ON
BA -> IB (3번 방식)
LX -> SU (4번 방식)
LO -> PM (4번 방식)
ON -> NA (2번 방식)
∴ IBSUPMNA
수신자는 이러한 암호화된 값을 받게 된다.
이를 복호화 하는 방식은 아래에 서술.
Playfair 복호화(암호화 반대로)
1. 암호화된 문장의 철자를 두 글자씩 묶어 문장을 나눈다.
2. 두 글자가 같은 행에 있을 경우에는, 각각의 단어에서 왼쪽에 있는 글자를 사용 한다.
ex) G->F
3. 두 글자가 같은 열에 있을 경우에는, 각각의 단어에서 위쪽에 있는 글자를 사용 한다.
ex) G->Y
4. 두 글자가 다른 행렬일 경우에는, 타겟 글자의 같은 행, 파트너 글자의 열이 같은 글자를 사용한다. ex) YS -> BQ
ex) IBSUPMNA -> IB SU PM NA
IB -> BA (3번 방식)
SU -> LX (4번 방식)
PM -> LO (4번 방식)
NA -> ON (2번 방식)
-> BA LX LO ON 이 경우, X는 스페셜 레터로 확인된다.
∴ BALLOON
이런 방식으로 수신측은 암호화된 값을 복호화 할 수 있다.