Code Monkey home page Code Monkey logo

keycip's Introduction

Contributors Forks Stargazers Watchers Twitter Youtube Reddit LinkedIn


Logo

KeyCip

Play Store Logo

KeyCip is an Android app that allows users to encrypt, decrypt and sign text, photos, videos and other files. To accomplish this goal, it relies on both RSA and AES algorithms. Sounds to complicated? Do not worry the workflow in order to make each one of the operations is a step-by-step process (even Youtube tutorials have beeen created). KeyCip has been designed to be as easy as posible, introducing mechanisms such as fingerprint authentication or QR code scannig for public key sharing. The most important part is that the whole code is available for the community as an open source project, so do not hesitate to colaborate or request any feature. And remember: Information belongs to us
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

We are all aware that our online information is treated as little more than a commodity. In fact, we have naturalised the heavy fines that the big tech giants receive for abusive use of our data. Nevertheless, I strongly believe that our information belongs to us.

However, it seems that our hands and feet are tied. Social networks, instant messaging applications or cloud storage are present in our personal and working lives. With it, so is the data we send to these tools, which are monitored by large corporations. Therefore, creating a replacement for each of them seems like an arduous task considering the number of them and the development time it would require.

The latter leaves us with the only solution: control the information that we share, deciding who can access it. But how is that possible? The truth is that encryption algorithms have been around for 500 years, performing the tasks of encrypting and decrypting information.

So, if there is already a solution, what is the purpose of this application? First of all, you may have been scared when you heard encryption algorithm, don't worry, you are not alone. KeyCip comes to your rescue

KeyCip is an application that allows you to encrypt, decrypt, sign and verify signatures of text, photos, videos and other files using RSA and AES algorithms. Complicated? The application's greatest virtue is that it has been designed with the aim of making the interface and the whole workflow as simple as possible - so that you don't even need to learn complex security skills!

Still, some concepts to learn:

  • What does encrypting mean?

    Encrypting a text, photo, video or document means to hide its content so that only a specific person can know this information, thus ensuring that when the encrypted text, photo, video or document is sent, its content remains confidential.

  • What does decrypting mean?

    Decrypting a text, photo, video or document is the reverse of encrypting, in other words, the original content is returned to the encrypted file by a certain process.

  • What does signing mean?

    Signing a text, photograph, video or document is similar to signing a letter. The content of the text or file is not changed or hidden but allows the recipient to confirm that the person who sent it to them is indeed the person they claim to be.

The application will guide you through the whole process. In addition, you can also visit our Youtube channel where you will find guides, in case you have any doubts.

Wait, we have one last surprise. KeyCip has its own keyboard with which text encryption and decryption operations can be used from any application. This way, you can have a private conversation with your friend, partner or family member without even leaving the social network or instant messaging application you are using.

All of this is part of a Polytechnic University of Madrid, which has been developped by Jorge Fernández Fonseca in collaboration with Sergio Ríos Aguilar

Tutorial Screen Operation example Tutorial Screen

(back to top)

Built With

(back to top)

Getting Started

Prerequisites

The app has been developped for Android SDK 24 to Android SDK 31. Just make sure to install those SDK in your computer and you are good to go. Android Studio makes everything easier Android Studio

Installation

  1. Clone the repo
    git clone https://github.com/jff99/KeyCip.git
  2. Start building something unique (and helpful for the community)

(back to top)

Usage

You might feel overwhelmed by the quantity of classes and xml included within the app (I know it, my mind is caotic). In order to help you understand the project, we have prepared some diagrams, which shows how the differente classes are related

(back to top)

Roadmap

  • Add the app to Fdroid Store
  • Add encryption and decryption of pictures and files through the keyboard (currently only text)
  • Add authentication when encrypting and decrypting through the keyboard
  • Add the possibility to open directly .zip files (instead of browsing for it)
    • Changing the fragment structure and argument passing
  • Find a solution to share the private key to another device (not depending on the phone)
  • iOs version
  • Computer version

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the GNU General Public License v3.0 . See LICENSE.txt for more information.

(back to top)

Contact

Jorge Fernández Fonseca - @twitter_handle @linkedin_handle - [email protected]

Sergio Ríos Aguilar - [email protected]

Project Link: https://github.com/jff99/KeyCip

Reddit page: https://www.reddit.com/r/KeyCip/

(back to top)

Acknowledgments

(back to top)

(back to top)

keycip's People

Contributors

jff99 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

keycip's Issues

22.4: General Comments

  1. KeyCip --> Keyboard: Youtube to YouTube. Better yet, because of the YouTube association with Google, perhaps an alternative media hosting servive such as PeerTube could be leveraged for the privacy-conscious.

  2. KeyCip --> Settings: Github to GitHub.

  3. Conventional nomenclature for encrypting content to oneself is typically 'self'. We see this in PGP/GnuPG and Signal (e.g. Note to Self). Under 'Select a contact' the term 'Self' may be preferrable to 'Me'

2.4: Keyboard Artifacts and (!)

Note the keyboard artifacts to the right of % and ^ and & for the symbols overlay. Testing each key individually, the exclamation mark (!) does not work (no input).

Devices: Samsung S22 (Android 12) and Pixel 5 (GrapheneOS Android 12.1)

Where to get the APK?

I sthere any place users can obtain the APK from to give your app a try? Maybe you could attach it to its corresponding release? Thanks in advance!

Where is my private key?

I would like to download, copy and store it safely in my offline password manager (for future restore action if necessary).

Renaming public-rsa.cer in keychainname.cer

I have five contacts. All named public-rsa.cer. This generates confusion.

It would be more useful if their names were something like: (fantasy names)
• sun.cer
• jupiter.cer
• moon.cer
etc.

These names can be read from 'contact name' fields.

Backup/Restore contacts (pubkeys)

In order to not lost the recipients pub keys (when I buy a new phone or if I want restore the app after a reset), essentially a contacts book, it needs of a backup/restore mechanism (locally).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.