Ukládání dat aplikace   zodpovězená otázka

C#, Visual Studio, Bezpečnost

Ahoj,

potřeboval bych poradit ohledně ukládání dat, se kterými pracuje aplikace, ale uživatel nesmí tato data upravovat. Například do souboru "nastaveni.dat" uložím nějaké číslo, které ale uživatel nesmí nijak změnit, protože s ním bude aplikace pracovat (např. při každém spuštění, ovšem bude tuto hodnotu měnit).

Jak se takové situace řeší? Je nutné soubor nějakým způsobem šifrovat?

Předem děkuji za rady.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano nejjednodušší řešení by bylo ho zašifrovat. Vše potřebné je v tomto jmenném prostoru:

http://msdn.microsoft.com/en-us/library/...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Dobře, zkusím to nastudovat a zkusím si s tím pohrát. Děkuji za pomoc :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ještě bych se chtěl zeptat na jednu věc. Pokud tedy obsah, který do souboru zapisuji, zašifruji, potřebuji si někam uložit klíč, abych mohl soubor poté dešifrovat.

Existuje nějaký elegantní, resp. doporučený způsob uložení klíče (popř. inicializačního vektoru)? Nebo stačí klíč prostě uložit do texťáku, popř. do XML souboru?

Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Obecně hodně záleží na konkrétním scénáři použití. Také zda se vám jedná o public nebo private key atd. Zda data šifrujete nebo podepisujete atd.

Možností je více, napadají mě:

- Klíč mít natvrdo v kódu. To je asi nejjednodušší, ale pomoci reflektoru by se k němu útočník dostal.

- Použít již nějaký klíč co na počítači je, takto je to řešené ve webových aplikací, kde se používají tzv. derivované klíče - klíče odvozené od jednoho globálního klíče.

Například v ASP.NET 4.5, jsou ve třídě MachineKey nové metody Protect a Unprotect. Ty pracují s klíčem z Machine.config a vytvoří z nich klíč odvozený. Díky odvozeným klíčům je zajištěno, že je na počítači uložen pouze jeden klíč, ale přitom se pro dané operace používá vždy klíč jiný.

Nevím zda vy máte webovou či jinou aplikaci, ale asi by šlo tyto funkce ze System.Web použít i mimo webové aplikace. Případně se můžete těmito funkcemi pouze inspirovat a udělat si podle nich funkce svoje (viz. http://referencesource.microsoft.com/#Sy....

- Jiný doporučený způsob jak ukládat klíče jsou samozřejmě certifikáty. Ten si můžete libovolně vygenerovat vlastní (self-sign) a načítat například z Windows Certificate Store. Zde opět závisí hodně na situaci kde se klíč používá.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Například pro šifrovanou sekci konfiguračního souboru se používá (vlastní) klíč, který je uložen kdesi v souborovém systému a dá se importovat/exportovat pomocí nástroje sn.exe. Kdokoliv s administrátorským oprávněním ho může získat. Ten klíč by se dal použít i k vašemu účelu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback