9

우리는 프로젝트에 많은 보안 요구 사항을 적용하려고 노력하고 있으며, 우리는 많은 양의 암호화를 수행해야합니다.pki와 대칭 암호화의 성능 차이는 무엇입니까?

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

답변

22

예, 순수한 비대칭 암호화는 DES 또는 AES와 같은 대칭 키퍼보다 훨씬 느립니다. 실제 응용 프로그램에서는 hybrid cryptography을 사용하는 이유입니다. 값 비싼 공개 키 작업 만이 암호화 키를 암호화 (및 교환)하기 위해 수행됩니다. 실제 메시지를 암호화하는 데 사용할 대칭 알고리즘입니다.

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

4

OpenSSL speed 명령을 사용하여 알고리즘을 벤치 마크하고 직접보십시오.

[[email protected] ~]$ 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 


[[email protected] ~]$ 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 
4

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

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

지난번에 이것을 테스트 한 결과, 100MHz 정도의 ARM에서 3 분의 1 정도의 X.509 인증서 체인 [유효성 검사 : 추가 및 수정 : 데이터 서명] 많은 반복을 통해, 분명히). 내가 얼마나 작 았는지는 기억이 나지 않는다.

죄송합니다. 정확한 정보는 기억 나지 않지만 매우 제한된 시스템이나 많은 암호화 작업을하지 않는 한 요약 정보가 표시됩니다 (가능한 한 많은 SSL 연결을 허용하려는 경우) , NIST 승인 비대칭 암호화 방법은 빠릅니다.

0

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

예를 들어, X509 인증서는 클라이언트/서버 종점을 보호하는 산업 표준 방법입니다. PGP 외장은 라이센스 파일을 보호하는 데 사용할 수 있습니다. 간단하게, Blowfish (및 다른 암호의 호스트)를 사용하는 Cipher 블록 체이닝은 두 엔드 포인트를 모두 제어하는 ​​경우 Perl 또는 Java에서 사용하기 쉽습니다.

감사합니다.

18

OS X 10.5.5를 실행하는 맥북과 OpenSSL의 스톡 빌드에서 "openssl speed"는 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의 경우는 사실이 아닙니다. AES보다 --- 더 많은 수학 방정식입니다. 따라서 키를 올바르게 저장하고 관리하는 것 외에도 RSA 평문 블록을 형식화하는 방법에 대해 매우 신중해야합니다. 그렇지 않으면 취약점으로 끝납니다.

  3. 공개 키는 키 관리 인프라가 없으면 작동하지 않습니다.. 공개 키를 검증하는 체계가 없다면, 공격자는 자신의 키 쌍을 실제 공격자로 대체하여 "중간자"공격을 시작할 수 있습니다. 이것이 SSL이 인증서의 보안 검색을 수행해야하는 이유입니다. AES 과 같은 블록 암호화 알고리즘은에도이 문제가 있지만 PKI가 없으면 AES는 RSA보다 안전합니다.

  4. 공개 키 암호 연산은 AES보다 구현 취약점이 더 많습니다. 예를 들어 RSA 거래의 양측은 매개 변수에 동의해야합니다.이 숫자는 RSA 방정식에 입력됩니다. 공격자가 대신 암호를 사용하지 않도록 설정할 수있는 악의적 인 가치가 있습니다. Diffie Hellman과 Elliptic Curve에서도 마찬가지입니다. 또 다른 예는 2 년 전에 여러 개의 고급 SSL 구현에서 발생한 RSA Signature Forgery 취약점입니다.

  5. 공개 키를 사용하면 "비정상적으로"뭔가를하고 있다는 증거가됩니다. 평범한 것이 정확히 무엇입니까 절대 암호화가 필요합니다. 방금 알고리즘을 넘어서는 암호 은 안전하다고 판단되기까지 수년 동안 감사를 거쳤습니다. "휴식 데이터"를

    • , PGP를 사용하여 응용 프로그램에 암호화를 사용하려는 고객에게

, 우리는이 개 권고를. 정말! PGP는 10 년이 넘는 기간 동안 두들겨 맞았으며 무언가 구현 실수로 인해 안전한 것으로 간주됩니다. 오픈 소스와 상용 버전이 있습니다.

  • "비행 중 데이터"의 경우 TLS/SSL을 사용하십시오. TLS보다 더 잘 이해되고 테스트되는 보안 프로토콜은 없습니다. 금융 기관은 가장 민감한 데이터를 이동하는 안전한 방법으로 모든 곳의 금융 기관을 수용합니다.

  • Here's a decent writeup는 [matasano.com] 저와 네이트 로손, 전문 암호 해독은, 몇 년 다시 썼다. 여기에는이 점들이 자세히 설명되어 있습니다.

    +0

    글쓴이의 링크가 더 이상 작동하지 않는 것으로 보입니다. – skiwi