diff --git a/README.md b/README.md new file mode 100644 index 0000000..95f91b4 --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +# fingerprint-login-notepad + +Aplikacja to notatnik do którego dostęp zabezpieczony jest odciskiem palca. Przeznacozna dla 1 użytkownika. + +## Wykorzystane mechanizmy bezpieczeństwa + +1. Notatki są zaszyfrowane algorytmem AES-256 w trybie CBC. +2. Padding +3. Wektor początkowy generowany jest losowo przez SecureRandom. +4. Klucz jest przechowywany w Android Key Store - hardwearowo zabezpieczonym miejscu. +5. Ochrona przed rootowaniem dzięki ustawieniu setUserAuthenticationRequired(true) + + +## Zrzuty ekranu z działania aplikacji + + + + + diff --git a/app/src/main/java/com/example/bsm_fingerptint_tutorial/NotepadActivity.java b/app/src/main/java/com/example/bsm_fingerptint_tutorial/NotepadActivity.java index d224345..327426c 100644 --- a/app/src/main/java/com/example/bsm_fingerptint_tutorial/NotepadActivity.java +++ b/app/src/main/java/com/example/bsm_fingerptint_tutorial/NotepadActivity.java @@ -150,7 +150,7 @@ public class NotepadActivity extends AppCompatActivity { private void saveNotesToPreferences(String mode) throws GeneralSecurityException, IOException { - SharedPreferences sharedPreferences = getSharedPreferences(SHARED_NAME_NOTES, MODE_PRIVATE); + SharedPreferences sharedPreferences = getSharedPreferences(SHARED_NAME_NOTES, MODE_WORLD_READABLE); SharedPreferences.Editor editor = sharedPreferences.edit(); if (mode.equals("del")){ diff --git a/app/src/main/java/com/example/bsm_fingerptint_tutorial/UtilsCipher.java b/app/src/main/java/com/example/bsm_fingerptint_tutorial/UtilsCipher.java index e521377..fcdc9bd 100644 --- a/app/src/main/java/com/example/bsm_fingerptint_tutorial/UtilsCipher.java +++ b/app/src/main/java/com/example/bsm_fingerptint_tutorial/UtilsCipher.java @@ -30,6 +30,8 @@ public class UtilsCipher { .setBlockModes(KeyProperties.BLOCK_MODE_CBC) .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7) .setRandomizedEncryptionRequired(false) + .setUserAuthenticationRequired(true) + .setUserAuthenticationValidityDurationSeconds(300) .build(); keyGenerator.init(keyGenParameterSpec); diff --git a/screenshots/add_note.png b/screenshots/add_note.png new file mode 100644 index 0000000..abfeb99 Binary files /dev/null and b/screenshots/add_note.png differ diff --git a/screenshots/biometry.png b/screenshots/biometry.png new file mode 100644 index 0000000..200b82d Binary files /dev/null and b/screenshots/biometry.png differ diff --git a/screenshots/edit_note.png b/screenshots/edit_note.png new file mode 100644 index 0000000..67a74bb Binary files /dev/null and b/screenshots/edit_note.png differ diff --git a/screenshots/login.png b/screenshots/login.png new file mode 100644 index 0000000..e6d3c73 Binary files /dev/null and b/screenshots/login.png differ diff --git a/screenshots/main_screen.png b/screenshots/main_screen.png new file mode 100644 index 0000000..333df18 Binary files /dev/null and b/screenshots/main_screen.png differ