Giter Site home page Giter Site logo

securityfirst / umbrella_android Goto Github PK

View Code? Open in Web Editor NEW
253.0 19.0 61.0 86.08 MB

Open source Android, iOS and Web app for learning about and managing digital and physical security. From how to send a secure message to dealing with a kidnap. Umbrella has best practice guides in over 40 topics in multiple languages. Used daily by people working in high risk countries - journalists, activists, diplomats, business travelers etc.

Home Page: http://www.secfirst.org

License: GNU General Public License v3.0

HTML 0.42% Kotlin 99.58%
opensource security risk human-rights-defenders activism infosec journalism hacking lessons travel

umbrella_android's Introduction

Umbrella

Umbrella is an Android mobile app developed by Security First that provides human rights defenders with the information on what to do in any given security situation and the tools to do it. It allows the user to choose what they want to do, such as: protect data; securely make a call/email; securely access the internet; plan secure travel; protect their office/home; conduct counter-surveillance; or deal with kidnapping, arrest or evacuation. Once a situation is chosen, the app outlines what to do and what tools to use given your circumstances. This is followed by a simple checklist of recommended actions that can be customised, saved and shared securely. Umbrella’s Feed also provides users with an up-to-the-minute account of potential risks in their chosen location.

Installation on Android

Umbrella on Google Play Store Umbrella on Amazon App Store Umbrella on FDroid

F-Droid fingerprint: 39EB57052F8D684514176819D1645F6A0A7BD943DBC31AB101949006AC0BC228

Available on iOS

Umbrella is available on iOS devices too.

Umbrella on Apple App Store

Example Usage

Umbrella is designed for everyone (people looking to increase their security, folks living in high-risk areas, regular travellers, business people, techies, journalists, NGO staff, aid workers, human rights defenders, social workers, environmental activists, etc).

However, when we built Umbrella we tried to keep in mind the story of Glen Greenwald and Edward Snowden. Greenwald couldn't communicate with Snowden at the start because he found it cumbersome to set up encryption (he nearly missed one of the biggest stories of the decade because of this!). Also, when he (and Laura Poitras) travelled to Hong Kong - they didn't have much knowledge about how to meet securely with Snowden and detect surveillance. This is a common problem for journalists and activists. Umbrella is designed to solve this problem (and others) by having nearly everything they would have needed to know in one place - in their pocket.

Main Parts of Umbrella

Introduction: This is the part the user sees first. It explains briefly how the app works and the basic terms and conditions.

Menu: The bottom navigation menu is the main way for a user to navigate. It lists the feed, forms, lessons (with tool guides), checklists and account.

Feed: The feed contains security feeds from places like the UN Relief Web and the US Centers for Disease Control. You enter your location (and how often you want to be updated). Everytime a new update is released (e.g a disease outbreak in your location), the information comes up on the dashboard.

Lessons: Lessons are where users can learn about topics and things that they can do to improve their security. Some of the lessons have different levels (Beginner, Advanced, Expert) depending on your needs, ability, and risk. Each module is broken down into sections. At the end of each module is a list of other resources and further reading.

Tool Guides: These are detailed guides about how to use the software and apps mentioned in the lessons.

Checklists: Checklists are quick and easy references to help users implement the advice in the lessons. You can tick them off as you complete each item. Items can be edited. You may also create custom checklists. If you start ticking a checklist, you will then see it on the Checklists page. Checklists can also be shared through other apps such as your email.

Forms: Forms allow a user to quickly fill out and share important information about issues such as their travel plan in a high-risk location or report on a digital/physical security incident.

Lessons

The general flow of lessons is presented in order to replicate the typical way that a user works. Protecting their information -> Communicating with other people -> Arranging and travelling to a location -> Doing their operations and work -> Dealing with personal issues that may arise-> Seeking support if something goes wrong.

These are the lessons currently in Umbrella.

Access your risk

  • Security Planning

Information

These lessons mostly cover the security of information that is stored on your computers.

  • Managing information
  • Malware
  • Passwords
  • Protecting Files
  • Safely Deleting
  • Backing Up
  • Protect your workplace
  • Workplace raids

Communications

These lessons mostly cover the security of information when it is sent or received.

  • Mobile Phones
  • Making a call
  • Sending a message
  • Email
  • Censorship
  • Online Privacy
  • Phishing
  • Radios and satellite phones
  • Online abuse

Travel

These lessons cover the security of travelling in high-risk areas.

  • Preparation
  • Borders
  • Vehicles
  • Checkpoints
  • Protective Equipment

Work

These lessons include topics that may affect you in your work.

  • Meetings
  • Being followed
  • Protests
  • Dangerous Assignments
  • Public Assignments
  • Public Communications
  • Whistleblowers

Incident Response

These lessons cover how to respond to events.

  • Arrests
  • Evacuation
  • Kidnapping
  • Sexual Assault
  • Terrorism

Stress

  • Stress

Emergency Support

Explains places to get extra help if you have a problem.

  • Physical
  • Digital

Tools

These are detailed guides about how to use software and apps mentioned in the lessons. These are the tools currently covered in the tool guide.

  • Messaging
    • Mailvelope
    • ObscuraCam
    • Pidgin
    • Psiphon
    • Signal for Android
    • Signal for iOS
  • Encryption
    • Encrypt your iPhone
    • k9 & Open Keychain
    • KeePasXC
  • PGP
    • PGP for Linux
    • PGP for MacOS
    • PGP for Windows
  • Tor
    • Orbot & Orfox
    • Tor for MacOS
    • Tor for Linux
    • Tor for Windows
  • Files
    • Cobian Backup
    • Recuva
    • VeraCrypt
  • Other
    • Android
    • Facebook

Glossary

Contains explanations of the various terms used in the app.

About

Explains the licences that we use for and by Umbrella. Also says a big THANKYOU to everyone whose work we built on to make it happen.

Dashboard Feed Sources

These are the sources that we currently include for real-time updated security Feeds. For privacy reasons, users never connect directly to these services. We are always looking for more useful sources that will help users keep updated on the move.

Account

Navigate to the "Account" from the bottom menu. Here you can:

  • Modify settings (feed interval, feed location, feed sources, notifications, connections, import data, export data)
  • Enable Mask
  • Set a password
  • Log out

Requirements

You need an Android phone with a minimum version of 4.0.3 (SDK 15 - ICE_CREAM_SANDWICH_MR1)

Contributing to Umbrella

Thank you for your interest in contributing to Umbrella. See our contributing guide.


Contributors

Thanks to everyone who has contributed code to Umbrella. It wouldn’t have happened without you.

Cryptography Notice

This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted.

See http://www.wassenaar.org/ for more information.

License

Copyright 2013-2021 Global Security First Ltd. (trading as Security First)

Licensed under the GPLv3: http://www.gnu.org/licenses/gpl-3.0.html

umbrella_android's People

Contributors

apigeoneer avatar aymandf avatar coccodrillo avatar danieleorlando avatar douglasalipio avatar eighthave avatar enjeck avatar fgei avatar jac88 avatar krzd avatar madelineearp avatar rorymbyrne avatar stavares843 avatar tomerpacific avatar tomrittervg avatar

Stargazers

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

Watchers

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

umbrella_android's Issues

Missing F-Droid category

Is missing an entry for the the categories field from the F-Droid server metadata (currently categorized under "None").

You could either create your own category like Guardian Project has, or categorize it under a pre-existing one, perhaps under "Reading".

NullPointerException on ListAdapter

java.lang.NullPointerException: at org.secfirst.umbrella.adapters.FilledOutFormListAdapter.onBindViewHolder (FilledOutFormListAdapter.java:68) at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder (RecyclerView.java:6508) at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder (RecyclerView.java:6541) at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline (RecyclerView.java:5484) at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline (RecyclerView.java:5750) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition (RecyclerView.java:5589) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition (RecyclerView.java:5585) at android.support.v7.widget.LinearLayoutManager$LayoutState.next (LinearLayoutManager.java:2231) at android.support.v7.widget.LinearLayoutManager.layoutChunk (LinearLayoutManager.java:1558) at android.support.v7.widget.LinearLayoutManager.fill (LinearLayoutManager.java:1518) at android.support.v7.widget.LinearLayoutManager.onLayoutChildren (LinearLayoutManager.java:610) at android.support.v7.widget.RecyclerView.dispatchLayoutStep2 (RecyclerView.java:3719) at android.support.v7.widget.RecyclerView.onMeasure (RecyclerView.java:3135) at android.view.View.measure (View.java:22104) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6584) at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical (LinearLayout.java:806) at android.widget.LinearLayout.onMeasure (LinearLayout.java:685) at android.view.View.measure (View.java:22104) at android.widget.LinearLayout.measureVertical (LinearLayout.java:958) at android.widget.LinearLayout.onMeasure (LinearLayout.java:685) at android.view.View.measure (View.java:22104) at android.support.v4.widget.SwipeRefreshLayout.onMeasure (SwipeRefreshLayout.java:627) at android.view.View.measure (View.java:22104) at android.support.v4.view.ViewPager.onMeasure (ViewPager.java:1632) at android.view.View.measure (View.java:22104) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6584) at android.widget.FrameLayout.onMeasure (FrameLayout.java:185) at android.view.View.measure (View.java:22104) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6584) at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical (LinearLayout.java:806) at android.widget.LinearLayout.onMeasure (LinearLayout.java:685) at android.view.View.measure (View.java:22104) at android.support.v4.widget.DrawerLayout.onMeasure (DrawerLayout.java:1060) at android.view.View.measure (View.java:22104) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6584) at android.widget.FrameLayout.onMeasure (FrameLayout.java:185) at android.support.v7.widget.ContentFrameLayout.onMeasure (ContentFrameLayout.java:139) at android.view.View.measure (View.java:22104) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6584) at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical (LinearLayout.java:806) at android.widget.LinearLayout.onMeasure (LinearLayout.java:685) at android.view.View.measure (View.java:22104) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6584) at android.widget.FrameLayout.onMeasure (FrameLayout.java:185) at android.view.View.measure (View.java:22104) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6584) at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical (LinearLayout.java:806) at android.widget.LinearLayout.onMeasure (LinearLayout.java:685) at android.view.View.measure (View.java:22104) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6584) at android.widget.FrameLayout.onMeasure (FrameLayout.java:185) at com.android.internal.policy.DecorView.onMeasure (DecorView.java:722) at android.view.View.measure (View.java:22104) at android.view.ViewRootImpl.performMeasure (ViewRootImpl.java:2441) at android.view.ViewRootImpl.measureHierarchy (ViewRootImpl.java:1522) at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1775) at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1410) at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:6834) at android.view.Choreographer$CallbackRecord.run (Choreographer.java:966) at android.view.Choreographer.doCallbacks (Choreographer.java:778) at android.view.Choreographer.doFrame (Choreographer.java:713) at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:952) at android.os.Handler.handleCallback (Handler.java:789) at android.os.Handler.dispatchMessage (Handler.java:98) at android.os.Looper.loop (Looper.java:164) at android.app.ActivityThread.main (ActivityThread.java:6809) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:240) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:767)

Create a blank checklist feature

Under "My Security -> My Checklists," create a feature for users to be able to begin, see and use a completely blank checklist - without the need to have only Lesson Checklists

Bug - Empty feed view

When there's no feed to show the application crash.

Go to feed - type Brazil as location - go to any lesson - and then press back button.

Add Masking App Image and image of shaking to the explainer

Add masking app image to the explainer (also and image of the device being shaken), so that the user knows what to look for when it disappears and it's easier to visual remember what they are supposed to do.

Also, tell them in may take up to 30 seconds for the Umbrella App to initially mask, as sometimes there is a slowness.

NullPointerException on CheckList.

Sometimes when I am navigating on checkList view I get nullPointExceptions

java.lang.NullPointerException: at org.secfirst.umbrella.adapters.CheckListAdapter.getCount (CheckListAdapter.java:44) at android.widget.ListView.setAdapter (ListView.java:493) at org.secfirst.umbrella.fragments.TabbedFragment$CheckItemFragment.onCreateView (TabbedFragment.java:438) at android.support.v4.app.Fragment.performCreateView (Fragment.java:2261) at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1419) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1750) at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1819) at android.support.v4.app.BackStackRecord.executeOps (BackStackRecord.java:797) at android.support.v4.app.FragmentManagerImpl.executeOps (FragmentManager.java:2590) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether (FragmentManager.java:2377) at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute (FragmentManager.java:2332) at android.support.v4.app.FragmentManagerImpl.execSingleAction (FragmentManager.java:2209) at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss (BackStackRecord.java:649) at android.support.v4.app.FragmentPagerAdapter.finishUpdate (FragmentPagerAdapter.java:145) at android.support.v4.view.ViewPager.populate (ViewPager.java:1238) at android.support.v4.view.ViewPager.populate (ViewPager.java:1086) at android.support.v4.view.ViewPager$3.run (ViewPager.java:267) at android.view.Choreographer$CallbackRecord.run (Choreographer.java:874) at android.view.Choreographer.doCallbacks (Choreographer.java:686) at android.view.Choreographer.doFrame (Choreographer.java:618) at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:860) at android.os.Handler.handleCallback (Handler.java:751) at android.os.Handler.dispatchMessage (Handler.java:95) at android.os.Looper.loop (Looper.java:163) at android.app.ActivityThread.main (ActivityThread.java:6228) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776)

Dashboard updates appear in the notification tray

The utility of the of security dashboard is limited by the fact that a user has to go into the app to actually check the dashboard updates (from the UN, CDC etc). It would be useful to have a feature for a user to be able to set

a) Whether they want dashboard updates to appear in the notification tray
b) How often they want the dashboard updates to appear in the tray (e.g immediately, one per hour, per day, per week etc)
c) Whether they want none, silent or audio alert

Push Tags for the Latest Releases

As of now Umbrella has reached 0.2.5 on master and 0.2.4 on Google Play. However, the latest tag on GitHub is still 0.1.9. Could you please release some tags so that it would be easier for putting the app into F-Droid main archive?

Thanks!

[Crash] tabview component.

Stack trace logged on Google Play.

java.lang.IllegalStateException: at com.j256.ormlite.stmt.SelectIterator.next (SelectIterator.java:183) at com.j256.ormlite.dao.LazyForeignCollection.toArray (LazyForeignCollection.java:217) at java.util.ArrayList.<init> (ArrayList.java:191) at org.secfirst.umbrella.fragments.StepFragment.onCreateView (StepFragment.java:121) at android.support.v4.app.Fragment.performCreateView (Fragment.java:2261) at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1419) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1750) at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1819) at android.support.v4.app.BackStackRecord.executeOps (BackStackRecord.java:797) at android.support.v4.app.FragmentManagerImpl.executeOps (FragmentManager.java:2590) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether (FragmentManager.java:2377) at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute (FragmentManager.java:2332)

[Crash] checklist feature

Stack trace logged on Google Play.

java.lang.NullPointerException: at org.secfirst.umbrella.fragments.CheckItemFragment.populateAdapter (CheckItemFragment.java:147) at org.secfirst.umbrella.fragments.CheckItemFragment.onCreateView (CheckItemFragment.java:142) at android.support.v4.app.Fragment.performCreateView (Fragment.java:2261) at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1419) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1750) at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1819) at android.support.v4.app.BackStackRecord.executeOps (BackStackRecord.java:797) at android.support.v4.app.FragmentManagerImpl.executeOps (FragmentManager.java:2590) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether (FragmentManager.java:2377) at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute (FragmentManager.java:2332) at android.support.v4.app.FragmentManagerImpl.execSingleAction (FragmentManager.java:2209) at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss (BackStackRecord.java:649) at android.support.v4.app.FragmentPagerAdapter.finishUpdate (FragmentPagerAdapter.java:145) at android.support.v4.view.ViewPager.populate (ViewPager.java:1238) at android.support.v4.view.ViewPager.setCurrentItemInternal (ViewPager.java:663) at android.support.v4.view.ViewPager.setCurrentItemInternal (ViewPager.java:625) at android.support.v4.view.ViewPager.setCurrentItem (ViewPager.java:606) at org.secfirst.umbrella.fragments.TabbedFragment$TabbedContentFragment$1.onClick (TabbedFragment.java:252) at android.view.View.performClick (View.java:6294) at android.view.View$PerformClick.run (View.java:24770) at android.os.Handler.handleCallback (Handler.java:790) at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loop (Looper.java:164) at android.app.ActivityThread.main (ActivityThread.java:6494) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:807)

Make masking app permanent unless user selects otherwise

At present the masking app only functions until the user shakes the masked app and opens Umbrella again. The app then reappears on the Android Menu. This might be confusing to users. We should add a setting that allows users to keep the app hidden, open it through the masked app, use Umbrella, then close it and it returns to the masked app - with Umbrella not appearing on the Android Menu directly until they change a setting for that.

F-droid repo not verifying

I add repo and fingerprint provided in readme but it says: Supplied certificate fingerprint does not match

Dashboard refresh leads to frozen screen

On Moto G, Android 4.4

Going to dashboard, which refreshes with the latest data, going to the bottom of the available data and then pulling down (to refresh), leads to frozen screen. Cannot go back up to the top of the feed, can only go to menu and navigate away.

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.