licensing - Multicast encryption for a file download -


i have program has paid addons, updated frequently. users have buy subscription able use addons (i.e pay monthly free).

the main reason chose subscription based model addons simple, updates selling point addons must updated frequently. long story short, these addons basically useless without updates because software works gets updated , things will beak.

now file download. allow paid users use these addons.

normally central server , database rather trivial, not when can not have central server database. (i have no influence on this.)

this efficient solution came with:

  • user gets random aes256 key.
  • we encrypt paid addon random aes256 key.
  • we encrypt addon's key users key.
  • rinse , repeat above users , addons , create 1 monolithic keyfile.
  • upload encrypted addon file, , monolithic keyfile filesharing service.

the above solution has following characteristics:

  • ability revoke keys in subsequent versions. (very important)
  • no security obscurity. can download addon or keyfile of no use them unless have key computationally infeasable bruteforce aes256.

this solution alright, starts getting problematic when user , addon count increases.

example:

  • we have 10,000 users , 100 addons.
  • 10,000 users * 100 addons = 1,000,000 keys
  • 1,000,000 keys * 300 bytes per key** = 300mb

** key (64) + initialization vector (32) + file format overhead per key, software can find right key decrypt.

even in best case (impossible) scenario 96 mb keyfile.

are there other solutions (un)known problem? called , used?

you trying implement drm, although data in case add-on. known have no solution unless control user's device (to large extend).

a direct solution problem use single data key encrypt data single time. encrypt data key users key. of course, takes 1 known key decrypt data way, that's true previous scheme.

note default, aes encryption adds confidentiality. confidentiality broken. @ least add integrity , authenticity using authentication tag (e.g. using hmac). way can make relatively safe scheme works unless (or, drm, until) code of application hacked or user keys shared.


Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

Python ctypes access violation with const pointer arguments -