Draft:ZeroPhone software plans

From ZeroPhone
Jump to: navigation, search

This page describes how ZeroPhone goals will be achieved - concerning software. In a way, this page is a project roadmap page, a specification and a contribution priority list.

Application interfaces

As ZeroPhone software is supposed to be extensible, there'll be apps. This is what's going to be necessary to add app capability to ZeroPhone:

  • Ways to add apps to ZeroPhone system
    • Plugin system for ZeroPhone UI - for simple Python applications
      • Will likely run as an unprivileged user (with hardware access)
      • Will only include simplest trusted applications that don't need any special privileges (calculator, alarm clock, fortunes etc.)
    • App system for applications in most popular programming languages
      • Will be based on an RPC API - either COTS or custom
      • On app end, will consist of an API wrapper allowing to register application and access hardware drivers
      • Will also need UI elements re-written for each target language
  • Software limitations that will be enforced
    • todo

Usability

ZeroPhone should have a basic set of software that any phone nowadays is expected to have - and more.

  • The expected apps
    • Calling and SMS interfaces
    • Alarm clock app
    • Clock+world clock app
    • Stopwatch+timer app
    • Call history app
    • Calculator
    • Contact management
    • File browser
    • WiFi and Bluetooth menu
    • Note taking app
    • Music player app
  • Hardware tinkering apps
    • Flashing and dumping I2C&SPI EEPROMs
    • Toggling GPIOs and sending/receiving commands on I2C&SPI interfaces
    • Microcontroller flashing apps
      • avrdude interface
      • picpgm interface
    • RFID reader apps
      • Support for RC522 readers
  • Privacy-related apps
    • Tor control panel app
    • I2P control panel app
  • Pentesting apps
    • Nmap application

APIs

As applications for ZeroPhone appear, there'll need to be a way to interface them to system capabilities through some kind of interface (so that there's no need to integrate system components and logic into applications themselves)

Capabilities the API should provide:

  • Contact management system
    • Allowing to fetch data by various keys (phone numbers, emails, ), adding, removing and updating contacts
  • Call log system
    • Fetching data
  • Exporting your own functions from apps
    • An easy-to-use interface for allowing RPC to your apps
      • Using whatever RPC mechanism the API itself will be using

Scripting

Many of the functions that ZeroPhone software provides can be even more useful if there's a possibility to use them in custom scripts, for automation and innovation purposes.

  • Python bindings
  • Command-line interface that can be used in shell scripts

Security

There are certain security measures that have to be taken to ensure we don't have a botnet of ZeroPhones after a short while. However, it has to be user-friendly, too. These are current plans for ZeroPhone software security measures:

SSH and debug console security measures

  • SSH server will be turned off by default, but with an option to turn it on from phone UI
    • It will also be possible to turn it on by placing a file on SD card - for debugging purposes
  • User passwords will be generated on a per-phone basis, with 3 or more possible generation ways
    • A completely random password
    • A password based on a dictionary word with alphabet characters replaced with visually similar numbers and special characters (for easier memorization)
    • A password provided by user
    • Password length will be adjustable

Accessibility

As functions will be added and new apps will be developed, there'll need to be a way to quickly access app functions without delays or too much menu navigation. Plans for making function access easier are:

  • Voice control
    • Most likely, triggered only by button press
  • Quick access menu
    • Triggered by button press/voice control
  • Using API as one of the sources of functions for quick access menu&voice control
  • User-defined scripts that could be used for quick access menu&voice control