파일 암호화를위한 AES vs Blowfish


106

바이너리 파일을 암호화하고 싶습니다. 내 목표는 암호가없는 사람이 파일을 읽지 못하도록하는 것입니다.

키 길이가 같은 AES 또는 Blowfish 중 더 나은 솔루션은 무엇입니까? 공격자가 파일 크래킹을위한 훌륭한 리소스 (소프트웨어, 지식, 돈)를 가지고 있다고 가정 할 수 있습니다.


4
Blowfish는 10 년이 넘었습니다. aes 대 twofish를 의미한다고 생각합니다.
rook

당신 말이 맞아요. 다행히 Jerry는 저에게 좋은 주제를 요약했습니다.
mimrock 2010

@Rook 나이가 많을수록 보안 알고리즘의 경험 법칙이 좋습니다. 새로운 알고리즘은 보안보다 성능에 더 관심이있는 사람들을위한 것입니다.
2008 년

답변:


187

아마 AES. Blowfish는 Twofish의 직접적인 전신이었습니다. Twofish는 Bruce Schneier가 AES를 생산 한 대회에 참가했습니다. AES가 된 Rijndael이라는 항목보다 열등하다고 판단되었습니다.

흥미로운 점은 경쟁의 한 지점에서 모든 참가자에게 암호 순위에 대한 의견을 제시하라는 요청을 받았습니다. 각 팀이 자신의 출품작을 최고로 선택한 것은 놀라운 일이 아니지만 다른 모든 팀이 Rijndael을 2 위로 꼽았습니다.

즉, 절대적인 보안 측면에서 Blowfish를 선호 할 수있는 Blowfish 대 AES의 기본 목표에는 몇 가지 기본적인 차이점이 있습니다. 특히, Blowfish는 초기 키 설정을 상당히 느린 작업으로 만들어 무차별 대입 (키 소진) 공격을 어렵게 만듭니다. 일반 사용자의 경우 이는 거의 중요하지 않지만 (여전히 1 밀리 초 미만 임)이를 깨기 위해 초당 수백만 개의 키를 시도하는 경우 차이가 상당히 큽니다.

그러나 결국 나는 그것을 주요 이점으로 보지 않습니다. 일반적으로 AES를 추천합니다. 다음 선택은 아마도 Serpent, MARS 및 Twofish 일 것입니다. Blowfish는 그 후에 어딘가에 올 것입니다 (Blowfish보다 앞서 추천 할 몇 가지 다른 것이 있지만).


11
다른 알고리즘은 Rijndael보다 더 안전한 것으로 생각되지만 보안이 충분히 좋다고 판단되는 동안 매우 좋은 성능을 제공했습니다. 암호 알고리즘을 설계하는 것은 항상 보안과 성능 사이의 균형입니다.
CodesInChaos 2010

10
@CodeInChaos : 당신의 관점에 따라, 그것은 적어도 사실입니다-Serpent는 아마도 가장 보수적 인 디자인이었을 것입니다. 특히, 그들은 16 라운드 버전으로 충분할 것이라고 생각하여 32 라운드로 두 배로 늘 렸습니다. 현재 알려진 최선의 공격은 11 발에만 효과적입니다. 원래 질문이 AES와 Blowfish에 대한 선택을 특별히 제한하지 않았고 단순히 가장 안전하고 합리적으로 잘 알려진 암호를 요청했다면 아마도 Serpent라고 말했을 것입니다 ...
Jerry Coffin

또한 CompTIA Security + 시험을 공부할 때 "흥미로운 제쳐두고"라는 몇 가지 질문과 출처가 나왔습니다. 사소한 것들은 결국 그렇게 쓸모가 없을 수도 있습니다!
에버 라이트

Blowfish가장 빠른
user924

22

블록 암호의 블록 크기도 중요한 보안 고려 사항이라는 사실은 잘 알려져 있지 않습니다 (키 크기만큼 중요하지는 않지만).

Blowfish (및 3DES 및 IDEA와 같은 같은 시대의 대부분의 다른 블록 암호)는 64 비트 블록 크기를 가지고 있으며, 이는 오늘날 일반적인 대용량 파일 크기 (파일이 클수록 블록 크기가 작을수록 불충분 한 것으로 간주됩니다) , 암호문에서 반복되는 블록의 확률이 높으며 이러한 반복 된 블록은 암호화 분석에 매우 유용합니다.

반면 AES의 블록 크기는 128 비트입니다. 이 고려 사항만으로도 Blowfish 대신 AES를 사용하는 것이 정당합니다.


2
64 비트 블록 크기의 장점은 (3-) DES를 대신하여 새 알고리즘을 이전 응용 프로그램에 쉽게 놓을 수 있다는 것입니다.
dajames

블록 크기는 흥미로운 주장입니다. 몇 달 전에 대칭 암호의 블록 크기를 임의의 길이로 확장 할 수 있다는 이론을 설명하는 기사를 썼습니다. cubicspot.blogspot.com/2013/02/…
CubicleSoft 2013-09-05

16

알고리즘 자체에 관해서는 AES와 함께 갈 것입니다. 간단한 이유는 NIST에 의해 승인되었고 수년 동안 피어 리뷰 및 암호화가 이루어지기 때문입니다. 그러나 실제 응용 프로그램에서는 정부가 비밀로 유지하려는 파일을 저장하지 않는 한 (이 경우 NSA가 AES와 Blowfish보다 더 나은 알고리즘을 제공 할 것입니다) 이러한 알고리즘 중 하나를 사용하여 너무 많은 차이를 만들지 마십시오. 모든 보안은 키에 있어야하며 두 알고리즘 모두 무차별 대입 공격에 저항력이 있습니다. Blowfish는 전체 16 라운드를 사용하지 않는 구현에서만 약한 것으로 나타났습니다. 그리고 AES가 더 새로워졌지만 그 사실은 당신이 BlowFish에 더 의지하게 만들 것입니다 (나이 만 고려한다면). 이렇게 생각해보세요.

이 두 알고리즘을 살펴보고 알고리즘 중 하나를 선택하는 대신 키 생성 체계를 살펴 보지 않겠습니까? 파일의 암호를 해독하려는 잠재적 인 공격자는 거기에 앉아서 사용할 수있는 이론적 인 키 집합을 생각 해낸 다음 몇 달이 걸릴 수있는 무차별 대입 공격을 수행하지 않을 것입니다. 대신 그는 서버 하드웨어를 공격하거나, 어셈블리를 리버스 엔지니어링하여 키를 확인하거나, 키가있는 구성 파일을 찾거나, 친구를 협박하여 컴퓨터에서 파일을 복사하도록하는 등 다른 것을 악용 할 것입니다. . 그것들은 알고리즘이 아니라 당신이 가장 취약한 곳이 될 것입니다.


4
AES는 최근 Wikipedia의 "깨진 암호"목록에 추가되었지만, Blowfish에 대한 최악의 공격은 4 라운드에 대한 것이며, 끊어진 암호 목록에서 분명히 누락되었습니다. 사람들이 여전히 Blowfish를 사용하고 있다는 사실에 놀란 것에 대한 Bruce의 의견은 구현 자들을 멀리하게합니다. 그러나 깨지지 않고 가변 키 크기를 지원하고 AES보다 큰 키 크기를 지원하며 프로그래밍 관점에서 대부분의 다른 대칭 블록 암호에 비해 구현하기 쉽습니다. 복어는 모든 대칭 암호에 가장 큰 위협이되는 시간의 테스트에서 살아 남았습니다.
CubicleSoft 2013 년

나는 AES가 거의 부서지지 않는다는 데 동의합니다. 그러나 앞으로 10 년 정도 후에는 새로운 표준이 필요할 것입니다. 또한 AES 결선 진출자는 환상적인 암호였습니다. 뱀은 실제로 많은 사람들이 깨지기 어려운 것으로 간주되지만 AES가 가장 우아했습니다. (암호화 및 복호화를 수행하는 방법을 살펴보면 그렇습니다.)
nerdybeardo

8

AES.

(나는 또한 당신이 훨씬 오래되고 약한 복어가 아닌 twofish를 의미한다고 가정하고 있습니다)

둘 다 (AES 및 twofish) 좋은 알고리즘입니다. 그러나 그들이 동등하거나 두 마리의 물고기가 기술적 장점에서 약간 앞서더라도 나는 여전히 AES를 선택했을 것입니다.

왜? 널리 알려짐. AES는 정부 암호화의 표준이므로 수백만 개의 다른 기관에서도이를 사용합니다. 재능있는 암호 분석가는 AES에서 결함을 발견 한 후 "돈을 벌기 위해"더 많은 것을 얻습니다.

모호성은 암호화를 보호하지 않습니다. 알고리즘을 찾고, 연구하고, 조사하고, 공격하는 시체가 더 많을수록 좋습니다. 당신은 가능한 가장 "검토 된"알고리즘을 원하는데 바로 지금 AES입니다. 알고리즘이 강렬하고 지속적인 조사의 대상이 아닌 경우 강도에 대한 신뢰도를 낮춰야합니다. 물론 twofish는 손상되지 않았습니다. 그것은 암호의 강도 때문입니까 아니면 단순히 사람이 충분하지 않아서 자세히 살펴 보았 기 때문입니까 ..... YET


5

알고리즘 선택은 그다지 중요하지 않습니다. 더 잘 연구되었으므로 AES를 사용합니다. 훨씬 더 중요한 것은 올바른 작동 모드와 키 유도 기능을 선택하는 입니다.

빠른 랜덤 액세스를 원하는 경우 영감을 얻기 위해 TrueCrypt 형식 사양을 살펴볼 수 있습니다. 랜덤 액세스가 필요하지 않은 경우 XTS는 최적 모드가 아닙니다. 다른 모드에는없는 약점이 있기 때문입니다. 또한 일종의 무결성 검사 (또는 메시지 인증 코드)를 추가 할 수도 있습니다.


1
물론, PBKDF2와 같은 좋은 키 유도 함수를 사용하는 것이 매우 중요합니다.
caf 2011

3

이 답변이 귀하의 질문의 용어를 위반한다는 것을 알고 있지만 귀하의 의도에 대한 정답은 간단하다고 생각합니다. 가장 긴 키 길이를 허용하는 알고리즘을 사용하고 정말 좋은 키를 선택했는지 확인하십시오. 가장 잘 알려진 알고리즘 (암호화 및 연대순)의 성능의 사소한 차이는 몇 가지 추가 키 비트로 인해 압도됩니다.


7
동의 할 수 없습니다. IBM의 Lucifer 암호 (DES의 이전 버전)는 128 비트 키로 사용되었지만 DES (56 비트 키만 사용)는 차등 암호 분석이 (재) 발견되면 훨씬 더 안전하다는 것이 밝혀졌습니다.
Jerry Coffin

3
단순히 키 길이를 보는 것은 매우 좋지 않은 메트릭입니다.
Gerald Davis

2
이것이 제가 "가장 잘 알려진 알고리즘"이라고 말한 이유입니다. Blowfish 128 비트가 AES 128 비트보다 열등하다고 생각한다면, Blowfish 256 비트가 AES 128 비트를 물 밖으로 날린다는 데 동의해야합니다. 마찬가지로 키 생성 및 관리도 마찬가지로 중요합니다. 키가 "암호"인 경우 사용하는 알고리즘은 전혀 중요하지 않습니다. 내가 말하는 것은 OP가 아마도 잘못된 것을보고 있다는 것입니다.
Mike Jones

2
키는 암호에서 파생된다는 질문에 명시되어 있습니다. 암호를 무차별 대입하여 시스템을 파괴하는 것은 여기에 언급 된 알고리즘을 공격하는 것보다 훨씬 쉬울 것입니다. 키가 암호에서 파생 된 경우 Keylength는 거의 완전히 관련이 없습니다.
dajames

내가했던 것과 똑같은 말을 했음에도 불구하고 내 대답을 적어 두 셨나요? 키 길이를 말하고 정말 좋은 키를 선택했습니다. "좋은"의 정의에 따라 키의 모든 부분을 채우지 않았다면 키 좋은 것으로 간주 하시겠습니까?
Mike Jones

3

두 알고리즘 (AES 및 twofish) 모두 매우 안전한 것으로 간주됩니다. 이것은 다른 답변에서 광범위하게 다루어졌습니다.

그러나 AES는 현재 2016 년에 널리 사용되기 때문에 ARM 및 x86과 같은 여러 플랫폼에서 특히 하드웨어 가속이 적용되었습니다. 하드웨어 가속 이전의 twofish보다 훨씬 빠르지는 않지만 이제 전용 CPU 명령 덕분에 AES가 훨씬 빠릅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.