Web ベースのファイル ストレージ サービス (C#) を実装しています。ファイルはサーバーに保存されるときに暗号化されますが、課題は復号化機能をどのように実装するかです。
ファイルは、数 KB から数 GB まで、任意のサイズにすることができます。データ転送はチャンク単位で行われるため、ユーザーはオフセット 50000、75000 などからデータをダウンロードします。これは暗号化されていないファイルでは問題なく機能しますが、暗号化が使用されている場合は、各チャンクがオフセットから読み取られる前にファイル全体を復号化する必要があります。 .
だから、私はこれを解決する方法を見ています。これまでの私の調査では、ECB と CBC を使用できることが示されています。ECB は最も基本的な (そして最も安全でない) ブロックで、各ブロックが個別に暗号化されます。ECB が機能する方法は、私が探しているものとほとんど同じですが、セキュリティが懸念事項です。CBC も同様ですが、現在のブロックを復号化する前に前のブロックを復号化する必要があります。これは、ファイルが最初から最後まで読み取られ、サーバー上で復号化するときにデータを保持する限り問題ありませんが、結局のところ、転送前にサーバー側のファイル全体を復号化するよりもはるかに優れているわけではありません。
私が考慮すべき他の選択肢を知っている人はいますか?私はまだ理論的な研究を行っているだけなので、この時点ではコードはありません。