문제

우리는 프로젝트에 대해 몇 가지 엄격한 보안 요구 사항을 수행하려고 하며 고성능 암호화를 많이 수행해야 합니다.

PKI가 대칭 암호화보다 훨씬 느리고 복잡하다는 것을 알고 있다고 생각하지만 내 감정을 뒷받침할 숫자를 찾을 수 없습니다.

도움이 되었습니까?

해결책

예, 순수 비대칭 암호화는 대칭 암호화(예: DES 또는 AES)보다 훨씬 느립니다. 이것이 바로 실제 애플리케이션이 하이브리드 암호화:값비싼 공개 키 작업은 실제 메시지를 암호화하는 데 사용될 대칭 알고리즘에 대한 암호화 키를 암호화(및 교환)하기 위해서만 수행됩니다.

공개 키 암호화가 해결하는 문제는 공유된 비밀이 없다는 것입니다.대칭 암호화를 사용하면 키 비밀을 유지하기 위해 관련된 모든 당사자를 신뢰해야 합니다.이 문제는 성능(하이브리드 접근 방식으로 완화 가능)보다 훨씬 더 큰 문제입니다.

다른 팁

OS X 10.5.5 및 OpenSSL 기본 빌드를 실행하는 Macbook에서 "openssl 속도"는 AES-128-CBC를 초당 46,000 1024비트 블록으로 기록합니다.동일한 상자는 초당 169개의 서명으로 1024비트 RSA를 기록합니다.AES-128-CBC는 "교과서" 블록 암호화 알고리즘이고 RSA 1024는 "교과서" 공개 키 알고리즘입니다.그것은 사과 대 오렌지이지만 대답은 다음과 같습니다. RSA는 훨씬 더 느립니다..

그러나 이것이 공개 키 암호화를 사용해서는 안되는 이유는 아닙니다.실제 이유는 다음과 같습니다.

  1. 공개 키 암호화 작업은 원시 데이터 암호화용이 아닙니다..Diffie-Hellman 및 RSA와 같은 알고리즘은 블록 암호화 알고리즘에 대한 키를 교환하는 방법으로 고안되었습니다.예를 들어 보안 난수 생성기를 사용하여 AES용 128비트 난수 키를 생성하고 RSA로 해당 16바이트를 암호화합니다.

  2. RSA와 같은 알고리즘은 AES보다 "사용자 친화적"이 훨씬 떨어집니다..무작위 키를 사용하면 AES에 제공하는 일반 텍스트 블록이 키가 없는 누구에게나 무작위로 나올 것입니다.실제로 RSA의 경우는 그렇지 않습니다. RSA는 AES보다 더 그렇습니다. 단순한 수학 방정식입니다.따라서 키를 적절하게 저장하고 관리하는 것 외에도 RSA 일반 텍스트 블록의 형식을 지정하는 방식에 매우 주의해야 합니다. 그렇지 않으면 취약점이 발생하게 됩니다.

  3. 공개 키는 키 관리 인프라 없이는 작동하지 않습니다..공개 키를 확인하는 체계가 없는 경우 공격자는 실제 키 쌍을 자신의 키 쌍으로 대체하여 "중간자" 공격을 시작할 수 있습니다.이것이 SSL이 인증서의 리가마롤을 통과하도록 강제하는 이유입니다.AES와 같은 암호화 알고리즘 차단 하다 이 문제도 발생하지만 PKI가 없으면 AES는 RSA만큼 안전합니다.

  4. 공개 키 암호화 작업은 AES보다 더 많은 구현 취약점에 취약합니다..예를 들어, RSA 거래의 양측은 다음 사항에 동의해야 합니다. 매개변수, 이는 RSA 방정식에 입력되는 숫자입니다.공격자가 암호화를 자동으로 비활성화하기 위해 대체할 수 있는 사악한 값이 있습니다.Diffie Hellman의 경우도 마찬가지이며 타원 곡선의 경우에는 더욱 그렇습니다.또 다른 예는 2년 전 여러 고급 SSL 구현에서 발생한 RSA 서명 위조 취약점입니다.

  5. 공개 키를 사용하는 것은 "일반적이지 않은" 일을 하고 있다는 증거입니다..평범하지 않은 것이 바로 당신입니다 절대 암호화와 함께하고 싶습니다.단순한 알고리즘을 넘어, 암호화폐 디자인 안전한 것으로 간주되기 전에 수년간 감사 및 테스트를 거쳤습니다.

애플리케이션에서 암호화를 사용하려는 고객에게 우리는 두 가지 권장 사항을 제시합니다.

  • "미사용 데이터"의 경우 PGP를 사용하십시오..정말!PGP는 10년 넘게 구타당했으며 멍청한 구현 실수로부터 안전한 것으로 간주됩니다.오픈 소스 및 상업용 변형이 있습니다.

  • "전송 중인 데이터"의 경우 TLS/SSL을 사용하세요..TLS보다 더 잘 이해되고 더 잘 테스트된 보안 프로토콜은 전 세계에 없습니다.모든 금융 기관은 이를 가장 민감한 데이터를 이동하는 안전한 방법으로 받아들입니다.

여기 괜찮은 글이 있어요 [matasano.com] 나와 전문 암호학자인 Nate Lawson이 몇 년 전에 글을 썼습니다.이러한 사항을 더 자세히 다룹니다.

OpenSSL 사용 speed 알고리즘을 벤치마킹하고 직접 확인하는 명령입니다.

[dave@hal9000 ~]$ openssl speed aes-128-cbc
Doing aes-128 cbc for 3s on 16 size blocks: 26126940 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 64 size blocks: 7160075 aes-128 cbc's in 3.00s
...
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc     139343.68k   152748.27k   155215.70k   155745.61k   157196.29k


[dave@hal9000 ~]$ openssl speed rsa2048
Doing 2048 bit private rsa's for 10s: 9267 2048 bit private RSA's in 9.99s
Doing 2048 bit public rsa's for 10s: 299665 2048 bit public RSA's in 9.99s
...
                  sign    verify    sign/s verify/s
rsa 2048 bits 0.001078s 0.000033s    927.6  29996.5

실제 PKI 기반 암호화 시스템은 비대칭 암호화를 사용하여 대칭 키를 암호화한 다음 해당 키를 사용하여 대칭 암호화를 사용하여 데이터를 암호화합니다(누군가는 반대 사례를 지적할 것임).

따라서 대칭 암호화 알고리즘에 비해 비대칭 암호화 알고리즘에 의해 부과되는 추가 오버헤드는 고정되어 있습니다. 즉, 데이터 크기에 의존하지 않고 키 크기에만 의존합니다.

지난번에 이것을 테스트하면서 3개 정도의 X.509 인증서 체인을 검증했습니다. [추가하려면 편집하세요:그리고 그들이 서명한 데이터는 100MHz 정도의 속도로 실행되는 ARM에서 1초도 안 되는 시간이 걸렸습니다(분명히 여러 번의 반복을 통한 평균).얼마나 작은지 기억이 나지 않습니다. 무시할 수는 없지만 1초도 안 되는 수준이었습니다.

죄송합니다. 정확한 세부 사항은 기억나지 않지만 요약하자면 매우 제한된 시스템에 있거나 많은 암호화를 수행하지 않는 한(예를 들어 초당 가능한 많은 SSL 연결을 허용하려는 경우) NIST 승인을 받았다는 것입니다. 비대칭 암호화 방법은 빠릅니다.

1000배는 더 나쁜 것 같습니다.(http://windowsitpro.com/article/articleid/93787/symmetric-vs-asymmetric-ciphers.html).그러나 실제로 많은 양의 데이터를 처리하지 않는 한 그것은 중요하지 않습니다.당신이 할 수 있는 일은 비대칭 암호화를 사용하여 대칭 암호화 키를 교환하는 것입니다.

아마도 더 나은 품질의 답변을 얻을 수 있도록 프로젝트에 대한 세부 정보를 추가할 수 있습니다.무엇을 확보하려고 합니까?누구에게서?보안 요구 사항을 설명할 수 있다면 훨씬 더 나은 답변을 얻을 수 있습니다.암호화 메커니즘이 사용자가 생각하는 것을 보호하지 못한다면 성능은 큰 의미가 없습니다.

예를 들어 X509 인증서는 클라이언트/서버 엔드포인트를 보호하는 산업 표준 방법입니다.PGP 아머링을 사용하여 라이센스 파일을 보호할 수 있습니다.단순화를 위해 Blowfish(및 기타 여러 암호)를 사용한 암호 블록 체인은 두 끝점을 모두 제어하는 ​​경우 Perl 또는 Java에서 쉽게 사용할 수 있습니다.

감사해요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top