If you have never used PINcredible, you can skip this section.
If you have already used this app, please note that:
Before upgrading save your PINs outside of PINcredible to be able to reenter them in version 1.0.0a.
Thank you for your understanding!
Part of BackPack
Over time I've used several apps to store my PINs, unfortunately none of them really convinced me.
So here we are now, this is my own implementation of a secure PIN manager.
While the app is still in pre-release phase please expect a few breaking changes.
Some newer updates do not work with the previous app versions.
Therefore you may have to readd your saved PINs and recreate your backups in newer versions.
PINcredible | Others | |
---|---|---|
🔢 PIN obfuscation | ✅ | ✅ |
📂 Open Source | ✅ | ❌ |
🔐 Local Encryption | ✅ | ❌ |
🎨 Modern Design | ✅ | ❌ |
🌐 Internet Connection | ❌ | ✅ |
🎞️ Ads | ❌ | ✅ |
🗿 Suspicious Permissions | ❌ | ✅ |
The app obfuscates the PIN in a table layout surrounded by secure random numbers.
This brings two security benefits:
For the input of PIN digits the app uses an in-app keyboard.
This brings the following two security benefits:
In addition to the default color palette PINcredible offers an accessible color palette (following the IBM Color Blindness Palette).
In no way do I accept liability for lost PINs and the resulting consequences or other consequences of using the app.
Especially in the beta phase, but also afterwards, I do not guarantee that the app will always work properly and PINs will never be lost.
If you don't agree please don't use this app.
Google Play download link available after beta phase
<img height="80" alt="Get it on F-Droid"
src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
/>
APK releases on F-Droid and GitHub are signed using the same key. They can be verified using apksigner:
apksigner verify --print-certs -v example.apk
The output should look like:
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
The certificate content and digests should look like this:
DN: C=DE, CN=Niko Diamadis
Certificate Digests:
SHA-256: 7b:d9:79:cd:5f:f9:29:e0:72:90:e8:8d:67:b2:d8:1f:22:8e:a2:64:e4:33:f7:84:e4:c6:63:73:e3:16:bc:ad
SHA-1: c7:52:14:9f:4d:c3:e4:02:26:92:0b:68:20:94:6e:da:99:01:69:29
MD5: 8d:15:71:36:6e:30:7c:23:c9:2c:e8:9d:f2:38:5f:e1
The minimum supported Android version is API level 23, Android 6 (Marshmallow).
Additionally this app takes advantage of the Android KeyStore system. At the moment I'm assuming every Android device with Android 6 upwards has this built-in.
If you have any problems, maybe even because your device seems to be incompatible, please leave a message here.
![]() |
![]() |
![]() |
---|
Let's take a look at the technical details.
At first here are the algorithms used:
For easier understanding how the app works internally I've created the following diagram.
Find the detailed explanation below.
So what's happening here?
That's the whole magic behind PINcredible, if you have questions or if you are a Security Expert and you have recommendations for improving the overall security, please tell me via the issues or via e-mail: niko @ cyb3rko.de.
Of course I'm happy about any kind of contribution.
For creating issues there's no real guideline you should follow. If you create pull requests please try to use the syntax I use. Using a unified code format makes it much easier for me and for everyone else.
💛 |
---|
Color-blindness-test icons created by Freepik - Flaticon |
Grid icons created by prettycons - Flaticon |
Random icons created by Uniconlabs - Flaticon |
Copyright 2023, Cyb3rKo
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.