블록 암호화 표준. DES 및 AES 암호화 알고리즘

  • 지도 시간

%username% 님, 안녕하세요!
많은 사람들은 DES 알고리즘이 오랫동안 대칭 암호화 분야의 기본 표준으로 간주되어 왔다는 것을 알고 있습니다. 이 죽일 수 없는 알고리즘에 대한 첫 번째 성공적인 공격은 표준으로 채택된 지 16년 후인 1993년에 발표되었습니다. 저자가 2 47개의 일반/암호 텍스트 쌍이 있는 경우 선형 암호 분석이라고 부르는 이 방법을 사용하면 2 43개의 작업으로 DES 암호의 비밀 키를 열 수 있습니다.
컷 아래에서는 이 공격의 주요 포인트를 간략하게 설명하겠습니다.

선형 암호 분석

선형 암호 분석은 알려진 일반 메시지와 해당 암호문에서 알 수 없는 암호화 키를 복구하는 것을 목표로 하는 대칭 암호에 대한 특수한 유형의 공격입니다.

일반적으로 선형 암호해석을 기반으로 한 공격은 다음과 같은 조건으로 귀결됩니다. 공격자는 동일한 암호화 키 K를 사용하여 얻은 다수의 평문/암호문 쌍을 가지고 있습니다. 공격자의 목표는 키 K의 일부 또는 전부를 복구하는 것입니다.

우선, 공격자는 암호를 검사하여 소위 말하는 것을 찾아냅니다. 통계적 아날로그, 즉 임의의 공개/개인 텍스트 쌍과 고정 키에 대해 확률 P ≠ 1/2로 유지되는 다음 형식의 방정식:
P I1 ⊕ P I2 ⊕… ⊕ P Ia ⊕ C I1 ⊕ C I2 ⊕… ⊕ C Ib = K I1 ⊕ K I2 ⊕… ⊕ K Ic (1) ,
여기서 Pn, Cn, Kn은 텍스트, 암호문 및 키의 n번째 비트입니다.
이러한 방정식이 발견되면 공격자는 다음 알고리즘을 사용하여 1비트의 핵심 정보를 복구할 수 있습니다.

알고리즘 1
T를 방정식 (1)의 왼쪽이 0과 같은 텍스트의 수로 설정하면
T>N/2이면 N은 알려진 일반 텍스트의 수입니다.
K I1 ⊕ K I2 ⊕… ⊕ K Ic = 0(P>1/2인 경우) 또는 1(P인 경우)이라고 가정합니다.<1/2).
그렇지 않으면
K I1 ⊕ K I2 ⊕… ⊕ K Ic = 1(P>1/2인 경우) 또는 0(P인 경우)이라고 가정합니다.<1/2).
알고리즘의 성공은 |P-1/2|의 값에 직접적으로 달려 있다는 것은 명백합니다. 그리고 사용 가능한 열린/닫힌 텍스트 쌍의 수 N에 대해 설명합니다. 동등 확률 P(1)가 1/2과 다를수록 공격에 필요한 열린 텍스트 N의 수는 줄어듭니다.

공격이 성공하려면 해결해야 할 두 가지 문제가 있습니다.

  • (1) 형식의 효과적인 방정식을 찾는 방법.
  • 이 방정식을 사용하여 키에 대한 두 비트 이상의 정보를 얻는 방법.
DES 암호를 예로 들어 이러한 문제에 대한 해결책을 고려해 보겠습니다.

DES에 대한 설명

하지만 먼저 알고리즘이 어떻게 작동하는지 간략하게 설명하겠습니다. DES에 대해서는 이미 충분히 설명했습니다. 암호에 대한 전체 설명은 Wikipedia에서 찾을 수 있습니다. 그러나 공격을 더 자세히 설명하려면 사전에 가장 잘 소개된 여러 가지 정의가 필요합니다.

따라서 DES는 Feistel 네트워크를 기반으로 한 블록 암호입니다. 암호의 블록 크기는 64비트이고 키 크기는 56비트입니다. DES 알고리즘의 암호화 방식을 고려해 보겠습니다.

그림에서 볼 수 있듯이 텍스트를 암호화할 때 다음 작업이 수행됩니다.

  1. 초기 비트 순열. 이 단계에서 입력 블록의 비트는 특정 순서로 섞입니다.
  2. 그 후, 혼합된 비트는 두 개의 절반으로 분할되어 Feistel 함수의 입력으로 공급됩니다. 표준 DES의 경우 Feistel 네트워크에는 16개의 라운드가 포함되지만 알고리즘의 다른 변형도 존재합니다.
  3. 마지막 변환 라운드에서 얻은 두 블록을 결합하고 결과 블록에 대해 또 다른 순열을 수행합니다.

Feistel 네트워크의 각 라운드에서 메시지의 최하위 32비트는 함수 f를 통해 전달됩니다.

이 단계에서 수행되는 작업을 살펴보겠습니다.

  1. 입력 블록은 32비트 블록을 48비트 블록으로 변환하는 확장 함수 E를 통해 전달됩니다.
  2. 결과 블록은 라운드 키 Ki 에 추가됩니다.
  3. 이전 단계의 결과는 각각 6비트의 8개 블록으로 나뉩니다.
  4. 수신된 블록 Bi 각각은 6비트 시퀀스를 4비트 블록으로 대체하는 대체 함수 S-Box i를 통해 전달됩니다.
  5. 결과 32비트 블록은 순열 P를 통과하고 함수 f의 결과로 반환됩니다.

암호 해독의 관점에서 우리에게 가장 큰 관심은 함수 f의 입력 데이터와 출력 데이터 간의 연결을 숨기도록 설계된 S 블록입니다. DES를 성공적으로 공격하기 위해 먼저 각 S-box에 대한 통계적 유사성을 구성한 다음 이를 전체 암호로 확장합니다.

S 블록 분석

각 S-박스는 6비트 시퀀스를 입력으로 사용하고 각 시퀀스에 대해 고정된 4비트 값이 반환됩니다. 저것들. 총 64개의 입력 및 출력 옵션이 있습니다. 우리의 임무는 S 블록의 입력 데이터와 출력 데이터 간의 관계를 보여주는 것입니다. 예를 들어, DES 암호의 세 번째 S-박스의 경우 64개 사례 중 38개에서 입력 시퀀스의 세 번째 비트가 출력 시퀀스의 세 번째 비트와 동일합니다. 따라서 세 번째 S에 대해 다음과 같은 통계적 유사성을 찾았습니다. -상자:
S 3 (x) = x, 이는 확률 P=38/64로 충족됩니다.
방정식의 양쪽은 1비트의 정보를 나타냅니다. 따라서 좌변과 우변이 서로 독립이면 방정식은 1/2의 확률로 만족되어야 합니다. 따라서 우리는 DES 알고리즘의 3번째 S-box의 입력과 출력 사이의 관계를 시연했습니다.

일반적인 경우에 S-box의 통계적 유사성을 어떻게 찾을 수 있는지 생각해 봅시다.

S-박스 S a , 1 ≤ α ≤ 63 및 1 ≤ β ≤ 15의 경우, 값 NS a(α, β)는 64개의 가능한 XOR 입력 비트 중 α 비트에 중첩된 S a 가 다음과 같은 횟수를 나타냅니다. α 비트 β에 중첩된 XOR 출력 비트, 즉:
여기서 기호는 논리 AND입니다.
NS a(α, β)가 32와 가장 다른 α 및 β 값은 S-box Sa의 가장 효율적인 통계적 유사성을 설명합니다.

가장 효과적인 유사체는 α = 16 및 β = 15 NS 5 (16, 15) = 12에 대한 DES 암호의 5번째 S-box에서 발견되었습니다. 이는 다음 방정식이 성립함을 의미합니다: Z=Y ⊕ Y ⊕ Y ⊕ Y. 여기서 Z는 S-box의 입력 시퀀스이고 Y는 출력 시퀀스입니다.
또는 DES 알고리즘에서 S-box에 들어가기 전에 데이터가 라운드 키를 사용하여 모듈로 2로 추가된다는 사실을 고려합니다. Z = X ⊕ K 우리는
X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K. 여기서 X와 Y는 순열을 고려하지 않은 함수 f의 입력 및 출력 데이터입니다.
결과 방정식은 동일한 확률 P=12/64로 DES 알고리즘의 모든 라운드에서 실행됩니다.
다음 표는 효과적인 것의 목록을 보여줍니다. DES 알고리즘의 각 s-블록에 대한 통계적 유사점인 P=1/2에서 가장 큰 편차를 가집니다.

여러 라운드의 DES에 대한 통계적 유사 구성

이제 여러 라운드의 DES의 통계적 유사성을 결합하고 궁극적으로 전체 암호에 대한 통계적 유사성을 얻을 수 있는 방법을 보여드리겠습니다.
이를 수행하려면 알고리즘의 3단계 버전을 고려하십시오.

X(2) 값의 특정 비트를 계산하기 위해 5번째 s-box의 효율적인 통계 아날로그를 사용합시다.
우리는 확률이 12/64일 때 f-함수에서 동일성이 유지된다는 것을 알고 있습니다. X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K,여기서 X는 5번째 S-박스의 두 번째 입력 비트이며, 본질적으로 입력 비트를 확장한 후 얻은 시퀀스의 26번째 비트입니다. 확장 함수를 분석함으로써 26번째 비트가 X(1) 시퀀스의 17번째 비트로 대체된다는 것을 확인할 수 있습니다.
마찬가지로, Y,..., Y는 본질적으로 순열 P 이전에 얻은 시퀀스의 17번째, 18번째, 19번째 및 20번째 비트입니다. 순열 P를 조사하면 비트 Y,..., Y가 실제로 비트 Y임을 알 수 있습니다. (1), Y(1), Y(1), Y(1).
방정식에 포함된 키 비트 K는 첫 번째 라운드 하위 키 K1의 26번째 비트이며 통계 아날로그는 다음 형식을 취합니다.
X(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y1 ⊕ Y(1) = K1.
따라서, X(1) ⊕ K1 = Y(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y(1)(2) 확률 P=12/64.
시퀀스 Y(1)의 3, 8, 14, 25비트를 알면 시퀀스 X(2)의 3, 8, 14, 25비트를 찾을 수 있습니다.
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ Y(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y(1)또는 방정식 (2)를 고려하면
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X(1) ⊕ K1 (3) 12/64의 확률로.

마지막 라운드를 이용하여 비슷한 표현을 찾아보겠습니다. 이번에는 방정식이 있습니다.
X(3) ⊕ K3 = Y(3) ⊕ Y(3) ⊕ Y(3) ⊕ Y(3).
왜냐하면
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ Y(3) ⊕ Y(3) ⊕ Y(3) ⊕ Y(3)
우리는 그것을 얻습니다
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ X(3) ⊕ K3(4) 12/64의 확률로.

방정식 (3)과 (4)의 우변을 동일시하면 다음을 얻습니다.
CL ⊕ CL ⊕ CL ⊕ CL ⊕ X(3) ⊕ K3 = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X(1) ⊕ K1확률은 (12/64) 2 +(1-12/64) 2 입니다.
X(1) = PR 및 X(3) = CR이라는 사실을 고려하여 통계적 유사성을 얻습니다.
СL ⊕ CR ⊕ PL ⊕ PR = K1 ⊕ K3 (5) ,
이는 확률 (12/64) 2 + (1-12/64) 2 =0.7로 실행됩니다.
위에 설명된 통계적 아날로그는 다음과 같이 그래픽으로 표현될 수 있습니다(그림의 비트는 오른쪽에서 왼쪽으로 번호가 매겨져 있으며 0부터 시작합니다).

공격자는 방정식의 왼쪽에 있는 모든 비트를 알고 있으므로 알고리즘 1을 적용하여 K1 ⊕ K3 값을 알아낼 수 있습니다. 이 통계적 아날로그를 사용하여 암호화 키 K의 1비트가 아닌 12비트를 열 수 있는 방법을 보여드리겠습니다.

DES에 대한 알려진 일반 텍스트 공격

공격을 확장하고 첫 번째 라운드의 6비트를 즉시 얻는 방법은 다음과 같습니다.
식 (5)를 구성할 때 F1(PR, K1)의 값을 알 수 없다는 점을 고려했습니다. 따라서 우리는 통계적 아날로그 K1 ⊕ PR을 사용했습니다.
K1 ⊕ PR 표현식 대신 F1(PR, K1) 값을 반환하고 다음 방정식을 얻습니다.
СL ⊕ CR ⊕ PL ⊕ F1(PR, K1) = K3 (6) , 확률 12/64로 실행됩니다. 세 번째 라운드에서 통계적 아날로그만 남겨두었기 때문에 확률이 변경되었으며 다른 모든 값은 고정되어 있습니다.

우리는 위에서 F1(PR, K1)의 값이 5번째 S-box의 입력 비트, 즉 키 비트 K1과 PR 블록의 비트에 의해 영향을 받는다는 것을 이미 결정했습니다. 열린/닫힌 텍스트 세트만 가지고 K1의 값을 복원할 수 있는 방법을 보여드리겠습니다. 이를 위해 알고리즘 2를 사용하겠습니다.

알고리즘 2
N을 공격 이전에 알려진 열린/닫힌 텍스트 쌍의 수로 둡니다. 그런 다음 키를 열려면 다음 단계를 수행해야 합니다.
(i=0; 나는<64; i++) do
{
(j=0; j의 경우 {
if(СL j ⊕ CR j ⊕ PL j ⊕ F1(PR j , i)=0) then
티 i =티 i +1
}
}
확률 시퀀스 K1으로서 i의 값은 |T i -N/2| 최대값을 갖습니다.

충분한 수의 알려진 일반 텍스트가 주어지면 알고리즘은 첫 번째 라운드 하위 키 K1의 6비트의 올바른 값을 반환할 확률이 높습니다. 이는 변수 i가 K1과 같지 않으면 함수 F1(PR j, K)의 값이 무작위가 되고 왼쪽이 다음과 같은 i 값에 대한 방정식의 수라는 사실로 설명됩니다. 0과 같으면 N/2가 되는 경향이 있습니다. 하위 키가 올바르게 추측되면 왼쪽은 확률 12/64의 고정 비트 K3과 같습니다. 저것들. N/2와 상당한 편차가 있을 것입니다.

하위 키 K1의 6비트를 수신하면 유사하게 하위 키 K3의 6비트를 열 수 있습니다. 여러분이 해야 할 일은 방정식 (6)에서 C를 P로, K1을 K3으로 바꾸는 것뿐입니다.
PL ⊕ PR ⊕ CL ⊕ F3(CR, K3) = K1.
알고리즘 2는 DES 알고리즘의 암호 해독 프로세스가 암호화 프로세스와 동일하고 키 시퀀스만 반전되었기 때문에 올바른 K3 값을 반환합니다. 따라서 첫 번째 암호 해독 라운드에서는 키 K3이 사용되고 마지막 라운드에서는 키 K1이 사용됩니다.

6비트의 하위 키 K1과 K3을 수신한 공격자는 암호 K의 공통 키 12비트를 복구합니다. 라운드 키는 키 K의 일반적인 순열입니다. 성공적인 공격에 필요한 일반 텍스트의 수는 통계적 유사의 확률에 따라 달라집니다. 12비트 3라운드 DES 키를 해독하려면 100개의 공개/개인 텍스트 쌍이면 충분합니다. 16라운드 DES 키의 12비트를 열려면 약 244쌍의 텍스트가 필요합니다. 키의 나머지 44비트는 일반적인 무차별 대입을 사용하여 열립니다.

DES 표준은 미국 정부 및 상업 조직의 민감하지만 기밀이 아닌 정보에 대한 무단 액세스로부터 보호하도록 설계되었습니다. 표준의 기반이 되는 알고리즘은 매우 빠르게 확산되었으며 이미 1980년에 미국 국립 표준 기술 연구소의 승인을 받았습니다. 이 순간부터 DES는 이름뿐 아니라 실제로도 표준이 되었습니다. 데이터 네트워크의 정보를 암호화하고 해독하도록 설계된 소프트웨어 및 특수 마이크로컴퓨터가 등장합니다.

현재까지 DES는 상용 정보 보안 시스템에 사용되는 가장 일반적인 알고리즘입니다. 더욱이, 그러한 시스템에서 DES 알고리즘의 구현은 좋은 형태의 신호가 됩니다.

DES 알고리즘의 주요 장점:

· 길이가 56비트인 하나의 키만 사용됩니다.

· 하나의 패키지를 사용하여 메시지를 암호화한 후 다른 패키지를 사용하여 이를 해독할 수 있습니다.

· 알고리즘의 상대적 단순성으로 인해 정보 처리 속도가 빨라집니다.

· 알고리즘의 안정성이 충분히 높습니다.

DES는 56비트 키를 사용하여 64비트 데이터 블록을 암호화합니다. DES에서의 복호화는 암호화의 반대 작업이며 암호화 작업을 역순으로 반복하여 수행됩니다(명백한 내용에도 불구하고 항상 그런 것은 아닙니다. 나중에 서로 다른 알고리즘을 사용하여 암호화와 복호화가 수행되는 암호를 살펴보겠습니다). .

암호화 프로세스는 64비트 블록의 초기 비트 순열, 16개의 암호화 주기, 마지막으로 역방향 비트 순열로 구성됩니다(그림 1).

이 기사에 제공된 모든 테이블은 표준이므로 변경되지 않은 알고리즘 구현에 포함되어야 한다는 점을 즉시 알아야 합니다. 테이블의 모든 순열과 코드는 키를 선택하여 해독 프로세스를 최대한 어렵게 만드는 방식으로 개발자가 선택합니다. DES 알고리즘의 구조는 그림 1에 나와 있습니다. 2.

쌀. 2.

파일에서 다음 8바이트 블록 T를 읽습니다. 이는 다음과 같이 초기 순열 행렬 IP(표 1)를 사용하여 변환됩니다. 블록 T의 비트 58은 비트 1이 되고, 비트 50은 비트 2가 됩니다. 결과는 다음과 같습니다. T(0) = IP(T).

결과 비트 시퀀스 T(0)는 각각 32비트로 구성된 두 개의 시퀀스로 나뉩니다. L(0) - 왼쪽 또는 상위 비트, R(0) - 오른쪽 또는 하위 비트.

표 1: IP 초기 순열 행렬

58 50 42 34 26 18 10 02

60 52 44 36 28 20 12 04

62 54 46 38 30 22 14 06

64 56 48 40 32 24 16 08

57 49 41 33 25 17 09 01

59 51 43 35 27 19 11 03

61 53 45 37 29 21 13 05

63 55 47 39 31 23 15 07

그런 다음 16번의 반복으로 구성된 암호화가 수행됩니다. i번째 반복의 결과는 다음 공식으로 설명됩니다.

R(i) = L(i-1) xor f(R(i-1), K(i)),

여기서 xor는 배타적 OR 연산입니다.

함수 f를 암호화 함수라고 합니다. 해당 인수는 (i-1)번째 반복에서 얻은 32비트 시퀀스 R(i-1)과 64비트 키 K를 변환한 결과인 48비트 키 K(i)입니다. 구체적으로, 키 K(i)를 획득하기 위한 암호화 함수 및 알고리즘은 다음과 같다.

16번째 반복에서는 시퀀스 R(16)과 L(16)(순열 없음)이 얻어지며, 이는 64비트 시퀀스 R(16) L(16)로 연결됩니다.

그런 다음 이 시퀀스의 비트 위치는 IP -1 매트릭스(표 2)에 따라 재배열됩니다.

표 2: 역순열 행렬 IP -1

40 08 48 16 56 24 64 32

39 07 47 15 55 23 63 31

38 06 46 14 54 22 62 30

37 05 45 13 53 21 61 29

36 04 44 12 52 20 60 28

35 03 43 11 51 19 59 27

34 02 42 10 50 18 58 26

33 01 41 09 49 17 57 25

IP -1과 IP 행렬은 다음과 같은 관계가 있습니다. IP -1 행렬의 1번째 요소의 값은 40이고, IP ​​매트릭스의 40번째 요소의 값은 1이며, 2번째 요소의 값은 1입니다. IP -1 매트릭스의 요소는 8이고, 8번째 IP 매트릭스 요소의 값은 2와 같습니다.

데이터 암호 해독 프로세스는 암호화 프로세스와 반대입니다. 모든 단계는 역순으로 수행해야 합니다. 이는 해독할 데이터가 먼저 IP-1 매트릭스에 따라 재배열된 다음 암호화 프로세스에서와 같이 비트 시퀀스 R(16) L(16)에 대해 동일한 작업이 수행되지만 역순으로 수행됨을 의미합니다.

반복적인 암호 해독 프로세스는 다음 공식으로 설명할 수 있습니다.

R(i-1) = L(i), i = 1, 2,…, 16;

L(i-1) = R(i) xor f(L(i), K(i)), i = 1, 2,…, 16.

16번째 반복에서는 시퀀스 L(0)과 R(0)이 얻어지며, 이는 64비트 시퀀스 L(0) R(0)로 연결됩니다.

그런 다음 이 시퀀스의 비트 위치는 IP 매트릭스에 따라 재배열됩니다. 이러한 순열의 결과는 원래의 64비트 시퀀스입니다.

이제 암호화 함수 f(R(i-1), K(i))를 고려해보세요. 이는 그림 1에 개략적으로 표시되어 있습니다. 삼.


쌀. 삼.

함수 f의 값을 계산하려면 다음 행렬 함수가 사용됩니다.

E - 32비트 시퀀스를 48비트로 확장

S1, S2,…, S8 - 6비트 블록을 4비트 블록으로 변환,

P - 32비트 시퀀스의 비트 순열입니다.

확장 기능 E는 표에 의해 결정됩니다. 3. 이 표에 따르면 E(R(i-1))의 처음 3비트는 비트 32, 1, 2이고 마지막 비트는 31, 32, 1입니다.

표 3: 확장 기능 E

32 01 02 03 04 05

04 05 06 07 08 09

08 09 10 11 12 13

12 13 14 15 16 17

16 17 18 19 20 21

20 21 22 23 24 25

24 25 26 27 28 29

28 29 30 31 32 01

함수 E(R(i-1))의 결과는 48비트 키 K(i)를 사용하여 모듈로 2(xor 연산)가 추가된 48비트 시퀀스입니다. 결과 48비트 시퀀스는 8개의 6비트 블록 B(1) B(2) B(3) B(4) B(5) B(6) B(7) B(8)로 나뉩니다. 그건:

E (R(i-1)) xor K(i) = B(1) B(2)… B(8).

기능 S1, S2,…, S8은 표에 정의되어 있습니다. 4.

표 4

테이블로 4. 추가적인 설명이 필요합니다. 행렬 함수 Sj의 입력을 6비트 블록 B(j) = b1b2b3b4b5b6으로 가정하면 2비트 숫자 b1b6은 행렬의 행 번호를 나타내고 b2b3b4b5는 열 번호를 나타냅니다. Sj(B(j))의 결과는 지정된 행과 열의 교차점에 위치한 4비트 요소가 됩니다.

예를 들어 B(1)=011011입니다. 그러면 S1(B(1))은 1행과 13열의 교차점에 위치합니다. 1행의 13열에서 값은 5입니다. 이는 S1(011011)=0101을 의미합니다.

6비트 블록 B(1), B(2),…, B(8) 각각에 선택 연산을 적용하면 32비트 시퀀스 S1(B(1)) S2(B(2))를 얻습니다. S3(B(3))...S8(B(8)).

마지막으로 암호화 기능의 결과를 얻으려면 이 시퀀스의 비트를 재배열해야 합니다. 이를 위해 순열 함수 P가 사용됩니다(표 5). 입력 시퀀스에서 비트는 비트 16이 비트 1이 되고, 비트 7이 비트 2가 되는 식으로 재배열됩니다.

표 5: 순열 함수 P

따라서,

f (R(i-1), K(i)) = P (S1 (B(1)),… S8 (B(8)))

데이터 암호화 알고리즘에 대한 설명을 완료하려면 48비트 키 K(i), i=1...16을 획득하기 위한 알고리즘을 제시해야 합니다. 각 반복마다 초기 키 K에서 계산되는 새로운 키 값 K(i)가 사용됩니다. K는 위치 8,16,24,32,40,48에 위치한 8개의 패리티 비트가 있는 64비트 블록입니다. 56. 64.

제어 비트를 제거하고 나머지를 재배치하기 위해 초기 키 준비 기능 G가 사용됩니다(표 6).

표 6

초기 키 준비 매트릭스 G

57 49 41 33 25 17 09

01 58 50 42 34 26 18

10 02 59 51 43 35 27

19 11 03 60 52 44 36

63 55 47 39 31 23 15

07 62 54 46 38 30 22

14 06 61 53 45 37 29

21 13 05 28 20 12 04

변환 G(K)의 결과는 두 개의 28비트 블록 C(0)과 D(0)으로 나누어지고, C(0)은 키의 비트 57, 49, ..., 44, 36으로 구성됩니다. K 및 D(0)은 비트 63, 55,…, 12, 4개의 키 K로 구성됩니다. C(0) 및 D(0), C(i) 및 D(i)를 결정한 후 i=1… 16은 재귀적으로 결정됩니다. 이렇게 하려면 표에 표시된 대로 반복 횟수에 따라 왼쪽으로 1비트 또는 2비트 순환 시프트를 적용합니다. 7.

표 7. 키 계산을 위한 시프트 테이블

반복 횟수

시프트(비트)

결과 값은 행렬 H에 따라 다시 "혼합"됩니다(표 8).

표 8: 키 완성 매트릭스 H

14 17 11 24 01 05

03 28 15 06 21 10

23 19 12 04 26 08

16 07 27 20 13 02

41 52 31 37 47 55

30 40 51 45 33 48

44 49 39 56 34 53

46 42 50 36 29 32

키 K(i)는 시퀀스 C(i) D(i)의 비트 14, 17,…, 29, 32로 구성됩니다. 따라서:

K(i) = H (C(i) D(i))

키 계산 알고리즘의 블록 다이어그램은 그림 1에 나와 있습니다. 4.

쌀. 4.

원본 텍스트 복원은 이 알고리즘을 사용하여 수행되지만 먼저 K(15) 키를 사용한 다음 K(14) 키 등을 사용합니다. 이제 저자가 주어진 행렬 사용을 지속적으로 권장하는 이유를 이해해야 합니다. 악의적으로 행동하면 매우 비밀스러운 코드를 얻게 될 수도 있지만 스스로 해독할 수는 없습니다!

DES 알고리즘이 미국 암호화 표준으로 채택된 지 30년 이상이 지났습니다. DES는 가장 풍부하고 흥미로운 역사를 지닌 암호화 알고리즘입니다.

알고리즘 생성의 역사

세계에서 가장 유명한 암호학자 중 한 명인 Bruce Schneier는 그의 유명한 저서 "Applied Cryptography"에서 70년대 초반 정보 보안 도구 사용자의 문제를 설명했습니다. XX세기(당연히 철의 장막 반대편에 있는 사용자에 대해 이야기하고 있습니다):

데이터 암호화에 대해 일반적으로 인정되는 표준도 없고 단순히 널리 사용되는 정보 보안 알고리즘도 없었기 때문에 서로 다른 소프트웨어나 하드웨어 암호화 도구 간의 호환성은 의문의 여지가 없었습니다.

거의 모든 암호화 도구는 사용된 암호화 알고리즘, 암호화 강도, 올바르게 구현되었는지, 암호화 키가 올바르게 생성, 저장 및 사용되었는지, 도구에 문서화되지 않은 내용이 포함되어 있는지 등 내용이 다소 불분명한 "블랙 박스"였습니다. 개발자 등이 삽입한 기능 - 이 모든 매우 중요한 정보는 대다수의 암호화폐 구매자가 접근할 수 없었습니다.

미국의 NBS(National Bureau of Standards)는 이 문제에 관심을 갖고 있었습니다. 그 결과, 1973년에 암호화 표준에 대한 최초의 공개 경쟁이 발표되었습니다. NBS는 표준을 선택하기 위해 다음 기준을 충족하는 후보 알고리즘을 기꺼이 검토했습니다.

알고리즘은 암호화적으로 강력해야 합니다.

알고리즘은 빨라야 합니다.

알고리즘의 구조는 명확하고 정확해야 합니다.

암호화의 강도는 키에만 의존해야 하며 알고리즘 자체는 비밀이어서는 안 됩니다.

알고리즘은 다양한 목적에 쉽게 적용 가능해야 합니다.

알고리즘은 기존 하드웨어 구성 요소를 사용하여 하드웨어에서 쉽게 구현되어야 합니다.

관심 있는 조직이나 전문가가 구현에 충분한, 즉 "사각지대" 없이 알고리즘의 세부 사양을 NBS에 보낼 것이라고 가정했습니다. 또한 알고리즘은 일반적인 용도로 NBS에 의해 인증되고 모든 특허 및 수출 제한이 제거될 것이라고 가정했으며, 그 결과 그러한 표준은 모든 암호화 호환성 문제를 해결해야 합니다. 또한 NBS는 암호화 도구를 인증하는 기능을 맡았습니다. 즉, "블랙박스"는 과거의 일이 되어야 했습니다.

실제로 후보 알고리즘은 단 하나뿐이었다. 바로 ShM이 개발한 Lucifer 암호화 알고리즘이었다. (섹션 3.31 참조) 2년에 걸쳐 알고리즘이 개선되었습니다.

첫째, NBS는 미국 국가안보국(NSA, National Security Agency)과 함께 알고리즘에 대한 철저한 분석을 수행했으며 그 결과 상당히 상당한 수정이 이루어졌습니다.

둘째, 관심 있는 모든 조직과 개인의 의견과 비판이 고려되었습니다.

IBM, NBS 및 NSA의 공동 노력의 결과로 DES는 데이터(매우 민감한 정보 제외)를 암호화하는 알고리즘에 대한 미국 표준(이 표준의 최신 버전은 문서에 있음)으로 1977년 1월에 발표되었습니다. DES 알고리즘은 YuM이 특허를 받았지만 실제로 NBS는 이 알고리즘을 사용할 수 있는 무료 무제한 라이센스를 받았습니다. 대안이지만 덜 일반적으로 사용되는 알고리즘 이름은 DEA(Data Encryption Algorithm)입니다.

알고리즘의 주요 특징 및 구조

DES 알고리즘은 56비트만 사용하는 64비트 암호화 키를 사용하여 64비트 블록의 정보를 암호화합니다. 키 확장 절차는 아래에 자세히 설명되어 있습니다.

정보 암호화는 다음과 같이 수행됩니다(그림 3.56).

1. 표에 따라 64비트 데이터 블록에 대해 초기 순열을 수행한다. 3.16.

표 3.16

표는 다음과 같이 해석됩니다. 입력 비트 58의 값(이하 모든 비트는 1부터 시작하여 왼쪽에서 오른쪽으로 번호가 매겨짐)은 출력 비트 1에 배치되고, 비트 50의 값은 비트 2에 배치됩니다.



2. 이전 연산의 결과는 각각 32비트의 2개 하위 블록으로 나뉩니다.

쌀. 3.56 표시됨 0및 B 0), 16라운드가 수행됩니다.

다음 변환:

위에서 언급했듯이 64비트 암호화 키 중 DES 알고리즘은 56비트만 사용합니다. 8번째 비트마다 버려지고 알고리즘에서 어떤 방식으로도 사용되지 않으며, DES 알고리즘 구현에서 암호화 키의 나머지 비트 사용은 표준에 의해 제한되지 않습니다. 그림 1은 64비트 키에서 유효 비트 56개를 추출하는 절차를 보여줍니다. 3.59는 E로 지정됩니다. 추출 외에도 이 절차는 표에 따라 키 비트의 재배열도 수행합니다. 3.19 및 3.20.


표 3.19

표 3.20


순열의 결과로 두 개의 28비트 값 C와 D가 형성됩니다. 표 3.19는 C, 테이블에 대한 키 비트 선택을 정의합니다. 3.20 - 디.

그런 다음 16번의 변환이 수행되어 각각 라운드 키 K t 중 하나를 생성합니다. 키 확장 절차의 각 라운드에서 다음 작업이 수행됩니다.

1. C의 현재 가치와 가변 비트 수만큼 왼쪽으로 순환 이동 피. 1, 2, 9, 16라운드 = 1이면 나머지 라운드에서는 2비트의 순환 쉬프트가 수행됩니다.

2. 다와 압축 순열 CP가 적용된 56비트 값으로 결합되고, 그 결과는 48비트 라운드 키 K(. 압축 순열은 표 3.21에 따라 수행된다.

표 3.21

데이터를 복호화할 때 동일한 키 확장 절차를 사용할 수 있지만 라운드 키는 역순으로 적용됩니다. 또 다른 옵션이 있습니다. 키 확장 절차의 각 라운드에서 왼쪽으로 순환 시프트하는 대신 n 비트씩 오른쪽으로 순환 시프트를 수행합니다. 여기서 첫 번째 라운드의 경우 rc' = 0, 라운드의 경우 u' = 1입니다. 나머지 라운드에서는 2, 9, 16 및 n = 2입니다. 이 키 확장 절차는 암호 해독에 필요한 라운드 키를 즉시 제공합니다.

"즉시" 키 확장을 수행할 수 있는 기능(특히 암호화 및 암호 해독 중에 이러한 가능성이 존재하는 경우)은 암호화 알고리즘의 장점으로 간주됩니다. 이 경우 키 확장은 암호화와 동시에 수행될 수 있기 때문입니다. 현재 라운드가 아닌 다른 라운드의 키를 저장하는 데 메모리를 낭비하지 마세요.

ANSI에서는 데이터 암호화 알고리즘인 DEA(Data Encryption Algorithm), ISO에서는 DEA-1이라고 부르는 것이 20년 만에 세계 표준이 되었습니다. 수년 동안 다양한 공격의 맹공격을 견뎌냈으며 특정 제한 사항이 있지만 여전히 암호화 저항성으로 간주됩니다.

DES는 64비트 블록의 데이터를 암호화하는 블록 암호입니다. 64비트 일반 텍스트 블록이 알고리즘의 한쪽 끝에 입력되고 64비트 암호문 블록이 다른 쪽 끝에 출력됩니다. DES는 대칭 알고리즘입니다. 암호화와 암호 해독에 동일한 알고리즘과 키가 사용됩니다(키 사용법의 사소한 차이 제외). 키 길이는 56비트입니다. (키는 일반적으로 64비트 숫자로 표시되지만 매 8번째 비트는 패리티에 사용되며 무시됩니다. 패리티 비트는 키 바이트의 최하위 비트입니다.) 키는 56비트 숫자일 수 있습니다. , 언제든지 변경될 수 있습니다.

암호화 강도는 전적으로 키에 의해 결정됩니다. DES의 기본 구성 요소는 대체와 순열의 조합입니다. DES는 16개의 사이클로 구성됩니다.

변환 주기의 일반적인 보기:

Li와 Ri가 i번째 반복의 결과인 왼쪽과 오른쪽 절반이고, Ki가 루프 i의 48비트 키이고, f가 키에 대한 모든 대체, 순열 및 XOR을 수행하는 함수인 경우, 변환 루프는 다음과 같이 나타낼 수 있습니다.

치환 Fi(*)와 순열 T(*)를 고려하면 변환주기는 그림 1과 같이 표현될 수 있다.

각 DES 사이클은 치환 F i(*)와 순열 T(*)(순열이 생략된 마지막 16번째 사이클을 제외하고)의 두 가지 순차적 변환을 갖는 합성 암호임을 알 수 있습니다.

치환:

(L i , Ri ) = (R i −1 , Li −1 ) ⊕ f (R i −1 , K)

혁명이다.

Fi (Fi (L i -1 , Ri -1)) = Fi (R i -1 , Li -1) ⊕ (f (R i -1 , Ki))) = (R i - 1 , Li −1 ⊕(f (R i −1 , Ki)) ⊕ (f (R i −1 , Ki))) = (L i −1 , Ri −1)

그리고 대체

T(L i ′, R i ′) = (R i ′, Li ′),

역시 혁명이다.

T(T(Li',Ri')) = T(Ri',Li')=Li',Ri'

초기 및 최종 순열을 (IP) 및 (IP) − 1로 표시하면 직접 DES 변환(암호화)이 다음 기능을 구현합니다.

DES = (IP) F 1 TF 2 T … F 15 TF 16 (IP) − 1 ,

역방향 DES 변환(암호 해독)은 다음 기능을 구현합니다.

DES − 1 = (IP) −1 F 16 TF 15 T … F 2 TF 1 (IP).

따라서 DES는 Feistel 암호이며 암호화 및 복호화에 동일한 알고리즘이 사용된다는 유용한 특성을 충족하도록 설계되었습니다. 유일한 차이점은 키를 역순으로 사용해야 한다는 것입니다.


즉, 암호화 중에 키 K 1, K 2, K 3, ..., K 16이 사용된 경우 암호 해독 키는 K 16, K 15, K 14, ..., K 1이 됩니다. 이 알고리즘은 표준 64비트 산술 및 논리 연산만을 사용하므로 하드웨어에서 쉽게 구현할 수 있습니다.

DES는 64비트 일반 텍스트 블록에서 작동합니다. 초기 셔플링 후 블록은 각각 32비트의 오른쪽과 왼쪽 절반으로 분할됩니다. 그런 다음 데이터가 키와 결합되는 16개의 변환(함수 f)이 수행됩니다. 16번째 사이클 후에 오른쪽과 왼쪽 절반이 결합되고 알고리즘은 최종 순열(원본과 반대)로 끝납니다. 각 사이클(그림 참조)에서 키 비트가 이동된 다음 56개의 키 비트 중에서 48비트가 선택됩니다. 데이터의 오른쪽 절반은 확장 순열을 사용하여 48비트로 확장되고, 이동 및 순열된 키의 48비트와 XOR되고, 8개의 S-박스를 통과하여 32개의 새로운 비트를 형성하고, 다시 순열됩니다. 이 네 가지 작업은 f 함수에 의해 수행됩니다.

그런 다음 f의 결과는 다른 XOR을 사용하여 왼쪽 절반과 결합됩니다. 이러한 작업의 결과로 새로운 오른쪽 절반이 나타나고 이전 오른쪽은 새로운 왼쪽 절반이 됩니다. 이러한 단계가 16번 반복되어 16개의 DES 주기가 생성됩니다.

러시아 표준 - GOST 28147-89

GOST 28147-89는 256비트 키와 32개의 변환 주기를 갖춘 블록 암호로, 64비트 블록에서 작동합니다. 암호화 알고리즘은 아래에서 설명하는 추가 키도 사용합니다. 암호화를 위해 일반 텍스트는 먼저 왼쪽과 오른쪽 절반인 L과 R로 분할됩니다. i번째 사이클에서는 하위 키 K i가 사용됩니다.

L i = R i -1 ,
Ri = Li −1 ⊕ (f(R i −1 , Ki)).

함수 f는 다음과 같이 구현됩니다. 먼저 오른쪽 절반과 i번째 하위 키가 모듈로 2 32로 추가됩니다. 결과는 8개의 4비트 하위 시퀀스로 나누어지며, 각 하위 시퀀스는 자체 S-박스에 입력됩니다. GOST는 8개의 서로 다른 S-박스를 사용합니다. 처음 4비트는 첫 번째 S-박스에 들어가고, 두 번째 4비트는 두 번째 S-박스에 들어가는 식입니다. 각 S-박스는 0에서 15까지의 숫자 순열입니다. 예를 들어, S-box는 다음과 같습니다: 7,10,2,4,15,9,0,3,6,12,5,13,1,8,11. 이 경우 S-box의 입력이 0이면 출력은 7이 됩니다. 입력이 1이면 출력은 10이 되는 식입니다. 8개의 S-box는 모두 다르므로 실제로는 추가 키 자료입니다. 8개 S-박스의 출력은 모두 32비트 워드로 결합된 다음 전체 워드가 11비트만큼 왼쪽으로 회전됩니다. 마지막으로 결과는 왼쪽 절반과 XOR되어 새로운 오른쪽 절반이 생성되고 오른쪽 절반은 새로운 왼쪽 절반이 됩니다. 하위 키를 생성하기 위해 원래 256비트 키는 8개의 32비트 블록(k 1, k 2, ..., k 8)으로 나뉩니다. 각 주기는 자체 하위 키를 사용합니다. 복호화는 암호화와 동일한 방식으로 수행되지만 하위 키 k i 의 순서가 반전됩니다. 표준은 S-box가 생성되는 방법을 지정하지 않습니다.

DES와 GOST의 주요 차이점

DES와 GOST의 주요 차이점은 다음과 같습니다.

  • DES는 복잡한 절차를 사용하여 키에서 하위 키를 생성합니다. GOST에서는 이 절차가 매우 간단합니다.
  • DES에는 56비트 키가 있고 GOST에는 256비트 키가 있습니다. S-박스의 비밀 순열을 추가하면 GOST 비밀 정보의 총량은 약 610비트가 됩니다.
  • DES S-박스에는 6비트 입력과 4비트 출력이 있고, GOST S-박스에는 4비트 입력과 출력이 있습니다. 두 알고리즘 모두 8개의 S-박스를 사용하지만 GOST S-박스의 크기는 DES S-박스 크기의 1/4과 같습니다.
  • DES는 P-블록이라는 불규칙 순열을 사용하는 반면 GOST는 11비트 순환 왼쪽 시프트를 사용합니다.
  • DES에는 16사이클이 있고 GOST에는 32사이클이 있습니다.

GOST에 대한 강력한 공격은 전혀 쓸모가 없습니다. GOST는 256비트 키를 사용하며 비밀 S-박스를 고려하면 키 길이가 훨씬 길어집니다. GOST는 DES보다 차등 및 선형 암호 분석에 더 강한 것으로 보입니다. 임의의 GOST S-박스는 어떤 선택을 했을 때 고정 DES S-박스에 비해 높은 암호화 강도를 보장하지 않지만, 이들의 비밀성은 차등 및 선형 암호 분석에 대한 GOST의 저항력을 높입니다. 또한 이러한 암호 분석 방법의 효율성은 변환 주기 수에 따라 달라집니다. 주기가 많을수록 암호 분석이 더 어려워집니다. GOST는 DES보다 두 배 많은 주기를 사용하므로 차등 및 선형 암호화 분석이 실패할 수 있습니다.

GOST는 DES에 존재하는 확장 순열을 사용하지 않습니다. DES에서 이 순열을 제거하면 눈사태 효과가 감소하여 약화됩니다. GOST에 이러한 작업이 없으면 암호화 강도에 부정적인 영향을 미친다고 가정하는 것이 합리적입니다. 암호화 강도의 관점에서 볼 때 GOST에서 사용되는 산술 덧셈 연산은 DES의 XOR 연산보다 나쁘지 않습니다.

주요 차이점은 GOST에서 순열 대신 순환 이동을 사용하는 것 같습니다. DES를 재배열하면 눈사태 효과가 증가합니다. GOST에서 하나의 입력 비트를 변경하면 하나의 변환 주기의 하나의 S-box에 영향을 미치고, 이는 다음 주기의 두 S-box에 영향을 미치고 다음 주기의 세 블록에 영향을 미칩니다. 하나의 입력 비트를 변경하면 출력의 모든 비트에 영향을 주기까지 8사이클이 걸립니다. DES에서는 5사이클만 필요합니다. 그러나 GOST는 32개 사이클로 구성되고 DES는 16개 사이클로만 구성됩니다.

GOST 개발자는 암호화 강도와 효율성 사이의 균형을 이루려고 노력했습니다. Feistel의 설계를 기반으로 DES보다 소프트웨어 구현에 더 적합한 암호화 알고리즘을 개발했습니다. 암호화 강도를 높이기 위해 매우 긴 키가 도입되었으며 주기 수가 두 배로 늘어났습니다. 그러나 개발자의 노력이 DES보다 더 많은 암호화 알고리즘을 만드는 데 성공했는지 여부에 대한 질문은 여전히 ​​열려 있습니다.

Vorobyova E., Lukyanova A.

가장 일반적이고 가장 잘 알려진 대칭 암호화 알고리즘은 다음과 같습니다. DES (데이터 암호화 표준). 이 알고리즘은 1977년에 개발되어 1980년에 NIST(미국 국립표준기술연구소)에서 표준으로 채택되었습니다.

DES는 두 개의 분기가 있는 전통적인 Feishtel 네트워크입니다. 데이터는 56비트 키를 사용하여 64비트 블록으로 암호화됩니다. 이 알고리즘은 여러 라운드에 걸쳐 64비트 입력을 64비트 출력으로 변환합니다. 키 길이는 56비트입니다. 암호화 프로세스는 4단계로 구성됩니다. 첫 번째 단계는 64비트 소스 텍스트의 초기 순열(IP)(화이트닝)이며, 이 과정에서 비트는 표준 테이블에 따라 재정렬됩니다. 다음 단계는 이동 및 대체 연산을 사용하는 동일한 기능의 16개 라운드로 구성됩니다. 세 번째 단계에서는 마지막(16번째) 반복 출력의 왼쪽과 오른쪽 절반이 교체됩니다. 마지막으로 네 번째 단계에서는 세 번째 단계에서 얻은 결과에 대해 IP-1 순열을 수행합니다. IP-1 순열은 초기 순열의 역순입니다.

그림 4. DES 알고리즘

그림은 56비트 키를 사용하는 방법을 보여줍니다. 처음에는 순열 함수의 입력에 키가 제공됩니다. 그런 다음 16개 라운드 각각에 대해 하위 키 Ki는 왼쪽 순환 시프트와 순열의 조합입니다. 순열 함수는 각 라운드마다 동일하지만 키 비트의 반복적인 이동으로 인해 각 라운드의 하위 키 Ki가 다릅니다.

초기 순열과 그 역전은 표준 테이블에 의해 결정됩니다. M이 임의의 64비트인 경우 X = IP(M)은 재배열된 64비트입니다. 역순열 함수 Y = IP-1 (X) = IP-1 (IP(M))을 적용하면 원래 비트 시퀀스를 얻습니다.

라운드 데에 대한 설명

각 라운드에서 사용되는 변환 순서를 살펴보겠습니다.

그림 5. DES 알고리즘의 라운드 그림

64비트 입력 블록은 16비트를 통과합니다. 라운드, 각 반복은 중간 64비트 값을 생성합니다. 각 중간 값의 왼쪽과 오른쪽은 L과 R로 표시되는 별도의 32비트 값으로 처리됩니다. 각 반복은 다음과 같이 설명할 수 있습니다.

R i = Li -1 F(R i -1 , Ki)

따라서 왼쪽 절반 Li의 출력은 오른쪽 절반 Ri-1의 입력과 같습니다. Ri의 오른쪽 절반의 출력은 Li-1에 XOR 연산을 적용하고 Ri-1과 Ki에 따라 함수 F를 적용한 결과이다.

함수 F를 좀 더 자세히 살펴보겠습니다. 함수 F의 입력으로 제공되는 Ri는 32비트의 길이를 갖는다. 먼저, Ri는 순열과 16비트 확장을 지정하는 테이블을 사용하여 48비트로 확장됩니다. 확장은 다음과 같이 발생합니다. 32비트는 4비트 그룹으로 분할된 다음 인접한 두 그룹의 가장 바깥쪽 비트를 추가하여 6비트로 확장됩니다. 예를 들어 입력 메시지의 일부인 경우

Efgh ijkl mnop . . .

확장의 결과는 메시지입니다.

Defghi hijklm lmnopq. . .

결과 48비트 값은 48비트 하위 키 K i 와 XOR됩니다. 그런 다음 결과 48비트 값이 대체 함수에 입력되어 32비트 값이 생성됩니다.

대체는 8개의 S-박스로 구성되며, 각 S-박스는 6비트를 입력으로 받고 4비트를 출력으로 생성합니다. 이러한 변환은 특수 테이블로 정의됩니다. S-box 입력 값의 첫 번째와 마지막 비트는 테이블의 행 번호를 결정하고, 중간 4비트는 열 번호를 결정합니다. 행과 열의 교차점에 따라 4비트 출력이 결정됩니다. 예를 들어, 입력이 011011이면 행 번호는 01(1행)이고 열 번호는 1101(13열)입니다. 1행과 13열의 값은 5입니다. 즉, 출력은 0101입니다.

그런 다음 결과 32비트 값은 순열 P를 사용하여 처리됩니다. 그 목적은 다음 암호화 라운드에서 각 비트가 다른 S-박스에 의해 처리될 가능성이 있도록 비트를 최대한 재정렬하는 것입니다.

개별 라운드 Ki의 키는 48비트로 구성됩니다. 키 Ki는 다음 알고리즘을 사용하여 획득됩니다. 알고리즘의 입력으로 사용되는 56비트 키의 경우 먼저 PC-1(Permuted Choice 1) 테이블에 따라 순열이 수행됩니다. 결과 56비트 키는 각각 C0과 D0으로 표시되는 두 개의 28비트 부분으로 나뉩니다. 각 라운드에서 C i 와 Di 는 라운드 수에 따라 독립적으로 1 또는 2 비트씩 왼쪽으로 주기적으로 이동됩니다. 결과 값은 다음 라운드의 입력입니다. 이는 또한 함수 F(R i-1, Ki)에 대한 입력인 48비트 출력 값을 생성하는 Permuted Choice 2(PC-2)에 대한 입력이기도 합니다.

복호화 과정은 암호화 과정과 유사합니다. 알고리즘에 대한 입력은 암호문이지만 키 Ki는 역순으로 사용됩니다. 첫 번째 라운드에는 K 16이 사용되고 마지막 라운드에는 K 1이 사용됩니다. i번째 암호화 라운드의 출력을 L i ||R i 로 둡니다. 그러면 (16-i)번째 복호화 라운드의 해당 입력은 Ri ||L i 가 됩니다.

암호 해독 프로세스의 마지막 라운드 후에 출력의 두 절반이 교환되어 최종 순열 IP-1의 입력이 R 16 ||L 16 이 됩니다. 이 단계의 출력은 일반 텍스트입니다.



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: