From c258d995cfd354a1540b898e46b15ab6c16b348c Mon Sep 17 00:00:00 2001 From: Nicolas Date: Sat, 26 Oct 2019 15:56:25 +0200 Subject: [PATCH] + Add some new concepts to DEVELOPMENT.md + Add icon --- DEVELOPMENT.md | 56 +++++++++++++++++++++++++++++++++++++- package.json | 3 +- src/assets/icon.png | Bin 0 -> 58641 bytes src/{ => css}/global.css | 8 +++++- src/{ => css}/scanner.css | 3 +- src/{ => css}/start.css | 5 +++- src/html/create.html | 3 ++ src/{ => html}/index.html | 37 ++++++++++++++++--------- src/js/loader.js | 10 +++++++ {dist => src}/main.js | 9 +++--- src/main.ts | 9 +++--- tsconfig.json | 3 -- 12 files changed, 117 insertions(+), 29 deletions(-) create mode 100644 src/assets/icon.png rename src/{ => css}/global.css (86%) rename src/{ => css}/scanner.css (89%) rename src/{ => css}/start.css (89%) create mode 100644 src/html/create.html rename src/{ => html}/index.html (81%) create mode 100644 src/js/loader.js rename {dist => src}/main.js (73%) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index e3eccca..ab3e3d4 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -1,3 +1,57 @@ # Developer notes **Programming language:** TypeScript -**Framework:** Electron (latest) \ No newline at end of file + +**Framework:** Electron (latest) + +## Encryption +OffPass uses PGP in the background with symmetric encrpytion. + +### Passphrase +The passphrase is the actual key which is used for encrpytion. But we don't use your entered master password directly. We hash it with `Argon2i` about 25 times. This gives use an output like this: `29dbf5392f13f36d7e9509b1a5c9add0d6a8e2625b5e84ab4d1df8da6063625d`. + +This value will be used as passphrase, not your plain password. The creation of this hash takes about **more then one second**. + +Attackers are using password dictionaries with more then one million passwords. Creating such a hash for each password in there would take **millions of years**. + +## QR-Code schema +An OffPass QR-Code must follow this data schema or else OffPass wouldn't be able to read it. **The following examples are data after decryption.** +``` +name|password|email|website_url|(custom1)data1|(custom2)data2 +``` +Als Beispiel: +``` +Main Steam Account|super_secret_example123|info@example.de|https://store.steampowered.com/login/|(2fa_backup)R1337 + +ProtonMail|mail_pw123|klier.nicolas@protonmail.com|| +``` +These characters are reserved and cannot be used for any fields: `|%§` + +### Compression +It is possible to compress QR-Codes. Instead of writing all data to the QR-Code you can write random strings (key) to it. OffPass itself holds a database of those random string and the corresponding encrypted value. + +The program generates a `session key` (length of 10 characters) which is unique for each QR-Code. This session key is stored on the QR-Code and is used to encrypt the raw values in database. So not even If someone stells your database he wouldn't be able to read your compressed strings. + +The compression key is stored like that: `§key`, the decryption key is stored like that: `%decryption_key%` always at the beginning. + +For example: +``` +%session_key%§xa|passwords_not2134|email_too@example.com|§q|(§a)§gh|(uncompressed)value + +-> Google|passwords_not2134|email_either@example.com|https://accounts.google.com|(2fa_backup)245131,...|(uncompressed)value +``` + +This can has two advantages: +* An attacker can't read compressed values (he would need the database) +* You can get more data on one QR-Code + +But one disadvantage: +* **If you lose access to the compression database, you also lose access to those compressed values. But not to your password.** + +### Type mark +OffPass will first look if the scanned QR-Code is actually an OffPass QR-Code. This is done by checking the first three charcters: + +``` +op:jA0ECQMC+t514sews8e70jsBw4SWsYYgPGzi5Ps0OGr8/tVGngopmHDQpSpMkNtkWZU573zNsFyk VVN3elnAY0D+EIIzTpKxq0F3fQ== +``` + +This `op:` tells the program that this is actully a OffPass QR-Code. If this is not present, OffPass will abort further steps and notify the user that this is not an OffPass QR-Code. \ No newline at end of file diff --git a/package.json b/package.json index caa1d1b..759b0ea 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "start": "tsc && electron dist/main.js" + "start": "tsc && electron src/main.js", + "clean": "del /S src\\js\\*.js && del src\\*.js" }, "repository": { "type": "git", diff --git a/src/assets/icon.png b/src/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..90a2734dbf36d952da285bc58794e075ea3fce46 GIT binary patch literal 58641 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 literal 0 HcmV?d00001 diff --git a/src/global.css b/src/css/global.css similarity index 86% rename from src/global.css rename to src/css/global.css index b2bb56a..1f2be90 100644 --- a/src/global.css +++ b/src/css/global.css @@ -19,6 +19,13 @@ p, span { color: #fff; } +a { + color: white; + text-decoration: none; + font-weight: bold; + font-family: 'Source Sans Pro', sans-serif; +} + #taskbar { display: flex; position: absolute; @@ -40,7 +47,6 @@ p, span { height: 100%; vertical-align: middle; text-align: cover; - object-fit: fill; } #content div { position: absolute; diff --git a/src/scanner.css b/src/css/scanner.css similarity index 89% rename from src/scanner.css rename to src/css/scanner.css index 5450058..936d230 100644 --- a/src/scanner.css +++ b/src/css/scanner.css @@ -29,7 +29,8 @@ opacity: 0; padding-left: 20px; backdrop-filter: blur(20px); - background-color: rgba(0, 0, 0, .3); + background: linear-gradient(0deg, rgba(0,0,0,.75) 80%, rgba(94,94,94,.75) 100%); + box-shadow: 0px -10px 34px -10px rgba(0,0,0,0.75); } #password { diff --git a/src/start.css b/src/css/start.css similarity index 89% rename from src/start.css rename to src/css/start.css index bee069c..091f5ba 100644 --- a/src/start.css +++ b/src/css/start.css @@ -4,7 +4,6 @@ padding-top: calc(10% + 50px); width: 100%; height: 100%; - pointer-events: none; } #master_prompt input { margin-top: 50px; @@ -22,4 +21,8 @@ border-bottom-width: 3px; border-bottom-left-radius: 2px; border-bottom-right-radius: 2px; +} +#master_prompt a { + line-height: 5; + font-size: 13pt; } \ No newline at end of file diff --git a/src/html/create.html b/src/html/create.html new file mode 100644 index 0000000..ff3f00a --- /dev/null +++ b/src/html/create.html @@ -0,0 +1,3 @@ +
+

New QR-Code

+
\ No newline at end of file diff --git a/src/index.html b/src/html/index.html similarity index 81% rename from src/index.html rename to src/html/index.html index c139869..bb6418b 100644 --- a/src/index.html +++ b/src/html/index.html @@ -2,17 +2,17 @@ - Hello World! + OffPass - + - - - - - + + + + +
@@ -24,7 +24,9 @@

Welcome to OffPass

Please enter your master password for decryption

- +
+ + Or create a new QR-Code

Wait for camera...

@@ -39,7 +41,7 @@