Description HTTP server on Android
Status - Preliminary Research
Goal: Serve a charged web app from an Android app distributed via Google Play
Pros
No need to maintain customer information on payment and web app projects on cloud servers
Payment information is controlled by Google Play
All information on customers' web app projects in development is confined to the intranet for the dev teams
No need to maintain scalable cloud servers on the internet (low-cost)
Scalable (if so designed)
Expandable to constitute a dedicated mini cluster of Android devices with the app
Automatic updating
Cons
Customers (web app developers) have to configure the Android app as an intranet web server
Easy one-time tasks for web developers
Fixed IP address has to be assigned to each Android device for the app
TLS certificates for development have to be generated and installed onto the Android app
Development consoles (PCs) have to point the web server as an internal host name (https://thin-hook.intranet:8443 ) with /etc/hosts
The Android app has to be protected from cracking (research in progress)
Why Android? Why not Microsoft Store?
Recent Android devices have hardware-backed keystores, which should HOPEFULLY be useful for maintaining purchase information securely
Decent Android devices have enough performance for serving web apps to rich clients
Priliminary Experiments
HTTP Server types on Android
Type 1: nghttp2 1.43.0 (native process with threading)
Type 2: node 14.16.1 (JavaScript on a native node process)
Type 3: nanohttpd (Java library with threading) - planning
Type 4: cpp-httplib (C++ library with threading) - planning
Interfacing between the Android app and the HTTP server
Type 1: localhost HTTPS
Type 2: UNIX socket
Type 3: NDK Binder IPC (seems to be impossible for native non-system-service processes; only for libraries)
Service registration via NDK Binder API in C++ is under investigation
Type 4: stdin/stdout for the HTTP server process
Triple Encryption for protecting proprietary code
No private keys on the HTTP server side
Enhance the integrity service protocol
ConnectV2 request - Servers without private keys can handle connection
Pending response - Trigger downloading "Browser Validation Pack" for a latest browser and let the browser wait
x-content-encoding: double-aes-256-gcm+gzip
Exclude open-sourced code
Encrypt service worker caches
With keys derived from ClientIntegrity + random bits
"Browser Validation Packs" have to be distributed effectively for latest Chrome browsers
Via Google Play as app features
Via GitHub releases (for hasty users)
Automatic generation of "Browser Validation Packs" to publish
Integrate automated validation service with the automatic generation
Other research items
TBD Reactions are currently unavailable
You can’t perform that action at this time.
HTTP server on Android
Status - Preliminary Research
Goal: Serve a charged web app from an Android app distributed via Google Play
/etc/hostsPriliminary Experiments
HTTP Server types on Android
Type 1: nghttp2 1.43.0 (native process with threading)
libasio-sv.soand embedded to APKfiles/folderlib*.sobinaries expanded from APKexecuteaccess vector) only for the expanded library folderlibXX.sointegrityServiceType 2: node 14.16.1 (JavaScript on a native node process)
libc++_shared.solibnode.soand embedded to APKConnectV2record is implemented, there is no need to process RSA OAEP with SHA256 in a native NPM moduleType 3: nanohttpd (Java library with threading) - planning
Type 4: cpp-httplib (C++ library with threading) - planning
Interfacing between the Android app and the HTTP server
Type 1: localhost HTTPS
Type 2: UNIX socket
Type 3: NDK Binder IPC (seems to be impossible for native non-system-service processes; only for libraries)
Type 4: stdin/stdout for the HTTP server process
Triple Encryption for protecting proprietary code
ConnectV2request - Servers without private keys can handle connectionPendingresponse - Trigger downloading "Browser Validation Pack" for a latest browser and let the browser waitx-content-encoding: double-aes-256-gcm+gzipClientIntegrity+ random bitsOther research items
TBD