GithubHelp home page GithubHelp logo

apppets / privacykit Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 1.0 6.65 MB

Framework offering easy to use privacy enhancing technologies (PETs) for iOS and macOS applications

License: ISC License

Swift 97.36% Objective-C 0.17% Shell 2.22% Python 0.25%
ios ios-framework macos macos-framework privacy privacy-enhancing-technologies

privacykit's People

Contributors

0xbf00 avatar blochberger avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

blochberger

privacykit's Issues

Shalon connections should respect ATS configuration

We use badly documented low-level functions for performing TLS operations required to support Shalon. There we set the default ATS profile:

/*
The default session configuration is not a secure one and uses
TLSv1.0, therefore we should use a more secure configuration, such
as ATS (App Transport Security).
*/
let config = kSSLSessionConfig_ATSv1

Which is better than the default. It should be configurable like the high-level URLSession connections via ATS configuration in the information property list (Info.plist) of the application.

Add default port for Shalon URLs

The URL httpss://shalon1.jondonym.net/services.app-pets.org will not be supported, as the port for the proxy server is missing. The default HTTPS port 443 should be used in this case.

Use Shalon transparently with URL sessions

URLs of the kind httpss://proxy:port/destination:port/index.htm could be used as a custom URL handler that triggers Shalon to be used and first connect to proxy:port and then establishing a tunnel to destination.port. Depending on how many proxies should be used, the URL scheme could be httpss+.

Alternatively there could also be a configuration file that sets up the proxy.

This issue was migrated from https://gitlab.prae.me/apppets/PrivacyKit/issues/5.

Completely read the HTTP body

The implementation of Shalon is just a proof-of-concept and does not support downloading "big" files. As soon as the response headers could be parsed, the response is immediately returned. The Content-Length header should be read and additional bytes received should be attached to the response.

This issue was migrated from https://gitlab.prae.me/apppets/PrivacyKit/issues/4.

Share URL session object

According to Apple Developer Documentation: Networking Overview: Making HTTP and HTTPS Requests: Retrieving the Contents of a URL with Delegates:

An NSURLSession object manages multiple tasks, each of which represents a single URL request and any follow-on requests. You usually create a session when your app launches, then create tasks in much the same way that you would create NSURLConnection objects.

This issue was migrated from https://gitlab.prae.me/apppets/PrivacyKit/issues/3.

Protect against swapping values in key-value storage

The key-value storage provider could exchange values. Integrity of single values is protected by authenticated encryption, but values can still be decrypted if assigned to another key of the same user. If the provider has access to the users reactions, swapped values can be linked.

Fix this by adding the key to the value before encrypting it. Integrity violation can be detected if the key used for retrieving the value does not match with the retrieved key stored alongside the value.

Avoid sending superfluous HTTP headers

See AppPETs/PrivacyService@fdb53ac.

I tried setting:

These methods could be used to override default HTTP headers, but none of them prevents the header from being sent.

The Shalon implementation gives way more control over which HTTP headers are sent.

This issue was migrated from https://gitlab.prae.me/apppets/PrivacyKit/issues/2.

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.