[TIL]230330 - 컴퓨터시스템보안 5주차 고전 대칭키 암호(4), 대수 구조(1)

Jimin·2023년 4월 3일
0

고전 대칭키 암호

Rotor 암호

  • 단일 알파벳 치환에 따른 아이디어를 이용
  • 각 평문 문자에 대해 평문과 암호문 문자의 대응을 변화시키는 원리
  • rotor의 초기 설정은 송신자와 수신자 사이의 비밀 키

ex) 아래 그림에서 평문 "bee"를 Rotor 암호를 활용하여 암호화하여라. 이 때 Rotation 횟수는 2로 설정한다.

-> 암호문: CAA


전치 암호

  • 전치 암호는 한 기호를 다른 기호로 대체시키지 않고, 대신에 그 기호의 위치를 바꾸는 암호 체계
    • 평문의 첫 번째 위치한 기호 -> 암호문에서는 열 번째 위치에 나타남
    • 평문의 여덟 번째 위치한 기호 -> 암호문에서는 첫 번째 위치에 나타남
  • 즉, 전치 암호는 평문/암호문의 기호를 재정렬하는 과정을 통해 암호화/복호화를 수행함

키가 없는 전치 암호

  • Rail fence 암호
    • 송신자는 평문의 각 기호를 두 행에 번갈아 가며 기입
    • 평문의 첫 번째 기호는 1행에, 두 번째 기호는 2행에, 세 번째 기호는 1행에, ...


  • Rail fence 암호와 유사한 다른 방법
    • 송신자와 수신자가 행(row)의 개수 n을 미리 합의한 후, n개의 열을 갖는 행렬 M에 평문의 각 기호를 M11부터 순차적으로 (M11, M12, ..., M1n, M21, M22, ...의 순서로) 기입
    • 이후 송신자는 행렬 M의 각 열을 순차적으로 결합해 수신자에게 전송


키가 있는 전치 암호

  • 키가 없는 전치 암호는 한 쪽 방향으로 평문을 기록하고 그것의 역 방향으로 읽음으로써 문자를 치환함

  • 한편, 키가 있는 전치 암호 체계에서는 블록(block, 평문을 나눈 단위)이라는 미리 정해진 크기로 평문을 나눈 뒤, 각 블록에서 문자를 치환하기 위한 키를 개별적으로 사용함

  • 열 전치 암호(Columnar transposition ciphers)

    • 키가 없는 전치 암호와 키가 있는 전치 암호체계의 결합

    • 암호화와 복호화는 총 세 단계로 구성됨

      • 평문을 표에 행 순서로 기록함 -> 키 필요 없음
      • 열을 재배치하여 치환함 -> 블록단위로 키(열을 재배치하는 순서를 정의한 규칙)를 이용해 재배열함
      • 새로운 표를 열 순서로 읽음 -> 키 필요 없음
    • 열 전치 암호에 대한 예제 다이어그램

key는 숫자만 가능한 것이 아니라 일련의 규칙이나 연산을 사용하기도 함


  • 이중 전치 암호 (Double transposition cipher)
    • 이중 전치 암호 체계는 앞서 설명한 암호화/복호화 알고리즘을 두 번 반복하는 방법
    • 대부분의 경우 각 단계에서 같은 키를 이용 (단, 다른 키를 이용해도 무방함)

스트림 암호화 블록 암호

스트림 암호(Stream cipher)

스트림: 일련의 신호(비트 단위로 들어와서 처리되는 것)

  • 암호화와 복호화가 한 번에 (한 문자 or 한 비트) 한 개의 기호에만 적용되는 암호
  • 평문 수열(P), 암호문 수열(C), 키 수열(K)에 대한 스트림 암호의 동작 방법
    • 평문 문자는 한 번에 하나씩 암호화 알고리즘에 입력 -> P = P1P2P3...
    • 키 수열은 다양한 방법으로 생성 -> k = (k1,k2,k3...)
    • 암호문 문자도 한 번에 하나씩 생성됨 -> C = C1C2C3...
      • 이때, C1 = Ek1(P1), C2 = Ek2(P2), C3 = Ek3(P3)
      • Eki: 암호화 함수, Ki: i번째 키, Ci: 암호문의 i번째 문자(비트), Pi: 평문의 i번째 문자(비트)
  • ex) 평문 수열의 세 번째 문자 "a"가 키 수열의 세 번째 값을 이용해 암호화되는 순간을 나타네는 예제

스트림 암호와 고전 암호

  • 덧셈 암호
    • 덧셈 암호는 키의 반복된 값을 키 수열로 사용하는 스트림 암호임
    • 키 수열은 사전에 정의된 키 수열 값이거나 K(k, k, ..., k)로 간주함
    • 그러나 암호문의 각 문자는 키 수열이 독립적으로 생성되기 때문에, 연관된 평문 문자에만 의존하여 결정됨

  • 단일문자 대치 암호
    • 단일문자 대치 암호는 키 수열 값은 현재의 평문 문자를 대응 표에서 연관된 암호문 문자로 대응시키는 스트림 암호임

  • Vigenere 암호
    • Vigenere 암호는 키 수열 m개의 값이 반복됨. 이때 m은 키워드의 크기이며, K=(k1, k2, ..., km, k1, k2 ..., km, ...)로 주어지는 스트림 암호임

블록 암호(Block cipher)

cf) 스트림 암호: 한 번에 암호화하는 단위 차이

  • 블록 암호에서, 크기가 m인 평문 기호의 그룹은 함께 암호화되어, 같은 크기의 암호문 그룹을 생성함
  • 블록 암호에선 키가 여러 값으로 구성되더라도 단일 키는 전체 블록을 암호화하는 데 사용됨
  • 블록 암호에서, 암호문 블록은 전체 평문 블록에 의해 결정됨
  • ex) 평문 수열의 두 번째 블록 "int"가 암호화되는 순간을 나타내는 예제

대수 구조

  • 현대 암호에서 중요한 개념
    군 (Group)
    환 (Ring)
    체 (Field)

군(G, Group)

  • 네 개의 성질(혹은 공리)를 만족하는 이항 연산 "*"이 정의된 원소들의 집합
    • 닫힘: 만약 a와 b가 G의 원소라면, c=aㅇb 또한 G의 원소임. 이것은 임의의 두 원소의 연산 결과가 집합 내의 다른 원소로 대응됨을 의미함
    • 결합 법칙: 만약 a, b, c가 G의 원소라면 (aㅇb)ㅇc = aㅇ(bㅇc)를 만족함. 즉, 두 개 이상의 원소에 대해 연산을 적용할 때 연산의 순서는 결과 값에 영향을 주지 않음.
    • 항등원의 존재성: G의 임의의 원소 a에 대해, eㅇa = aㅇe를 만족하는 항등원 e가 존재함.
    • 역원의 존재성: G의 임의의 원소 a에 대해, aㅇa = aㅇa = e를 만족하는 a의 역원이 존재함.

가환 군 (또는 아벨 군)

  • 앞의 네 개의 성질을 만족함과 동시에 아래의 교환 법칙을 만족하는 군을 가환 군 또는 아벨 군이라고 함
  • 교환 법칙: G의 임의의 두 원소 a, b에 대해 aㅇb = bㅇa를 만족함. 이 성질은 가환 군(아벨 군)일 때만 필요한 성질임

군의 특징

  • 하나의 군에는 한 개의 연산만이 정의

  • 그 연산에 대한 성질들은 그 연산과 역함수 관계에 있는 연산의 사용을 허용함

    • ex1) 정의된 연산이 덧셈인 경우
      • 뺄셈은 덧셈의 역함수 관계 -> 군은 덧셈과 뺄셈 모두 사용
    • ex2) 정의된 연산이 곱셈인 경우
      • 나눗셈은 곱셈의 역함수 관계 -> 군은 곱셈과 나눗셈 모두 사용
  • 단, 군은 덧셈/뺄셈 혹은 곱셈/나눗셈만 사용할 수 있으며, 동시에 둘 다 사용할 수 없음

  • G = <Set, Operator>

    • 집합(Set): 해당 군에 포함되는 원소들의 집합
      • ex) R, Z10, Z20 ...
    • 연산자(Operator): 해당 군에 포함

0개의 댓글

관련 채용 정보