Skip to content

暗号化済みAssetBundleをLoadFromStreamで復号しつつロードするテスト

License

Notifications You must be signed in to change notification settings

mao-test-h/SeekableAesAssetBundle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SeekableAesAssetBundle

暗号化済みAssetBundleをLoadFromStreamで復号しつつロードするテスト

当初こちらについての技術解説記事を別途用意する予定ではあったが、偶然にも全く同じ内容となる想定の記事がテラシュールブログさんより同日に先行して公開されたので具体的な概要については以下を参照。(投げ)

ちなみに雑な纏めではあるが、検証結果については以下のwikiページに纏めている。

▽ 概要とか

一応簡単に概要を纏めておく。

  • 発端はこちらのスライドにあるこちらのページの内容
    • LoadFromStreamを使うとStreamからAssetBundleを読み込める
      • ざっくりとした条件としては、シーク可能なStreamを与える必要がある。
    • ランダムアクセス可能な暗号をStreamとして実装することで、暗号化されたAssetBundleをメモリに全展開すること無く読める
      • 大半の暗号化用のStreamの実装はランダムアクセス不能なので注意
      • AssetBundleのサイズが大きいと重くなるので、できるだけ小さくする
        • アセットのサイズだけでなくAssetBundleのサイズにも比例してしまう

上記の内容については以下のように判断した。

  • シーク可能なStreamについて
    • 恐らくはStream.CanSeekがtrueを返す必要がある。
  • ランダムアクセス可能な暗号について
    • そもそもの前提としてどうしてこうなってるかと言うと、標準で実装されているCryptoStreamCanSeekが必ずfalse返すのでLoadFromStreamで使えない。
    • その為に自前で暗号化Streamを実装する必要が出てきた。

▽ サンプルについて

Assets/SeekableAesAssetBundle/Samples以下にサンプルを用意している。

  • シーンは同ディレクトリのScenes/Sample.unityを参照。
  • スクリプトはSample.csを参照。

※検証用AssetBundleについて

検証用のAssetBundleはサイズが大きいために敢えてコミットはしていない。
その為にサンプルを動かす際には自前でビルドする必要がある。

ビルド処理自体は既に用意しており、メニューバーにある以下の項目で実行できる。

  • Samples/Build/Build AssetBundle(Uncompressed)
  • Samples/Build/Build AssetBundle(LZMA)
  • Samples/Build/Build AssetBundle(LZ4)
    • 括弧内にある圧縮形式のAssetBundleをビルド。ビルドされるAssetBundle名はsample
      • ※この段階では暗号化はされていない。
    • ビルドが完了するとStreamingAssets以下にAssetBundleが生成される
  • Samples/Encrypt/Encrypt AssetBundle(Uncompressed)
  • Samples/Encrypt/Encrypt AssetBundle(LZMA)
  • Samples/Encrypt/Encrypt AssetBundle(LZ4)
    • 括弧内にある圧縮形式のAssetBundleを暗号化。
    • 暗号化したAssetBundleはencrypted_sampleと言う名前で元データと同じディレクトリ内に新規生成される。

▽ 参考リンク/その他メモ

▼ Wiki

  • 検証結果
    • 雑に纏めた検証結果
  • LoadFromStreamについて
    • AssetBundle.LoadFromStreamについて色々メモ
  • 暗号化学び直し
    • そもそもとして暗号化に関する知識が全然なかったので学び直すところから始めていた。こちらはその際のメモ。

▼ 参考リンク

About

暗号化済みAssetBundleをLoadFromStreamで復号しつつロードするテスト

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages