Skip to content

Commit

Permalink
Rename Amgine to MightyXOR
Browse files Browse the repository at this point in the history
– Rename every occurrence of "Amgine" to "MightyXOR"

– Extend README.md with images

– Add test files
  • Loading branch information
juliangrtz committed Jan 10, 2024
1 parent d883ea3 commit bb6d00c
Show file tree
Hide file tree
Showing 130 changed files with 3,787 additions and 1,838 deletions.
2 changes: 1 addition & 1 deletion .github/FUNDING.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: ['https://paypal.me/jgoeritz']
custom: ['https://paypal.me/xxxxxxxxx']
12 changes: 6 additions & 6 deletions .github/workflows/build_and_test_everything.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,21 +22,21 @@ jobs:
include-prerelease: true

- name: Restore dependencies
run: dotnet restore src/Amgine.sln
run: dotnet restore src/MightyXOR.sln

# Building
- name: Build the CLI
run: dotnet build --no-restore src/Amgine.CLI/Amgine.CLI.csproj
run: dotnet build --no-restore src/MightyXOR.CLI/MightyXOR.CLI.csproj

- name: Build the Common library
run: dotnet build --no-restore src/Amgine.Common/Amgine.Common.csproj
run: dotnet build --no-restore src/MightyXOR.Common/MightyXOR.Common.csproj

- name: Build the Core library
run: dotnet build --no-restore src/Amgine.Core/Amgine.Core.csproj
run: dotnet build --no-restore src/MightyXOR.Core/MightyXOR.Core.csproj

- name: Build the GUI
run: dotnet build --no-restore src/Amgine.GUI/Amgine.GUI.csproj
run: dotnet build --no-restore src/MightyXOR.GUI/MightyXOR.GUI.csproj

# Testing
- name: Run unit tests
run: dotnet test src/Amgine.UnitTests/Amgine.UnitTests.csproj
run: dotnet test src/MightyXOR.UnitTests/MightyXOR.UnitTests.csproj
6 changes: 0 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -348,9 +348,3 @@ MigrationBackup/

# Ionide (cross platform F# VS Code tools) working folder
.ionide/

/AmgineOld
/Telefonie
/Test
otp_errors.PNG
todo_amgine.txt
6 changes: 3 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Contributing to Amgine
# Contributing to MightyXOR

We welcome any contributors and contributions to this software project.
Please do not hesitate to open pull requests and ask us about any issue you encounter while writing your code.
If you are here, you already want to help the project, so feel free to ask anything.
As an Amgine developer, there are a few recommendations to follow:
As a MightyXOR developer, there are a few recommendations to follow:

## Developer guide

Expand All @@ -19,7 +19,7 @@ Adding upstream:
git remote add upstream https://github.com/juliangrtz/mightyxor
```

Adding a branch based on amgine/main to your fork:
Adding a branch based on mightyxor/main to your fork:
```
git checkout upstream/main
git pull upstream main
Expand Down
Binary file added Images/common_otp_implementation_errors.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Images/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Images/logo.psd
Binary file not shown.
Binary file modified Images/main_menu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Images/old_logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Images/old_main_menu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Images/otp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Images/sss.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Images/utils.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
50 changes: 30 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# MightyXOR (aka. Amgine)
# MightyXOR
<p align="center">
<img src="Images/logo.png" alt="Amgine's Logo"/>
<img height=250 width=400 src="Images/logo.png" alt="MightyXOR's Logo"/>
</p>

MightyXOR / Amgine [ˈɛmd͡ʒɪn] is an open source cryptography software suite based on .NET 6 with the primary aim of being information-theoretically secure, meaning its encrypted files cannot be decrypted even if an adversary has unlimited computing resources and time.
MightyXOR is an open source cryptography software suite based on .NET 6 with the primary aim of being information-theoretically secure, meaning its encrypted files cannot be decrypted even if an adversary has unlimited computing resources and time.

It supports various en- and decryption algorithms and techniques, including
- the [one-time pad](https://en.wikipedia.org/wiki/One-time_pad) (OTP),
Expand All @@ -13,11 +13,11 @@ It supports various en- and decryption algorithms and techniques, including
## Context

Given the increasing usage of highly efficient quantum computers, the question arises, when – not if – these will be able to break widely used cryptography algorithms like AES or RSA in a short space of time.
Thus, Amgine's purpose is to provide a secure environment for especially sensitive data by means of information-theoretically secure techniques. One of these techniques is the one-time pad.
Thus, MightyXOR's purpose is to provide a secure environment for especially sensitive data by means of information-theoretically secure techniques. One of these techniques is the one-time pad.
It [was mathematically proven](http://math.umd.edu/~lcw/OneTimePad.pdf) that the one-time pad **cannot be broken** – even with vast computational power.

## Goals
To put it in a (tiny) nutshell, we – as Amgine developers – are pursuing the following goals:
To put it in a nutshell, we are pursuing the following goals:

- Security on all levels
- Reliable, correctly implemented algorithms such as the OTP
Expand All @@ -27,12 +27,12 @@ To put it in a (tiny) nutshell, we – as Amgine developers – are pursuing the
- Free, open source software
- Understandable, maintainable, readable source code

In the future, we intend to extend Amgine to support more techniques:
In the future, we intend to extend MightyXOR to support more techniques:

- Further information-theoretically secure cryptosystems
- A more efficient sharing scheme, namely the (k, n)-threshold secret sharing scheme described [in this paper](https://www.researchgate.net/publication/220905280_A_New_k_n-Threshold_Secret_Sharing_Scheme_and_Its_Extension)
- An API for hardware random number generators (HRNGs)
- Cross-plattform support for Linux and macOS concerning Amgine's graphical user interface
- Cross-plattform support for Linux and macOS concerning MightyXOR's graphical user interface

## Plans for the future

Expand All @@ -42,7 +42,7 @@ In the future, we intend to extend Amgine to support more techniques:

## Usage

Amgine provides a graphical user interface which currently only runs on Windows operating systems.
MightyXOR provides a graphical user interface which currently only runs on Windows operating systems.

### CLI (command line interface)

Expand All @@ -54,35 +54,43 @@ TODO: Add more pictures here

The GUI is based on Windows Forms and will be replaced by a WPF-based application as soon as possible. As depicted in this screenshot, it is divided into several components:

<img src="Images/main_menu.png" alt="Amgine's GUI"/>
<img src="Images/main_menu.png"/>

<img src="Images/otp.png"/>

<img src="Images/sss.png"/>

<img src="Images/utils.png"/>


<hr>

The encryption menu allows both ordinary OTP-based encryption and an extended one-time pad with plausible deniability. In both cases, Amgine offers advanced options to customize the encryption process to your choice.
The encryption menu allows both ordinary OTP-based encryption and an extended one-time pad with plausible deniability. In both cases, MightyXOR offers advanced options to customize the encryption process to your choice.

In the decryption menu, an encrypted file can be decrypted using a key. If plausible deniability was used previously, Amgine behaves exactly as if it was not used. This way, an attacker would not recognize that an alternative key was involved.
In the decryption menu, an encrypted file can be decrypted using a key. If plausible deniability was used previously, MightyXOR behaves exactly as if it was not used. This way, an attacker would not recognize that an alternative key was involved.

Amgine also supports a secret sharing mode according to Adi Shamir's scheme based on polynomial interpolation. Using this mode, a given file can be split into *N* parts whereas *K* parts are required to restore the entire file.
MightyXOR also supports a secret sharing mode according to Adi Shamir's scheme based on polynomial interpolation. Using this mode, a given file can be split into *N* parts whereas *K* parts are required to restore the entire file.

It is recommended to combine Amgine's features in order to maximize the security. For instance, it may be feasible to encrypt a sensitive file with a OTP including plausible deniability and split both the encrypted file and keys afterwards. Under the correct circumstances, it is impossible to break this cryptosystem.
It is recommended to combine MightyXOR's features in order to maximize the security. For instance, it may be feasible to encrypt a sensitive file with a OTP including plausible deniability and split both the encrypted file and keys afterwards. Under the correct circumstances, it is impossible to break this cryptosystem.
## FAQ

### Why C#?
### Why C#?!

Good question. A port to C, C++ or Rust is planned.

### What does the name mean?

Reading *Amgine* backwards gives the answer to this question. However, Amgine is supposed to be much easier to use than the Enigma in WWII.
The name should be self-explanatory. The exclusive OR really is mighty in cryptography.

### Should I use MightyXOR instead of Veracrypt or BitLocker to encrypt my sensitive data?

### Should I use Amgine instead of Veracrypt or BitLocker to encrypt my sensitive data?
No. At the moment, MightyXOR does not claim to offer the features a software such as VeraCrypt does. Comparing MightyXOR to other cryptography software is difficult since MightyXOR can be seen as a niche product. Furthermore, MightyXOR encrypts on the file level, whereas VeraCrypt and BitLocker encrypt on the volume level. Consider MightyXOR a useful extension to your cryptography toolset which you can use to en- and decrypt your especially sensitive data.

No. At the moment, Amgine does not claim to offer the features a software such as VeraCrypt does. Comparing Amgine to other cryptography software is difficult since Amgine can be seen as a niche product. Furthermore, Amgine encrypts on the file level, whereas VeraCrypt and BitLocker encrypt on the volume level. Consider Amgine a useful extension to your cryptography toolset which you can use to en- and decrypt your especially sensitive data.
### How can I contribute to the Amgine project?
### How can I contribute to the MightyXOR project?

Any contribution to the Amgine project, be it documentation, testing or development is warmly welcome. As an Amgine developer, however, it should be your top priority to develop a secure, clean and easy-to-use software product. Security is crucial. Please refer to [this guide](CONTRIBUTING.md) for (new) Amgine contributors for more detailled information.
Any contribution to the MightyXOR project, be it documentation, testing or development is warmly welcome. As an MightyXOR developer, however, it should be your top priority to develop a secure, clean and easy-to-use software product. Security is crucial. Please refer to [this guide](CONTRIBUTING.md) for MightyXOR contributors for more detailled information.

### I am thinking of a new feature for Amgine. How can I share it?
### I am thinking of a new feature for MightyXOR. How can I share it?

Ideas for new features can be posted in the [issues section](../../issues). Please orientate yourself by the following aspects when proposing a new feature:

Expand All @@ -92,6 +100,8 @@ Ideas for new features can be posted in the [issues section](../../issues). Plea
- *optional:* Drawbacks
- *optional:* Alternatives

Additionally, feel free to create pull requests. Be sure to (at least briefly) explain the points above.

## License

The license is declared [in this file](LICENSE).
Binary file added Test/4096_bytes_NonArithmeticPRNG.key
Binary file not shown.
Binary file added Test/4096_bytes_PCG.key
Binary file not shown.
15 changes: 15 additions & 0 deletions Test/4096_bytes_PRNG.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
��0ʓ]����<lK)�qB�6|���U��Y�'!U�4�<����j�a�i).���I-�G#�ﳪ��X�}c���Y�.�#M:.������϶0�tq��S��s �sڳS���5D�V,C�<�/8�n��\�u��k�cR�.
�,���MC��s�F45{�̓_�
�P�i���@�h\�x��wr��H�]tEv���p�WՂ�ɍt�,�Sb�`), �1��'�(���{���3��b["`���9,��������Qب^/��n�w� (�¾��T')����C���٥?&c�7}:����- ;�l�BX;�fh�!����Q�w0+�pځ|`$*!]��g��\ǴR�,^e;m�<��.|S��>֔��WI�NBti���HA&�LSe�b�zy7��=䪃әx����q�����������?���[g�o��:���V�T�$�y���姤/P3����,s6���e���PNL) m7l�V� �p׵�b/~C�`��nL�K>���W��eb�.�P���g>�D��I��۽�F6[�b ��@S+ 8��ϧ�(��i����Ȯ��}e/_c�!��%fu�S�Z�u��]�%oh��s(�]y�3F�����t��N_)��K<�_���ߎoN99j3 θ���P,�`,F�Vx�e��9��L�mL�׶�v�մ�+���V��P�:���&���p���Ƿ=15�sQ�zS-�6pۨ�wg�:&�D.] �#C=�(b�-6\�7�'}� ��2�s����((�B������X>\���iMD�~qi}��k$jf�)τ-+��m�O|#��^E���{���˝�J�76O�ٓ>l�,ѵP`��;�A|��ĺ�(G�q��6[7�s�9p؃�Uӊ>�Ԃ\�[0����{��#U� [ܭ����@z�M�D�2҆U��rZ�W>'�h���7"Ø�ObD��ny�-�d9�\�߄��}���&5֪y�pA�f���C!Y�1�'�+�6��k��kt��]f
��gs��ڶmj8tKr�h��?���pKiq��4v"(��Ō&��N�t��7��-��Γ�9�N��MגAx�Ļ @Ik!%�e�+��u`�2�3Ă8+=Np��<�o$ض$�5�Yܶ���L1�P�N@�� �_A� o��p d���Z�!�W}ݏ"5]^}1B3C� �7�p^�ۀg�=!�,;��+'$��(�i�:��Ԃ�+)�����+ew@��l���J�!ǭ�o�@�И��+��e�iu@�&|bm$e$~!`��ɵ+�bmWʽ�I@��R��b#t7e��˷�D{.;��o�zM�TU��l%մ�����G�<x;<�AZ�����I���uP�6/�.Wh\��u��2#�†|��K#��5��K���;H�ݴ�Re v���B�$d�f�U�tZ%$M_�8�ʕ�Q&����F�0�E1�?��p,�]'c|�w�h��&1 ��;ZD���񼛍�����@�11����)�������;�/���t�3�Kz��v�f� ��J�I�����n�C#�Cֹ0!]zP�%��Z��~�D#$H�gU���\�N��&��l��<����$V��'�Sw��|��*���u���_��Y��!�ku� ,�nF�R�}�Bq�qI�[�=(ɀۄ�V��H�A?����PԴ֏��7��y� F���D��y@b��;{j0T FX9sy�cyJ{t���0�v�B��������2(l����0�/�1���\fT\�:#� ��|#���s!��5--��_�lj��@�K�v�oCp�0;�\ћﻓ���灓�P�ܢ�WQ�V����e�$�-C(͊��r�W�K,H���7�n���z�?�A���e�����A�S!�8]�9S�x�~��[H�4R':�a��za�)�."�Bl�?Ծ�&�K���/u2| ��L����8Ja:�7�8�JKӌ��u�;����jyG�l�S��ޔ�+�!�b����������8(xGR���n$+���I���]���)������N���զ���bKgr֡��W�I��Ŝ�0b������
�zBqY�,���l5�|3�Zީ�� ���ݺ��SV{H��C��d4�����|3lP�ٸ�i���ڔ�U‡���D�*�o��(��˂�4&K@�m,)�c�fX��'H�u�!�t�����h���^��k���G����=|]�K��I�'D�TX�H��{~M�P�� �����}���K�
~B�‹\���.Y' �/��v9�lO��7�K z��>/;`������DmcU�T9*��'loNFW@�;�j��a�>�����9��F������JƠ#k��=��P�����\��'1�#A&)�C �$5�p�_��y��]�G��闱(�%#s�i�r�ә򍕷+�2��q�d���,V� �vaW�2/� f,_���L
Zz.�Y[�:���d]X��SS��S��|�.���(�
Z�++'��3��v(s>��|���U_�>й��Se��E��-7�ʂQ���U��s����'�-5���/��a8�V=��Dy�t��:��͌�)��ݦ���ami~{��zId
Cy����j�MZ��O�K� O������s,��F��۽l�)-��1v-]�����E�k���f�m|�(��:9�vY:�@� [�i}��JA�h6�L0���-��79���e&]Tf���(���l��b�(�b��������d˳�h�"��vhmҟ�5y�%T����̉5���\�, ��)��f�������G���#�g�% dĤ���0��2�*� ���0�I�Q0�J�SE��j�=󋽕6�O��&Ts�6j�˯���/��>'��!�2���hV�Ѹ*����aHһ9�D��j�Jߑ�2�f\�9:pe�W�c�� �QF�\��_���52滣U�=u���n�^�6�Ӣ.qu�[�q(��;=�{)��N����`c��~�L���*TBp5)@
�#��ި��Ҝ�������gӂ+.�y�N&N$}��}C_n-�Y�aKgйB��vɈ�������ke�� l�#x�ƭ��j���w�ax��bt��<e��T @�uك�X�t���@7��M� �Q��S,�H���- �@�~��?%���Ώ�m �yx��U�����H}B�.���;�v#�$��ii��������L�D*�뗕I,P�μ`������ �M�9�.�Ȱ1n�\�<�r����̖Ͽ2�w� �m��S��b��[� �� ��'�:8��ojs�(�� ��B��kb��Mˋ[z�wgH�+|�ܩ'�1e�AAT
p�U俿U�����L�N�2�Ч�]�GΊ�Ȗ���։���6n1�V�[SG����3x~%� O��4Ͽa!2�B�#��+�1���U�&�IZOex�ip����rŽs�9�6l���mJH��6.O^|�)�ѭz�;"�G�����ݸ��hɞ � �,� ��=q��F�\� �n{�
������P�������PM'����;��Ĝ8��ik|w��X<�A:�ΰ�HQߞiKyS����C��qͩ�v��_���=� I@�&e�v
]ЬG�����Z��:"��p�:fy����k�C���CN�5��M�U69�Ƽ����2޿��d�_�|�c� t�G�SE�G��V�*�' �C�W����j��TnY��ϟgU_�i���J�c�d�/�e�:yl8�6���]+�p=��K $�9��p�I�;���Ɗ�PL�J庬�!�{�+�=pwA���1� �� �v��L/�r"��V/���°�ޝ2��9`I@�� �a䙲�k�(4�d>�S܊��?���Υ��mcu��k`�N��0c�1M:75���fE��W�.���c~=2yB����,P�,+d�����𕰃�F��
���FE�Φ�m���8c�;S]3g�+��S�v���ghZ�j�,4ELv8/E"gĩ��V�f�
��C^�}����`�%�w�OY����8���N���b�
Expand Down
2 changes: 0 additions & 2 deletions src/Amgine.CLI/GlobalUsings.cs

This file was deleted.

1 change: 0 additions & 1 deletion src/Amgine.Core/GlobalUsings.cs

This file was deleted.

Loading

0 comments on commit bb6d00c

Please sign in to comment.