[python] Sifrovani

azurIt azurit na pobox.sk
Pátek Srpen 19 11:22:52 CEST 2005



> Ivo Štolpa napsal(a):
> 
> > Milan Zmatlo napsal(a):
> >
> >> Ivo Štolpa napsal(a):
> >>
> >>> Milan Zmatlo napsal(a):
> >>>
> >>>> Zdravim,
> >>>>
> >>>> obracim se na zdejsi osazensvto s nasledujicim mirnym OT:
> >>>>
> >>>> Rad bych k zakaznikovi distribuoval obecne "prelozeny kus kodu", 
> >>>> ktery by obsahoval nejakym zpusobem zasifrovanou informaci o 
> >>>> nastaveni teto konkterni distribuce (poc. uzivatelu, casova 
> >>>> platnost atp.) Tento kod bych generoval pro kazdou instalaci 
> >>>> unikatni.. to neni problem.
> >>>>
> >>>> Potrebuji poradit s pouzitim vhodneho algoritmu na zasifrovani / 
> >>>> rozsifrovani teto informace. Nerad bych ale do aplikace ukladal 
> >>>> nejaky klic pro sifrovani a desifrovani, to mi nepripada vhodne. 
> >>>> Radsi bych mel dva klice. Mam spis predstavu, nez znalosti..
> >>>>
> >>>> Natuknete me prosim, kudy se vydat....
> >>>>
> >>> Já to dělám trochu "naruby" pomocí md5, který je v Pythonu 
> >>> standardním modulem. Ty informace k uživateli dopravuji zcela 
> >>> veřejně v textovém souboru. Při prvním spuštění aplikace se zobrazí 
> >>> registrační formulář, do kterého načtu hodnoty z toho textového 
> >>> souboru (kdyby tam nebyl, tak by to holt uživatel musel všechno 
> >>> vypsat ručně). Jako poslední je místo pro zadání kódu md5, který 
> >>> musí uživatel vyplnit dle dodané registrační karty. Graficky to
může 
> >>> být rozsekáno do několika částí, aby se to při zadávání lépe 
> >>> kontrolovalo. Program pak z vyplněných údajů vypočítá kód md5 a 
> >>> porovná ho se zadaným kódem. Pokud se rovná, je to OK vše se zapíše 
> >>> někam do hloubi programu. Nemusí se to nějak moc schovávat, protože 
> >>> při každém startu se z uložených hodnot vypočítá kód md5 a
porovná s 
> >>> uloženým kódem, takže by poznal, že se s údaji manipulovalo a 
> >>> zobrazil by znovu registrační formulář.
> >>>
> >>> Jak jsem říkal není to bůhvíco, ale šel jsem cestou nejmenšího 
> >>> odporu. Nelíbí se mi například, že při prodloužení musí uživatel 
> >>> zadat nové datum platnosti, nebo při rozšíření o další modul jej 
> >>> zafajfknout a poté zadat 32znakové hausnumero. Na druhou stranu je 
> >>> možné mít jeden instalák (třeba pro internet bez toho textového 
> >>> souboru). Uživatel pak sice musí vyplnit všechno, ale pro mne to 
> >>> znamená pouhé zaslání registrační údajů včetně kódu md5 e-mailem 
> >>> nebo poštou.
> >>>
> >>> Pokud někdo zná lepší řešení, sem s ním.
> >>>
> >>> Ivo
> >>>
> >>
> >> V prvnim momentu mi to prislo jako super reseni, jednoduche, 
> >> elegantni. Nemate ale zaruceno, ze si zvidavy uzivatel tento md5 
> >> vygeneruje proste sam. Obzvlast, pokud se mu dostane do ruky i ten 
> >> textovy soubor. Myslim, ze uhodnout ze string typu 
> >> e23ecba40665787a55afcbbe8a2efaa6 je md5 hash neni az tak slozite.. 
> >> jde uz jen o to, ceho..
> >>
> >> Ale diky za napad..
> >>
> > Oops! Zapoměl jsem dodat, že do toho generování kromě těch veřejně 
> > známých registračních údajů vstupuje i několik údajů, které si
program 
> > zjistí bokem. Musí to být údaje zjistitelné jak u mne, tak v běžící 
> > aplikaci u zákazníka. Stačí velikost nějakého modulu nebo souboru(ů). 
> > Nebo nějaká hexahodnota vydolovaná odkudkoliv, která je pro tuto
verzi 
> > pevně daná. Takže zase tak jednodu to není. Navíc při generování md5 
> > kódu také záleží na pořadí v jakém se do md5 jednotlivé hodnoty 
> > vkládají..
> >
> > Ivo
> >
> Ještě jsem zapoměl dodat, že s těmi registračními údaj lze před 
> vytvořením md5 hash různě manipulovat. Pospojovat je v přesně daném 
> pořadí do jednoho stringu, udělat reverse na jednotlivé stringy nebo až 
> na výsledný string, zyměnit všechna "a" a "e" za znaky mimo naši 
> klávesnici. Pak to rozsekat a přeházet. Prostě cokoliv, co se dá 
> jednoznačně udělat u mne i u uživatele se stejným výsledkem. Znalost 
> těch registračních údajů proto v žádném případě nepomůže.
> 

ono ak to mas v pythone tak kde je problem najst si to v zdrojakoch ?
:) toto co tu popisujes nie je ziadna ochrana.
celkom zaujimave riesenie by mohlo byt zasifrovanie celeho programu
(zdrojaku) pricom pre kazdeho zakaznika by bol iny kluc (vyvodeny z
registracnych udajov). pri prvom starte by si program vypytal
registracne udaje, z nich by si vyvodil prislusny kluc, ktory by si
niekde ulozil. pri dalsich startoch by sa uz ten ulozeny kluc pouzil
sa desifrovanie (tie zdrojaky by boli desifrovane len v pameti, nikde
by sa neukladali, spustanie napr. pomocou exec()). samozrejme aj toto
by bolo jednoduche obist ak su zdrojaky k dispozicii :) avsak aspon
raz by tam musel ten _spravny_ kluc zadat.

azurIt

___________________________________________________________________________
Verejné obstarávanie je zadarmo na epi.sk.
Vyberte si lukratívnu zákazku z viac ako 600 aktuálnych príležitostí.
Denne aktualizované na http://www.epi.sk/vo.htm 




Další informace o konferenci Python