Git Product home page Git Product logo

Comments (6)

rovo89 avatar rovo89 commented on September 26, 2024

So, what's you suggestion? I'm afraid I can't offer HTTPS, especially not for the terabytes of actual module downloads.

from xposedinstaller.

Tungstwenty avatar Tungstwenty commented on September 26, 2024

If the problem is the contents of that repo.xml.gz really coming from the true dl.xposed.info, then instead of using HTTPS a signature could be added to the file. The client would have the public key of each of the repos and check that supplied xml files are properly signed.
For the actual download, the md5 could be checked after fetching the module apks.

from xposedinstaller.

Fuzion24 avatar Fuzion24 commented on September 26, 2024

Maybe the appropriate approach here is to: hash the file, sign the hash with your private key, add the public key to the installer and then validate the hash/signature when the file is downloaded.

from xposedinstaller.

rovo89 avatar rovo89 commented on September 26, 2024

I haven't implemented anything with HMAC yet, but it seems that it requires a shared secret key, wouldn't it? Obviously, there is no way to store a secret in public project. So it would have to be generated, ideally per request. Which would mean that I couldn't server static files anymore. Please correct my if I'm wrong.

I would go for something with a private key (known only to my server) and a public key (stored in the app) instead. Then I could sign the file right after creating it and serve them statically. The app would verify the file while downloading it. MD5 sum calculation is already taking place.

Anyway, that can still be decided when I find the time to implement it. I'll add it to the mid-term to-do list.

from xposedinstaller.

theknut avatar theknut commented on September 26, 2024

So would this effort be avoided if we had HTTPS? If so, what would be the
price to upgrade your plan (yearly)? If it's below 100€ I'm willing to pay
for it.

2014-05-16 21:08 GMT+02:00 rovo89 [email protected]:

I haven't implemented anything with HMAC yet, but it seems that it
requires a shared secret key, wouldn't it? Obviously, there is no way to
store a secret in public project. So it would have to be generated, ideally
per request. Which would mean that I couldn't server static files anymore.
Please correct my if I'm wrong.

I would go for something with a private key (known only to my server) and
a public key (stored in the app) instead. Then I could sign the file right
after creating it and serve them statically. The app would verify the file
while downloading it. MD5 sum calculation is already taking place.

Anyway, that can still be decided when I find the time to implement it.
I'll add it to the mid-term to-do list.


Reply to this email directly or view it on GitHubhttps://github.com//issues/172#issuecomment-43368325
.

from xposedinstaller.

Tungstwenty avatar Tungstwenty commented on September 26, 2024

I don't know if the implementation of HMAC must strictly follow what's described on the wikipedia page, but here's how I'd use a "Hash-based Message/contents Authentication Code" mechanism for this situation:

  • Hash the contents of the repo.xml file on the server side
  • Encrypt the result with the repo's private key (both these steps can be done once upfront, whenever the xml changes)
  • Serve both things to clients downloading the file through regular HTTP; either as a wrapped file, or sending the "checksum" as a response header
  • The client has the public key of each repo server and after download also hashes the result, decrypts the checksum with the server's public key, and checks if the hashes match. If they do, it's guaranteed that the obtained content is the same as the one present on the server, with no possibility for a MITM replacing them and forging the new hash being signed by the server.

from xposedinstaller.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.