Autor Téma: Kam uložit data  (Přečteno 4412 krát)

Mimo

  • Host
Kam uložit data
« kdy: 07-03-2013, 16:55:54 »
Zdravim.
Mam udělan program, ktery chce při spuštěni heslo.
Rad bych ho omezil na 3 pokusy a pak aby se musel restartovat počitač.
Poradte, kam ten počet pokusu uložit.

Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1142
  • Karma: 42
    • Verze Delphi: 7, 2010
Re:Kam uložit data
« Odpověď #1 kdy: 07-03-2013, 17:13:17 »
pokud to budes ukladat na lokalnim pocitaci, tak nikdy nemuzes mit 100% jistotu,
ze si nekdo ten soubor s ulozenym poctem pokusu nezkopiruje a nebude ho prehravat,
aby mel neomezeny pocet pokusu ;)
vsechny ulozene data lze dohledat ...

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1493
  • Karma: 37
    • Pepak.net
Re:Kam uložit data
« Odpověď #2 kdy: 07-03-2013, 17:22:19 »
Mam udělan program, ktery chce při spuštěni heslo.
Rad bych ho omezil na 3 pokusy a pak aby se musel restartovat počitač.
Poradte, kam ten počet pokusu uložit.
Proti schopnému útočníkovi ti to nepomůže. Proti neschopnému je to jedno - tak třeba do TEMPu uživatele.

Mimo

  • Host
Re:Kam uložit data
« Odpověď #3 kdy: 08-03-2013, 05:48:43 »
Ja myslel zda to nejde uložit někam do vyrovnávací paměť a po restartu by se to samo smazlo.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1493
  • Karma: 37
    • Pepak.net
Re:Kam uložit data
« Odpověď #4 kdy: 08-03-2013, 06:00:36 »
Mohl bys po třetím špatném heslu spustit nějaký proces, který by nic nedělal, jen by běžel a například by držel mutex. Ale je to pořád to samé, pomůže ti to jenom proti neschopnému útočníkovi a proti tomu by ti nejspíš stačilo i heslo bez počítání počtu pokusů...

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4992
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Kam uložit data
« Odpověď #5 kdy: 08-03-2013, 08:23:32 »
Citace
Rad bych ho omezil na 3 pokusy a pak aby se musel restartovat počitač.
 


  Tomu som akosi neprišiel na chuť. Hlavne ak by bol ten reštart natvrdo.
Nedávno sa tu preberala ochrana programov. Prečítaj si to.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2790
  • Karma: 134
    • Verze Delphi: D2007, XE3, DX10
Re:Kam uložit data
« Odpověď #6 kdy: 08-03-2013, 09:04:07 »
Ja myslel zda to nejde uložit někam do vyrovnávací paměť a po restartu by se to samo smazlo.
Do vyrovnavaci pameti ceho  :o

Pokud chces neco zapamatovat na tuctovem pocitaci, aby to prezilo restart aplikace, tak moc moznosti nemas:
  • disk
  • registry
  • operacni pamet - prostednictvim jineho procesu
  • certificate store
U prvnich tri moznosti plati, co psal pepak: pro laika je to jedno, kam to das a pro pokrocilejsiho uzivatele taky, protoze ti to snadno obejde. Navic muzes psat jen tam, kam ti to spravce pocitace dovolil.

Certificate store by teoreticky mohla byt zajimava volba, to uz by na aplikaci musel nastoupit cracker, ale
  • CryptoAPI je docela maso, alespon pred mnoha lety existoval jen strohy a neuplny popis v platform SDK a priklady nebyly
  • Aby to melo smysl, tak bys musel udelat par ochran, aby ty operace s certifikatem nebylo jednoduche z aplikace vyparat

Zalezi, co je to za aplikaci, ale pro bezneho BFU bych psal treba do toho Temp adresare jak ti radil pepak a pokud aplikace umoznuje zopakovat prihlaseni, tak bych tam dal exponencialne rostouci prodlevu mezi pokusy.

A pokud je to cennejsi aplikace a neni z dlouhodobeho hlediska potencialni soucasti rodinneho stribra nejake firmy, kde by stalo za to vyvijet nejake vlastni ochrany, koupil bych k ni hardlock a ty pokusy si zapisoval do nej.

A tri pokusy mi prijde docela malo, zejmena kdyz nemas heslo stylu 1234, ale nejake dostatecne silne, jsi u ciziho pocitace, kde je problem layout klavesnice apod.

BTW, kdyby mi nejaka aplikace chtela zresetovat pocitac, tak by tak ho prezila jen o par minut...

RomanZ

  • Host
Re:Kam uložit data
« Odpověď #7 kdy: 08-03-2013, 09:29:13 »
Dobrý postup je před každým zadáváním hesla chviličku počkat (prostě ten program na chvíli zaseknout). Neomezovat počet pokusů, ale před každým dalším pokusem trochu prodloužit ten interval zaseknutí. Je to dostatečná ochrana proti náhodnému zkoušení (brute force nebo slovník) a přitom to neomezuje legálního uživatele, který se jen uklepl.

Resetovat počítač nebo nutit k tomu uživatele je zločin.

Totiž jde o to, že na tom počítači není váš program sám. Mohou tam být další, a třeba dlouhoběžící (konverze videa, stahování něčeho z internetu) nebo na tom počítači může běžet nějaká služba, ke které se připojují uživatelé z jiných stanic, a nebo přímo na počítači může být současně přihlášeno (vzdáleně) několik uživatelů... Zkrátka byla by to prasárna - to už není ochrana programu, to je šikana.

Offline Vrtule

  • Mladík
  • **
  • Příspěvků: 54
  • Karma: 10
    • Verze Delphi: XE2
    • Jádro systému Windows
Re:Kam uložit data
« Odpověď #8 kdy: 08-03-2013, 09:41:25 »
Zdravím,

souhlasím s tím, co už tady bylo řečeno; počet pokusů bych neomezoval a restart nevynucoval. Ono v dnešní době už bude docela velká skupina lidí, co počítač (notebook) restartují či vypínají málokdy, protože jej ukládají do hibernace či režimu spánku. Pro ně by to restartování byl dost problém.

Pokud bys už opravdu trval na zapamatování si nějaké informace tak, aby na ní uživatel skoro nemohl, napadá mě jedno dost šílené řešení. Můžeš si napsat kernel driver, který bude příslušná data uchovávat a umožní k nim pouze určitý typ přístupu (například pouze zvyšování počtu pokusů, ne však vynulování). Ovladač nemusí jít odmapovat z jádra, pokud nechce. Ale sám na sebe bych byl zvědavý, kdy bych se k takovému řešení odhodlal. Pro 64bitové platformy to stejně ale řešení není.

Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1142
  • Karma: 42
    • Verze Delphi: 7, 2010
Re:Kam uložit data
« Odpověď #9 kdy: 08-03-2013, 10:25:04 »
ja sem za ten kernel driver :D :D :D +1

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2611
  • Karma: 103
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Kam uložit data
« Odpověď #10 kdy: 08-03-2013, 10:29:13 »
ja sem za ten kernel driver :D :D :D +1

Já bych se tak nesmál - vrtule dělá stránky http://www.jadro-windows.cz. On na to má :-)
Embarcadero MVP - Czech republic

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2611
  • Karma: 103
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Kam uložit data
« Odpověď #11 kdy: 08-03-2013, 10:31:19 »
A když už jsme u toho, u jednoho programu jsem něco podobného zapisoval do image EXE souboru - ale na to už jsou teď potřeba admin práva :-).
Embarcadero MVP - Czech republic

RomanZ

  • Host
Re:Kam uložit data
« Odpověď #12 kdy: 08-03-2013, 11:10:35 »
> něco podobného zapisoval do image EXE
Jé, to je pro tento případ geniální nápad :)
Když počet přihlášení přeteče rozsah datového typu, program se sám zničí :)

Offline Mi.Chal.

  • Guru
  • *****
  • Příspěvků: 576
  • Karma: 25
Re:Kam uložit data
« Odpověď #13 kdy: 08-03-2013, 12:21:13 »
A když už jsme u toho, u jednoho programu jsem něco podobného zapisoval do image EXE souboru - ale na to už jsou teď potřeba admin práva :-).

z toho byly antiviry určitě štěstím bez sebe :-)

Offline Vrtule

  • Mladík
  • **
  • Příspěvků: 54
  • Karma: 10
    • Verze Delphi: XE2
    • Jádro systému Windows
Re:Kam uložit data
« Odpověď #14 kdy: 08-03-2013, 12:47:26 »
> něco podobného zapisoval do image EXE
Jé, to je pro tento případ geniální nápad :)
Když počet přihlášení přeteče rozsah datového typu, program se sám zničí :)

Tam bude lehce problém v tom, že soubor spuštěného procesu nejde otevřít pro zápis. Nevím, zda jsou k tomu potřeba admin. práva, ale spíše bych řekl, že je o způsobeno zákazem sdílení pro zápis, který byl nadefinován při spuštění procesu (kdy dochází k otevření toho souboru). Zápis do paměti, kde je ten image namapovaný by také neměl pomoci (copy-on-write), pokud nevypnete ochranu stránek proti zápisu, což ale vyžaduje jít do kernelu (nebo nevím o lepším způsobu) a je nebezpečné.

I image spuštěného procesu ale můžete třeba přejmenovat (tedy i přesunout v rámci lokálního disku). A můžete také udělat takovýto scénář:
1) Uživatel spustí proces A
2) Uživatel splní podmínky autodestrukce
3) Proces A spustí proces B a ukončí se
4) Proces B zničí image procesu A

Ale stejně mi to nepřijde jako 100 % efektivní řešení, protože chytřejší uživatel bude mít někde kopii toho programu.

A také záleží, jakým způsobem to heslo kontrolujete.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2611
  • Karma: 103
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Kam uložit data
« Odpověď #15 kdy: 08-03-2013, 13:18:17 »
Mně hlavně celý dotaz  přijde divný.
S tím zamykáním EXE pro úpravy máš pravdu (v mé případě to byla jiná trochu jiná situace a dávno). Ale jiný proces to jak píšeš změnit může. Ale stejně je to celé zvrácené. Zajímalo by mne CO za program chce takto chránit (a neochrání).
Embarcadero MVP - Czech republic

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2790
  • Karma: 134
    • Verze Delphi: D2007, XE3, DX10
Re:Kam uložit data
« Odpověď #16 kdy: 08-03-2013, 13:42:00 »
Mně hlavně celý dotaz  přijde divný.
Ale stejně je to celé zvrácené. Zajímalo by mne CO za program chce takto chránit (a neochrání).
Obecne dotazy o tom, jak chranit program,  nelze IMHO brat moc vazne - to jsou spis nejake aktivity pionyru se znalostmi, ktere jim obcas dovoli zapochybovat, jestli prece jenom v tom pocitaci nebehaji trpaslici  ;)

IMHO je-li nekdo schopen vytvorit program, ktery stoji za to chranit, tak bude mit dost znalosti k tomu, aby se sam v problematice zorientoval a pripadne se bude ptat na vlastnosti konkretnich technik apod.

Me by spis zajimalo, zda takovi lide nakonec nejake rady na svoje obecne dotazy zuzitkovali a udelali neco smysluplneho.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4992
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Kam uložit data
« Odpověď #17 kdy: 08-03-2013, 13:48:24 »
Citace
Me by spis zajimalo, zda takovi lide nakonec nejake rady na svoje obecne dotazy zuzitkovali a udelali neco smysluplneho.
Ja ešte nie.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1142
  • Karma: 42
    • Verze Delphi: 7, 2010
Re:Kam uložit data
« Odpověď #18 kdy: 08-03-2013, 19:34:49 »
2 Radek Červinka:
praci Vrtuleho znam, jen si nejsem jisty, kolik dalsich lidi by bylo schopnych neceho takoveho :D :D

Offline Vrtule

  • Mladík
  • **
  • Příspěvků: 54
  • Karma: 10
    • Verze Delphi: XE2
    • Jádro systému Windows
Re:Kam uložit data
« Odpověď #19 kdy: 08-03-2013, 21:21:10 »
2 Radek Červinka:
praci Vrtuleho znam, jen si nejsem jisty, kolik dalsich lidi by bylo schopnych neceho takoveho :D :D
Tak, já jsem tu možnost s ovladačem psal jednak trochu z legrace, druhak mě zajímalo, jaká bude reakce :-).

Zrovna v tomhle případě by napsání ovladače nebylo nijak těžké, protože by se jednalo o čistě softwarovou komponentu, která navíc nevyužívá žádné zajímavé možnosti, které jádro Windows nabízí, ale pouze těží z faktu, že do paměti jádra běžná aplikace nevidí. Takže by šlo jen o to si zvyknout na fakt, že v jádře není Windows API, ale sada funkcí, které se jmenují jinak, a naučit se tyto funkce využít.

Větší problém je v tom (krom toho, že je to prostě overkill), že na 64bitové verze Windows je potřeba ovladač digitálně podepsat, aby se do kernelu vůbec dostal. A ten certifikát něco stojí.