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의 모든 요소를 얻을 수 있을 때까지 다음 단계를 반복할 수 있습니다.