2010. 4. 25. 12:52

BlowFish에 관해서.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

이글에서 사용 되는 모든 자료는 원문링크 를 참고 하여 작성되었습니다.

안녕하세요 Geeks_Company 입니다.

오늘 설명 드릴 알고리즘은 대칭키 알고리즘 중 공개 알고리즘인 BlowFish 입니다.

BlowFish는 1993년  Bruce Schneier 에 의해서 제안되었으며, 복잡한 키 스케쥴링 과 Sbox 의존성이 특징입니다.

S box는 총 4 * 256개의 변수를 갖으며, 위의 변수들은 pi에서 중복없는 값들을 토대로 이루어집니다.

비밀키를 이용 하여 초기화된 , S box와  총 18의 키로 구성된 P Array는 BlowFish 암복호화시 사용 됩니다.

BlowFish의 장점은 사전 공격의 방어와  공개 알고리즘 이며 이미 많은 네트워크 게임의 패킷 암/복호화에 사용 됩니다.

이제 알고리즘의 핵심에 관해서 설명 드리겠습니다.


http://en.wikipedia.org/wiki/File:BlowfishDiagram.png

왼쪽의 그림의 원본은 위의 링크를 참조하였습니다.

BlowFish의 핵심 암/복호화 루틴은 다른 대칭키의 암복호화 원리와 크게 다르지 않습니다. S box 와 P array를 평문과 함께 Xor 연산을 한후 나온 암호 문을 Inverse 순서로 Xor 하여 평문을 구합니다.


암호화시 간략한 흐름도 입니다.

1. 32 bit 의 평문을 P array의 1번째 구성 원소와 Xor을 시킵니다.
2. 과정 1 에서 Xor된 결과 값을 BlowFish_F 펑션을 통과 시킵니다.
3. 과정 2에서 나온 결과값을 32bit를 우측 값과 Xor 시킵니다.
4. 과정 3에서 나온 값을 좌측에 저장, 과정 1번의 값을 우측에 저장.
5. 과정 1-4를 총 16번 반복 합니다.
6. 16번 반복후 나온 좌변을 P 18번째 원소와 xor 시키값을 좌변에 저장 하고, P 17번째 원소와 우측 값과 xor 시킨 값을 우변에 저장 합니다.
7 암호화로 나온 좌변과 우변을 결과 값으로 리턴 시킵니다.


복호화 시에는 P array 의 18 번째 원소 를 암호문 과 Xor을 시킨후 암호화시에 사용된 반복 루틴(과정 2- 5) 을 사용한후 나온 좌변값에 P array 의 0번째 원소 와 Xor 시키고, 우변 값을 P array 의 번째 1원소 Xor을 시키면 복호화 작업은 끝납니다.

'관련자료' 카테고리의 다른 글

Burrows–Wheeler transform  (0) 2010.05.06
Huffman Coding  (0) 2010.05.03
Thread의 최대 생성 수는 얼마 일까?  (0) 2010.04.19
RSA 기반의 공개키 시스템.  (0) 2010.04.14
D-H 키 교환 방식에 관해서.  (0) 2010.04.12