From 5d5eb616914fed021cd85c376b21a6513d281ba6 Mon Sep 17 00:00:00 2001 From: Naumkin Vladimir Date: Thu, 11 Apr 2024 12:25:02 +0300 Subject: [PATCH] Almost initial commit --- McEliece.pptx | Bin 69404 -> 0 bytes McEliece.pdf => app_local/McEliece.pdf | Bin break.py => app_local/break.py | 0 decode.py => app_local/decode.py | 0 encode.py => app_local/encode.py | 0 generate.py => app_local/generate.py | 0 app_local/readme.txt | 13 +++++++++++++ readme.txt | 16 ---------------- 8 files changed, 13 insertions(+), 16 deletions(-) delete mode 100644 McEliece.pptx rename McEliece.pdf => app_local/McEliece.pdf (100%) rename break.py => app_local/break.py (100%) rename decode.py => app_local/decode.py (100%) rename encode.py => app_local/encode.py (100%) rename generate.py => app_local/generate.py (100%) create mode 100644 app_local/readme.txt delete mode 100644 readme.txt diff --git a/McEliece.pptx b/McEliece.pptx deleted file mode 100644 index 094e099a87e2983f6cdfcc1ed2713387c75eabde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69404 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 diff --git a/McEliece.pdf b/app_local/McEliece.pdf similarity index 100% rename from McEliece.pdf rename to app_local/McEliece.pdf diff --git a/break.py b/app_local/break.py similarity index 100% rename from break.py rename to app_local/break.py diff --git a/decode.py b/app_local/decode.py similarity index 100% rename from decode.py rename to app_local/decode.py diff --git a/encode.py b/app_local/encode.py similarity index 100% rename from encode.py rename to app_local/encode.py diff --git a/generate.py b/app_local/generate.py similarity index 100% rename from generate.py rename to app_local/generate.py diff --git a/app_local/readme.txt b/app_local/readme.txt new file mode 100644 index 0000000..6e21f35 --- /dev/null +++ b/app_local/readme.txt @@ -0,0 +1,13 @@ +McEliece cryptosystem implementation + +Usage: +0. pip install numpy and galois +1. generate.py - generate and save public and private keys +2. send pubkey.py and encode.py to your friend +3. your friend runs encode.py, write secret string and send message.py to you +4. decode.py - get secret string + +Hacker can get your private key if he will know a half of it (and pubkey.py, decode.py and Reed-Solomon algo). +Check break.py to understand how hacker can do this. + +Notice: left part of G is E, because we use Reed-Solomon algo; so left part of S @ G is S and cutting right colomns works; my_fix(G) returns E and in break_S we needn't get inv(G), just S = my_fix(G_ @ inv(P)); try break_S with another (not Reed-Solomon) code (matrix G will be different; will my_fix(G) and my_fix(G_) return nonsingular matrices?; of course, rank(G) = rank(G_) = k and we can iterate through all possible combinations of column deletions and find one that does not lead to nonsingular matrices); another way to get S is calculating it row by row (solving k systems, each has n equations with k variables, k < n, but we need to do it in Galois Field). diff --git a/readme.txt b/readme.txt deleted file mode 100644 index 04ea86d..0000000 --- a/readme.txt +++ /dev/null @@ -1,16 +0,0 @@ -McEliece cryptosystem implementation - -Usage: -0. pip install numpy and galois -1. generate.py - generate and save public and private keys -2. send pubkey.py and encode.py to your friend -3. your friend runs encode.py, write secret string and send message.py to you -4. decode.py - get secret string - -Hacker can get your private key if he will know a half of it (and pubkey.py, decode.py and Reed-Solomon algo). -Check break.py to understand how hacker can do this. - -todo: -1. left part of G is E, because we use Reed-Solomon algo; so left part of S @ G is S and cutting right colomns works; my_fix(G) returns E and in break_S we needn't get inv(G), just S = my_fix(G_ @ inv(P)), check it; try break_S with another (not Reed-Solomon) code (matrix G will be different; will my_fix(G) and my_fix(G_) return nonsingular matrices?; of course, rank(G) = rank(G_) = k and we can iterate through all possible combinations of column deletions and find one that does not lead to nonsingular matrices); another way to get S is calculating it row by row (solving k systems, each has n equations with k variables, k < n, but we need to do it in Galois Field) -2. DONE! check randomization during encode (add vector z, check https://en.wikipedia.org/wiki/McEliece_cryptosystem) -3. DONE! make presentation that explains McEliece cryptosystem \ No newline at end of file