대수 암호 유형

발행: (2025년 12월 17일 오전 11:29 GMT+9)
3 min read
원문: Dev.to

Source: Dev.to

Algebraic Cipher Types

암호 펑터를 정의하기 전에, 우리가 작업할 대수 구조들을 정의해야 합니다. 암호 펑터는 모노이드를 암호 모노이드로 올리는 방법을 정의합니다.

Groups and Monoids

그룹은 집합 $G$와 연산 $* : G \times G \to G$ 로 구성되며, 이 연산은 두 원소 $a$와 $b$를 결합하여 또 다른 원소 $a*b$를 만듭니다. 그룹이 되기 위해서는 집합과 연산 $(G, *)$ 가 네 가지 요구조건, 즉 그룹 공리들을 만족해야 합니다:

  • 폐쇄성: 모든 $a,b \in G$에 대해 연산의 결과 $a*b$도 $G$에 속합니다.
  • 결합법칙: 모든 $a,b,c \in G$에 대해 $(ab)c = a(bc)$ 가 성립합니다.
  • 항등원: 어떤 원소 $e \in G$가 존재하여, 모든 원소 $a \in G$에 대해 $ea = ae = a$ 가 됩니다. 이 원소는 유일하며, 따라서 항등원이라고 부릅니다.
  • 역원: 각 $a \in G$에 대해 어떤 원소 $a’ \in G$가 존재하여 $a*a’ = a’*a = e$ 가 되며, 여기서 $e$는 항등원입니다.

모노이드 $(S,*)$는 역원에 대한 요구조건을 없애면서 그룹의 요구조건을 완화한 구조입니다.

Cipher Functor

암호 펑터에서는 모노이드 $(S,)$를 $c_A(S,)$ 로 올리며, 이는 다음과 같이 정의됩니다:

  • $A$는 $S$의 부분집합입니다.
  • $s : S \times \mathbb{N} \to c_A S$는 $S$의 원소들을 $c_A S$ 안의 표현으로 매핑합니다. 즉, $s(a,k)$는 원소 $a \in S$를 $c_A S$ 안의 $k$번째 표현으로 보냅니다.
  • $s’ : c_A S \to S$는 $s’(s(a,k)) = a$ 및 $s(s’(j),k) = c_A a$ 를 모든 $a \in S$와 $k \in \mathbb{N}$에 대해 만족합니다.

보통 $s$는 비밀값과 각 표현에 대한 고정 비트 길이로 매개변수화된 다른 함수에 의해 생성됩니다.

$c_A(S,*,e)$는 연산 $(c_A *) : (c_A S, c_A S) \to c_A S$ 를 가지며, 이는 다음 공리에 의해 정의됩니다:

  • 결합법칙: 모든 $x,y,z \in A$에 대해
    $s’((c_A x * c_A y) * c_A z) = s’(c_A x * (c_A y * c_A z))$.
Back to Blog

관련 글

더 보기 »