공용 키를 사용하여 100KB 파일을 암호화해야합니다. 필자는 공개 키를 사용하여 대용량 파일을 직접 암호화하는 것이 현실적이지 않으며 선호되는 방법은 공개 키를 사용하여이 대칭 키를 암호화 한 다음 대칭 키를 사용하여 파일을 암호화하는 것이 현실적이라고 주장하는 게시물을 읽었습니다. 순진한 해결책은 대용량 파일을 조각으로 나누고 동일한 공개 키를 사용하여 대용량 파일을 암호화하는 것입니다. 내 질문은 왜이 솔루션이 잘못 되었습니까? 난 당신이 바로, 당신은 자신의 개인 키 암호를 해독 할, 다른 사람의 공개 키를 사용하여 파일을 암호화하려면 이해한다면공개 키를 사용하여 대용량 파일 암호화
답변
?
대칭 암호화를 사용하고 공개 키 암호화 만 사용하면 (대칭) 키의 장점은 성능입니다. 대칭 암호화는 계산 상 훨씬 리소스 집약적입니다 (트레이드 오프 : 키를 비밀로 유지해야합니다. 두 번째, 비대칭 단계는 무엇을위한 것인가).
파일을 분할하면 관리 오버 헤드가 추가됩니다 (얼마나 많은 청크가 전송되었는지, 어떻게 전송했는지 확인할 수 있음). 보안을 추가하지 않습니다. 반대로.
당신이 언급 한 하이브리드 접근법 (무작위 대칭 키 생성, 데이터 암호화, 비대칭 키 암호화)은 성능면에서 엄청난 이점이 있습니다.
큰 파일을 여러 조각으로 나누고 동일한 공개 키를 사용하여 각 파일을 암호화 할 수 있지만 그다지 잘못은 아니지만 속도가 훨씬 느립니다.
파일을 더 작은 조각으로 분할 한 다음 일부 비대칭 암호로 암호화하는 것은 암호화 프로세스의 런타임 비용과 아무 관련이 없습니다. 가장 좋은 방법은 상대적으로 강력한 키를 사용하여 좋은 대칭 암호로 데이터를 암호화하고 비대칭 암호 (공개 키 사용)를 사용하여 대칭 암호화에서 사용한 비밀 키를 암호화하는 것입니다.
성능에 문제가 없다면 왜 하이브리드 암호화가 가장 좋은 방법입니까? – Thilo
파일을 분할하고 비대칭 암호화를 다시 사용하면 성능이 향상되지 않습니다. 하이브리드 방식에서는 비대칭 암호와 달리 대칭 암호가 비교적 시간 효율적이므로 대용량 암호로 대용량 데이터를 암호화 할 수 있습니다. 비밀 키가 256 비트/32 바이트라고하면 비대칭 암호로 32 바이트의 데이터 만 암호화하면됩니다. 이 방법은 비대칭 암호로 전체 파일을 암호화하는 것보다 낫습니다. –
비대칭 암호화가 너무 느립니다. 가장 많이 사용되는 방법은 비대칭 인 임의 대칭 키를 암호화하고 해당 대칭 키를 사용하여 데이터를 암호화하는 것입니다. 그리고 가장 좋은 방법은 잘 알려진 프로토콜/표준 (예를 들어 OpenPGP)을 사용하는 것입니다.
GnuPG에 문의 하시겠습니까? – TBH
그리고 GnuPG 역시 - GnuPG는 OpenPGP 표준의 구현 중 하나입니다. 또한보다 유연하고 사용하기 쉬운 상업적 구현이 있습니다. –
대칭 키 암호화의 속도 향상과는 별도로 다음과 같은 또 다른 이점이 있습니다. 처음에는 임의로 안전하게 생성 된 대칭 키로 메시지를 암호화함으로써 각 수신자 자신의 고유 한 키에 대해 한 번씩 여러 수신자의 대칭 키를 암호화 할 수 있습니다 전체 메시지를 다시 암호화 할 필요없이 공개 비대칭 키.
- 1. 공개 키를 사용하여 문자열 암호화
- 2. 공개 키를 사용하여 파일 암호 해독
- 3. 공개 키로 데이터 암호화
- 4. 공개 키 암호화 작동 방법
- 5. .NET에서 생성 한 공개 키를 사용하는 iPhone의 RSA 암호화?
- 6. 인증서 공개 키를 사용하여 Java에서 서명 확인
- 7. 비대칭 암호화 알고리즘에 공개 키를 배포하는 방법은 무엇입니까?
- 8. MD5를 사용하여 암호로 암호화 키를 생성 하시겠습니까?
- 9. 큰 문자열이 아닌 파일을 스트리밍하여 Pycrypto로 대용량 파일 암호화
- 10. 내 공개 키로 PHP 문의 양식 암호화
- 11. Ruby를 사용하여 대용량 파일 업로드
- 12. 암호화 제품 키 : 공개 키 및 개인 키 암호화
- 13. Visual Basic .NET에서 RSA를 사용하여 파일 암호화
- 14. 문자열 공개 키를 RSA 공개 키로 변환
- 15. AES, RSA로 암호화 키로 파일 암호화 - 올바른 방향으로 가고 있습니까?
- 16. 공개 키잉 서버에 암호화 키는 어디에 두어야합니까?
- 17. RSA 공개 키를 사용하여 java.util.Properties 객체를 암호화하려면 어떻게해야합니까?
- 18. 사용자가 선택한 암호를 사용한 공개 키 암호화?
- 19. Maven에서 공개 키를 사용하지 않습니다.
- 20. C에서 .mdb 파일 암호화 및 암호화 #
- 21. 일시적으로 서버 파일 공개
- 22. 계수와 공개 지수를 사용하는 C# RSA 암호화
- 23. 복어 암호화 키를 얻는 방법
- 24. .snk 파일에서 공개 키를 게시해야합니까?
- 25. HttpClient로 대용량 파일 다운로드
- 26. Silverlight에서 대용량 파일 업로드
- 27. Django 대용량 파일 전송
- 28. 암호화 된 파일을 공유했지만 다른 키를 사용하여 암호 해독
- 29. 대용량 파일 업로드
- 30. stream_filter_ *를 사용하여 PHP에서 대용량 파일 처리 (
공유 키를 비밀로 유지하는 것은 모든 메시지에 대해 새로운 메시지를 무작위로 생성하고이를 수신자 공개 키로 전송 한 다음이를 버림으로써 해결됩니다. – Thilo
대안은 두 가지를 결합하는 것입니다. 1 단계 : 임의의 랜덤 키 생성 (예 : 64 자 문자열 (512 비트)) 2 단계 : symetric이 1 단계의 키로 파일 암호화 3 단계 : 임의의 비대칭 암호화 (공개 키) 4 단계 : 3 단계의 결과를 암호화 된 파일 끝에 추가하십시오. 는 암호를 해독하려면 1 단계 : 파일을 형성 읽고 마지막 XXX 비트를 제거 2 단계 : 개인 키 3 단계로 1 단계에서 데이터를 해독 : 단계의 결과 키를 사용하여 파일을 해독 2 – Floyd
그래, 나는 응답을 명확히했다 - 나는 중요한 비밀을 지키는 것에 관해 일반적으로 말하고 있었다. 그리고 그것은 공개 키 단계가있는 것이다. – chryss