This site is the archived OWASP Foundation Wiki and is no longer accepting Account Requests.
To view the new OWASP Foundation website, please visit https://owasp.org

Difference between revisions of "OWASP Off the record 4 Java Project"

From OWASP
Jump to: navigation, search
(What is OTR ?)
(Project Leader)
 
(28 intermediate revisions by the same user not shown)
Line 9: Line 9:
 
== Introduction ==
 
== Introduction ==
  
[https://en.wikipedia.org/wiki/Information_privacy Privacy] is daily reality for many internet users. Eavesdropping user's content and using it for various reason is not desired by many of the application users. Putting trust on communication channel, service provider or government not to intercept your content is not a good idea
+
[https://en.wikipedia.org/wiki/Information_privacy Privacy] is daily reality for many internet users. Eavesdropping user's content and using it for various reason is not desired by many of the application users. Putting trust on communication channel, service provider or government not to intercept your content is not a good idea.
 
 
OTR framework solves this problem by cryptographically processing the users content in transit and at rest. no eavesdropper can read the content, not even the service provider
 
  
 +
OTR framework solves this problem by cryptographically processing the users content in transit and at rest. No eavesdropper can read the content, not even the service provider
  
 
== What is OTR ? ==
 
== What is OTR ? ==
Line 22: Line 21:
 
== Why use otr4j ? ==
 
== Why use otr4j ? ==
  
It provides high degree of '''privacy and security'''
+
It provides high degree of '''privacy and security'''.
  
 
== How does it work ? ==
 
== How does it work ? ==
Line 42: Line 41:
 
  aliceClient.login("alice", "password");
 
  aliceClient.login("alice", "password");
 
  aliceClient.readMessages();
 
  aliceClient.readMessages();
 +
 +
  
 
==Licensing==
 
==Licensing==
Line 68: Line 69:
  
  
Project Leader - Jigar Joshi
+
Project Leader - [https://www.owasp.org/index.php/User:Jigarjm Jigar Joshi] ( [mailto:[email protected] [email protected]] )
  
 
== Related Projects ==
 
== Related Projects ==
Line 91: Line 92:
  
 
* [22 Dec 2016] 1.0-SNAPSHOT is available
 
* [22 Dec 2016] 1.0-SNAPSHOT is available
 +
 +
'''API''' 
 +
 +
APIs for basic functionality is available
 +
 +
Basic client with in-memory storage is provided for reference
 +
 +
 +
'''Functionality''' 
 +
 +
Privacy in transit is available
 +
 +
Message authentication and out of the band verification
 +
 +
User authentication for REST
 +
 +
MySQL based message store for server
 +
 +
Configurable toggles are available for various knobs of encryption
  
 
|}
 
|}
  
 
=FAQs=
 
=FAQs=
<!-- Instructions are in RED and should be removed from your document by deleting the text with the span tags.-->
+
 
<span style="color:#ff0000">
 
Many projects have "Frequently Asked Questions" documents or pages. However, the point of such a document is not the questions. ''The point of a document like this are the '''answers'''''. The document contains the answers that people would otherwise find themselves giving over and over again. The idea is that rather than laboriously compose and post the same answers repeatedly, people can refer to this page with pre-prepared answers. Use this space to communicate your projects 'Frequent Answers.'
 
</span>
 
  
 
==How can I participate in your project?==
 
==How can I participate in your project?==
All you have to do is make the Project Leader's aware of your available time to contribute to the project. It is also important to let the Leader's know how you would like to contribute and pitch in to help the project meet it's goals and milestones. There are many different ways you can contribute to an OWASP Project, but communication with the leads is key.  
+
You can participate in project by multiple ways.
 +
 
 +
'''Feature Request'''
 +
Raise your feature request [https://github.com/JigarJoshi/otr/issues/new here] with detailed information
 +
 
 +
'''Contribute code'''
 +
Pick an open issue, forkoff the github repository and create PR
 +
 
 +
'''Help in awareness'''
 +
One of the quarter goal is to spread awareness. you can help here by mentioning this project in your blog, tweets and through any other media.
  
 
==If I am not a programmer can I participate in your project?==
 
==If I am not a programmer can I participate in your project?==
Yes, you can certainly participate in the project if you are not a programmer or technical. The project needs different skills and expertise and different times during its development. Currently, we are looking for researchers, writers, graphic designers, and a project administrator.  
+
Yes, you can certainly participate in the project if you are not a programmer or technical. The project needs different skills and expertise and different times during its development. Currently, we are looking for researchers and software developers to help.
 +
 
 +
==I have nothing to hide why should I care for privacy?==
 +
Some users have thinking that they have got nothing to hide and they are ok with sharing content. This is too local and narrow perspective to privacy concerns.
  
 
= Acknowledgements =
 
= Acknowledgements =
 
==Volunteers==
 
==Volunteers==
 
+
The OWASP Security Principles project is developed by a worldwide team of volunteers. A live update of project  [https://github.com/JigarJoshi/otr/graphs/contributors contributors is found here]. Your name will be recognized here for your help and volunteer work for this project
<!-- Instructions are in RED and should be removed from your document by deleting the text with the span tags.-->
 
<span style="color:#ff0000">
 
The success of OWASP is due to a community of enthusiasts and contributors that work to make our projects great. This is also true for the success of your project.
 
Be sure to give credit where credit is due, no matter how small! This should be a brief list of the most amazing people involved in your project.
 
Be sure to provide a link to a complete list of all the amazing people in your project's community as well.
 
</span>
 
 
 
The OWASP Security Principles project is developed by a worldwide team of volunteers. A live update of project  [https://github.com/OWASP/Security-Principles/graphs/contributors contributors is found here].  
 
  
 
The first contributors to the project were:
 
The first contributors to the project were:
  
* [https://www.owasp.org/index.php/User:Clerkendweller Colin Watson] who created the OWASP Cornucopia project that the template was derived from
+
* [mailto:jigar.joshi@owasp.org Jigar Joshi]
* [https://www.owasp.org/index.php/User:Chuck_Cooper Chuck Cooper] who edited the template to convert it from a documentation project to a Code Project Template
+
* Want to see your name here ? Contribute please
* '''YOUR NAME BELONGS HERE AND YOU SHOULD REMOVE THE PRIOR 3 NAMES'''
 
  
 
= Road Map and Getting Involved =
 
= Road Map and Getting Involved =
  
<!-- Instructions are in RED and should be removed from your document by deleting the text with the span tags.-->
 
<span style="color:#ff0000">
 
  
Currently I have just put out a basic functional prototype with sample code, as Immediate next steps I want to take a deep scan of other application of otr and provide simpler interface for broad set of use cases, I don't have further clarity on roadmap but the general idea is to make available to broader audience with pain free way to understand and integrate
+
== Broader Goal ==
 +
<strong>Provide ability to strengthen privacy by providing stronger end-to-end encryption in transit and stronger encryption at rest to application developers by simpler API for most of the popular languages</strong>
  
A project roadmap is the envisioned plan for the project. The purpose of the roadmap is to help others understand where the project is going as well as areas that volunteers may contribute. It gives the community a chance to understand the context and the vision for the goal of the project. Additionally, if a project becomes inactive, or if the project is abandoned, a roadmap can help ensure a project can be adopted and continued under new leadership.
 
Roadmaps vary in detail from a broad outline to a fully detailed project charter. Generally speaking, projects with detailed roadmaps have tended to develop into successful projects. Some details that leaders may consider placing in the roadmap include: envisioned milestones, planned feature enhancements, essential conditions, project assumptions, development timelines, etc. You are required to have at least 4 milestones for every year the project is active.
 
</span>
 
 
==Roadmap==
 
==Roadmap==
As of <strong>November, 2013, the highest priorities for the next 6 months</strong> are:
+
 
<strong>
+
As of <strong>March, 2017</strong>, the highest priorities for the next 3 months are:
* Complete the first draft of the Code Project Template
+
 
 +
''This section will keep on updating''
 +
 
 
* Get other people to review the Code Project Template and provide feedback
 
* Get other people to review the Code Project Template and provide feedback
* Incorporate feedback into changes in the Code Project Template
 
* Finalize the Code Project template and have it reviewed to be promoted from an Incubator Project to a Lab Project
 
</strong>
 
  
Subsequent Releases will add
+
* '''Better API''': Simplify APIs and document them for Java
<strong>
+
 
* Internationalization Support
+
* '''Privacy at Rest''': APIs for privacy at rest
* Additional Unit Tests
+
 
* Automated Regression tests
+
* '''Awareness''': Get 3 clients using this framework in real life [please let us know by email if you already use it. to keep track of the goal's progress]
</strong>
 
  
 
==Getting Involved==
 
==Getting Involved==
Involvement in the development and promotion of <strong>Code Project Template</strong> is actively encouraged!
+
Involvement in the development and promotion of <strong>OTR4J</strong> is actively encouraged!
 
You do not have to be a security expert or a programmer to contribute.
 
You do not have to be a security expert or a programmer to contribute.
 +
 
Some of the ways you can help are as follows:
 
Some of the ways you can help are as follows:
  
 +
===Security Researcher===
 +
Are you a security researcher, privacy advocate ? help review & audit protocol design and implementation, suggest functional requirement,
 
===Coding===
 
===Coding===
We could implement some of the later items on the roadmap sooner if someone wanted to help out with unit or automated regression tests
+
Are you a Software Developer ? you can help contributing code to solve some of the [https://github.com/JigarJoshi/otr/issues open issues], We are actively seeking client framework building in Python, Javascript, Objective C
===Localization===
+
 
Are you fluent in another language? Can you help translate the text strings in the <strong>Code Project Template</strong> into that language?
+
===Fan of privacy and OTR===
===Testing===
+
Are you a privacy advocate on internet ? liked the project ? Help spreading awareness of this project
Do you have a flair for finding bugs in software? We want to product a high quality product, so any help with Quality Assurance would be greatly appreciated. Let us know if you can offer your help.
 
 
===Feedback===
 
===Feedback===
Please use the [https://lists.owasp.org/mailman/listinfo/OWASP_Code_Project_Template Code Project Template project mailing list] for feedback about:
+
Please create the [https://github.com/JigarJoshi/otr/issues issues] for feedback about
 
<ul>
 
<ul>
 
<li>What do like?</li>
 
<li>What do like?</li>
Line 170: Line 186:
  
 
=Minimum Viable Product=
 
=Minimum Viable Product=
<span style="color:#ff0000">
 
This page is where you should indicate what is the minimum set of functionality that is required to make this a useful product that addresses your core security concern.
 
Defining this information helps the project leader to think about what is the critical functionality that a user needs for this project to be useful, thereby helping determine what the priorities should be on the roadmap.  And it also helps reviewers who are evaluating the project to determine if the functionality sufficiently provides the critical functionality to determine if the project should be promoted to the next project category. 
 
</span>
 
 
The Code Project Template must specify the minimum set of tabs a project should have, provide some an example layout on each tab, provide instructional text on how a project leader should modify the tab, and give some example text that illustrates how to create an actual project.
 
 
It would also be ideal if the sample text was translated into different languages.
 
 
=Project About=
 
<!-- Instructions are in RED and should be removed from your document by deleting the text with the span tags.-->
 
<span style="color:#ff0000">
 
This page is where you need to place your legacy project template page if your project was created before October 2013. To edit this page you will need to edit your project information template. You can typically find this page by following this address and substituting your project name where it says "OWASP_Example_Project". When in doubt, ask the OWASP Projects Manager.
 
Example template page: https://www.owasp.org/index.php/Projects/OWASP_Example_Project
 
</span>
 
 
{{:Projects/OWASP_Example_Project_About_Page}}
 
  
 +
Minimum viable product for this project is a simpler Java API that provides stronger end-to-end encryption in transit and stronger encryption at rest
  
 
__NOTOC__ <headertabs />  
 
__NOTOC__ <headertabs />  
  
 
[[Category:OWASP Project]]  [[Category:OWASP_Builders]] [[Category:OWASP_Defenders]]  [[Category:OWASP_Code]]
 
[[Category:OWASP Project]]  [[Category:OWASP_Builders]] [[Category:OWASP_Defenders]]  [[Category:OWASP_Code]]

Latest revision as of 20:40, 23 January 2017

OWASP Project Header.jpg


Introduction

Privacy is daily reality for many internet users. Eavesdropping user's content and using it for various reason is not desired by many of the application users. Putting trust on communication channel, service provider or government not to intercept your content is not a good idea.

OTR framework solves this problem by cryptographically processing the users content in transit and at rest. No eavesdropper can read the content, not even the service provider

What is OTR ?

OTR4J stands for off-the-record for Java. end-to-end encryption (off-the-record) is a system of communication where only communicating users can read the messages, neither eavesdropper nor communication facilitator channels can read messages.

OTR4J provides simple framework and prototype that helps developers to easily implement end-to-end encryption into Java application. Example applications are messaging, file transfer, secure information transfer application

Why use otr4j ?

It provides high degree of privacy and security.

How does it work ?

OTR4J uses hybrid cryptography system. It uses RSA and ECDH for key exchanges and AES encryption. Technical details of protocol is explained here

Example API

Bob sends message to Alice

OTRClient bobClient = OTRClient.get(config);
bobClint.login("bob", "password");
bobClient.sendMessage("Hello Alice", ALICE_USER_ID);

Alice reads messages

OTRClient aliceClient = OTRClient.get(config);
aliceClient.login("alice", "password");
aliceClient.readMessages();


Licensing

Copyright 2016 Jigar Joshi

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.


Source Code

Documentation

Wiki Home Page

Issue Tracker

Project Leader

Project Leader - Jigar Joshi ( [email protected] )

Related Projects

JavaEncoderProject

Classifications

Project Type Files CODE.jpg
Incubator Project Owasp-builders-small.png
Owasp-defenders-small.png

News and Events

  • [22 Dec 2016] 1.0-SNAPSHOT is available

API

APIs for basic functionality is available

Basic client with in-memory storage is provided for reference


Functionality

Privacy in transit is available

Message authentication and out of the band verification

User authentication for REST

MySQL based message store for server

Configurable toggles are available for various knobs of encryption

How can I participate in your project?

You can participate in project by multiple ways.

Feature Request Raise your feature request here with detailed information

Contribute code Pick an open issue, forkoff the github repository and create PR

Help in awareness One of the quarter goal is to spread awareness. you can help here by mentioning this project in your blog, tweets and through any other media.

If I am not a programmer can I participate in your project?

Yes, you can certainly participate in the project if you are not a programmer or technical. The project needs different skills and expertise and different times during its development. Currently, we are looking for researchers and software developers to help.

I have nothing to hide why should I care for privacy?

Some users have thinking that they have got nothing to hide and they are ok with sharing content. This is too local and narrow perspective to privacy concerns.

Volunteers

The OWASP Security Principles project is developed by a worldwide team of volunteers. A live update of project contributors is found here. Your name will be recognized here for your help and volunteer work for this project

The first contributors to the project were:

  • Jigar Joshi
  • Want to see your name here ? Contribute please

Broader Goal

Provide ability to strengthen privacy by providing stronger end-to-end encryption in transit and stronger encryption at rest to application developers by simpler API for most of the popular languages

Roadmap

As of March, 2017, the highest priorities for the next 3 months are:

This section will keep on updating

  • Get other people to review the Code Project Template and provide feedback
  • Better API: Simplify APIs and document them for Java
  • Privacy at Rest: APIs for privacy at rest
  • Awareness: Get 3 clients using this framework in real life [please let us know by email if you already use it. to keep track of the goal's progress]

Getting Involved

Involvement in the development and promotion of OTR4J is actively encouraged! You do not have to be a security expert or a programmer to contribute.

Some of the ways you can help are as follows:

Security Researcher

Are you a security researcher, privacy advocate ? help review & audit protocol design and implementation, suggest functional requirement,

Coding

Are you a Software Developer ? you can help contributing code to solve some of the open issues, We are actively seeking client framework building in Python, Javascript, Objective C

Fan of privacy and OTR

Are you a privacy advocate on internet ? liked the project ? Help spreading awareness of this project

Feedback

Please create the issues for feedback about

  • What do like?
  • What don't you like?
  • What features would you like to see prioritized on the roadmap?

Minimum viable product for this project is a simpler Java API that provides stronger end-to-end encryption in transit and stronger encryption at rest