čtvrtek 28. února 2008

Jemný úvod do šifrované komunikace (I.)

Odborníci prominou, psáno pro laickou veřejnost na seznámení. Za věcné chyby se omlouvám, opravte mě..

Víte, co je to šifrovaná komunikace? A znáte NSA? Slyšeli jste už něco o těch zlých hackerech nebo crackerech? A posíláte e-maily? Pár základních otázek, na které jdeme hledat odpovědi…

Posíláte e-maily? Bez váhání odpovídám ano... V dnešní době je to komunikace naprosto normální i přes to, že do ní není tak moc vidět: Mnoho lidí si stále myslí, že kliknou-li na kouzelné tlačítko odeslat, zpráva se zničehonic nebo také zčistajasna či jako mávnutím-kouzelného-proutku objeví u příjemce. Není tomu tak. Vámi odeslaný e-mail cestuje od serveru k serveru, od počítače k počítači, a hledá ten správný, kde by se usídlil. Teprve pak se (s velkou pompou) ukáže příjemci. Ta cesta je dlouhá, plná tmavých a nebezpečných zákoutí.. A Váš e-mail je jako nevinná panna. Naivní, předvídatelný, čitelný…

Další otázka a odpověď na ni: Hacker, cracker - tyto pojmy se dost pletou. Hackery se začali nazývat odborníci na počátku počítačových věků, kteří opravdu dobře rozuměli počítačům, operačním systémům, sítím,... To byli ti hodní, maximálně pozlobili jen sebe navzájem. Naproti tomu byl cracker (snad odpadnuvší hacker?), který také počítačům rozuměl, ale používal to jen pro to, aby se mohl někam "nabourat", dostat, nebo odposlechnout komunikaci. To byl ten zlej. Slyšíte tam to ošklivý "krek"?! Jako prd...! V dnešní době (masmédií, jak se píše na wikipedii) se hacker zaměňuje za crackera a tak se to mezi lidmi zabydlelo..budiž, my jsme si to ujasnili a víme "vo co gou", musíme se těm zlým bránit.

Druhá otázka se týkala NSA, neboli National Security Agency. NSA je jedna z amerických (myšleno USA) tajných služeb, jen není tak známá jako třeba FBI nebo CIA. Agentura se zabývá ochranou tajných státních dat a získáváním tajných informací z jiných států (stojí za zmínku, že první zabitý Američan ve Vietnamské válce byl právě agent NSA). Sídlo agentury NSA by se dalo nazvat sídlem světové kryptologie (věda zabývající se šifrováním neboli kryptografií, a dešifrováním, jinak kryptoanalýzou). Jejich vybavením jsou nejmodernější a nejvýkonnější počítače, které kdo kdy vyrobil a jejich rozpočet se odhaduje zhruba jako rozpočet ČR.
A teď si představte, že se v březnu 2006 objevil člověk - Mark Klein, hlavní technik společnosti AT&T, toho času spolupracující s NSA - s tvrzením, že NSA odposlouchává nezanedbatelný internetový provoz (nezanedbatelný dejme jako téměř vše co putovalo přes USA). Jak tato aféra skončila se mi nepodařilo vypátrat (zde prosím zasvěcené o pomoc), ale tipl bych, že ostudou pro AT&T a NSA a problémem pro vládu Spojených států (takže bohužel nic hrozného a nic většího bych v tom nehledal…). Odkaz na práci Marka Klaina je dole ve zdrojích.

A konečně k úplně první otázce, neboli víte co je to šifrovaná komunikace?
Ten dlouhý úvod je jen kvůli této otázce. Snad jsem výše jasně naznačil, že komunikace po síti je nebezpečná. Ale občas je i přes to nutné zajistit důvěrnost zprávy, tj. ujistit se, že je zpráva opravdu v bezpečí. Veškerá internetová komunikace je lehce sledovatelná, lze ji odposlouchávat, zachytávat a bez problému číst (netýká se jen e-mailů, ale i komunikace přes icq, prohlížení webových stránek a vyplňování formulářů, telefonování přes voip, ...). To pak pakety, ty malé částečky nesoucí Váš e-mail napříč světem (nebo jen místní sítí), neletí jen tam, kam mají, ale zachytávají se i v náručí cizinců. Obrana proti tomuto je těžká, vždyť odchytávat pakety na místní síti může kde kdo (tzv. script kiddies, kteří sami sebe nazývají hackery a internet se jimi jen hemží) běžně dostupnými programy (tcpdump, Ethereal, Dsniff, ..). V případě velkých firem a institucí nebo "zajímavých" lidí to už ovšem mohou být i odborníci a konkurence.. Máte stále chuť odeslat přihlašovací informace k internetovému bankovnictví svému kolegovi "mejlem"?

Aby byla komunikace bezpečnější, existuje šifrování (šifrovací algoritmy). Je to jakási přeměna (např.) e-mailu na nečitelný sled znaků, který si do čitelné podoby může změnit pouze příjemce. Tato přeměna dnes většinou probíhá pomocí tzv. klíčů. Pro představu dejme příklad:
Snad nejznámější šifra je šifra Julia Caesara, kdy se posouvaly písmena abecedy o 3 místa. Pak ze slova MASO dostaneme PDVR. Algoritmem je zde posunutí písmene a klíčem hodnota 3.

Je jasné, že v dnešní době by s tímto algoritmem neuspěli ani organizátoři hry Tmou!, natož vojenští experti. Ale pro představu, jak má šifrování fungovat to snad stačí..

V dnešní době se používají dva druhy šifrovacích algoritmů:

  • symetrické
  • asymetrické

Symetrické jsou ty, kdy mají účastníci komunikace stejný šifrovací a dešifrovací klíč. To znamená, že když chce Alice poslat zprávu Bobovi o jeho stavu na kontě, vezme klíč, pomocí něj zprávu ve svém počítači přemění na nečitelnou a odešle. Bob ji přijme, pomocí stejného(!) klíče dešifruje a přečte (…a zapláče). Je zde ovšem riziko, že jedna komunikující strana nebude střežit klíč tak, jak by měla a ten bude vyzrazen..
U asymetrického algoritmu se používají dva druhy klíčů: privátní a veřejný. Na příkladu: Alice napíše tajnou zprávu, zašifruje ji Bobovým veřejným klíčem a odešle. Teď ji už nemůže přečíst nikdo kromě držitele klíče privátního – Bob. Zde je problém s předáváním veřejného klíče (k zamyšlení: je předání veřejného klíče e-mailem bezpečné?). Nejlepší je mít stoprocentní jistotu, že veřejný klíč je té určité osoby (osobní předání, telefon,…).

Dále se budu věnovat pouze asymetrickým algoritmům, které se v dnešní době využívají pro komunikaci nejvíce.

Teoretický postup (a konec konců i ten praktický) je jednoduchý. Pomocí vhodného programu si vygenerujete svůj privátní a veřejný klíč. Privátní ukryjete někam hodně hluboko (ale nedoporučuji zakopávat CD na zahradě) a veřejný naopak vystavíte na obdiv celému světu. Veřejný klíč obsahuje Váš jedinečný identifikátor (e-mailovou adresu), měl by obsahovat jméno, může fotografii, datum vypršení platnosti,… Veřejné klíče je také dobré nechat si „podepsat“ jinými lidmi (podrobnosti v příštím dílu), kteří ví, že je klíč opravdu Váš a kteří Vám věří.


Je šifrování vždy nutné? Co podpis?

Samozřejmě, že šifrovat nemusíme vždy. Posíláte-li zprávu kamarádovi o tom, že jste včera na diskotéce potkali perfektní holku (kluka), pak je celkem jedno, když si ji přečte někdo navíc (neodposlouchává-li zrovna tuto komunikaci Váš partner..), stejně tak, když se registrujete na seznamku, chat nebo fórum…. Neboli, není vždy nutné zajistit důvěrnost.

Častěji je třeba ujistit příjemce, že je zpráva opravdu od Vás, tzn. je třeba zajistit důvěryhodnost. Tu obstarává tzv. digitální podpis. Má stejnou funkci jako podpis vlastnoruční - podepíšete dokument a od té doby za něj ručíte (dokud se nezmění). K podpisu se opět používá asymetrická šifra. Ovšem opačně než u šifrování: Vy dokument (soubor) podepíšete svým privátním klíčem a druhá strana (komunikující partner) si pomocí Vašeho veřejného klíče ověří, že se jedná opravdu o Váš podpis.

Protože podepsat např. binární soubor by bylo značně obtížné (nastala by změna kódu, tj. poškození programu), vytváří se při podpisu hash, neboli „zhuštěná“ verze souboru (podle určitého matematického algoritmu). Hash se k originálu přiloží (většinou má příponu .sig) a při kontrole podpisu se podle něj kontrolují rozdíly v souboru (dokumentu). Proto musí být hash pro každou (byť sebemenší) změnu původního souboru jiný - pak můžeme ručit za námi podepsaný dokument. Podpis už ale neprojde u souboru pozměněného, byť jen o jediný znak. Tímto se digitální podpis liší od našeho vlastnoručního, kdy chceme, aby vlastnoruční byl vždy stejný, nezaměnitelný.

Toť teorie ve zkratce. Pro detailnější porozumění problému použij Google a nebo vyčkej až se zas rozepíšu.


A prakticky…

K šifrování a podepisování asymetrickou šifrou nejčastěji slouží program PGP (Pretty Good Privacy, v dnešní době již bohužel z části placený), GnuPG (podoba PGP volně šiřitelná), OpenPGP a jiné.

Praktické použití na linuxu (v mém případě Ubuntu) s GUI programem seahorse a na windows s programem WinPT někdy příště.

Dočetli-li jste se až sem, pak Vás prosím v komentářích o zpětnou vazbu a kritiku, abych věděl jakým směrem se ubírat dále, děkuji.

Zdroje:

pondělí 25. února 2008

Noc plná Oscarů

Ani jsem nevěděl, že se v noci na dnešek rozdávali Oskarové. Ale mí favoriti to zvládli i bez mých palců - Markéta Irglová a Glen Hansard a jejich nejlepší filmová písen - Falling Slowly, jednoduchá (dokážu ji zahrát i já) a tak pěkná!


A nejlepší animovaný film: Ratatouille. Ten snad ani nemohl mít konkurenci... Viděl jsem ho nedávno a hned mě dosatal (a ne jen pro to, že jsem byl majitelem jedné krysenky - Máničky)

neděle 24. února 2008

XXII

Už se to blíží - budu 22 let na světě. Oslava, další příležitost k tomu se opít. Proč o tak nevýznamné události píšu: musím se pochlubit, že jsem už dostal první dary a dárky. Od Janičky trenýrky, hru a komiks.

Hra Jungle Speed - geniální, nepříliš složitá (místo myšlení je důležitý postřeh, akce a reakce), do hospůdky jak dělaná. Jen pozor na půllitry a ostatní nádobí kolem.. A komiks, můj oblíbený Garfield..
A to je vlastně vše, co jsem chtěl říct (éé, napsat)...

Aktualizováno: Jak mi přejí kamarádi...
Míša lovec: ty ses narodil na vitezny unorovy den :-D
Míša lovec: to je krásné
Míša lovec: Kupredu leva, zpatky ni krok
Míša lovec: dam ti vlajku SSSR

úterý 19. února 2008

Je to příjemné občas našetřit...

Musím se pochlubit. Ač u mě, stejně jak u mnoha jiných, platí slovní spojení chudý student, podařilo se mi našetřit na nový pc a pěkný dárek (ne pro mě).

Návod jak ušetřit pro studenty, majitele platebních karet.
Předpokládejme, že máte brigádu nebo jiný malý měsíční příjem ...

  1. den po přijmutí výplaty z brigády si strčte kartu bez ochranného obalu do zadní kapsy u kalhot
  2. s kartou choďte, sedejte, skákejte, dělejte dřepy. Den by mohl stačit.
  3. vyndejte kartu a ujistěte se, že je správně ohnutá
  4. vyhledejte bankomat a zkuste vybrat 200,- kč
  5. až bankomat zachrochtá a na obrazovku vypíše, že karta byla odebrána, volejte zákaznickou linku - začína 800 a bude napsaná někde poblíž bankomatu
  6. tvrďte, že je to zaručeně chyba bankomatu, karta byla do té nešťastné události naprosto v pořádku. Nejlépe volat v sobotu kolem 22 hodiny - jsou tam ochotné slečny. Kartu Vám z automatu vyjmou a do 7mi pracovních dnů pošlou na Vaši pobočku.
  7. otálejte jeden až dva měsíce s návštěvou pobočky
  8. peníze z brigády se Vám hromadí na účtu a - šetříte!

Odzkoušeno, zaručeně funguje!
Dokonce paní na přepážce byla tak hodná a nabídla mi bezplatnou výměnu karty, což jsem odmítl, chci přece spořit při další příležitosti dál.

sobota 9. února 2008

O České republice

Mám se nějak vyjadřovat k volbě hlavy státu? Nemá to cenu...tak trošku z jiného soudku. Při příležitosti včerejší a dnešní volby bychom si mohli připomenout pár faktů o naší republice.

V roce 2005 bylo v České republice 3 217 300 telefonních přípojek. V roce 2006 se u nás používalo 12,15 miliónů mobilních telefonů. Rezervy oleje jsou veliké. K 1.1. 2006 jsme měli k dispozici 15 miliónů barelů. Spotřeba elektřiny v roce 2005 byla 59,72 biliónů kWh. V roce 2007 nás bylo 5,35 miliónů práceschopných. Jsme členy těchto mezinárodních organizací: ACCT (pozorovatel), Australia Group, BIS, BSEC (pozorovatel), CE, CEI, CERN, EAPC, EBRD, EIB, ESA (spolupracující), EU, FAO, IAEA, IBRD, ICAO, ICC, ICCt (signatář), ICRM, IDA, IEA, IFC, IFRCS, ILO, IMF, IMO, IMSO, Interpol, IOC, IOM, IPU, ISO, ITSO, ITU, ITUC, MIGA, NAM (host), NATO, NEA, NSG, OAS (pozorovatel), OECD, OIF (pozorovatel), OPCW, OSCE, PCA, Schengen Convention, UN, UNCTAD, UNESCO, UNIDO, UNMEE, UNMIL, UNOMIG, UNWTO, UPU, WCL, WCO, WEU (přidruženi), WFTU, WHO, WIPO, WMO, WTO, ZC. V ČR máme 45 letišť se zpevněným a 77 s nezpevněným povrchem (2007). V roce 2006 jsme exportovali zboží hlavně do Německa (40,5%), na Slovensko (5,7%), do Polska (5,5%), Francie (5,1%), Rakouska (4,8%) a Británie (4,6%). A dovoz byl převážně ze států: Itálie (36,8%), Německo (6,8%), Nizozemí (6,2%), Slovensko (6,1%), Polsko (5,7%), Rusko (5%), Rakousko (4,4%).

Zaujalo? A kde takové informace hledat? Zapomeňte na webové stránky našich státních institucí. Na stránkách americké CIA to máte vše pěkně pohromadě, a snaží se - poslední aktualizace 7. 2. 2008 (v době psaní článku)...

neděle 3. února 2008

Jak se učím python

Python je programovací jazyk, který budu potřebovat k bakalářské práci (grafický dohled nad SNMP protokolem) a tak jsem se začal učit jeho základy. Hallo world! je nuda:

print "Hallo world!"

Zkouším něco záživnějšího: prohlížeč Garfieldovských stripů. Zatím umí jen stáhnout (z www.ucomics.com) a zobrazit aktuální strip, takže by to mohla být verze 0.0.1. Proto to zatím nebudu moc zveřejňovat, to až později... Využívá grafickou knihovnu PyGTK.
Program pracuje tak, že nejprve načte a uloží komiks do "garfield.gif" a teprve poté ho v jednoduchém okně zobrazí. Využil jsem toho, že strip (obrázek) je na serveru ucomics.com ukládán ve formátu http://images.ucomics.com/comics/ga/Y/gaymd.gif, kde Y je rok (např. 2008), y je zkrácený rok (08), m je měsíc (12) a d je den (02). Jednoduché...



#!/usr/bin/env python

# GarfViewer : version 0.0.1
# by Jacques Sapin [CZ]

import pygtk
pygtk.require('2.0')
import gtk
import urllib,sys,datetime

today = datetime.date.today()
# for today strip:
Y = today.strftime("%Y") # Year (2008)
y = today.strftime("%y") # year (08)
m = today.strftime("%m") # month (12)
d = today.strftime("%d") # day (02)

print " > day: " + Y + "-" + m + "-" + d

garf = "garfield.gif"

print " > downloading comic strip from http://images.ucomics.com"
source = "http://images.ucomics.com/comics/ga/"+ Y + "/ga"+ y+m+d +".gif"
strip = urllib.urlopen(source)
g = strip.read()
file = open(garf, "w")
file.write(g)
file.close()
print " > strip saved in ./" + garf

class GarfView:
def close_application(self,widget,event,data=None):
gtk.main_quit()
print " > this is the end"
return False

def __init__(self):
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.connect("delete_event",self.close_application)
window.set_border_width(5)
window.set_title("Garfield > "+Y+"-"+m+"-"+d)
window.set_position(gtk.WIN_POS_CENTER)
window.show()

image = gtk.Image()
image.set_from_file(garf)
image.show()

window.add(image)

def main():
gtk.main()
return 0

if __name__ == "__main__":
GarfView()
main()

Šířka blogu nedovoluje, aby se zde vše zobrazilo (bojuju s tím), ale je to tam, takže když si kód označíte odshora dolů a zkopírujete, tak ho máte všechen. Stačí uložit jako (např.) garf.py a spustit pomocí


$ python garf.py

nebo si přiřadit práva na spuštění a spustit:



$ chmod 744 ./garf.py
$ ./garf.py