본문 바로가기

Information Security Theory

3. Traditional symmetric key ciphers (2)

반응형

2) Multiplicative cipher

C = (P*k) mod 26

k = 5
P = 2
(2*5)=10
10 mod 26 =10 x= C


P = (C*k^-1(곱셈역)) mod 26

k가 될 수 있는 후보 : 곱셈역이 존재하는 k

Z_26 ⊂ {0,1,...,25}
0은 곱셈역이 존재 할 수 없으므로,
Z^*_26 = {1,3,5,7,9,11,15,17,19,21,23,25}


3) Affine cipher
C = (P*k₁ + k₂) mod 26
곱셈, 덧셈 동시 이용
(k1, k2)
P = ( (C-k₂) * k^-1₁) mod 26


mono alphabetic


2. Polyalphabetic cipher

하나의 문자가 일대다 관계로 변환될 수 있어서 monoalphabetic보다 해킹이 어렵다.

1) autokey cipher

ex) 
P = attack is chipher
k = 12
a
t
t
a
k
i
s
...
0
19
19
0
2
10
...


12
0
19
19
0
2
10
...

12
19
12
...





M
T
M
T
C
M
...



P  = (P1 P2 P3 ...)
k  = (k P1 P2 P3 ...)
    = (k1 k2 k3 ...)
C = (c1, c2 ...)
Cn = (Pn + kn) mod 26
Pn = (Cn - kn) mod 26



2) Playfair Cipher

Playfair : 사람
핵심 key를 정하는 법


L
G
D
B
A
Q
M
H
E
C
U
R
N
I (or J)
F
X
V
S
O
K
Z
Y
W
T
P

J가 빠진 25개의 문자가 random하게 섞여 있음 
이 표 자체가 k (키)가 된다.
J는 I로 대체할 수 있다.
가령 juice는 암호화 후 복호화시에 iuice로 되는데 이는 사람이 문맥을 보고 juice로 변환할 수 있어서 이러한 방식을 채택했다.

이 표는 사전에 수신자와 동일하게 가지고 있다.
암호화를 더 복잡하게 하기위해 표를 여러개 서로 가지고 주기적으로 변경하거나  서로 표를 주기적으로 만드는 방식을 산정할 수 있다.

P : hello 

두 문자씩 접근한다.
*두개가 중복되는 문자는 garbage 데이터로 취급하여 사전에 정의 한 문자로 치환
P : hello -> helxo 

he
①두 문자가 같은 row에 있을때
각 문자들의 다음 row 칸 문자로 치환
EC


lx
②두 문자가 같은 column에 있음
각 문자들의 다음 column칸 문자로 치환
QZ

③기타
상대 칸 column으로 치환

C : ECQZBX

복호화는 같은 방식으로 복호화 하면 된다.

여러 문자를 블록 단위로 취급 하는 것을 블록 사이퍼라 하고 위의 방식은 block cipher의 일종이다.



3) Vigenere Cipher


P  = she is listening
key = PASCAL


P-
s
h
e
i
s
l
i
s
t
...
key
p
a
s
c
a
l
p
a
s
...
C
H
H
W
...






C = (P+k)mod 26



4) Hill Cipher

P : code is ready
key가 행렬

9
7
11
13
4
7
5
6
2
21
14
9
3
23
21
8

위의 키가 되는 행렬을 가지고 암호화를 진행한다.

n = 4

P의 행렬

2(c)
14(o)
3(d)
4(e)
8(i)
18
17
4
0
3
24
25

P*k = C

C의 행렬

14(O)
7(H)
10(K)
13(N)
8
7
6
11
11
8
18
18
* 항상 주어진 연산 후에 mod26을 한다
(영어문장으로 하기때문에 mod 26을 사용)
행렬곱 특성상 P의 row가 C의 원소를 구할때 4개씩 사용된다..
block size : 4
block 수: 3

P = C*K^-1
K의 역?
K*K^-1 = I
결국, K는 역행렬이 존재하는 행렬만 가능

반응형