본문 바로가기
cryptology

Twofish 암호화란?

by jinhyuk._.c 2022. 8. 17.

Twofish 암호화란?

암혹학에서 투피시(Twofish)는 블록크기가 128비트, 키 크기가 최대 256비트인 대칭키 블록암호시스템중에 하나입니다.

이 암호 시스템은 표준화 대상으로 선정되지 못하였고 초기의블록 암호 블로피시와 관련이 있습니다.

 

블로피시란( Blowfish)?

블로피시는 1993년 브루스 슈나이어가 설계한 키 방식의 대칭형 블록 암호입니다. 수많은 암호화 제품군에 포함되어 있습니다. 블로피시는 64비트 블록 크기, 또 32비트에서 최대 448비트에 이르는 가변 키 길이를 갖추고 있습니다. 16 라운드 파이스텔 암호로서 대형 키 의존 S 박스를 이용합니다.

 

다음은 투피시 알고리즘의 다이어그램입니다.

투피시 알고리즘의 다이어그램

투피시의 구별되는 특징으로는 미리 연산된 키 의존 S-상자들의 이용, 그리고 상대적으로 복잡한 키 스케줄을 들 수 있습니다. n비트 키의 절반은 실제 암호화 키로 사용되며 나머지 n비트 키의 절반은 암호 알고리즘 수정에 사용됩니다. 그리고 투피시는 다른 디자인들로부터 일부 구성요소들을 가져오고 있는데, 이를테면 SAFER 암호의 의사 아다마르 변환이 있습니다.  또한 투피시는 DES와 같은 파이스텔 구조를 지니고 있습니다.

 

추가 정보로 투피시 암호는 특허를 받지 않았으며 참조 구현체는 퍼블릭 도메인으로 배치되어 있습니다.

그 결과, 투피시 알고리즘은 어떠한 경우에라도 제약 없이 이용이 가능하고 OpenPGP 표준에 포함된 몇 안 되는 암호들 가운데 하나이빈다. 그러나 투피시는 더 오래 사용되어 온 블로피시에 비해 더 많이 사용되는 편은 아닙니다.

 

그러면 투피시 암호호는 안전한가?

 

많은 사람들은 다음과 같은 질문을 많이 합니다.

 

"NIST가 DES를 대체하는데  사용하지 않으려는 경우 Twofish는 안전한가요"

 

투피시는 사용하기에 매우 안전합니다. NIST가 투피쉬 활용을 꺼린 이유는 진다엘 암호화 알고리즘에 비해 속도가 느리기 때문입니다. 투피시가 매우 안전한 이유 중 하나는 무차별로하는 대입 공격에 거의 영향을 받지 않는 128비트 키를 사용하기 때문입니다. 128비트 키 암호화 메시지를 무차별로 대입하는 데 필요한 처리능력과 시간으로 인해 암호화된 메세지를 해독하는 데 수십 년 혹은 그 이상이 걸릴 수 있으므로 암호화된 데이터에 접근할 수 없습니다. 그러나 투피시가 모든 공격에 영향을 받지 않는다는 뜻은 아닙니다.

 

 투피시의 암호화 알고리즘의 일부는 미리 계산된 키 종속 대체를 사용하여 암호문을 생성합니다. 이 값을 미리 계산하면 투피시가 부채널 공격에 취약해 지지만 대체가 있는 키의 종속성은 부채널 공격으로부터 보호하는 데 도움이 됩니다. 투피시에 여러 공격이 있었지만 알고리즘의 창시자인 '브루스 슈나이어(Bruce Schneier)'는 암호 분석 공격이 아니라고 주장하였습니다. 이는 Twofish 알고리즘의 유요한 공격이 아직 발생하지 않았음을 의미합니다.

 

Twofish는 어디에서 사용이 되나?


AES 암호화 시스템 처럼 Twofish 암호화 시스템은 일반적으로 사용되는 암호화 알고리즘은 아니지만 오늘날에도 여전히 많이 사용되고 있습니다. 암호화 방법에 Twofish 암호화 시스템을 사용하는 가장 잘 알려진 제품은 다음과 같습니다.

- PGP(Pretty Good Privacy) : PGP는 Twofish를 사용하여 이메일을 암호화하는 암호화 알고리즘입니다. 이메일의 데이터는 암호화되지만 발신자와 제목은 암호화되지 않습니다.


- GnuPG : GnuPG는 사용자가 통신에서 데이터를 암호화하여 보낼 수 있도록 하는 OpenPGP의 구현입니다. GnuPGP는 키 관리 시스템과 모듈을 사용하여 공개 키 경로에 액세스합니다. 이러한 공개 키 경로는 다른 사용자가 인터넷에 게시한 공개키를 제공하므로, 개인키로 암호화된 메시지를 보내면 공개키 경로에 액세스할 수 있는 모든 사람이 해당 메시지를 복호화할 수 있습니다.

 

- TrueCrypt : TrueCrypt는 사용자에게 투명한 암호화 방법으로 장치의 데이터를 암호화합니다. TrueCrypt는 사용자의 컴퓨터에서 로컬로 작동하며 데이터가 로컬 컴퓨터를 떠날 때 자동으로 데이터를 암호화합니다. 예를 들어 사용자가 로컬 컴퓨터에서 외부 데이터베이스로 파일을 보내는 경우를 들 수 있습니다. 데이터베이스로 전송된 파일은 로컬 컴퓨터를 떠날 때 암호화됩니다.


- KeePass : KeePass는 저장된 비밀번호를 암호화하고 Twofish를 사용하여 비밀번호를 생성하는 비밀번호 관리 소프트웨어입니다.

 

반응형

'cryptology' 카테고리의 다른 글

공개키 암호화란?  (2) 2022.09.01
SEED 암호화란?  (0) 2022.08.31
ARIA 암호란?? ARIA 에 대해 알아보자  (0) 2022.08.16
AES 란? AES 암호란?  (0) 2022.08.12
대칭키 암호 시스템과 DES 에 대해 알아보자  (0) 2022.08.12

댓글