2011-04-25 5 views
0

현재 리눅스에서 openSSL을 사용 중입니다. c. 암호 블록 크기가 항상 16 unsigned char로 고정되어 있는지 묻고 싶습니다. 그 이유는 대용량 데이터를 암호화하기 때문입니다. 문제는 SSL의 설명을 기반으로합니다. 암호화 된 이전 블록의 암호화 된 암호화 블록은 암호화 할 때 다음 일반 텍스트 블록의 XOR입니다. 암호 블록의 크기를 늘리는 방법이 있습니까?큰 텍스트에서 열린 SSL 성능

예를 들어 암호화 할 기가 바이트의 데이터가 있다면 기가비트/16byte 암호화 시간이 걸립니다. 16 바이트가 아닌 vi를 사용하도록 AES_cbc_encrypt 메소드 호출을 강제하는 표준 방법이 있습니까? 아직도 표준을 따르고 있습니까? 암호화 된 텍스트는 다른 CGC 표준 라이브러리를 사용하는 다른 시스템의 다른 프로그램에서 읽을 수 있기 때문입니다.

+0

조숙 한 최적화의 경우와 같습니다. – Jumbogram

답변

2

아니요, AES 표준은 16 바이트 블록 크기를 요구합니다. Rijndael을 기반으로 한 원래의 알고리즘은 더 많은 유연성을 허용했지만이를 지원하기 위해 다른 AES 구현에 의존 할 수는 없습니다.

1

블록 암호의 경우 블록 크기는 해당 알고리즘의 속성입니다. DES는 예를 들어 8 바이트를 사용했습니다. 반면에 스트림 암호 (예를 들어 RC4)는 고정 블록 크기를 사용하지 않으며, 사실상 키로 시드 된 의사 랜덤 생성기입니다.

하지만 어쨌든 암호의 성능은 블록 크기를 염두에두고 게시되며 AES는 최근 CPU에서 약 160mbyte/sec의 속도를냅니다. "openssl speed aes"를 사용하여이를 측정 할 수 있습니다.

1Gb의 데이터를 암호화하려면 AES 자체의 암호화 속도보다는 디스크에서 메모리로, 그리고 다시 데이터를 모두 이동하는 것이 더 중요합니다.