aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authorDominik <dominik@dominikschuermann.de>2012-11-15 23:25:21 +0100
committerDominik <dominik@dominikschuermann.de>2012-11-15 23:25:21 +0100
commit0f3164c5b58f1f368a2710e0c653bb911d74df6d (patch)
tree2d1dca3890ae69fa5ba7cf6cfb8bfa605500531b /README.md
parente247fe18af14010719d26f3823a2f2984bc1f9be (diff)
downloadopen-keychain-0f3164c5b58f1f368a2710e0c653bb911d74df6d.tar.gz
open-keychain-0f3164c5b58f1f368a2710e0c653bb911d74df6d.tar.bz2
open-keychain-0f3164c5b58f1f368a2710e0c653bb911d74df6d.zip
Wrote security concept
Diffstat (limited to 'README.md')
-rw-r--r--README.md50
1 files changed, 49 insertions, 1 deletions
diff --git a/README.md b/README.md
index c9f756c75..29f4f47d0 100644
--- a/README.md
+++ b/README.md
@@ -57,4 +57,52 @@ See http://docs.oseems.com/general/application/eclipse/fix-gc-overhead-limit-exc
## Generate pressed dashboard icons
1. Open svg file in Inkscape
-2. Extensions -> Color -> darker (2 times!) \ No newline at end of file
+2. Extensions -> Color -> darker (2 times!)
+
+# Security Concept
+
+## Basic goals
+
+* Never (even with permissions) give out actual PGPSecretKey/PGPSecretKeyRing blobs
+* Intents without permissions should only work based on user interaction (e.g. click a button in a dialog)
+
+Android primitives to exchange data: Intent, Intent with return values, Send (also an Intent), Content Provider, AIDL
+
+## Intents
+
+### Without permission
+
+* android.intent.action.VIEW connected to .gpg and .asc files: Import Key and Decrypt
+* android.intent.action.SEND connected to all mime types (text/plain and every binary data like files and images): Encrypt and Decrypt
+* IMPORT
+* EDIT_KEY
+* SELECT_PUBLIC_KEYS
+* SELECT_SECRET_KEY
+* ENCRYPT
+* ENCRYPT_FILE
+* DECRYPT
+* DECRYPT_FILE
+
+### With permission
+
+* CREATE_KEY
+* ENCRYPT_AND_RETURN
+* GENERATE_SIGNATURE
+* DECRYPT_AND_RETURN
+
+## Content Provider
+
+* The whole content provider requires a permission (only read)
+* Don't give out blobs
+* Make an internal and external content provider (or pathes with <path-permission>)
+* Look at android:grantUriPermissions especially for ApgServiceBlobProvider
+* Only give out android:readPermission
+
+## Remote Service
+
+* The whole service requires a permission
+
+## Resulting permission
+
+* Read key information (not the actual keys)(content provider)
+* Encrypt/Sign/Decrypt/Create keys (intents, remote service) without user interaction \ No newline at end of file