Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

Blowfish 알고리즘에서 하위 키는 어떻게 생성됩니까?

<시간/>

Blowfish는 1993년 12월 Brute Schneier가 발명한 대칭 블록 암호 알고리즘입니다. Blowfish는 DES 또는 IDEA를 대체합니다. 가장 인기 있는 feistel 네트워크 암호 중 하나는 Blowfish입니다. Blowfish 알고리즘은 64비트 블록 크기와 42비트에서 448비트 사이의 가변 키 길이를 갖습니다. 알고리즘은 키 확장 부분과 데이터 암호화 부분을 포함합니다.

Blowfish는 최대 448비트의 키를 여러 하위 키 배열로 생성하여 총 1042개의 32비트 값 또는 4168바이트입니다. 매우 높은 키 종속 S-박스를 지원하고 16회 반복을 가능하게 하는 16라운드 feistel 시스템입니다.

모든 라운드는 키 및 데이터 종속 대체 및 키 종속 순열로 조정됩니다. 32비트 워드 및 XOR 연산은 추가로 구현됩니다. P 어레이와 4개의 32비트 S 박스가 있습니다.

P-어레이는 18개의 32비트 하위 키를 포함하고 각 S-박스는 256개의 항목을 포함합니다. 입력은 64비트 데이터 요소입니다. Sub 키 생성 과정은 다음과 같습니다 -

  • Blowfish는 매우 많은 수의 하위 키를 사용합니다. 이러한 키는 암호화 및 암호 해독이 나타나기 전에 준비되어 있어야 합니다. 32비트에서 448비트까지의 키 크기 필드입니다. 즉, 키 크기의 범위는 1~14워드이며 각각은 32비트의 워드를 포함합니다. 이 키는 다음과 같이 배열에 저장됩니다 -

    K1, K2,….Kn 여기서 1 ≤ n ≤ 14

  • 18개의 32비트 하위 키를 포함하는 P 어레이의 개념 -

    P1,P2,………….,P18.

    P 어레이의 생성은 이후에 설명됩니다.

  • 각각 256개의 항목을 포함하는 4개의 32비트 S-Box가 있습니다. −

    S1, 0, S1, 1… S1, 255

    S2, 0, S2, 1… S2, 255

    S3, 0, S3, 1… S3, 255

    S4, 0, S4, 1… S4, 255

    P-어레이 생성은 이후에 정의됩니다.

  • P-어레이를 먼저 초기화한 다음 고정 문자열로 4개의 S-박스를 초기화할 수 있습니다.

  • P 배열과 4개의 S 상자는 Pi의 16진수로 표시됩니다.

  • 키 비트(즉, P1 XOR(키의 32비트), P2 XOR(키의 32비트))에 필요한 K 배열의 단어를 재사용하는 K 배열과 P 배열의 비트 XOR 연산을 구현할 수 있습니다.

  • 64비트 블록을 암호화하고 다음 암호화 프로세스를 사용하여 공통 P 및 S 어레이로 모두 0을 암호화할 수 있습니다.

  • 암호화의 출력과 p1과 p2라는 새로운 출력으로 p1과 p2의 자리를 만들 수 있습니다.

  • 현재 P 상자와 S 상자를 활용하여 3단계의 출력을 암호화할 수 있으며 결과로 암호화된 텍스트로 p3 및 p4를 변환하고 새 출력을 p3 및 p4라고 합니다.

  • P 배열 i.eP1, P2의 모든 요소를 ​​얻을 수 있을 때까지 다음 단계를 반복할 수 있습니다.