웹 기반 파일 저장 서비스 (C#)를 구현 중입니다. 파일은 서버에 저장 될 때 암호화되지만 문제는 해독 기능을 구현하는 방법입니다.임의 액세스 암호화 된 파일
파일 크기는 수십 KB에서 수 GB까지 다양 할 수 있습니다. 데이터 전송은 청크로 이루어 지므로 사용자가 오프셋 50000, 75000 등에서 데이터를 다운로드 할 수 있습니다. 암호화되지 않은 파일은 제대로 작동하지만 암호화를 사용하면 오프셋에서 각 청크를 읽지 전에 전체 파일을 해독해야합니다 .
그래서이 문제를 해결할 방법을 찾고 있습니다. 지금까지의 연구에서 ECB와 CBC를 사용할 수 있음을 보여줍니다. ECB는 가장 기본적인 (그리고 가장 안전하지 않은) 블록으로 각각 암호화되어 있습니다. ECB가 작동하는 방식은 내가 찾고있는 것이지만 보안은 걱정이다. CBC도 비슷하지만 현재 블록의 암호를 해독하기 전에 이전 블록을 암호 해독해야합니다. 이것은 파일이 처음부터 끝까지 읽히고 파일을 서버에서 해독 할 때 데이터를 보관할 수 있지만 하루가 끝날 때 전송하기 전에 전체 파일 서버 쪽의 암호를 해독하는 것보다 훨씬 좋습니다.
다른 대안을 알고있는 사람이 있습니까? 나는 이론적 연구 만하고 있기 때문에이 시점에는 코드가 없습니다.
임의의 읽기 액세스 및 순차 쓰기 액세스 만 필요합니까 (즉, 파일은 한번에 작성됩니다)? – CodesInChaos
무결성 검사가 필요합니까? MAC를 사용하는 것이 강력하게 권장됩니다. 인증이 없을 때 할 수있는 많은 물건이 있습니다. – CodesInChaos
"CBC도 비슷하지만 현재 블록을 해독하기 전에 이전 블록을 해독해야합니다." 잘못된. 이전 블록의 암호 텍스트가 있으면 충분합니다. 평문은 필요 없습니다. 위키 백과에서 CBC를 확인하십시오. 그들은 좋은 그래프를 가지고 있습니다. – CodesInChaos