Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 8. 4. 2016 19:36:35

vikinx
Člen
Registrace: 24. 1. 2015
Příspěvků: 36

Obousměrné šifrování textu (makro) - VYŘEŠENO

Resim v Calcu takovy problem: makro na obousmerne sifrovani textu (pomoci neverejneho klice) do cisel a pismen (napr. 16-soustava) - cca 25-30 znaku (ne vice).


Urcite reseni jsem na webech nasel, ale pri zadani spatneho klice (prip. hodne podobneho) to dokaze rozsifrovat do stejne prip. hodne podobne varianty a text je k precteni... Funguje na principu posunu v tabulce znaku asi jako vetsina techto funkci.

Narazil jste nekdo na podobny problem a mate reseni?


Nejake napady? Diky predem za Vase napady

Editoval vikinx (13. 4. 2016 15:54:25)

Offline

#2 8. 4. 2016 21:48:01

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Obousměrné šifrování textu (makro) - VYŘEŠENO

Asi byste měl upřesnit co myslíte tím "obousměrným šifrováním". Existuje pojem pro "jednosměrné šifrování", ale to není ekvivalent opaku pro "obousměrné šifrování". Tady by bylo na místě hovořit o asymetrickém a symetrickém šifrování. Respektive o jednocestném (šifrování + dešifrování) stejným postupem. Při tom nejde o úplně správný popis. Mezi pojmy "jednosměrný, respektive jednocestný" algoritmus je propastný rozdíl.
     Tím jedním jednocestným šifrováním + dešifrováním je algoritmus ROT13 který je zabudovaný do Calcu jako funkce. Na první kliknutí zašifruje a na druhé kliknutí dešifruje. Není vybaven heslem a patřil by správně mezi proudové metody.
     Naopak jednosměrné (nikoliv jednocestné) šifrování je opravdu jiný pojem. Je to šifra která se vůbec nedešifruje. Pouze se porovnává "její otisk". Takže například Váš e-podpis "zašifrujete" a porovná se to s kopií jednosměrné šifry. Když to souhlasí - je to ověřeno, když ne tak nic:-)


     Takže pokud to není jednocestné, respektive jednosměrné šifrování - pak je to vše ostatní, což znamená symetrické nebo asymetrické šifrování. Takže "obojsměrná šifra je tak široký pojem až je téměř úplně vágní - jsou to téměř všechny šifry, metody, algoritmy ap.".


     Samozřejmě ne všechny šifry používají klíč. Typicky pro proudové šifry (respektive typy korporátních šifer) postačuje znalost algoritmu. Toto funguje například mezi servery a zabezpečuje se tak jen cesta pro případ odposlechu. Algoritmus se mění podle nějakého konceptu a může se měnit například hodinu po hodině ap.


     Celkem pochopitelnější je to co následuje (pomoci neverejneho klice) do cisel a pismen (napr. 16-soustava) - cca 25-30 znaku (ne vice). To je celkem zřetelné využití "Base64" které se také používá jako proudová šifra, ale také jako klasická.
     Jde tam o to, že se šifrují jen znaky ASCII 7bit (anglická mluvnice - znaky čísel, + velká a malá písmena plus tečka a tuším otazník, nebo vykřičník - celkem 64 znaků). Ty se zapíšou pomocí 4 bytů v osmičkové soustavě, ale pak se šifrují do 3-bytové soustavy osmiček. Tím se zvětší šifra o 1/3 oproti zdrojovému textu. Ovšem vlastní šifra už je zapsána zase do 4 bytů hexadecimálně.
     To co popisujete jako potřebu - nanejvýš 25-30 znaků je v přímé relaci kterou Base64 bohatě pokrývá. Takže si vyhledejte na cizích fórech heslo - něco ve smyslu "cipher Base64", nebo "how to Base64" a podobně. Já jsem tam viděl takové makro pro šifrování a dešifrování. Příspěvků na takové téma bylo více nežli 2.


     Zase ta Vaše poznámka vychází ze skutečnosti že se šifruje jen málo znaků na principu primitivní substituce (například Ceasarova šifra). Pak také skutečně může jít o ten algoritmus ROT13.
     Správná, respektive standardně dobrá šifra funguje tak, že substituční tabulku určuje heslo. Proto některé šifry uvádějí heslo na začátku, na konci nebo na určitém segmentu šifry. Pokud by vaše šifra měla mít jen asi 25-30 znaků, tak Vám jde evidentně o určení číselné substituce (25^2 až 30^2) znaků (jako číslelná soustava) = vyjádření čísla znaku (nejspíš dvojice znaků = CHAR(číslo).
     Znaky ve dvojici pak představují číslo znaků abecedy. Pak těchto 25-30 znaků jsou jediné znaky které jsou v šifře obsaženy. Příklad možného užití :


     Česká sada Unicode 8 bit obsahuje do znaku 31 jen znaky "netisknutelné" - respektive řídící. Pak obsahuje ještě 4 "jalové znaky" které se určují jinými čísly, ale čtou se stejně (tuším jako otazník). No a pak na konci jsou málo používané znaky speciálního určení, které běžně není potřeba, respektive je není třeba šifrovat. Takže vystačíme jen se 169 tvary (=13^2), nebo 196 tvary (=14^2), respektice 225 tvarů (=15^2). Těch 225 tvarů vyhovuje prakticky všem znakům mimo netisknutelných (254-31 = 225).
     Takže si vyberte znaky pro první a extra pro druhou polovinu. Jejich svázání do dvojic udělejte dle hesla a máte šifru jako víno. To jaké znaky jsou na prvním místě a jaké na druhém už je dost silná šifra.
     Ovšem pak ještě potřebujete znát dost věcí. Například že při stavbě maker není snadné jen tak nakódovat "české znaky ze sady Unicode" - v Basicu se dají přímo psát jen obecné Unicode (16 bitů). Podobně je na tom UTF8(16) při tom nejde o českou sadu Unicode. Dále není ani moc snadné zadeklarovat různé uspořádání substitučních dvojic (když to nebude flexibilní tak to dokáže snadno dešifrovat běžný uživatel - zakóduje si několik podobných zpráv a má klíč když porovná zdroj a šifru...:-)


      Přesně tyhle věci dělám a mám připraveno několik šablon, respektive rozšíření pro AOO a LO. Jde například o "odstavcové šifry", nebo o "korporátní" či "proudové" šifry a podobně. Takže vím dost abych byl opatrný a Vy byste měl být také.
      Asi byste se měl zamyslet co až se Vám povede sestrojit dobrou a funkční šifru - co s ní budete dělat? Dáte ji k dispozici široké veřejnosti? Nebo to poskytnete nějakým extrémistům (byť nevědomě) - a budete čekat až Vás přijdou vzbudit chlapci z rychlé roty co klepou zásadně beranidlem? :-)

Editoval neutr (8. 4. 2016 22:07:55)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 8. 4. 2016 22:56:24

vikinx
Člen
Registrace: 24. 1. 2015
Příspěvků: 36

Re: Obousměrné šifrování textu (makro) - VYŘEŠENO

Nepotrebuji, aby byla sifra neprolomitelna...


Potrebuji do ni jen neco ulozit, co nebude pro bezneho uzivatele k precteni jen pokud bude znac klic (hashovat nepotrebuji, otisk nic neresi).

Offline

#4 9. 4. 2016 05:49:53

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Obousměrné šifrování textu (makro) - VYŘEŠENO

Stáhněte si Combinatorics Formulas. Je tam jako příloha taková demonstrační šablona pro šifrování v Calcu a není určena k přímému použití - jen k demonstraci.


     Je sice bez hesla, ale když by Vám to stačilo udělám Vám k tomu heslo a blokaci pro nové pokusy šifrovat (aby uživatel nedostal možnost objevit klíč). Je to pomalé a chce to jen málo znaků. Těch 25 - 30 je tak akorát. K tomu Vašemu účelu by takto upravená šifra mohla stačit.
     Pak také asi potřebujete určit buňku ve které se bude šifrovat. Jde to sice udělat kamkoliv, ale pak by uživatel našel klíč dešifrováním různých řetězců. Tím se dá zaručit místo startu a blok proti spuštění dešifrování jakéhokoliv textu.


      Takže to by byla jednorázová šifra. Jednou zašifrujete text a šifrující makro se smaže. Zůstane jen možnost dešifrovat za předpokladu že uživatel zná heslo. Vzhledem k obavám z možného zneužití poskytnu vzory na trojnásobné použití - respektice 3 jednorázové sešity. Použitelnost k zašifrování bude časově limitována (dešifrování nikoliv).
      Nedostanete se ale ke zdroji - respektive do editace makra. To musíte chápat v kontextu s tím předchozím příspěvkem. Nejde o peníze ani o autorská práva. Takže tohle Vás asi moc zajímat nebude.


      V jiném případě použijte makro pro generování Base64 které se dá najít na cizích fórech. Pak ještě nabízím možnost počkat až vydám šablony svých šifer. Ty budou ošetřeny proti zneužití jinak.
      V současné době jsou sice hotové, ale nemám dořešenu "licenci". Je to sice "free" použití, ale není přístupný kód. Není to dílo komerčního typu a není to vysloveně edukativní charakter díla.

      Je to řešení bezepečnostních záplat AOO a LO ale implemetace by měla být jen institucím respektive subjektům které migrovaly na LO, nebo AOO (například velká Británie, nebo německé, francouzké, italské a jiné regiony - místních samospráv). Rozmýšlím se zda to postoupím také do ostatních sektorů - například komerčních. Takové rozhodnutí ale nejspíš dělat nebudu - přenechám to pravidelné státní správě.


      Nezlobte se na mne, ale "neutr" je akronym který má původ v mém občanském jménu a příjmení. Přes to vystihuje dost přesně mou "neutrálnost" ačkoliv jsem z podstaty veliký rebel a zkušený kverulant. Takže "neutr je vlastně "nick" který mne ztotožňuje s tím jak bych chtěl být posuzován. Když tutéž logiku nicku použiji na Vás tak mi to říká, že máte pozitivní vzath k "vikingům", tedy nejspíš k rasově vymezenému národnostnímu původu - potažmo možná k extrémistické ideologii. V mých očích by bylo méně šťastné už jen "Usáma", nebo třeba "arijec". Ale i když byste měl nick "Ghándí" tak bych neudělal nic jiného.


Ještě jednou se omlouvám za upřímnost.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#5 9. 4. 2016 11:54:47

vikinx
Člen
Registrace: 24. 1. 2015
Příspěvků: 36

Re: Obousměrné šifrování textu (makro) - VYŘEŠENO

X v nicku je rimska 10, s vikngama to nema nic spolecneho :-) Zbytek je prezdivka z meho jmena.


Diky za odkaz, kouknu se co by se dalo nejak pouzit. Predpokladam, ze bez tohoto rozsireni to nebude funkcni na LO bez rozsireni?


30 znaku je v krajni mire. Min. bude cca 10, s Base64 jsem trosku koketoval, nebylo to presne co bych chtel.


Melo by na to navazovat par dalsich maker, proto pomala verze asi take nic neresi (jestli je to cca do 500ms tak asi v pohode).
Pisete "Jednou zašifrujete text a šifrující makro se smaže" - v uzivatelskem souboru by bylo teoreticky jen makro na decrypt (tzn. encrypt funkce tam nemusi vubec byt). Bezny uzivatel nebude nic sifrovat...


Pokud tady pisete "Nedostanete se ale ke zdroji - respektive do editace makra." Jak toto resite? V LO existuje heslo k zakceni knihovny s makry. Vim, ze nemuze byt pojmenovana Standard. Musi se nastavit heslo hned na pocatku, kdyz je nova a prazdna? Do jiz zaplnene se mi nedari heslo nastavit. Pokud zadam, pri dalsim otevreni neni zamcena :-/

Offline

#6 9. 4. 2016 12:13:47

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Obousměrné šifrování textu (makro) - VYŘEŠENO

Já jsem to tady s tím uzamykáním už několikrát popisoval. Zamykání v LO nefunguje. Tváří se to jako že ano, ale po opětovném otevření to zamčené není. To se musí udělat v AOO - tam to funguje. Když se to zamkne v AOO tak pak to funguje i v LO.
     Zamknout knihovnu můžete klidně až po vytvoření a otestování maker. Samo sebou uzamknout v AOO. Proto raději v LO vše vytvořte a nakonec zamkněte aby nedošlo k problému. Kdysi se mi stávalo, že pokus odemčení v LO skončil patem - nešlo to potom ani v LO ani v AOO. To jsem nedavno testoval a už to jde normálně (správně), ale stejně bych to neriskoval. Nové verze LO mívají chyby které předešlá verze již měla odstraněné.


     Když budete umět vytvořit makro v uzamčené knihovně tak snadno postavíte makro s "pseudo šifrou". Dialogem (stačí InputBoxem) musí uživatel zadat heslo. Když zadá správné, můžete mu takovou "alias šifru" vypsat jako MsgBox aniž byste ve skutečnosti cokoliv šifroval.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#7 9. 4. 2016 13:22:03

vikinx
Člen
Registrace: 24. 1. 2015
Příspěvků: 36

Re: Obousměrné šifrování textu (makro) - VYŘEŠENO

Ja jsem to zamikani tady nehledal, jen jsem se ptal, protoze vim, ze to nefunguje tak jak ma. Vyzkousim v OO. Verim, ze pres ne to funguje ;-)


Jj, tohle me take napadlo, ze by se teoreticky nemuselo sifrovat a byt jen v zamcenem makru, ale do budoucna pokud se "sifrovany" udaj bude muset aktualizovat, budu muset zasahovat i do makra. A jde o to se tomuto vyhnout ;-)

Offline

#8 9. 4. 2016 14:03:43

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Obousměrné šifrování textu (makro) - VYŘEŠENO

Tak to Vám asi vyjde nastejno. Já ale popravdě dělám zásahy do zamčených maker. Takže to se dá předvídat a určit potřebnou změnu respektive vstupy připravit předem. Pokud tohle neznám, pak i zásah do šifry by musel být podobný. Možnost ale znáte.


     Teď už si asi poradíte sám. Takže je - li tomu tak - pak by to chtělo označit téma za vyřešené.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#9 9. 4. 2016 14:27:22

vikinx
Člen
Registrace: 24. 1. 2015
Příspěvků: 36

Re: Obousměrné šifrování textu (makro) - VYŘEŠENO

To neni o tom zasahovat, nezasahovat. Jde o to, ze treba nebudu mit moznost zasahnout do souboru, ktery bude na uzivatelove strane.


Nikdo jiny se nezapoji se svou troskou do mlyna?

Offline

#10 9. 4. 2016 16:37:23

vikinx
Člen
Registrace: 24. 1. 2015
Příspěvků: 36

Re: Obousměrné šifrování textu (makro) - VYŘEŠENO

Jak se resi napr. licencni klic s omezenou platnosti? Predpokladam, ze je v nem zasifrovano mimo jine i datum do kdy plati atd. (pokud neni overovan online).

Tzn. ze overeni musi dojit na strane klienta. Takze program musi mit v sobe nejaky decrypt tohoto klice. Je to tak?

Offline

#11 9. 4. 2016 17:20:41

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Obousměrné šifrování textu (makro) - VYŘEŠENO

Sub Limita_Cas_Open
'Zavře aktuální dokument.
PlatiDo = DateValue("31.1.2012") 'plati do 31.1.2012
Dnes = DateValue(Date)
If PlatiDo < Dnes Then
MsgBox "Dokument je již neplatný. Stahněte si novou verzi na xxx.com, tento ceník bude uzavřen."
thisComponent.close(True)
End If
End Sub

     Ale stačí dotaz na DATE.
Například
IF DATE > datum limity Then
MsgBox "Sorry byla překročena časová limita",0,"KONEC PLATNOSTI DOKUMENTU"
Stop
End If

Nebo něco podobného. Většinou se ještě sešit při tom zamkne a "zahodí se klíč".


PS : Samo sebou tohle musí být v té zamčené knihovně a musí to být navoleno jako první krok. Pokud je datum v limitě nic není vidět. Ale může tam být ještě varování "za 3 dny Vaše oprávnění skončí" nebo podobné hlášky.


     Jo a taky je to už docela daleko od původního tématu. Představte si že někdo bude hledat a nenajde jen proto že to není označeno. Navíc se dozví něco úplně jiného nežli to co je transparentně v názvu problému. Dejte to na správnou míru. Tohle neděláme jenom pro Vás ale také pro ostatní uživatele. Takže 1 dotaz - řešeno, nedořešeno a pak další téma. Jinak se rozumně vyhledávat nedá.

Editoval neutr (9. 4. 2016 17:33:32)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#12 9. 4. 2016 17:29:34

vikinx
Člen
Registrace: 24. 1. 2015
Příspěvků: 36

Re: Obousměrné šifrování textu (makro) - VYŘEŠENO

Tohle chapu a beru, ale v mem pripade nejde stahovat novou verzi.

Pokud by se zadaval licencni klic pro prodlouzeni platnosti (bez nejakeho stahovani nove verze atd.), tak prece v nem musi byt neco zasifrovano (hlavne ta platnost).


Napr.: naposled, kdyz jsem aktualizoval licencni cislo u antiviru, nesel mi internet. Antivir ho offline prijal a prodlouzil platnost. Tzn. ze v klici tento udaj musel byt ulozen.


A me jde o neco podobneho...

Offline

#13 10. 4. 2016 06:35:52

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Obousměrné šifrování textu (makro) - VYŘEŠENO

Když použijete logiku "došel Ti čas" - chceš pokračovat? Tak stačí do vstupního makra zadat podmínku "zadej heslo". Takže při aktivaci dostane info, že "demo", nebo "trial" bude fungovat například 21 dní. Do té doby se to bude otevírat bez ničeho - přímo.


     Následně bude otevírat dialogem "zadej heslo". Je možné mu takovou šanci prodlužovat libovolně dlouho, ale já bych řekl - že to nemá žádný smysl. Jednou možná ano - může být problém s připojením ap. Ale na demo nikdo nepostaví ostrá data - leda blb.


Po 21. dnu dostane dialog s MsgBoxem :
ANO - Zadej heslo
NE  - skončit
ZRUŠIT - dostaneš podmíněný offline přístup.


     Jakmile stiskne zrušit dáte mu nějakou nesmyslnou sekvenci kterou ale dialog přečte a pustí ho dál. Takhle můžete nastavit třeba 100x prodloužení licence. Samozřejmě to musí mít také nějaký "výchovný" účel - nejspíš další časovou limitu.
     Já ovšem tuto filozofii příliš neberu. Takto vyladěná a vymazlená aplikace nic neřeší. Říká jenom tolik "podívej jak jsem dobrej programátor".


     Proč to píšu? Totiž k nastartování takové aplikace je potřeba konkrétní datum. To tam musíte zahrnout individuálně. Logika pak říká, že zájemce Vám napíše dotaz - chtěl bych demo, nebo něco podobného. Vy mu upravíte datum a pošlete mu soubor. Druhá varianta je dávat to na server pro anonymního zájemce a pak to musíte pravidelně uploudovat s novými koncovými datumy. Zde by to jako-tako nějaký smysl mělo, ale ostrou verzi mu stejně dáte až zaplatí, nebo se alespoň registruje ap..
     Existuje ještě třetí varianta - přepis makra. Jakmile si uživatel soubor stáhne a spustí, vygeneruje se automaticky koncové datum na přesný počet dní, nebo i hodin p.. To ovšem už se šifrováním podle hlavičky tohoto dotazu má jen málo společného. Programátor by měl lépe nežli kdokoliv jiný vědět, že když se explicitně ptá, nebo se zadá podmínka - například "kolikátého je dnes" tak nečeká odpověď "včera byla sobota". Očekává se tedy relevantní výraz. Vy zatím očekáváte lepší řešení původního tématu takže čekejte.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#14 10. 4. 2016 16:39:29

vikinx
Člen
Registrace: 24. 1. 2015
Příspěvků: 36

Re: Obousměrné šifrování textu (makro) - VYŘEŠENO

Zacal jsem si prepisovat nalezene makro, ktere vyuziva posunu v ASCII tabulce. Akorat se nebudu posouvat v ASCII, ale primo v nadefinovanych znacich o pozice znaku z klice...

Jeste to neuzavijte, treba se nekdo prida ;-)

Offline

#15 13. 4. 2016 15:54:14

vikinx
Člen
Registrace: 24. 1. 2015
Příspěvků: 36

Re: Obousměrné šifrování textu (makro) - VYŘEŠENO

Tak jsem to zdarne otestoval a dokoncil. Vyuzil jsem jeste k desifrovacimu klici navic dalsi kontrolni mechanismus...
Dekuji za inspirativni prispevky ;-)

Tim padem: VYŘEŠENO

Offline

Zápatí