개발자 끄적끄적

전치암호 본문

정보보안

전치암호

햏치 2023. 3. 25. 01:10

<Transposition ciphers>
- 전치암호는 한 기호를 다른 기호로 대체시키지 않고
  대신에 그 기호의 위치를 바꾼다
- 즉, 전치암호는 기호를 재정렬시킨다


<키가 없는 전치암호(Keyless Transposition Ciphers)>
- 과거에 사용된 간단한 전치암호는 키가 없다
  ex)rail fence암호


<키가 있는 전치암호(Keyed Transposition Ciphers)>
- 키가 없는 암호는 한쪽 방향으로(예를 들어, 행 순서로) 평문을 기록하고
  역 방향으로(예를 들어, 열 순서로)그것을 읽음으로써 문자를 치환한다
- 전체 암호문을 생성하기 위하여 전체 평문에 치환이 적용된다
- 다른 방법은 블록(block)이라고 하는 사전에 정의된 크기로 평문을 나눈 뒤,
  각각의 블록에 독립적으로 키를 사용하여 문자를 치환하는 것이다


<두 가지 접근법의 결합(Combining Two Approaches)>
1. 행렬의 사용(Using Matrices)
- 전치암호의 암호화/복호화 과정을 살표보기 위하여 행렬을 이용
- ex) Representation of the key as a matrix in the transposition cipher

2. 전치암호에서의 키 변환 알고리즘
Given : EncKey[index]
index <- 1
while(index <= Column)
{
  DecKey[EncKey[index]] <- index
  index <- index+1
}
 Return : DecKey[index]

3. 이중 전치 암호(Double Transposition Ciphers)
- Plaintext -> Write row by row | Permute columns | Read column by column
  -> Middle-text(중간암호)
  -> Write row by row | Permute columns | Read column by column
  -> Ciphertext


<스트림 암호(Stream Ciphers)>
- 평문 수열, 암호문 수열, 키수열 등이 있다
- 평문 수열을 P(Plain text)라고 하고, 암호문 수열을 C(Cipher text), 키 수열을 K(Key)라고 한다
- Cn = Ekn(Pn)

- 덧셈 암호는 키의 반복된 값을 키수열로 사용하는 스트림 암호로 분류될 수 있다
  다시 말해서, 키수열은 사전에 정의된 키수열 값이거나 K=(k1,k2, ... ,kn)로 간주된다
  그러나 이 암호에서 암호문의 각 문자는 키수열이 독립적으로 생성되기 때문에,
  연관된 평문 문자에만 의존하여 결정된다

- 정의에 의하여 Vigenere 암호 또한 스트림 암호이다
  이 경우, 키 수열은 m개 값의 반복이다
  이 때, m은 키워드의 크기이다. 즉, 키는 다음과 같다
   K=(k1,k2, ... ,km, ...)

- 키수열에 근거하여 스트림 암호를 나누는 기준을 생각해 볼 수 있다
  ki값이 평문 수열에서 평문 문자의 위치에 따라 결정되지 않으면
  스트림 암호는 단일문자 암호이다. 그렇지 않다면 그 암호는 다중문자 암호이다

- 키수열에서 ki가 고정되어 있기 때문에, 덧셈 암호는 명백하게 단일문자 암호이다
  따라서 키수열은 평문 문자 위치에 의해 결정되지 않는다

- ki가 평문 수열에서 연관된 문자 위치에 의해 결정되지 않기 때문에, 단일문자 대치암호는
  명백하게 단일문자 암호이다. 키 값은 평문 문자의 값에 의해서만 결정된다

- ki가 명백하게 평문 문자 위치에 의해 결정되기 때문에, Vigenere 암호는 다중문자 암호이다
  그러나 그 의존성은 주기적(Cyclic)이다. 키는 m만큼 떨어진 두 문자에 동일하게 적용된다


<블록 암호(Block Ciphers)>
- 블록 암호에서, 크기가 m(m>1)인 평문 기호의 그룹은 함께 암호화 되어 같은 크기의 암호문 그룹을 생성한다
- 정의에 따라, 블록 암호에서는 키가 여러 값으로 구성되더라도 단일 키는 전체 블록을 암호화하는데 사용된다

- 플레이페어 암호는 블록 암호이다
  블록의 크기는 m=2이며, 두 문자가 함께 암호화된다

- Hill 암호는 블록 암호이다
  크기가 2이상인 평문 블록은 단일 키(행렬)를 이용하여 함께 암호화된다
  이 암호에서, 암호문의 각 문자값은 평문의 모든 문자값에 의해 결정된다
  키가 mxm 값으로 구성되지만, 키는 단일 키로 간주된다

- 블록 암호의 정의에서, 암호문 블록의 각 문자가 모든 평문 블록의 문자에 의해 결정되기 때문에
  확실히 모든 블록 암호는 다중문자 암호이다


<결합(Combination)>
- 실제로, 평문 블록은 개별적으로 암호화되지만 키수열을 사용하여 블록 순서로 전체 메시지를 암호화한다
- 개별 블록으로 봤을 때는 블록 암호이지만, 각 블록을 단일 유닛으로 생각하고 전체 메시지를 봤을 때는 스트림 암호이다
- 각 블록은 암호화 과정 중이나 이전에 생성된 다른 키를 이용한다

'정보보안' 카테고리의 다른 글

대수적 구조  (0) 2023.03.25
고전 대칭키 암호  (0) 2023.03.20
행렬, 일-변수 일차 방정식, 일차 연립 방정식  (0) 2023.03.12