Skip to content
Bernhard Esslinger edited this page Sep 4, 2018 · 51 revisions

JCrypTool (JCT) is the most wide-spread, free, and platform-independent e-learning program for cryptography and cryptanalysis. It runs under Windows, Mac OS X, and Linux. JCT is supported and used by universities and schools all over the world.

The following two lists contain smaller and larger projects for the JCrypTool platform with open tasks. The first list contains crypto related project ideas (all items starting with a C in their ID), the second list contains non-crypto related project ideas (all items starting with a N in their ID). Each project is either in status idea, active, or finished.

  • In case you are interested in an active project, do not hesitate to contact us; it might be possible to complete this project together with another team member already working on it and bring in your own thoughts.

  • Projects with status idea are waiting for any interested developer or developers. Please contact us right away.

  • Finished projects are moved to our project archive page. But even a finished project may be extended with new features in a new project. Simply contact us.

Nothing of interest available for you, but you do like the JCrypTool project and you want to be a part of it? Feel free to contact us: We might have some more ideas at an early stage that are not quite ready for our lists here; and of course we are open to any further ideas you might have!

If you have questions or need more information on a possible development task, don't hesitate to post a question in our developers group.

Proceeding

Please contact Dominik Schadow or Bernhard Esslinger in case you want to work on a project listed on this page. We will update its status and add your name to the selected task. At the same time, we will create a new entry in one of our issue trackers (core, crypto, or incubator), in which you track your progress. You also can come up with your own suggestion for a project.

Specifications

The specifications given for each task are generally not very strict and not very extensive. This is on purpose. The main intention of these lists is to give you some project ideas. You can be creative and develop a solution with fancy cryptographic animations, easy to use wizards, and lots of support for the user. Everything is up to you. The only important thing we strongly ask for is full Eclipse 4.x compatibility, which means the usage of Eclipse functionality like SWT and JFace, but no deprecated methods.

Knowledge Prerequisite

Most projects listed below require at least some Eclipse plug-in and RCP development knowledge as well as cryptographic knowledge. This knowledge is of course not required from the beginning, you can learn this while developing your project! Required from the beginning is Java knowledge and some practical experience developing in this language and using the GitHub repository. What we expect is curiosity and a lot of interest in learning and experimenting with new technologies.

Normally, all JCrypTool plug-ins are available in English and German. In case you don't speak any German we will find someone else to translate your plug-in. This is why German is an optional requirement most of the time in the following two lists.

Contact Options

More information is available from the JCrypTool community which you may contact in the JCrypTool Developers Group or in our IRC channel #jcryptool on freenode. Another good opportunity to get in touch is the Gitter chat room.

Crypto Related Projects

[C001] XML Security (active)

Integrate the complete XML Security Tools plug-ins into JCrypTool to enable users to sign/verify/encrypt/decrypt XML documents in JCrypTool. The plug-in is already partially integrated in JCrypTool. Sources are included in our crypto repository, containing org.jcryptool.crypto.xml in the project name.

Required Features

  • Plug-in for the Algorithm category
  • Integration of all XML Security wizards into the JCrypTool cryptographic extension points
  • Usage of the JCrypTool keystore, replace all proprietary keystore functionality in the XML Security Tools
  • Help update to match the new GUI/ functionality
  • Context help update to match the new GUI/ functionality

Optional Features

  • German translation of GUI and help files
  • Cheat Sheet updates

Knowledge Prerequisite

  • Basic cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Dominik Schadow
  • Level of difficulty: Medium
  • Developers: Dominik Schadow
  • Start: 05/2011
  • End:

[C002] S/MIME & PGP (idea)

A demonstration of the interchangeability of PGP and S/MIME formats. Pre-work for this project is available.

Required Features

  • Plug-in for the Visualization category
  • Visualization of the interchangeability of PGP and S/MIME formats

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: High
  • Developers:
  • Start:
  • End:

[C003] S/MIME (idea)

A demonstration of the S/MIME standard for secure e-mail. Pre-work for this project is available.

Required Features

  • Plug-in for the Visualization category
  • Visualization of the S/MIME standard for secure e-mail.

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: High
  • Developers:
  • Start:
  • End:

[C004] Entropy (idea)

Comprehensive Entropy plug-in for Entropy education (for texts from different languages). Pre-work for this project is available.

Required Features

  • Plug-in for the Visualization category
  • Entropy visualization

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[C005] Stream Cipher (idea)

Stream cipher visualization for education.

Required Features

  • Plug-in for the Visualization category
  • Stream cipher visualization

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[C006] Side-Channel Attacks (idea)

Design and prevention of side-channel attacks.

Required Features

  • Plug-in for the Visualization category
  • Design and prevention of side-channel attacks

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: High
  • Developers:
  • Start:
  • End:

[C007] Cube Attack (idea)

"New" attack idea against symmetric ciphers.

Required Features

  • Plug-in for the Visualization category
  • Cube attack visualization

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: High
  • Developers:
  • Start:
  • End:

[C008] Steganography (idea)

Visualization of different methods of steganography. This is a complex project which will be split into sub-tasks (issues) with different concrete methods of steganography.

Required Features

  • Plug-in for the Visualization category
  • Visualization of different methods of steganography.

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: High
  • Developers:
  • Start:
  • End:

[C009] Admin tool for an automatic metadata update of the integrated Bouncy Castle API (active)

Currently the crypto service providers FlexiProvider (FP) and Bouncy Castle (BC) are used in JCT. Only for FP versions, JCT has the feature to automatically adopt its offered functions when updating the shipped FlexiProvider plug-in. The reason is, that only FP describes its functions in special metadata which is extracted into an XML file which is used at runtime by JCT. This keeps the JCrypTool program up-to-date dynamically when a new FP library is released and the corresponding JCrypTool updated with it (this means that JCT will adapt its menus and the dynamic wizards in the function-centric view to always match a new FP version).

An important task for JCT and for BC will be to maintain such metadata in BC and implement an admin tool for BC, as BC will be the default crypto provider for JCT in the future. The admin tool must be an JCrypTool RCP plug-in which is not intended to be shipped to the end-user, it is an internal plug-in for the JCT developers.

After this works, JCT is planned to become THE GUI of choice for the BC libary.

Required Features

  • Internal plug-in for the JCrypTool RCP
  • Updates the existing metadata by scanning the BouncyCastle library

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Dominik Schadow
  • Level of difficulty: High
  • Developers: Simon Leischnig
  • Start:
  • End:

[C010] Key Storage (idea)

Develop an alternate password and key storage for non-FlexiProvider algorithms. This is very helpful for users in order to reuse keys linked with different identities. Explore the Eclipse password storage mechanism which may be used to implement this task (preferred solution).

Required Features

  • Password storage solution for the JCrypTool platform
  • Use the Eclipse password store if possible

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Basic cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Dominik Schadow
  • Level of difficulty: High
  • Developers:
  • Start:
  • End:

[C011] Cryptanalysis (idea)

Develop various plug-ins for the analysis of already implemented cipher/protocol/format crypto plug-ins in JCrypTool. This is a complex project which will be split into sub-tasks (issues) each with a concrete selected algorithm.

Required Features

  • Plug-in for the Analysis category
  • Analysis plug-in for a selected cipher/protocol/format crypto plug-in

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[C012] Hashes Visualization (idea)

Visualize hash sensitivity similar as done in CrypTool 1.

Required Features

  • Plug-in for the Visualization category
  • Shows interactively the hash sensitivity when changing single bits
  • Functionality must include the according functions from CrypTool 1

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Basic Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[C014] Knapsack Cipher (finished + idea)

Implement and visualize the knapsack problem (1st Merkle-Hellman knapsack cipher and 2nd according attacks).

Required Features

  • Plug-in for the Visualization category
  • Visualization of the knapsack problem

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data: Part 1: Merkle-Hellman knapsack cipher visualization

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Medium
  • Developers: F. Dogan, TU Darmstadt
  • Start: 08/2014
  • End: 02/2015

Project Data: Part 2: Attacks on Merkle-Hellman knapsack cipher

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[C015] Rabin Cipher (idea)

Implement and visualize the Rabin public key cipher (1979) and according attacks.

Required Features

  • Plug-in for the Visualization category
  • Visualization the Rabin public key cipher

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[C016] Screencast English (idea)

Create English screencasts or videos for certain cryptographic operations. Select one plug-in in each crypto category (algorithms, analysis, games, visuals) and show its possibilities in a screencast or a short video. This video/ screencast will be integrated in our portal.

This is a multi-part project which will be split into sub-tasks (issues) each with a concrete selected crypto plug-in.

Required Features

  • English screencast or video for the selected crypto plug-in

Knowledge Prerequisite

  • Basic cryptographic knowledge

Project Data

  • Mentor: Dominik Schadow
  • Level of difficulty: Easy
  • Developers:
  • Start:
  • End:

[C017] Screencast German (idea)

Create German screencasts or videos for certain cryptographic operations. Select one plug-in in each crypto category (algorithms, analysis, games, visuals) and show its possibilities in a screencast or a short video. Output will be integrated in our portal.

This is a multi-part task which will be split into sub-tasks (issues) each with a concrete selected crypto plug-in.

Required Features

  • German screencast or video for the selected crypto plug-in

Knowledge Prerequisite

  • Basic cryptographic knowledge
  • German

Project Data

  • Mentor: Dominik Schadow
  • Level of difficulty: Easy
  • Developers:
  • Start:
  • End:

[C018] Crypto Cheat Sheets English (idea)

Develop English cheat sheets for certain cryptographic operations. Create interactive cheat sheets for one plug-in in each crypto category (algorithms, analysis, games, visuals) and describe the usage of the plug-in.

This is a multi-part task which will be split into sub-tasks (issues) each with the concrete selected crypto plug-in.

Required Features

  • English cheat sheet for the selected crypto plug-in
  • Interactivity

Out of Scope

  • General JCrypTool usage must not be explained

Knowledge Prerequisite

  • Basic cryptographic knowledge
  • Basic Eclipse plug-in developer knowledge

Project Data

  • Mentor: Dominik Schadow
  • Level of difficulty: Easy
  • Developers:
  • Start:
  • End:

[C019] Crypto Cheat Sheets German (idea)

Develop German cheat sheets for certain cryptographic operations. Create interactive cheat sheets for one plug-in in each crypto category (algorithms, analysis, games, visuals) and describe the usage of the plug-in.

This is a multi-part task which will be split into sub-tasks (issues) each with the concrete selected crypto plug-in.

Required Features

  • German cheat sheet for the selected crypto plug-in
  • Interactivity

Out of Scope

  • General JCrypTool usage must not be explained

Knowledge Prerequisite

  • Basic cryptographic knowledge
  • Basic Eclipse plug-in developer knowledge
  • German

Project Data

  • Mentor: Dominik Schadow
  • Level of difficulty: Easy
  • Developers:
  • Start:
  • End:

[C020] SHA3 Candidates (idea)

Implement and visualize the remaining SHA3 candidates (ECHO, JH and Skein are already available in JCrypTool). This task should extend the created plug-in (org.jcryptool.crypto.modern.sha3) and provide implementations for the other SHA3 candidates. As a hint how an interactive visualization could look like: See the Keccak visualization in CrypTool 2.

Required Features

  • Plug-in for the Visualization category
  • Implement and visualize all SHA3 candidates
  • Extension of the existing org.jcryptool.crypto.modern.sha3 plug-in

Optional Features

  • German translation of GUI and help files

Out of Scope

  • Implementation of the existing candidates ECHO, JH and Skein

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[C021] Steganalysis (idea)

Implement and visualize classic and modern methods of steganalysis.

This is a multi-part task which will be split into sub-tasks (issues) each with the concrete selected method of steganalysis.

Required Features

  • Plug-in for the Visualization category
  • Implement and visualize classic and modern methods of steganalysis

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Strong statistical/cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: High
  • Developers:
  • Start:
  • End:

[C022] Homomorphic Signatures for Digital Photographs (idea)

Homomorphic signatures for digital photographs.

Required Features

  • Plug-in for the Algorithm category
  • Homomorphic signatures for digital photographs

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: High
  • Developers:
  • Start:
  • End:

[C023] Comprehensive LFSR Builder (idea)

Implement and visualize the analysis of LFSR algorithms. The vision is to extend this to a framework which also includes more complex ciphers like Trivium from FSR primitives.

Required Features

  • Plug-in for the Visualization category
  • Visualization of the analysis of LFSR algorithms

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Strong knowledge of modern symmetric cryptography
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: High
  • Developers:
  • Start:
  • End:

[C024] User Help English (idea)

The JCrypTool help, both crypto and user, is by far not complete. This task should extend the English online help in a consistent manner for all build-in functionality. Always describe the theory behind a cryptographic operation, and the way, the user can use the dialogs and its options.

Required Features

  • English online help for JCrypTool functionality

Optional Features

Out of Scope

Knowledge Prerequisite

  • Broad cryptographic knowledge
  • Basic Eclipse plug-in developer skills

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Easy
  • Developers:
  • Start:
  • End:

[C025] User Help German (idea)

The JCrypTool help, both crypto and user, is by far not complete. This task should extend the German online help in a consistent manner for all build-in functionality. Always describe the theory behind a cryptographic operation, and the way the user can use the dialogs and its options.

Required Features

  • German online help for JCrypTool functionality

Optional Features

Out of Scope

Knowledge Prerequisite

  • Broad cryptographic knowledge
  • Basic Eclipse plug-in developer skills
  • German

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Easy
  • Developers:
  • Start:
  • End:

[C026] Jefferson Wheel / Bazeries Cylinder / M-94 (idea)

Implement and visualize the functionality of the Jefferson wheel. It would be fine to also implement the classic (cribs, multiple anagramming) and modern cryptanalysis methods against it.

Required Features

  • Plug-in for the Visualization category

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good knowledge on classic cryptography
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[C027] Prime Number Functionality (idea)

Implement the typical functions around primes and for supporting the RSA method, like a prime number test, the generation of primes, the factorization of compound numbers, exponentiation, calculations in fields, ... This is related to [C033] and should use the already implemented factorization methods. It's also related to [C034]. Most of this task is already there in CT2 (Aug 2018).

Required Features

  • Arbitrary precision functions from existing libraries

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[C028] Brute-Force Attack on Modern Symmetric Ciphers (idea)

Brute-force attack on modern symmetric ciphers. Pre-work for this project is available.

Required Features

  • Offer features like partly given sessionkeys, partly given plaintexts, ciphertext-only, and known-plaintext attacks
  • Compare with task #C030 (Framework for analyzing modern symmetric ciphers)

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Matthias Walthart
  • Level of difficulty: High
  • Developers:
  • Start:
  • End:

[C029] N-Gram Analysis (idea)

N-gram analysis to determine the topic of a text. Some pre-work by Volkov and Abalenkovs is there.

Required Features

  • Different functions for determining the similarity of texts

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[C030] Framework for Analyzing Modern Symmetric Ciphers (idea)

The European ECRYPT program has done research on crypto algorithms. A broad collection of tools related to cryptanalysis was published. The aim is to bundle these and update them within JCT.

Required Features

  • Similar to task #028 (Brute-Force Attack on Modern Symmetric Ciphers). However, #C030 does not only use simple brute-force but modern methods from algebraic cryptanalysis.

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Frederik Armknecht
  • Level of difficulty: High
  • Developers:
  • Start:
  • End:

[C031] Improve Classroom Fitness (idea)

In the article "The Design and Use of Interactive Visualization Applets for Teaching Ciphers" by Dino Schweitzer and Leemon Baird, presented at the 7th IEEE Workshop on Information Assurance, 2006 the authors evaluate several crypto tools. Despite the relative leading position of CrypTool ("Of the cryptography tools reviewed, perhaps the most comprehensive interactive one is the freeware program CrypTool.") there are several requirements they suggest to make this tool fitting better for teachers and lecturers. The aim is that the visualizations had to be quickly understood in a classroom setting.

Required Features

  • Some experience in writing or designing educational software, human computing interfaces or in usability engineering.

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: High
  • Developers:
  • Start:
  • End:

[C032] Enlarge the Spectrum of Classic Algorithms Offered (idea)

JCrypTool already contains most of the modern, state-of-the-art crypto algorithms. In the area of historical ciphers, many are missing. A head start to change this could be incorporating existing Java libraries (like http://awr.free.fr for French speaking developers, or http://members.aon.at/cipherclerk).

Required Features

  • Incorporate the existing mechanisms of alphabet sets and command line support.

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good knowledge of classic cryptography
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[C033] Factorization Framework (idea)

There is a broad set of algorithms to factorize numbers into their primes. These tools like brute-force, Pollard, Lenstra, Quadratic Sieve, and General Number Field Sieve are appropriate for different numbers and different resources. The aim is to bring them together and reuse the best tools there (like msieve), however in addition improve the decision which algorithm to choose, avoid wrong results by currently used script. There are some existing implementations which could be very helpful for a head start, like Bernstein's FactHacks -- RSA factorization in the real world at 29C3.

Required Features

  • Explain the mathematical basics of each algorithm

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Very good knowledge in number theory
  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: High
  • Developers:
  • Start:
  • End:

[C034] RSA Demonstration (idea)

This plugin should make available all parameters of the RSA cipher: p, q, e, d, m, phi, lcm, adjustable blocksize, different modes of transforming text to numbers. Switch to the factorization algorithms, if only the public parameters are given; switch back to the private view, if m could be factorized. Here, a lot of the already available RSA plug-ins in JCT can be re-used.

Required Features

  • Use the RSA demonstration in CrypTool 1 as a starting point for the GUI

Optional Features

  • German translation of GUI and help files
  • Add the different padding methods as further option

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[C035] OpenSSL Frontend (idea)

Create a view for OpenSSL. All functions of OpenSSL should be offered via menu and navigation bar; all parameters should be accessible so; and the according OpenSSL commandline should be shown too for educational purposes.

Required Features

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: High
  • Developers:
  • Start:
  • End:

[C036] Sage Frontend (idea)

Create a view which acts as GUI for Sage. Sage is a very powerful open-source computer-algebra system (CAS).

Required Features

  • Make the installation of both packages (JCT and Sage) independent from each other.
  • Offer better support than the Sage notebook.

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: High
  • Developers:
  • Start:
  • End:

[C037] Hill-Climbing Methods (idea)

Implement various hill-climbing methods with different cost-functions, apply them on different (classic) cryptographic problems, and visualize the methods and the results. This task should be split into sub-tasks.

Required Features

  • Graphically show how different parameter sets produce different results.

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[C038] SAT Solvers (idea)

SAT solvers may be used as a general tool for cryptanalysis after transferring the cipher algorithm into the CNF form.

Required Features

  • Check which existing libraries are portable or written in Java.

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[C056] Boolean Functions (idea)

Analyze boolean functions (functions that map a boolean vector to another boolean vector) from a cryptographic perspective and develop cryptographic evaluation criteria for block and stream ciphers and for hash functions. Some prework is done in SageMath (see Chap. 8 in the CT Book).

Required Features

  • Check which existing libraries are portable or written in Java.

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Bernhard Esslinger
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[C057] Post-Quantum Digital Signatures (finished)

This project aims at the implementation of hash-based digital signature schemes including their visualization. The Merkle signature scheme (MSS) e.g. can be instantiated with every cryptographic hash function. Unlike, for example, RSA or ECDSA, it is secure even in the presence of quantum computers.

In a series of bachelor projects, the schemes WOTS, MSS, XMSS, XMSS_MT, and Sphincs have been implemented in JCT. Further schemes are welcome.

Required Features

  • Implementation of the Winternitz one-time signature scheme (WOTS, [1]) with exchangeable hash-function
  • Implementation of the Merkle signature scheme (MSS, [2]) based on WOTS
  • Plug-in for the Visualization category for both schemes

Optional Features

  • German translation of GUI and help files
  • Enhancements of the algorithms (WOTS+, Generalized MSS)

Knowledge Prerequisite

  • Good cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge

Literature

Project Data

  • Mentor: Michael Schneider
  • Level of difficulty: Medium
  • Developers:
  • Start: 2013
  • End: 2018

Non-Crypto Related Projects

[N001] Basic Screencast English (idea)

Create an English screencast or video demonstrating the general functionality/ usage of JCrypTool (should be identical with #003). This video/ screencast will be integrated in our portal.

Required Features

  • English screencast or video demonstrating the general JCrypTool usage

Out of Scope

  • Crypto operations in JCrypTool must not be explained

Knowledge Prerequisite

  • Basic Eclipse knowledge

Project Data

  • Mentor: Dominik Schadow
  • Level of difficulty: Easy
  • Developers:
  • Start:
  • End:

[N002] Basic Screencast German (idea)

Create a German screencast or video demonstrating the general functionality/ usage of JCrypTool. This video/ screencast will be integrated in our portal.

Required Features

  • German screencast or video demonstrating the general JCrypTool usage

Out of Scope

  • Crypto operations in JCrypTool must not be explained

Knowledge Prerequisite

  • Basic Eclipse knowledge
  • German

Project Data

  • Mentor: Dominik Schadow
  • Level of difficulty: Easy
  • Developers:
  • Start:
  • End:

[N003] XML Editor (idea)

Develop a basic and easy to use XML editor as Eclipse plug-in working in a RCP. Basic operations include syntax completion, syntax coloring, auto-closing of start tags, and well-formedness checks with error markers. Consider using the Eclipse XML editor sample template as a start. However, the XML editor must work inside the JCrypTool RCP with limited plug-in dependencies (e.g. there are no IDE related plug-ins available yet).

An alternative would be the integration of an existing open source XML editor given that there is license compatibility with JCrypTool (EPL).

Required Features

  • Basic XML editing functionality
  • Working in a RCP, with no Eclipse IDE plug-ins available
  • Ability to switch between text, hex and XML editors (XML files only)
  • New file/ sample file generation for the XML editor
  • Basic online help/ context sensitive help

Optional Features

  • German translation of GUI and help files
  • Schema or DTD validation functionality
  • XML code formatting (pretty print)

Out of Scope

  • A high-end XML editor with full editing functionality or any visualization/ graphical editing like Eclipse VEX

Knowledge Prerequisite

  • Strong Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Dominik Schadow
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[N004] User Feedback (idea)

Develop a plug-in which enables users to send feedback about JCrypTool from inside the RCP. Users should enter a comment and can select a mark for JCrypTool. Besides that, it should be possible to submit a bug report (including a stack trace) with the same functionality.

The messages should preferably been sent to GitHub, or, if that is not possible, to our Google groups (bug reports to developers group, other feedback to users group).

Required Features

  • Feedback mechanism inside JCrypTool in a separate plug-in

Optional Features

  • German translation of GUI and help files

Knowledge Prerequisite

  • Good Java and Eclipse developer plug-in knowledge

Project Data

  • Mentor: Dominik Schadow
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[N005] Hudson Build Process (idea)

Set up and document the complete JCrypTool build process on Hudson using the existing Maven/ Tycho configuration. Each plug-in contains a working pom-file; however the integration into Hudson is not working so far. Output must be the executables for all supported platforms (Linux, OS X (Carbon and Cocoa), and Windows) for all architectures (32 and 64 bit, except Carbon only 32 bit) as well as a complete update site (with categories as configured in category.xml (org.jcryptool.releng)).

Required Features

  • Setup Hudson locally on your computer and bring the JCrypTool build to work
  • Tycho build must work locally without Hudson (mvn execution in bash)
  • Required changes to pom files
  • Instructions (wiki) for Hudson setup

Optional Features

  • NSIS integration for Windows executables (setup-32.nsi and setup-64.nsi in org.jcryptool.releng)
  • Plug-in signing during build
  • About dialog (and some ini-files) update with current release date plus push to Git repository
  • Automatic tagging in both Git repositories
  • Sonar integration/ check in Hudson build process
  • FindBugs integration/ check in Hudson build process
  • Checkstyle integration/ check in Hudson build process (with our checkstyle configuration)
  • Automatic upload of build artifacts and update site to our portal (via SFTP)

Knowledge Prerequisite

  • Good Java and Eclipse plug-in developer skills
  • Good Hudson knowledge
  • Good Maven/ Tycho knowledge

Project Data

  • Mentor: Dominik Schadow
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:

[N006] Automatic Update Check (idea)

Configure the JCrypTool update manager to check for updates once a month. At the moment, this check is executed with every JCrypTool start.

Required Features

  • Configuration for an update check once a month

Knowledge Prerequisite

  • Good Java and Eclipse plug-in developer skills

Project Data

  • Mentor: Dominik Schadow
  • Level of difficulty: Easy
  • Developers:
  • Start:
  • End:

[N010] Automatic Tests (idea)

Explore Eclipse Jubula and provide sample tests to test JCrypTool. These tests should be integrated in the not yet complete Hudson build process. Further test strategies for GUI, different monitor resolutions, and all three main operating systems are welcome.

Required Features

  • Eclipse Jubula for JCrypTool and selected plug-ins (samples)
  • A wiki page and JCrypTool help pages with instructions for developers

Knowledge Prerequisite

  • Good Java and Eclipse plug-in developer skills

Project Data

  • Mentor: Dominik Schadow
  • Level of difficulty: Medium
  • Developers:
  • Start:
  • End:
Clone this wiki locally