이 영역을 누르면 첫 페이지로 이동
caputdraconis 블로그의 첫 페이지로 이동

caputdraconis

페이지 맨 위로 올라가기

caputdraconis

네트워크 관점에서의 클라우드 컴퓨팅을 공부하는 중입니다 :)

[컴퓨터보안] Substitution Technique(치환 기술)

  • 2023.04.24 19:00
  • Security
글 작성자: caputdraconis
반응형

1. Caesar Cipher - 카이사르 암호

Plain Text의 각 알파벳을 알파벳 상 3개 뒤의 알파벳으로 치환하는 방식

Cassar Cipher

Plain Text가 meet 일 때, 아래의 과정을 거치게 됩니다.
1. m(12) -> p(12 + 3)
2. e(4) -> h(4 + 3)
3. t(19) -> w(19 + 3)
meet을 Caesar Cipher 로 암호화 한 결과, phhw 라는 Cipher Text가 완성됩니다.

이를 식으로 나타내면 아래와 같습니다(k=3)
C = E(k, p) = (p + k) mod 26
p = D(k, c) = (c - k) mod 26

Caesar Cipher 방식을 사용한 Cipher Text에 대해서 Brute-Force Attack을 한 결과


k에 대해서 25개의 가능성 밖에 없기에 위 사진과 같이 Brute-Force Attack을 진행할 때, 뚫리기 너무 쉬운 암호화 방식입니다.

2. Permutation Cipher

위 Caesar Cipher 와 같이 문자가 다른 문자로 치환되는 방식입니다. 다만 3개 뒤의 알파벳으로 치환했던 Caesar Cipher 와 다르게, 치환되는 A~Z를 무작위로 섞는 방식입니다. 대신 섞인 Key를 따로 보관해야 한다는 단점이 있습니다.

3. Playfair Cipher - 두 글자 규칙

5 x 5 크기의 문자 배열에 기반하여 암호화를 진행하는 방식입니다. 키워드를 정하여 아래의 표처럼 구성합니다. 여기서 사용된 키워드는 MONARCHY 입니다. 

Left to Right && Top to Bottom 방향으로 키워드를 먼저 작성하고, 나머지 칸을 키워드에서 사용되지 않은 알파벳으로 채워넣습니다. 키워드에 만약 중복되는 알파벳이 있다면, 이를 무시하고 작성합니다.(AABB -> AB)
알파벳은 총 26개이지만 칸은 25개이므로, I/J 와 같이 한 칸에 2개의 알파벳을 적습니다. 이 조합은 바뀔 수 있습니다.

5 x 5 크기의 배열을 완성하였다면, 4가지 규칙을 따라 치환을 합니다. 그 규칙은 다음과 같습니다.
1. 직사각형 규칙 : 암호화 하려는 글자 p1, p2를 대각선 양 꼭짓점으로 하는 직사각형을 만들고, 각각 같은 행 맞은편에 있는 글자와 치환한다. (ex. hs -> BP, ea -> IM or JM)
2. 같은 글자가 반복되는 경우에 대한 규칙 : 같은 글자가 반복되는 경우 그 사이를 특정 문자(x)로 채운다. (ex. balloon -> ba lx lo on)
3. 같은 행에 있는 경우에 대한 규칙 : 자기 다음(오른쪽)에 있는 글자로 치환한다. (ex. HY -> YB)
4. 같은 열에 있는 경우에 대한 규칙 : 자기 다음(밑)에 있는 글자로 변경(ex. B→ I/J, A→B)

이러한 규칙에 맞게 balloon 이라는 Plain Text를 Cipher Text로 암호화 해보겠습니다.
1. 두 글자 규칙이라는 이름에 맞게 Plain Text를 두 글자씩 끊어서 암호화를 진행합니다 -> ba ll oo n
2. ll 에서 2번 규칙 발생 -> ba lx lo on
3. ba 에 대해서 4번 규칙 발생 -> IB or JB
4. lx 에 대해서 1번 규칙 발생 -> SU
5. lo 에 대해서 1번 규칙 발생 -> PM
6. on 에 대해서 3번 규칙 발생 -> NA
=> Cipher Text : IBSUPMNA

4. Vigenere Cipher

key를 정하고, 이를 plain text 에 더하여 치환하는 방식입니다. plain text의 길이가 key 보다 길 때, key를 여러번 반복하여 plain text와 같은 길이의 key를 만듭니다.

key가 반복되므로, 취약하다는 단점이 있습니다.

5. Vigenere Autokey System

Vigenere Cipher의 key 반복으로 인한 취약 문제를 해결한, 업그레이드 된 방식입니다. 처음에 정한 key는 한 번만 쓰고, 그 후의 키는 앞의 plain text를 가져와서 쓰는 방식입니다. 아래의 표를 통해서 확인하실 수 있습니다.

key(deceptive) 뒤에는 plaintext 가 이어져있다.

6. Vernam Cipher


알파벳을 사용하지 않고 비트를 사용하는 암호화 방식입니다. c(cipher bit), p(plain text bit), k(key bit) 모두 0 또는 1을 나타내는 비트입니다. 아래의 식을 통해 작동 방식을 이해할 수 있습니다.
c = (p + k) mod 2
p = (c - k) mod 2 = (c + k) mod 2
이는 XOR 연산과 같은 결과를 가져옵니다. 

7. One-Time Pad

암호화하려는 Plain Text의 길이와 같은 랜덤 키와 Plain Text를 XOR 하여 암호화하는 방식입니다. 랜덤 키는 암호화/복호화에 사용되며, 한 번 사용하면 버립니다. 즉, 메시지마다 새로운 키가 필요합니다. 이는 완전히 안전한 방식이지만, 다음 과 같은 이유로 실용적으로는 거의 불가능한 방식입니다.
1. 길고(Plain Text 길이만큼) 많은(메시지마다 새로운 랜덤 키) 키를 만들어내는게 아주 힘든 작업입니다.
2. 만들어낸 랜덤 키를 해당 Cipher Text를 복호화 할 사용자에게 전달하는 것도 힘든 작업입니다.
이러한 현실적인 어려움 때문에, 아주 제한적인 환경(매우 높은 보안 수준을 필요로 하는 전송량이 적은 채널)에서만 사용 가능합니다.

반응형

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [컴퓨터보안] Web Security

    [컴퓨터보안] Web Security

    2023.04.26
  • [컴퓨터보안] Feistel Cipher(파이스텔 암호) 동작 방식

    [컴퓨터보안] Feistel Cipher(파이스텔 암호) 동작 방식

    2023.04.25
  • [컴퓨터보안] Stream Ciphers | Block Ciphers

    [컴퓨터보안] Stream Ciphers | Block Ciphers

    2023.04.24
  • [컴퓨터보안] Transposition Techniques(전치 기술)

    [컴퓨터보안] Transposition Techniques(전치 기술)

    2023.04.24
다른 글 더 둘러보기

정보

caputdraconis 블로그의 첫 페이지로 이동

caputdraconis

  • caputdraconis의 첫 페이지로 이동

검색

메뉴

    카테고리

    • 분류 전체보기 (168)
      • Cloud (3)
      • Computer Network (12)
      • Database (2)
      • Terraform (2)
      • 🥚고리즘 (13)
      • 겅부겅부🙃 (10)
        • Naver CS50 코칭스터디 (2)
        • Machine Learning (1)
        • Computing System (6)
      • 언어&프레임워크 (20)
        • Python (4)
        • Django (10)
        • Node JS (1)
        • C++ (2)
        • Java (1)
        • Flutter (2)
      • Security (76)
        • WebHacking Study (11)
        • 지옥방 스터디 (22)
        • 여름방학 스터디 (2)
        • PWN Study (6)
        • SUA Reversing Study (3)
        • PWN (3)
        • WebHacking (20)
        • Reversing (4)
      • 알고 있으면 도움되지 않을까,,? (23)
      • 일상다반사 (1)
      • 근황 정리 (1)
      • 42 Seoul (1)
        • Setting (1)

    최근 글

    인기 글

    댓글

    공지사항

    아카이브

    태그

    • 리스트함수
    • 드림핵
    • 파이썬기초
    • 파이썬함수
    • 파이썬
    • old-16
    • 웹해킹.kr
    • Python

    나의 외부 링크

    • Github
    • solved.ac
    • caputdraconis@kakao.com

    정보

    caputdraconis의 caputdraconis

    caputdraconis

    caputdraconis

    블로그 구독하기

    • 구독하기
    • RSS 피드

    방문자

    • 전체 방문자
    • 오늘
    • 어제

    티스토리

    • 티스토리 홈
    • 이 블로그 관리하기
    • 글쓰기
    Powered by Tistory / Kakao. Copyright © caputdraconis.

    티스토리툴바