ARK-Builders / ARK-Builders/Navigator

Encrypted storage

Open
#252 1 comment 0 reactions 0 assignees View on GitHub
feature
Dominant language
Kotlin
Stars
16
Forks
14
PR merge metrics
No merged PRs in 30d

Description

We can add `[encrypt]` operation for a resource of any kind.
Upon activation, the resource would be encrypted and moved into `.ark/encrypted` subfolder.

A password should be used for encryption and decryption, but it would be nice to use PIN-code for decryption (so we would store encryption keys and unlock them when PIN is valid). Fingerprint instead of PIN can be used as well (must be configurable).

The resource must be possible:
1. To share in encrypted form, e.g. send via a messenger.
2. To decrypt without the app.

To achieve these, some common algorithm and format must be used. See https://github.com/C2SP/C2SP/blob/main/age.md and https://github.com/str4d/rage.

Encryption would break _last modified_ attribute, so _first discovered_ or _"our own" last modified_ should be used, see ARK-Builders/arklib#66 for the inspiration. It would be nice to sort resources in the way like they are without encryption, just asking PIN code for displaying protected resources.

Contributor guide

Open the contributing guide

Research direction

Begin with the referenced age format and rage implementation, then review ARK-Builders/arklib#66 for timestamp implications. Done requires a decided encryption and authentication design that supports sharing, app-independent decryption, and protected-resource sorting.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, kotlin
Domain
mobile-dev, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.