Odpovědět na komentář

Diskrétní sdílení textů

Uživatelé občas potřebují sdílet texty s ostatními (nebo si je jen uložit pro sebe) a ne každý si kvůli tomu chce hned pořizovat vlastní server nebo web či blog. Proto existují různé „pastebin“ služby – člověk jednoduše vloží svůj text do formuláře, odešle a obdrží URL, na kterém bude jeho text přístupný.

Zerobin

Problém

Většina těchto služeb funguje tak, že její provozovatel si může dané texty číst. Jedna stará dobrá bezpečnostní poučka říká, že každý by měl mít jen taková práva, jaká nezbytně nutně potřebuje ke své činnosti.

Poskytovatel ale naše texty číst nepotřebuje. My od něj chceme pouze trochu diskového prostoru (pro texty stačí málo) a adresní prostor (URL), ve kterém budou texty přístupné.

Řešení

Řešením je šifrování – pokud by provozovateli někdo ukradl/zabavil disky, nic si z nich nepřečte. Šifrování ale bohužel hodně běžných uživatelů nerozumí, přijde jim nepohodlné a nevědí, jak si vyměňovat klíče. Takže často nešifrují.

V následujícím textu se podíváme na jedno elegantní řešení, které je pohodlné a „blbuvzdorné“ a zároveň relativně bezpečné.

Jak to funguje

Naším cílem tedy je zašifrovat vkládaný text ještě na straně uživatele (JavaScriptem v prohlížeči) a odeslat na server. Čtenáři si daný text budou stahovat šifrovaný a k dešifrování dojde opět až v jejich prohlížeči.

Jediné, co zbývá, je zajistit přenos šifrovacího klíče od autora textu ke čtenářům. K tomu využijeme vlastností URL a HTTP protokolu.

URL může obsahovat tzv. fragmentový identifikátor:

http://www.example.com/index.xhtml#identifikator

Ten se běžně používá k odkázání na určitou část stránky – např. máme dlouhý článek a můžeme chtít odkázat na jednu kapitolu uprostřed stránky (příslušnému nadpisu nastavíme XML atribut id="něco" a pak odkazujeme na #něco).

Pro nás jsou důležité dvě vlastnosti:

  • identifikátor se neposílá v rámci HTTP požadavku na server (ten ho k ničemu nepotřebuje, důležitý je jen pro klienta)
  • identifikátor je přístupný z JavaScriptu – takže když někomu pošleme odkaz s identifikátorem, skript na dané stránce si ho může přečíst a dále s ním pracovat

Identifikátor za # v URL tudíž můžeme použít k předání klíče – URL vložíme třeba do nějaké diskuse, mikroblogu, pošleme e-mailem nebo předáme třeba na papírku. Příjemce ho zadá do prohlížeče, ze serveru mu přijde šifrovaný text a v prohlížeči se dešifruje.

K dešifrovanému textu se nedostane ani provozovatel služby, ani různé proxy servery nebo MITM útočnici po cestě. Pokud si někdo bude číst logy, najde v nich jen URL bez #šifrovacíhoKlíče, a nebude si tak publikovaný text moci přečíst.

Utajení textu stojí na utajení odkazu (obsahujícího klíč). Nicméně i když odkazy nebudou tajné (např. se budou vyskytovat ve veřejně přístupných diskusních fórech), má útočník značně ztíženou práci, protože musí nejdříve posbírat odkazy a pak dešifrovat texty – nestačí si jednoduše přečíst/prohledat databázi na serveru poskytovatele „pastebin“ služby.

ZeroBin

Jednou implementací výše popsaného principu je ZeroBin – jednoduchá aplikace napsaná v jazyce PHP, svobodný software (zdrojové kódy).

Zajímavé vlastnosti:

  • používá 256 bitovou AES šifru
  • má minimální závislosti (PHP 5.2.6 a vyšší + GD) a nepotřebuje ani databázi – používá soubory
  • u vkládaných textů lze povolit diskusi – komentáře se také šifrují
  • diskutující můžou přispívat anonymně, nebo se podepsal libovolnou přezdívkou – pak se u nich zobrazuje avatar vygenerovaný na základě jejich IP adresy (tzv. vizuální hash, který by nemělo jít přeložit zpět na IP adresu)

Aplikace je zatím velmi mladá, autor ji označuje jako alfa-verzi, nicméně už teď vypadá použitelně.

Prostor pro zlepšení

Jelikož se JavaScript stahuje ze serveru, musí mu uživatel důvěřovat. A pokud se nepoužívá HTTPS, musí důvěřovat i všem síťovým prvkům po cestě. Potenciální útočník by totiž mohl do prohlížeče poslat pozměněný JavaScript, který by se choval na první pohled stejně, ale data by před odesláním nešifroval, nebo je šifroval slabým či vždy stejným klíčem.

Uživatel si kód běžící v prohlížeči může zkontrolovat např. FireBugem, ale to není zrovna pohodlné a dělat to pokaždé je otrava a ztráta času.

Bylo by tedy dobré, kdyby existovala desktopová aplikace, které bude moci uživatel důvěřovat a která se postará o zašifrování a odeslání na server.

i1984.cz/paste

ZeroBin si můžete provozovat na vlastním serveru nebo využít nějakou jeho již existující instanci. Jednu jsme pro vás zprovoznili na adrese: https://i1984.cz/paste/

A takto vypadá vložený text: https://i1984.cz/paste/?6d3a7c43f4770e67#ZLqRePX5vM6KY…NDlKkWKIQ=

  • 6d3a7c43f4770e67 je identifikátor daného textu
  • ZLqRePX5vM6KYc8CmQXfb9aG9IisijNBYYNDlKkWKIQ= je šifrovací klíč

Pamatujte prosím, že software je v poměrně dost raném stádiu vývoje a není zaručeno, že služba na výše uvedené adrese tu bude navěky. Pokud byste v aplikaci našli chybu, nahlaste ji prosím nám i autorovi programu.

Odpovědět

Obsah tohoto pole je soukromý a nebude veřejně zobrazen.
  • Webové a e-mailové adresy jsou automaticky převedeny na odkazy.
  • Povolené HTML značky: <a> <em> <strong> <cite> <code> <blockquote> <p> <ul> <ol> <li> <dl> <dt> <dd>
  • Řádky a odstavce se zalomí automaticky.

Více informací o možnostech formátování

Ochrana proti spamu
Tato otázka slouží k rozlišení spamovacích robotů od lidí.
odpovězte prosím