소프트웨어 제품에 AES 암호화를 추가하고 싶지만 데이터 크기를 늘리는 것이 중요합니다. 데이터 크기가 커지면 압축 알고리즘을 추가해야합니다.AES (128 또는 256) 암호화가 데이터를 확장합니까? 그렇다면 얼마만큼?
답변
AES는 데이터를 확장하지 않습니다. 게다가 출력은 일반적으로 압축 가능하지 않습니다. 데이터를 압축하려면 암호화하기 전에 데이터를 압축하십시오.
그러나 일반적으로 AES 암호화는 padding과 결합되며, 은이됩니다 (단 몇 바이트 만).
나는 패딩에 대한 노트를 추가 할 자유를 얻었다. – sleske
또한 덧붙여서 일반적으로 cryptodata에는 IV ("초기화 값")가 필요한 CipherBlock 모드가 필요하며 수정을 방지하기 위해 MAC 알고리즘을 보호해야합니다. AES 및 대부분의 블록 모드에서 IV는 16 바이트이며 가장 일반적인 HMAC (Sha1)는 또 다른 16 바이트입니다. –
나는 AES 암호화가 암호화되는 데이터에 아무 것도 추가하지 않는다는 것이 확실하다. 왜냐하면 그것은 상태 변수에 관한 정보를 제공 할 것이고, 암호화에 있어서는 나쁜 것이다.
압축 및 암호화를 혼합하려면이 순서대로 수행하십시오. 그 이유는 암호화 된 데이터 (이상적으로)가 완전히 무작위적인 데이터처럼 보이기 때문이며 압축 알고리즘은 압축 된 파일 형식과 함께 제공되는 책 보관 비용과 그 중 일부를 실제로 압축 할 수 없기 때문에 데이터를 더 커지게 만듭니다.
압축이 필요한 경우 암호화하기 전에 수행하십시오.
AES는 마지막 블록의 끝에서 몇 바이트의 패딩을 제외하고 데이터를 확장하지 않습니다.
결과 데이터는 기본적으로 무작위이기 때문에 압축 할 수 없습니다. 사전 기반 알고리즘으로 압축 할 수 없습니다. 가장 좋은 방법은 먼저 데이터를 압축 한 다음 암호화하는 것입니다. 당신이 전에 암호화를 수행해야 콘텐츠 참고 압축하는 경우
입력이 암호 블록 크기의 짝수 배가 되더라도 소수의 채우기 바이트가 추가됩니다. 안쪽에있는 코드가 얼마나 많은 패딩이 이루어질 수 있도록 * 패딩이 필요합니다. –
제 유일한 변경 그러나 블록
의 크기로 데이터를 정렬 패딩 소량 일 것이다. 암호화 된 데이터는 일반적으로 임의의 데이터와 구별 할 수 없으므로 압축되지 않습니다.
@freespace 및 기타 : 암호화 클래스에서 기억해야 할 사항 중 하나는 압축 스트림의 반복적 인 일부 청크 (예 : 섹션 헤더와 같음)가 쉽게 깨질 수 있기 때문에 암호화 전에 데이터를 압축하면 안된다는 것입니다. 귀하의 암호화.
알고리즘이 알려진 일반 텍스트 공격에 취약한 알고리즘 인 경우에는 관계없이 엉망입니다. 일반적으로 전송되는 많은 구조화 된 형식의 예측 가능한 유아용 침대가 있습니다. 대부분의 최신 시스템은 이러한 공격을 방지 할 수있는 모드에서 작동하도록 설계되었습니다. – Brian
맞음! 압축 된 데이터는 실제 평문보다 반복 또는 추측 가능한 세그먼트가 적을 수 있습니다. Java 코드 파일을 암호화한다고 가정합니다. 누구나 // 자주 나타나는 것 같습니까? 또한 : 우편 회사는 암호화하기 전에 압축합니다. – Cheeso
@Cheese 임의의 IV가 처리해야하는 것과 같은 것처럼 들립니다. – FluorescentGreen5
암호화하기 전에 데이터를 압축하는 것이 일반적입니다. 이후 AES 암호화 데이터가 무작위로 나타나기 때문에 나중에 압축하는 것은 효과가 없기 때문에 (모든 헤더와 그 밖의 다른 것들은 제외하고)
그러나 압축을 사용하면 일부 컨텍스트에서 사이드 채널 공격이 발생할 수 있으므로 자신의 용도를 분석해야합니다. 이러한 공격은 암호화 된 VOIP에 대해 최근에보고되었습니다. VBR로 압축하면 다른 음절이 비트 전송률의 특성 변화를 만듭니다. 따라서 일부 (또는 모든) 음절은 데이터가 생성 된 속도로 전송되기 때문에 충분한 분석으로 복구 할 수 있습니다. 이 수정은 CBR 압축을 사용하거나 버퍼를 사용하여 인코더에서 나오는 데이터 속도에 관계없이 일정한 속도로 전송 (대기 시간 증가)하는 것입니다.
AES는 16 바이트 입력 블록을 16 바이트 출력 블록으로 변환합니다. 유일한 확장은 전체 블록 수까지 데이터를 반올림하는 것입니다.
- 1. AES 암호화가
- 2. CTR 모드에서 AES 256
- 3. AES CTR 256 OpenSSL에서의 암호화 모드
- 4. .NET Compact Framework에서 AES-256 채널 암호화 구현
- 5. 암호 해독 유형 및 차단 (AES 128?)
- 6. AES 128 DOT NET 및 Java 호환성
- 7. 256 비트 AES/CBC/PKCS5Padding에와 탄력이 성
- 8. aes 128/192/256에 대한 디코딩 시간의 차이점은 aes192/256 너무 매개 변수입니까?
- 9. .NET Framework 2.0의 AES 256 암호화
- 10. 탄력 성 기본 모드 AES 256
- 11. CES 및 Android 용 AES-256 호환
- 12. 탄력이 성 AES 256 암호 해독 문제는
- 13. 하려면 openssl AES-256 창에 파일이 리눅스
- 14. aes-256-cbc를 사용하여 openssl hmac
- 15. CFB 128 비트 AES 암호화를 사용하여 데이터를 암호화/암호 해독하는 코드
- 16. Google App Engine에서 AES-256 암호화를 사용하려면 어떻게해야합니까?
- 17. 사용자 정의 (변하지 않는) 키로 AES 암호화가 충분히 안전합니까?
- 18. CTR 모드에서 AES-256 C# 구현을 찾고 있습니다.
- 19. 플랫폼간에 SQLite 암호화가 다릅니다.
- 20. AES-128 비트 알고리즘 도움말 ?? 내가 암호화하고 싶습니다
- 21. PDFsharp를 사용하여 AES 128 비트 암호화 파일 열기
- 22. NSUserDefaults에 얼마만큼 저장할 수 있습니까?
- 23. AES 256 암호화에 사용할 (순수한) Python 라이브러리는 무엇입니까?
- 24. 우분투/리눅스/유닉스에서 cbc 암호화와 함께 aes 256 무엇입니까?
- 25. SalesForce와 통합 할 때 AES 256 비트 암호화를 사용하려면 어떻게해야합니까?
- 26. 자바 AES 256 보안 키 생성기 불법 키 크기
- 27. WinCrypt 및 CryptImportKey가있는 하드 코드 된 AES-256 키
- 28. .Net에서 Bouncy Castle AES 256 암호화에 대한 문서?
- 29. rijndael-128 용 Mcrypt : 어떻게 초기화 벡터를 설정합니까?
- 30. AES 자바 인코딩, 루비 디코딩
암호화의 요점은 엔트로피를 추가하는 것이기 때문에 압축이 거의 효과가 없을 것으로 예상됩니다. 그러나, 당신은 그것을 밖으로 시도하고 무슨 일이 일어나는 지 볼 수 있습니다. –