대체-순열 네트워크

Substitution–permutation network
16비트의 평문 블록을 16비트의 암호문 블록으로 암호화하는 3라운드의 치환-순열 네트워크 스케치. S박스는 Si, P박스는 동일한 P, 라운드 키는 K입니다i.

암호학에서 SPN(SP-network)AES(Rijndael), 3-Way, Kalyna, Kuznyechik, PRESENT, SAFE, SHARKSquare와 같은 블록 암호 알고리즘에 사용되는 일련의 연결된 수학 연산입니다.

이러한 네트워크는 평문의 블록과 키를 입력으로 사용하고, 암호문 블록을 생성하기 위해 여러 라운드 또는 대체 상자(S-box)와 치환 상자(P-box)의 계층을 교대로 적용합니다. S-박스 및 P-박스는 입력 비트 (하위) 블록을 출력 비트로 변환합니다. 이러한 변환은 일반적으로 배타적 논리합(XOR) 및 비트 단위 회전과 같이 하드웨어에서 수행하기에 효율적인 작업입니다. 키는 각 라운드마다 소개되는데, 보통 키에서 파생된 "원형 키"의 형태로 제공됩니다. (일부 디자인에서는 S박스 자체가 키에 따라 다릅니다.)

복호화는 단순히 과정을 거꾸로(S-box와 P-box의 역방향을 사용하고, 라운드 키를 역순으로 적용하는 것)하여 수행됩니다.

구성 요소들

S-box는 작은 비트 블록(S-box의 입력)을 다른 비트 블록(S-box의 출력)으로 대체합니다. 이 대체는 가역성(따라서 암호 해독)을 보장하기 위해 일대일이어야 합니다. 특히 출력의 길이는 입력의 길이와 동일해야 합니다(오른쪽 그림은 입력 4비트와 출력 4비트로 구성된 S박스가 있음). 예를 들어 데이터 암호화 표준(DES)에서와 같이 길이를 변경할 수 있는 일반적인 S박스와는 다릅니다. S-box는 일반적으로 단순히 비트의 순열이 아닙니다. 오히려 좋은 S-box는 하나의 입력 비트를 변경하면 출력 비트의 약 절반이 변경되는 특성(또는 눈사태 효과)을 가질 것입니다. 또한 각 출력 비트가 모든 입력 비트에 의존하는 속성이 있습니다.

P-box는 모든 비트의 순열입니다. 한 라운드의 모든 S-box의 출력을 가져오고 비트를 순열하고 다음 라운드의 S-box에 공급합니다. 좋은 P-box는 모든 S-box의 출력 비트가 가능한 한 많은 S-box 입력에 분배되는 특성을 가집니다.

라운드마다 라운드 (예를 들어, S-box 및 P-box를 사용하는 것과 같은 몇 가지 간단한 조작으로 키에서 얻은)는 그룹 조작(일반적으로 XOR)을 사용하여 결합됩니다.

특성.

일반적인 S-box나 P-box만으로는 암호화 강도가 크지 않습니다. S-box는 치환 암호로 생각할 수 있는 반면 P-box는 전치 암호로 생각할 수 있습니다. 그러나 S-박스와 P-박스가 교대로 여러 라운드를 갖는 잘 설계된 SP 네트워크는 이미 섀넌의 혼란확산 특성을 만족시킵니다.

  • 확산의 이유는 다음과 같습니다. 평문의 한 비트를 변경하면 출력이 여러 비트에서 변경되는 S-박스에 입력됩니다. 그러면 이 모든 변경 사항이 P-박스에 의해 여러 S-박스 사이에서 분배되므로 이 모든 S-박스의 출력이 다시 여러 비트에서 변경됩니다. 몇 번의 라운드를 수행하면 각 비트가 앞뒤로 여러 번 바뀌기 때문에 마지막에는 암호문이 의사 무작위 방식으로 완전히 바뀌게 됩니다. 특히 임의로 선택된 입력 블록의 경우 i번째 비트를 뒤집으면 j번째 출력 비트가 변경될 확률은 엄격한 눈사태 기준임의의 i와 j에 대해 약 절반입니다. 반대로, 암호문의 한 비트를 변경한 후 암호문을 해독하려고 하면, 그 결과는 원래의 평문과는 완전히 다른 메시지가 됩니다.SP 암호는 쉽게 확장할 수 없습니다.
  • 혼동의 이유는 확산의 이유와 완전히 같습니다. 한 비트의 키를 변경하면 여러 개의 라운드 키가 바뀌고, 모든 라운드 키의 모든 변경은 모든 비트에 걸쳐 확산되어 암호문이 매우 복잡한 방식으로 변경됩니다.
  • 공격자가 하나의 암호문에 해당하는 하나의 평문(알려진 평문 공격)을 얻거나 더 나쁜 경우 선택된 평문 또는 선택된 암호문 공격)을 얻으면 혼란과 확산으로 인해 공격자가 키를 복구하기가 어렵습니다.

성능

S-box(예: DES)를 사용하는 Feistel 네트워크는 SP 네트워크와 매우 유사하지만 특정 상황에서 이 또는 저 중 하나를 더 적용할 수 있는 몇 가지 차이점이 있습니다. 주어진 양의 혼란과 확산에 대해 SP 네트워크는 더 많은 "본래의 병렬성"[1]을 가지므로 실행 단위가 많은 CPU를 사용하면 Feistel 네트워크보다 더 빨리 계산할 수 있습니다.[2] 대부분의 스마트 카드와 같이 실행 단위가 적은 CPU는 이러한 고유한 병렬성을 활용할 수 없습니다. 또한 SP 암호는 S-box가 (복호화를 수행하기 위해) 가역적이어야 합니다. Feistel 내부 함수는 그러한 제한이 없으며 단방향 함수로 구성할 수 있습니다.

참고 항목

참고문헌

  1. ^ 바트 프레넬, 빈센트 리즈멘, 앙투온 보스엘의 "암호 알고리즘의 원리와 성능"
  2. ^ "The Skin Hash Function Family" Niels Ferguson, Stefan Lucks, Bruce Schneier, Doug Whiting, Mihir Bellare, Tadayoshi Kohno, Jon Calas, Jesse Walker 40페이지.

더보기

  • Katz, Jonathan; Lindell, Yehuda (2007). Introduction to Modern Cryptography. CRC Press. ISBN 9781584885511.
  • Stinson, Douglas R. (2006). Cryptography. Theory and Practice (Third ed.). Chapman & Hall/CRC. ISBN 1584885084.