-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
db5f878
commit 50bb926
Showing
4 changed files
with
61 additions
and
22 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,41 +1,60 @@ | ||
--- | ||
description: Aspects of mobile device challenges that should always be considered | ||
description: >- | ||
Aspects of mobile device challenges that should always be considered when | ||
integrating Tor | ||
cover: >- | ||
https://images.unsplash.com/photo-1633078654544-61b3455b9161?crop=entropy&cs=srgb&fm=jpg&ixid=M3wxOTcwMjR8MHwxfHNlYXJjaHw0fHxwaG9uZSUyMHByb2JsZW1zfGVufDB8fHx8MTcxNjM4MTY2OXww&ixlib=rb-4.0.3&q=85 | ||
coverY: 0 | ||
--- | ||
|
||
# Limitations of Mobile Devices | ||
|
||
<figure><img src="https://images.unsplash.com/photo-1456132022829-e771cbd1f7da?crop=entropy&cs=srgb&fm=jpg&ixid=M3wxOTcwMjR8MHwxfHNlYXJjaHw4fHxsaW1pdGF0aW9uc3xlbnwwfHx8fDE3MTUxODg1MDl8MA&ixlib=rb-4.0.3&q=85" alt=""><figcaption></figcaption></figure> | ||
## <mark style="color:purple;">**Processing Power**</mark> | ||
|
||
**Processing Power** | ||
### Tor's encryption and routing mechanisms require significant processing power.  | ||
|
||
Tor's encryption and routing mechanisms require significant processing power. On mobile devices, this can lead to slower performance, especially on lower-end models. Developers must optimize Tor integration to minimize CPU usage and ensure that the app remains responsive while maintaining the security and anonymity features of Tor. | ||
On mobile devices, this can lead to slower performance, especially on lower-end models. Developers must optimize Tor integration to minimize CPU usage and ensure that the app remains responsive while maintaining the security and anonymity features of Tor. | ||
|
||
**Battery** | ||
## <mark style="color:purple;">**Battery Impact**</mark> | ||
|
||
The Tor network, due to its layered encryption and routing through multiple nodes, can be more power-intensive compared to standard internet connections. This increased power consumption can drain the battery faster. Developers need to optimize the Tor integration for energy efficiency, perhaps by managing when and how frequently the app accesses the Tor network. | ||
### The Tor network, due to its layered encryption and routing through multiple nodes, can be more power-intensive compared to standard internet connections.  | ||
|
||
**Storage** | ||
This increased power consumption can drain the battery faster. Developers need to optimize the Tor integration for energy efficiency, perhaps by managing when and how frequently the app accesses the Tor network. | ||
|
||
Tor integration can increase an app's storage requirements. The additional libraries and cache data associated with Tor can occupy significant space on a mobile device. Efficient storage management and minimization of the app's footprint are essential to ensure it doesn't consume excessive storage space. | ||
## <mark style="color:purple;">**Storage Impact**</mark> | ||
|
||
**Operating System** | ||
### Tor integration can increase an app's size and storage requirements.  | ||
|
||
Different operating systems (iOS, Android) have varied levels of support and limitations for Tor integration. For instance, iOS has more stringent background process limitations, which can affect Tor's functionality. Developers must understand and work within each platform's constraints to effectively integrate Tor. | ||
The additional libraries and cache data associated with Tor can occupy significant space on a mobile device. Efficient storage management and minimization of the app's footprint are essential to ensure it doesn't consume excessive storage space. | ||
|
||
**Bandwidth** | ||
## <mark style="color:purple;">**Operating System**</mark> | ||
|
||
Tor typically has a slower connection speed due to its multi-node routing. This can be more pronounced on mobile devices, where bandwidth might already be limited. Optimizing data usage and managing user expectations regarding connection speeds are crucial aspects of integrating Tor on mobile. | ||
### Different operating systems (iOS, Android) have varied levels of support and limitations for Tor integration.  | ||
|
||
**Network** | ||
For instance, iOS has more stringent background process limitations, which can affect Tor's functionality. Developers must understand and work within each platform's constraints to effectively integrate Tor. | ||
|
||
Mobile network connectivity can be inconsistent, impacting Tor's performance. Switching between Wi-Fi and mobile data or dealing with poor connectivity can disrupt the Tor connection, necessitating robust network handling strategies within the app. | ||
## <mark style="color:purple;">**Bandwidth Speeds**</mark> | ||
|
||
**Screen** | ||
### Tor typically has a slower connection speed due to its multi-node routing.  | ||
|
||
The smaller screen size of mobile devices means that any user interfaces related to Tor (such as settings, status indicators) need to be carefully designed to be clear and usable on a small display. This involves thoughtful UI/UX design to accommodate Tor's complex functionalities in a simplified manner. | ||
This can be more pronounced on mobile devices, where bandwidth might already be limited. Optimizing data usage and managing user expectations regarding connection speeds are crucial aspects of integrating Tor on mobile. | ||
|
||
**Foreground vs Background Modes** | ||
## <mark style="color:purple;">**Network Performance**</mark> | ||
|
||
Mobile operating systems often restrict what apps can do in the background. This can impact Tor's functionality, as maintaining an anonymous connection might require persistent background activity. Developers need to navigate these restrictions to maintain Tor's effectiveness, especially when the app is not in the foreground. | ||
### Mobile network connectivity can be inconsistent, impacting Tor's performance.  | ||
|
||
Addressing these challenges requires a careful balancing act between maintaining the integrity of Tor's privacy and security features and providing a smooth, user-friendly experience on mobile devices. | ||
Switching between Wi-Fi and mobile data or dealing with poor connectivity can disrupt the Tor connection, necessitating robust network handling strategies within the app. | ||
|
||
## <mark style="color:purple;">**Screen Size and User Interface**</mark> | ||
|
||
### The smaller screen size of mobile devices means less room to indicate Tor status. | ||
|
||
Any user interfaces related to Tor (such as settings, status indicators) need to be carefully designed to be clear and usable on a small display. This involves thoughtful UI/UX design to accommodate Tor's complex functionalities in a simplified manner. | ||
|
||
## <mark style="color:purple;">**Foreground vs Background Modes**</mark> | ||
|
||
### Mobile operating systems often restrict what apps can do in the background.  | ||
|
||
This can impact Tor's functionality, as maintaining an anonymous connection might require persistent background activity. Developers need to navigate these restrictions to maintain Tor's effectiveness, especially when the app is not in the foreground. | ||
|
||
## <mark style="color:purple;">Addressing these challenges requires a careful balancing act between maintaining the integrity of Tor's privacy and security features and providing a smooth, user-friendly experience on mobile devices.</mark> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
--- | ||
description: >- | ||
Lyrebird/Obfs4proxy and Snowflake Pluggable Transports for iOS, MacOS and | ||
Android | ||
--- | ||
|
||
# Pluggable Transports for Android | ||
|
||
IPtProxy is the primary reusable library for integrating the latest anti-censorhip capabilities into your mobile app. You can find IPtProxy at [https://gitlab.com/guardianproject/IPtProxy](https://gitlab.com/guardianproject/IPtProxy) with the "live" development work also done at [https://github.com/tladesignz/IPtProxy/](https://github.com/tladesignz/IPtProxy/) | ||
|
||
Both Lyrebird/Obfs4proxy and Snowflake Pluggable Transports are written in Go, which is a little annoying to use on iOS and Android. This project encapsulates all the machinations to make it work and provides an easy to install binary including a wrapper around both. | ||
|
||
Problems solved in particular are: | ||
|
||
* One cannot compile `main` packages with `gomobile`. Both PTs are patched to avoid this. | ||
* Both PTs are gathered under one roof here, since you cannot have two `gomobile` frameworks as dependencies, since there are some common Go runtime functions exported, which would create a name clash. | ||
* Environment variable changes during runtime will not be recognized by `goptlib` when done from within Swift/Objective-C. Therefore, sensible values are hardcoded in the Go wrapper. | ||
* Snowflake and Lyrebird/Obfs4proxy are patched to accept all configuration parameters directly. | ||
* Free ports to be used are automatically found by this library and returned to the consuming app. You can use the initial values for premature configuration, which is just fine in situations, where you can be pretty sure, they're going to be available (typically on iOS). When that's not the case (e.g. multiple instances of your app on a multi-user Android), you should first start the transports and then use the returned ports for configuration of other components (e.g. Tor). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters