plaintext 는 소문자, CIPHERTEXT는 대문자로 표기한다.
Shift Ciphers (카이사르, 시저)
- 공백 없애고, k칸씩 뒤로 밀기 (ex. a→D , x→ A)
- 카이사르 : k == 3
- 암 : (x+k)(mod 26) → y
- 복 : (y-k)(mod 26) → x
Attack 유형
단일 Shift Ciphers는 Ciphertext only, Known plaintext, Chosen plaintext, Chosen ciphertext Attack 방법으로 쉽게 복호화가 가능하다.
Ciphertext only Attack
k=1..26 브포돌리기
Known plaintext Attack
plaintext ↔ ciphertext 매칭되는 한글자를 알고 있는 경우, k 바로 구해서 평문 뽑기 가능.
Chosen plaintext Attack
plaintext a 를 넣으면 (“a”+k) mod 26 = “a”+k
즉, 결과 자체가 k 를 의미한다.
Chosen ciphertext Attack
ciphertext A 를 넣으면 (”A”-k) mod 26 = “A”-k
즉, 결과 자체가 k음수를 의미한다.
Monoalphabetic Substitution Ciphers (단일치환)
시프트 암호를 수정한 버전
알파벳의 각 문자가 다른 문자로 1:1 치환이 되며, encryption key(치환 테이블)는 26! 개의 경우의 수가 존재한다.

Ciphertext Only Attack
언어의 특성 : 영어에서 문자의 분배는 uniform하지않다. (e > t > … 순으로 빈도수가 높다.)
단일 치환 암호는 상대적 철자 빈도를 변화시키진않기때문에 예측이 가능하며, 각 글자를 개별적으로 알아야한다.
- 암호문의 철자 빈도 계산
- 계산된 값을 알려진 값과 비교
정점/저점 찾기 (카이사르의 경우, 그래프 생김새로 몇번 밀었는지 유추 가능)
Multiple-Letter Encryption (Playfair cipher)
“여러 문자를 한꺼번에” 암호화 하도록 수정한 버전
테이블 기반으로 쌍을 지어**(2개씩 묶어서)** 암호화하여 26*26의 경우의 수가 존재한다.

- 5*5 matrix 생성 및 keyword 설정
- keyword 채우고 남는 곳은 키워드 미포함 알파벳으로 채우기
- 암호화 (두글자씩 쌍으로 암호화)
- 한 쌍이 같으면 사이에 x 채워넣고 다시 쌍 지어 계산 (홀수도)
- 같은 열이면 바로 아래 글자로
- 같은 행이면 바로 오른쪽 글자로
- 그 외는 자신의 행과 상대의 열 교점으로
Polyalphabetic cipher (다중치환)
하나의 암호 알파벳만 사용하는 게 아니라 **여러 개의 암호 알파벳(key)**을 번갈아 가며 사용하는 것 ( 같은 알파벳이여도 위치에 따라 다르게 적용된다. )
ith key값과 ith plaintext 값을 이용해 치환할 값을 선택한다.
→ 추측해야할 알파벳이 많아 추측하기 어려움. 철자 빈도가 평평함


Transposition Ciphers (전치)
앞에선 치환했다면, 이건 그냥 순서를 재배열하는거임.
철자 빈도 분포 동일.
Rail Rence Cipher
- 메세지를 여러행에 걸쳐 대각선 방향으로 지그재그로 쓴다.
- 행 단위로 차례로 읽어 암호문 만들기

Row Transposition Ciphers
- 메세지를 정해진 열의 개수에 맞춰 행 방향으로 쓴다.
- key에 지정된 순서대로 열을 재배열한 뒤 세로 방향으로 읽는다.

Rotor Machines
제 2차 세계 대전 당시 독일에서 사용함. 시간에 따라 변하는 복잡한 치환 암호.
원통을 직렬로 연결하여 사용하며, 각 로터는 하나의 치환 규칙을 제공하며, 글자가 하나 암호화될 때마다 로터가 회전하면서 치환규칙이 계속 바뀐다. 3개의 로터를 쓰면 26^3 의 경우의수를 가지게됨.
'CSE > 정보보안' 카테고리의 다른 글
| 1장 정보보안 소개 (CIA) (0) | 2026.04.14 |
|---|