Szyfrowanie Tekstu

0

Witam. W wolnych chwilach napisałem sobie program "szyfrujący" wpisany tekst. Jednak efekt nie jest zadowalający. Nie wiem jak ugryźć temat skutecznego zaszyfrowania liter/znaków. Nie wiem też na ile algorytm jest skuteczny gdybym chciał zaszyfrować tekst z 10 stron jakiejś książki. Każda litera/znak/cyfra to liczba złożona z 18 cyfr. Klucz stanowi jawna liczba i przypisana do niej litera. Zaszyfrowane słowo wygląda tak:

233906050722080219
372875141630021508
264276203317350237
182687142214131004
442102420430060204
132076111707060605
303134261012032208
213965182506160733
214355193519351130

A klucz tak:

n 7066
i 5360
e 2156
s 9804
t 1978
y 5063
0 2733
a 3551
l 2606

Mimo,że litery się powtarzają to dany ciąg 18 cyfr ma małą szansę się powtórzyć jeszcze raz.

Czy dobrze rozumiem. Im więcej będzie cyfr składających się na daną literę tym trudniej będzie można to złamać?

0

I tak proste do złamania. Skorzystaj np z AES

0

Użyj jakiegoś prostego szyfrowania : vmpc/rc4.

0

Tak jak pisze @Patryk27 bardzo łatwo taki tekst odszyfrować - wyszukujesz najczęstsze powtórzenia kolejnych 4 cyfr. Następnie starasz się obok nich znajdujące się czesto kolejne cyfr aby znaleźć najkrótsze i najpopularniejsze elementy danego języka, np. 'się' czy po angielsku 'the'. Szyfry podstawieniowe to przeszłość. Następstwem w/w techniki były szyfry homofoniczne, polialfabetyczne, digraficzne... Polecam poczytać o podstawach kryptografii i kryptoanalizy ;)

3

@Progdeex ale przecież to jest łamalne na wszystkie możliwe sposoby, w szczególności na chosen ciphertext attack. Jeśli znam część treści wiadomości albo całą wiadomość to mogę odzyskać klucz, a to dość słaby pomysł ;] I nie rozumiem jaki problem z atakiem statystycznym skoro wiemy na ilu znakach kodujesz sobie poszczególne literki.

0

W takim razie dla najbardziej "szalonych" poszukiwaczy podam zaszyfrowany tekst oraz klucz.

Kto ma chęci niech spróbuje :)

3

Jasne, podaj jeszcze tylko algorytm :) Zgodnie z https://pl.wikipedia.org/wiki/Zasada_Kerckhoffsa

0

Cześć, jeżeli chodzi o wybór szyfrowania - zdecydowanie najlepszym wyborem jest szyfr strumieniowy VMPC, opierający się na funkcji jednokierunkowej swtworzonej przez Bartka..

Zapewnie bezpieczeństwo i jest praktycznie niemożliwy do odwrócenia,

pozdrawiam Bartka, również Kamila, który nadal szuka dziury w całym..

0

Faktycznie. Klucza nie powinienem podawać. Lecz Algorytm tworzy klucz, więc podanie go oznacza że rozkodujesz dane i dowiesz się co tam jest zawarte. Ale podobno można to łatwo złamać :)

Pomyśl że bazujesz na tajności algorytmu, wszystko fajnie ale jak algorytm wycieknie (jakiś programista po pijaku wkurzony na szefa się wygada) i pozamiatane.

0

Czy dobrze rozumiem. Im więcej będzie cyfr składających się na daną literę tym trudniej będzie można to złamać?

Absolutnie nie. Ilość danych wyjściowych nie jest żadnym wyznacznikiem bezpieczeństwa.

Co do tego "algorytmu" który podałeś to mamy za mało informacji. A jeśli jesteś pewien co do bezpieczeństwa swojego algorytmu to go po prostu podaj. Wspomniana wyżej zasada Kerckhoffs'a oznacza to, że nawet jak podasz nam algorytm, to bez klucza nie bylibyśmy w stanie tego odszyfrować.

Napisałeś @Shalom by użył metody statystycznej, ale na 9 bajtach nie odpalisz żadnej statystyki. Po prostu masz za mało danych.

0

Istnieją 2 wyjścia: Pierwsze: Algorytm na wyjściu daje zakodowaną informację ,że bez klucza nie rozkodujesz.. Drugie: Algorytm na wyjściu po zaszyfrowaniu daje szyfr + klucz. Jak ktoś coś szyfruje to ma klucz dla siebie i kogoś komu przekazuje info. W moim algorytmie występuje punkt Drugi.

Taką logiką szyfr cezara nadaje się do szyfrowania danych... Cała "magia" tkwi w tym żeby algorytm był ciężki do złamania, jak wycieknie algorytm który nie jest dopracowany będzie on podatny na wszelakie ataki. Zresztą odpowiedz sobie na pytanie co jest lepsze 1.algorytm który każdy może znać ale bez klucza potrzeba gigantycznej mocy obliczeniowej do włamania się 2.Algorytm który jest tajny ale jak wycieknie to przeciętny laptop się włamie.

0

Istnieją 2 wyjścia: Pierwsze: Algorytm na wyjściu daje zakodowaną informację ,że bez klucza nie rozkodujesz.. Drugie: Algorytm na wyjściu po zaszyfrowaniu daje szyfr + klucz. Jak ktoś coś szyfruje to ma klucz dla siebie i kogoś komu przekazuje info. W moim algorytmie występuje punkt Drugi.

o_O
Może tobie się pomyliło to z szyfrowaniem asymetrycznym gdzie występuje klucz publiczny oraz prywatny? I ten publiczny możesz komuś udostępnić żeby szyfrował nim wiadomości dla ciebie a tylko ty z kluczem prywatnym możesz to odkodować? Tylko że te algorytmy też maja otwarte implementacje :D Ba takie RSA to w ogóle jest po prostu:

ct = pow(pt, e, n);
pt = pow(ct, d, n);

Tak, szyfrowanie to 1 linijka kodu i deszyfrowanie też 1 linijka. I matematycznie też trywialne, ot podnosisz liczbę do potęgi i liczysz resztę z dzielenia. Do szyfrowania udostępniasz wszystkim liczby e i n a sam w sekrecie trzymasz sobie liczbę d za pomocą której dekodujesz wiadomości.

0

Chyba rozumiem o co chodzi :) Ale analizując swój algorytm,gdybym go udostępnił to i tak bez klucza nic nie zrobi.. Owszem zamieni 18 cyfrowe liczby na inne krótsze lecz i tak bez klucza nie przyporządkuje im liter/znaków.. :D Deszyfrator bez klucza będzie bezużyteczny..

Ciekawa teoria, wiesz przytoczony vmpc może być piekielnie trudny do złamania a jednak nikt by go nie uznał za gwarant bezpieczeństwa. Ale nie wiem nic o twoim algorytmie i sposobach analizy - pewnie jakaś skomplikowana kryptoanaliza, bo przecież nie wymyśliłeś sobie od tak algorytmu i uznałeś że jest bezpieczny . Btw. nie wiem czy nie dokarmiam trolla.

0

@Progdeex żebyś sie nie zdziwił jakie algorytmy szyfrowania da się łamać i odzyskiwać klucz. Tutaj mozesz przeczytać na przykład jak łamiemy AESa o zmniejszonej liczbie rund za pomocą integral cryptanalysis https://github.com/p4-team/ctf/tree/master/2016-03-12-0ctf/peoples_square#pl-version ;) A domniemuje że twoje szyfrowanie jest nieco mniej złożone niż taki AES.
Juz nawet nie mówie że wygląda na to ze twój klucz to jedna litera (5 bitów) i 4 cyfrowa liczba (10 bitów) a brute force na 15 bitów to się policzy przecież momentalnie....

0

Zawsze można się też zabawić w inżynierię wsteczną i odkryć algorytm :)

0

Przyjmując,że masz zakodowany tekst w postaci 30 000 linijek 18-sto cyfrowych liczb i nie masz klucza to w Brutal Force musiałbyś wrzucić wszystkie znaki alfabetu + znaki specjalne i do tego 4-cyfrowe liczby. Nie wiesz jednak z ilu linijek składa się klucz: może ze 100 a może z 500? Skąd wiesz,że np litera c nie została zakodowana dwa razy albo wcale?

0

Nie wiem bo nadal nie wiemy jak działa algorytm. Niemniej wszystkie chary to raptem 8 bitów więc razem z 3 cyfrowymi liczbami to nadal tylko 18 bitów, czyli tyle co nic :) No i zapewne łamać klucz można kawałkami tzn znając życie jedna linijka klucza koduje jeden znak więc co za problem łamać klucz brutem linia po linii? Jeśli znam parę plaintext, ciphertext to mogę ocenić czy mi się poprawnie odpowiednie znaki odkodowały dla zgadniętego fragmentu klucza czy nie

0

@Progdeex
Czy dobrze rozumiem. Im więcej będzie cyfr składających się na daną literę tym trudniej będzie można to złamać?

Odpowiadając autorowi. Siła szyfrowania to głównie zasługa złożoności klucza użytego do zaszyfrowania wiadomości. Naturalnie człowiek nie jest w stanie wymyślić wystarczająco dobrego i złożonego klucza wiec lepiej zostawić takie rzeczy maszynie.

Dodatkowo wszelkie szyfry podstawieniowe czy przestawieniowe są dzisiaj uważane za historyczne i proste do złamania, a więc i niestosowane. Jeżeli chcesz utajnić informację to najlepiej zaszyfrować ją symetrycznie z wygenerowanym przez komputer kluczem. Sam klucz natomiast zaszyfrować asytmetrycznie kluczem publicznym, chroniąc jednocześnie jak oka w głowie własny klucz prywatny. Dzięki temu tylko ty będziesz mógł deszyfrować wiadomość i nawet w przypadku wycieku klucza będzie ona bezpieczna, bo tylko ty posiadasz klucz prywatny dzięki, któremu da się w ogóle odszyfrować klucz algorytmu symetrycznego. Dodatkowo jeśli podzielisz się z kimś kluczem publicznym to będzie mógł szyfrować dla Ciebie wiadomości, które jedynie Ty będziesz mógł odczytać. (No może wiadomości to skrót myślowy bo asymetryczne algorytmy służą do utajniania małych porcji informacji. Chodziło mi raczej o algorytm jaki powyżej przedstawiłem)

Sam klucz prywatny przechowywać zaszyfrowany na jakimś gwizdku etc...

Twój algorytm szyfrujący nie jest w żaden sposób bezpieczny i wręcz podatny na kryptoanalizę np. sprawdzanie częstości itp.

0

może by tak nie podawać klucza?

0

Dawaj z bomby VMPC i nawet sie nie zastanawiaj nad opinią tych trolli :D Shalom, zaszyfruje Ci coś przez VMPC i odszyfruj mi to jak twierdzisz, że jest takie proste do odwrócenia haha :D Komputer Ci się prędzej spali przez złożoność :D

0

Nie muszę się rzucać od razu na głęboką wodę :D Wystarczy mi na początek to co wymyśliłem i na razie poza ciekawymi odpowiedziami nikt nie podał rozkodowanego tekstu. A temat powstał przedwczoraj :)

1

@Progdeex cytując jedną z zasad /r/crypto:

How about the mods make a new rule: "If you want us to look at your encryption scheme, post code or gtfo"?

Posting a blob of ciphertext and going "hay guise, is my encryption secure?" is like taking a dump in your neighbor's yard and then telling him "bet you can't guess what I had for dinner". He probably can, but nobody wants to sort through your shit.

0

Zakoduj mi ciąg 1000 liter 'a' kluczem składającym się z liter alfabetu to postaram się "złamać" ten "kod"

2

Chciałbym tutaj tylko grzecznie poprosić @Progdeex o trochę więcej pokory.
Posłuchaj, uczysz się i szanuj opinie innych userów. Jeżeli bardziej zaznajomione osoby mówią Ci, aby pokazać algorytm to widocznie w jakimś celu. Nikt tutaj nie chce zagarnąc Twojego super tajnego algorytmu, tylko przetestować go.
A jeśli uważasz, że nie będziesz się dzielić, bo Twój algorytm jest genialny, to nie marnuj czasu ludzi, którzy mogą wykorzystać swoją wiedzę w innych wątkach (nie mówię tutaj o sobie, jeżeli mam być dokładny).
Jak na Twoim miejscu wybrałbym teraz. Ten wątek to już tylko czcze przepychanki

3

@Progdeex
Jak na swojej drodze spotkasz zaszyfrowaną informację to kogo poprosisz o algorytm? To pójdę po wiertarkę i zrobię borowanie kolanek gościa, który hasło zna. Ewentualnie dochodzi jeszcze kulig w maju - ciągnięcie za samochodem bez sanek pod spodem. Socjotechnika i phishing królują.

0

Problemem jest że mamy za mało danych na atak, chcesz czegoś w rodzaju inżynierii odwrotnej więc potrzeba raczej matematyka niż programisty. Programista jest praktyczny, algorytm szyfrowania którego siła polega na tajności algorytmu się nie sprawdza (i to od dawna). Swoją drogą masz racje że zachowanie forumistów jest tragiczne - zarzucają cię hasłami których prawie na pewno nie rozumiesz (bo i skąd) i nie wyjaśnią jak normalny człowiek że twój pomysł się nie sprawdzi chociaż odszyfrowanie małych fragmentów tekstu bez znajomości algorytmu jest wyzwaniem ale ogólnie tak wygląda kryptografia - wielcy ludzie tworzą szyfry, wielcy ludzie je łamią , wielcy ludzie tworzą nowe szyfry.

0

Zaszyfruj mi słowo:
hello world

2

@Burdzi0 Tru, tym bardziej, że jawność algorytmu wcale nie oznacza skompromitowania szyfrowania! :) Priorytet to złożoność klucza i odpowiednie pospinanie klocków w całość.

0
Złoty Samiec napisał(a):

Zaszyfruj mi słowo:
hello world

Oto ono:

538288482410604603
281843050304042507
798890052452785083
556833341817115412
778721626830522343
844193512119045004
814542602564362528
887458022331160314
118904022907660442
263327102313282108
662636650917244305

0
Progdeex napisał(a):

W takim razie dla najbardziej "szalonych" poszukiwaczy podam zaszyfrowany tekst oraz klucz.

Kto ma chęci niech spróbuje :)

Zaszyfrowałeś tu coś w stylu: moja papuga siedzi...?

1 użytkowników online, w tym zalogowanych: 0, gości: 1