Bronikowski.com - Emil Oppeln-Bronikowski: Kod & Słowa

Skip navigation

Bronikowski.com G+

Krótki wstęp do osobistej kryptografii

Posted in Pisanina, µGeek | Leave a comment

Tu lepszy wstęp

Internet wydoroślał. Nie ma już w nim miejsca na zaufanie i nadzieję, że nikt nie czai się za ścianą z zamiarem dziabnięcia nas. Czasem tym kimś jest morderca nieświadomy swojej ofiary, skrypt, który szuka dziur, automat.

Na szczęście możemy się uzbroić.

Możemy użyć szyfrowania asymetrycznego! Ha, sama nazwa wystarczy, żeby nastoletniemu odpalaczowi skryptów zmiękły kolana. Niestety, jest to broń obosieczna, pistolet z dwoma lufami, granat z doczepioną gumką-recepturką; dobre narzędzie kryptograficzne jest po prostu skomplikowane. Wymaga nie tylko zrozumienia (choćby pobieżnego) kilku idei związanych z kryptografią, wymaga też odpowiedniej higieny: gdzie i jak przetrzymujemy swoje informacje, których programów używamy do szyfrowania informacji, kiedy, komu i będącemu gdzie ufamy.

Symetrycznie nie jest ślicznie

Może jednak nie warto się tyle kłopotać? Prawie każdy program do archiwizacji danych (ZIP, RAR, 7Zip, etc.) ma możliwość założenia hasła na utworzony plik. Wydawałoby się, że jest to wystarczająca ochrona dla informacji. I jest to prawda, o ile w archiwum czyhają jakieś krępujące materiały pornograficzne, wypożyczone z największej wypożyczalni na świecie pliki muzyczne czy kolekcja limeryków. Rzeczy, które – gdyby wyciekły – zażenowałyby znajomych. Może załatwiły wydanie jakiegoś tomiku wierszy. No wiecie: nic, czego potrzebujecie, ale też nic, co zniszczy Wam życie.

Hasło jest drugim co do słabości ogniwem w łańcuchu bezpieczeństwa. Pierwszym jesteś Ty, wymyślający hasło. Jedno wynika z drugiego. Przytoczę anegdotkę: pisałem kiedyś oprogramowanie dla pewnej firmy, która zażyczyła sobie poziomów dostępu dla swoich pracowników. W miarę standardowa robota: X może Y, Z nie może B. Kiedyś, podczas aplikowania zmian w bazie, moją uwagę przykuł pewien fakt – napisałem odpowiednie zapytanie, które zgrupowało mi skróty haseł: wszyscy pracownicy mieli takie same. Co oznaczało, że wszyscy mieli to samo hasło, będące numerem telefonu do biura.1

Wyobraźmy sobie jednak sytuację w której autor archiwum poświęcił chwilkę na wymyślenie w miarę „ciężkiego”, unikalnego hasła. Teraz pozostaje nam przetransportowanie tak utworzonego pliku do celu. Dajemy go więc znajomemu na przenośnej pamięci USB lub wysyłamy e-mailem. Gotowe! A, chwileczkę, co z hasłem? Zadzwonić i powiedzieć przez telefon? Może wyślę drugim e-mailem hasło, będzie łatwiej?

Znów: załóżmy, że zrobiłeś najlepsze co mogłeś i wyszeptałeś odbiorcy hasło wprost do ucha. Jaką masz pewność, że nie zostanie zapisane na „przylepnej karteczce”? Praktycznie zerową, kontrola nad dostępem do hasła (czyli, de facto, zawartości pliku) została przekazana drugiej osobie.

„Dwie osoby są w stanie dochować tajemnicy o ile jedna z nich jest martwa.”

Teraz – naciągając naszą sytuację do ram fantastyki – przyjmijmy, że jesteście akurat dwiema najbardziej odpowiedzialnymi osobami na świecie, hasło nigdy nie zostało zapisane i siedzi tylko w Waszych głowach. Pozostaje nadal sprawa dostępu do pliku: plik może zostać wykradziony. Nie mówimy tu o nocnym ataku zakonu ninja, którego członkowie wpełzną po suficie i zwisając z elastycznych lin ukradną twardy dysk. Mówimy o kimś, kto wyśle go sobie e-mailem z Twojego komputera gdy będziesz w toalecie.

Teraz między nim a dostępem do Twoich danych stoi tylko hasło.

Jak widzicie proste metody ukrywania informacji stają się skomplikowane gdy tylko zaczniemy brać bezpieczeństwo na poważnie. Dodatkowo wszystkie procedury zabezpieczające wykorzystują elementy, które prawie zawsze padają jako pierwsze.

Podsumujmy więc problemy z tradycyjnym modelem „przesyłam Ci archiwum z hasłem”:

  • pojedyncze hasło umożliwia uzyskanie dostępu do archiwum,
  • każdy może skopiować archiwum i próbować wymusić do niego dostęp,
  • archiwum można podmienić, a odbiorca nie będzie tego świadomy.

Przejdźmy do meritum tego tekstu – jak poprawić bezpieczeństwo naszych danych i jak zmniejszyć szanse na wpadnięcie ich w niepowołane ręce. Zanim jednak rozpoczniemy zabawę z pakietem GPG musimy pomówić trochę o teorii.

Czy hasło to tylko znaki?

Zanim przejdziemy do kluczy prywatnych i publicznych porozmawiajmy przez chwilę o hasłach. Co jest takiego złego w prostych hasłach, jak się je zwykle zapisuje i na jakie problemy z tym możemy się natknąć w systemach informatycznych?

Każdego dnia logujemy się do wielu systemów. Od poczty, przez intranetowy system w pracy, kończąc na Facebooku. Większość z tych czynności sprowadza się do podania identyfikatora (zwykle adresu e-mail lub nazwy użytkownika) i hasła. Te wartości są sprawdzane w bazie danych i jeżeli para się zgadza, system zaczyna udostępniać dane.

Dobrą (jedyną!) praktyką jest składowanie tzw. skrótu hasła, matematycznie wyliczonej wartości przedstawionej najczęściej w zapisie szesnastkowym o stałej „długości”. Powodem używania tej metody jest ograniczenie dostępu do samego hasła zarówno dla administratorów, jak i w przypadku włamania do systemu.

Co to znaczy, że skrót jest wyliczany? Zróbmy własny, okrutnie zły i niepraktyczny skrót; jego koszmarne założenia pozwolą mi zademonstrować jeszcze jeden problem, ale po kolei.

Jeżeli A = 1, Ą = 2, B = 3, C =4, to Z = 35, jasne? Nie rozróżniamy wielkości liter. Teraz zapiszmy wyraz:

EMIL = 
  E[7] + 
  M[17] + 
  I[12] + 
  L[15] = 
  51 = 
  0x33

Czyli nasz „algorytm” to dodawanie wartości pozycji liter w alfabecie. Teraz, gdy ktoś będzie się próbował zalogować hasłem EMIL, mogę policzyć skrót hasła i sprawdzić, czy w bazie mam zapisane 0×33. „Nikt” nie wie, czym jest ten ciąg i hasło jest „bezpieczne”.

Czy potraficie zgadnąć jaki jest z nim problem?

GOAAAAAL = 
  G[10] + 
  O[20] + 
  A[1] + 
  A[1] + 
  A[1] + 
  A[1] + 
  A[1] + 
  A[1] + 
  L[15] = 
  51 = 
  0x33

Jak to? Co to znaczy, że EMIL = GOAAAAAAL? Tak, nazywamy to konfliktem w skrócie, czyli takim wypadku, gdy więcej niż jeden ciąg generuje tą samą wartość skrótu. Ktoś, kto widzi 0×33 i zna metodę liczenia może przygotować hasło, które nie jest hasłem użytkownika a mimo to można go używać do logowania.

Płynie z tego pewna nauka: jeżeli myślisz, że możesz napisać sobie własne „skracanie” to mylisz się (o ile nie jesteś jednym z dwustu-trzystu matematyków, którzy zajmują się tym zawodowo). Jeśli jesteś jednym z tych matematyków to bardzo mi przyjemnie, że czytasz ten tekst!

Co jeszcze? Kolejną dobrą praktyką jest „solenie” skrótu. Oznacza to, że do hasła dodawane jest jeszcze coś, tajemnica pozwalająca na zmianę standardowego skrótu. Czemu się to robi? Hakerzy to sprytne bestie, wzięli słownik i przepuścili go przez popularne metody skracania uzyskując wieeeelką tablelę ze skrótami. Teraz, w przypadku nieposolonych skrótów, wykradziona baza danych z użytkownikami o hasłach takich jak „kot”, „pies” i„herbata” jest czytelna niemal automatycznie. Wystarczy porównać tabelkę już przeliczonych skrótów z tymi w bazie, hop i już mamy! Stąd tylko krok do wypróbowania haseł w innych serwisach.

Kiedy posolimy hasło „pies” naszą T4J3MN1C0M, skrót wyliczony z ciągu „piesT4J3MN1C0M” nie ma nic wspólnego ze skrótem ciągu „pies” i unikamy możliwości łatwego odkrycia hasła.

Klucz prywatny, klucz publiczny

Widzieliście pewnie jakiś film o piratach. W filmach o piratach chodzi głównie o to, kto pierwszy odkopie skrzynię ze skarbami. I czy ma do niej klucz, a jeśli nie klucz, czy skrzynia wytrzyma uderzenia łopatą. Taka skrzynia reprezentuje szyfrowanie symetryczne. Jest skrzynia (archiwum) i klucz (hasło) w którego posiadanie może wejść każdy: na drodze rozboju, dziedziczenia czy też fantastycznego zbiegu okoliczności. Jest też ostra część łopaty, która służy za metaforyczny dostęp nieautoryzowany.

Właśnie zdałem sobie sprawę, że strzeliłem sobie w stopę piracką metaforą. Z armaty. Szyfrowanie symetryczne nie ma łatwej analogii w rzeczywistym świecie, a wynika to właśnie z natury fizyczności; każdy dostatecznie skomplikowany zamek ma liczbę n łopat, która go wreszcie rozwali.

Niech będzie, że nasi piraci poza korsarskim rzemiosłem parają się też czarną magią. I skrzynia jest magiczna. (Jęczenie, które teraz słyszycie, to analogia rozciągana jak guma w starych gaciach).

Ojej, z przykrością zawiadamiam, że piraci nie żyją. Wypadek przy pracy. Nie wiedzieli, że armata jest załadowana. Zginęli w słusznej sprawie. Dzięki ich śmierci mogą uniknąć dalszego męczenia tej anegdoty!

Kryptografia asymetryczna sprowadza się do posiadania pary kluczy; treści zaszyfrowane jednym z nich można odszyfrować tylko drugim i odwrotnie. Jeden z tych kluczy nazywamy prywatnym i w jego posiadaniu jesteśmy wyłącznie my (a każda z osób, z którymi przychodzi nam się wymieniać zaszyfrowanym informacjami, jest w posiadaniu własnego); drugi nazywamy publicznym i udostępniamy reszcie świata. Jeżeli ktoś chciałby przekazać mi plik dostępny tylko dla mnie, musiałby pobrać mój klucz publiczny i dodać do swojego „pęku kluczy”. Podczas szyfrowania archiwum wskazałby mój klucz publiczny, i tylko ja byłbym w stanie odszyfrować zabezpieczone archiwum (bo odszyfrować je można tylko moim kluczem prywatnym).

Klucz prywatny i publiczny tworzą nierozłączoną parę, która umożliwia osobom będącym w posiadaniu naszego klucza publicznego wygenerować zaszyfrowane informacje dostępne tylko dla nas. Nie musimy się umawiać „na hasło”, nie musimy się nawet widzieć czy też uprzednio informować o fakcie. Każdy, kto ma mój publiczny klucz może przysłać mi swoje tajemnice z pewną dozą pewności, że nikt postronny nie będzie mógł z łatwością dostać się „do środka”. Klucz prywatny jest (a przynajmniej: powinien być) dodatkowo zabezpieczony hasłem, tak więc odkodowanie informacji od nadawcy wymaga nie tylko posiadania specjalnego pliku w postaci klucza prywatnego, ale także znania hasła.

Jest to pewien szczególny wypadek „two factor authenitcation”, modelu autoryzacji który polega na „tym co wiesz” (tu: haśle do klucza prywatnego) i „tym, co masz” (tu: pliku zawierającego klucz prywatny). W podobny sposób działają tokeny, które niektórzy z Was otrzymali z banków. Autoryzacja odbywa się na podstawie skrótu RSA generowanego algorytmicznie („to, co masz”) i hasła („to, co wiesz”).

Starczy może suchej teorii. Może to niewielka dawka, ale kto próbował zjeść łyżkę cynamonu ten wie, że nawet niewielkie dawki czasem ciężko przełknąć.

W części praktycznej zainstalujemy pakiet GNU Privacy Guard, który jest otwartym odpowiednikiem PGP. GPG jest oczywiście dostępny na większość systemów operacyjnych, tych płynących w głównym nurcie jak i tych hobbistycznych. Potęga otwartego kodu.

W tekście posługuję się klientem terminalowym. Jest on wspólny dla wszystkich wersji, a i dużo łatwiej uczyć się wydając świadomie polecenia, a nie klikając guziory w interfejsie graficznym. Gdybym miał władzę nad światem to zabroniłbym w ogóle guzików. OK, może grafikom bym pozwolił, ale reszta z Was może zapomnieć. Na wasze szczęście moje dyktatorskie zapędy stępiłem grając w The Sims 2, gdzie prowadziłem postać powoli starzejącego się faceta, który pracował jako programista i czasami mdlał ze zmęczenia w kałuży własnego moczu. Lubię odmianę.

Rozkład zajęć:

  1. Wygenerowanie własnej pary kluczy
  2. Import klucza publicznego dostępnego na stronie
  3. Import klucza z serwera
  4. Eksport własnego klucza publicznego
  5. Podpisanie pliku i weryfikacja sygnatury
  6. Szyfrowanie pliku i jego odszyfrowanie
  7. Szyfrowanie symetryczne

Wygenerowanie własnej pary kluczy

— gpg --gen-key2

gpg (GnuPG) 2.0.19; Copyright (C) 2012 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Proszę wybrać rodzaj klucza:
  (1) RSA i RSA (domyślne)
  (2) DSA i Elgamala
  (3) DSA (tylko do podpisywania)
  (4) RSA (tylko do podpisywania)

Klucze RSA będą miały od 1024 do 4096 bitów długości.
Jakiej długości klucz wygenerować? (2048)

Żądana długość klucza to 2048 bitów.

Okres ważności klucza.

        0 = klucz nie ma określonego terminu ważności
       = termin ważności klucza upływa za n dni
     w = termin ważności klucza upływa za n tygodni
     m = termin ważności klucza upływa za n miesięcy
     y = termin ważności klucza upływa za n lat
Okres ważności klucza? (0) 2y

Klucz traci ważność sob, 13 cze 2015, 16:35:36 CEST

Czy wszystko się zgadza (t/N)? t

Odpalenie gpg z parametrem –gen-key rozpoczyna procedurę generowania klucza. W pierwszym kroku wybieramy domyślną pozycję, tj. parę kluczy RSA, dzięki czemu możemy szyfrować i podpisywać informacje.

Długość klucza jest wprost proporcjonalna do jego “siły”. Możemy przez to rozumieć jego odporność na najbardziej prymitywne (ale często zaskakująco skuteczne) metody łamania haseł. Długość klucza wpływa też na czas, który będzie potrzebny na zaszyfrowanie/odszyfrowanie wiadomości. Dla większości zastosowań można spokojnie wybrać maksymalną długość.

Okres ważności klucza to czas po którym klucz stanie się bezużyteczny. Teoretycznie, gdyż informację tę możemy zmienić w dowolnej chwili edytując klucz. Pole to służy bardziej jako element higieny.

GnuPG musi utworzyć identyfikator użytkownika do identyfikacji klucza.

Imię i nazwisko: Emil Oppeln-Bronikowski
Adres poczty elektronicznej: emil@adrespoczty.pl
Komentarz: Testowa parka
Twój identyfikator użytkownika będzie wyglądał tak:
    "Emil Oppeln-Bronikowski (Testowa parka) "
Zmienić (I)mię/nazwisko, (K)omentarz, adres (E)mail, przejść (D)alej,
czy (W)yjść z programu? d

Musisz podać długie, skomplikowane hasło aby ochronić swój klucz prywatny.

[...]

Musimy wygenerować dużo losowych bajtów. Dobrym pomysłem aby pomóc komputerowi
podczas generowania kluczy jest wykonywanie w tym czasie innych
działań (pisanie na klawiaturze, poruszanie myszką, odwołanie się do dysków);
dzięki temu generator liczb losowych ma możliwość zebrania odpowiedniej ilości
entropii.

gpg: sprawdzanie bazy zaufania
gpg: potrzeba 3 marginalnych, 1 pełnych, model zaufania PGP
gpg: poziom: 0 poprawnych:   1 podpisanych:   0 zaufanie: 0-,0q,0n,0m,0f,1u
gpg: następne sprawdzanie bazy odbędzie się 2015-06-13

pub   2048R/EFB571A3 2013-06-13 [wygasa: 2015-06-13]
      Odcisk klucza = 6D42 0F8B E9EA 0100 A5A8  5F82 F0F6 7FBF EFB5 71A3
uid                  Emil Oppeln-Bronikowski (Testowa parka) 
sub   2048R/693FF3FC 2013-06-13 [wygasa: 2015-06-13]

W tym kroku nie ma niczego magicznego, podajemy dane idetyfikacyjne i czekamy, aż generator liczb losowych zdobędzie się na odwagę wygenerowania dla nasz kluczy. Kiedy wreszcie gpg odda kontrolę konsoli możemy zacząć zabawę w szyfrowanie.

Import klucza publicznego dostępnego na stronie

Zacznijmy od zaimportowania mojego klucza, dostępnego na serwerze HTTP.

— wget http://bronikowski.com/emil.gpg
--2013-06-13 16:41:40--  http://bronikowski.com/emil.gpg
Translacja bronikowski.com (bronikowski.com)... 46.248.176.108
Łączenie się z bronikowski.com (bronikowski.com)|46.248.176.108|:80... połączono.

Żądanie HTTP wysłano, oczekiwanie na odpowiedź... 200 OK

Długość: 2170 (2,1K) [text/plain]
Zapis do: `emil.gpg'

[...]

2013-06-13 16:41:40 (52,5 MB/s) - zapisano `emil.gpg' [2170/2170]
— gpg --import < emil.gpg
gpg: klucz 96769184: klucz publiczny ,,Emil Oppeln-Bronikowski '' wczytano do zbioru
gpg: Ogółem przetworzonych kluczy: 1
gpg:          dołączono do zbioru: 1
Pobrany plik zawiera mój klucz publiczny. Parametr --import odpowiada za dopięcie mojego klucza do pęku twoich kluczy.

— gpg --list-keys

pub   2048R/EFB571A3 2013-06-13 [wygasa: 2015-06-13]
uid                  Emil Oppeln-Bronikowski (Testowa parka) 
sub   2048R/693FF3FC 2013-06-13 [wygasa: 2015-06-13]
pub   1024D/96769184 2011-05-10
uid                  Emil Oppeln-Bronikowski 
uid                  Emil Oppeln-Bronikowski 
sub   2048g/F8FE0300 2011-05-10

Import klucza z serwera

Dzięki –list-keys możesz zobaczyć detale swojego pęku kluczy i dowiedzieć się, że mój odpowiada za dwa adresy e-mail. No dobrze, masz mój klucz bo ci powiedziałem gdzie dokładnie jest. Co w przypadku ludzi, których znasz tylko z nazwiska lub znasz ich adres e-mail? Na szczęście klucze można wysłać do specjalnego serwera zajmującego się ich dystrybucją. Klucz umieszczony w katalogu można odnaleźć bez większego problemu przy pomocy parametrów –keyserver i –search–keys

— gpg --keyserver pgp.mit.edu --search-keys marks@ubuntu.com

gpg: poszukiwanie ,,marks@ubuntu.com'' z serwera hkp pgp.mit.edu

(1)     Martin M Marks (sobankiithsa@UBUNTU.CASTER) 
       Mark Shuttleworth 
       Mark Shuttleworth 
       Mark Shuttleworth 
       Mark Shuttleworth 
       Mark Shuttleworth 
         1024 bit DSA key D54F0847, utworzono: 2004-02-18
Keys 1-2 of 2 for "marks@ubuntu.com".  Wprowadź numer(y), N)astępny lub Q)uit > 2

gpg: zapytanie o klucz D54F0847 z serwera hkp pgp.mit.edu
gpg: klucz D54F0847: klucz publiczny ,,Mark Shuttleworth '' wczytano do zbioru
gpg: potrzeba 3 marginalnych, 1 pełnych, model zaufania PGP
gpg: poziom: 0 poprawnych:   1 podpisanych:   0 zaufanie: 0-,0q,0n,0m,0f,1u
gpg: następne sprawdzanie bazy odbędzie się 2015-06-13
gpg: Ogółem przetworzonych kluczy: 1
gpg:          dołączono do zbioru: 1

— gpg --list-keys

pub   2048R/EFB571A3 2013-06-13 [wygasa: 2015-06-13]
uid                  Emil Oppeln-Bronikowski (Testowa parka) 
sub   2048R/693FF3FC 2013-06-13 [wygasa: 2015-06-13]
pub   1024D/96769184 2011-05-10
uid                  Emil Oppeln-Bronikowski 
uid                  Emil Oppeln-Bronikowski 
sub   2048g/F8FE0300 2011-05-10
pub   1024D/D54F0847 2004-02-18
uid                  Mark Shuttleworth 
uid                  Mark Shuttleworth 
uid                  Mark Shuttleworth 
uid                  Mark Shuttleworth 
uid                  Mark Shuttleworth 
uid                  Mark Shuttleworth 
sub   1024g/9DE743C9 2004-02-18

I już, Mark Shuttleworth został odnaleziony a jego publiczny klucz umieszczony w naszym pęku. Zanim przejdziemy dalej: aby wyeksportować klucz (w przykładzie poniżej: mój publiczny) możemy użyć parametry –export i idetyfikatora klucza. Opcja -armor powoduje, że wyeksportowany plik ma formę pliku ASCII, a nie jak standardowo, binarną.

— gpg --export -armor emil@adrespoczty.pl >/tmp/emil-at-adrespoczty.gpg

I już. Plik /tmp/emil-at-adrespoczty.gpg mogę wysłać komuś e-mailem, umieścić na serwerze lub wydrukować.3

Podpisanie pliku i weryfikacja sygnatury

Termin „podpis elektroniczny” jest wam z pewnością znany, prawda? Zwykle myślimy o kwalifikowanym podpisie elektronicznym, który jest równoznaczy z podpisem i pozwala nam na załatwianie spraw drogą elektroniczną.

Podpisanie dokumentu to procedura w której użytkownik używając swojego klucza prywatnego (który znajduje się na karcie przy podpisie kwalifikowanym) tworzy unikalny skrót z dokumentu co pozwala nam, odbiorcom, potwierdzić:

  • że podpisujący znał hasło do klucza prywatnego użytkownika (czyli „był nim” lub „bił go aż zdradził”),
  • że dokument od tego czasu nie uległ modyfikacji (modyfikacja psuje skrót),
  • datę podpisu.

Podpiszmy więc Code of Conduct.

— xhtml2pdf http://www.ubuntu.com/about/about-ubuntu/conduct

Converting www.ubuntu.com-about-about-ubuntu-conduct to /home/emil/www.ubuntu.com-about-about-ubuntu-conduct.pdf...

Zrobimy sobie z tej strony dokument PDF, a następnie, używając –sign, podpiszemy go.

— gpg --sign www.ubuntu.com-about-about-ubuntu-conduct.pdf

Musisz podać hasło aby odbezpieczyć klucz prywatny użytkownika:

,,Emil Oppeln-Bronikowski (Testowa parka) ''
długość 2048 bitów, typ RSA, numer EFB571A3, stworzony 2013-06-13

— l www.ubuntu.com-about-about-ubuntu-conduct.pdf*

-rw-r--r-- 1 emil users 19596 06-13 17:10 www.ubuntu.com-about-about-ubuntu-conduct.pdf
-rw-r--r-- 1 emil users 11244 06-13 17:10 www.ubuntu.com-about-about-ubuntu-conduct.pdf.gpg

Do wygenerowanego dokumentu dołączony został podpis. Każdy, kto otrzyma tę parę plików może zweryfikować ich autora i czas powstania.

— gpg --verify www.ubuntu.com-about-about-ubuntu-conduct.pdf.gpg

gpg: Podpisano w czw, 13 cze 2013, 17:10:42 CEST kluczem RSA o numerze EFB571A3
gpg: Poprawny podpis złożony przez ,,Emil Oppeln-Bronikowski (Testowa parka) ''

Szyfrowanie pliku i jego odszyfrowanie

Czas wreszcie się zakonspirować. Mam dokument, który chcę przekazać temu innemu sobie (z prawdziwym kluczem). Podaję więc parametr -e (szyfruj) i -r, po którym podaję listę odbiorców, a na końcu sam plik, który ma zostać zaszyfrowany.

— gpg -e -r emil@fuse.pl ubuntu.com.pdf

gpg: F8FE0300: Nie ma żadnej pewności, czy ten klucz należy do tej osoby
pub  2048g/F8FE0300 2011-05-10 Emil Oppeln-Bronikowski 

Odcisk klucza głównego: 820F D398 6D48 4BF3 3F3F  23CF 4276 4910 9676 9184
      Odcisk podklucza: 74BA 5DEF A968 0D74 0C4D  3197 76A2 538A F8FE 0300

NIE MA pewności, czy klucz należy do osoby wymienionej w identyfikatorze.
Jeśli nie masz co do tego żadnych wątpliwości i *naprawdę* wiesz co robisz,
możesz odpowiedzieć ,,tak'' na następne pytanie.

Użyć tego klucza pomimo to? (t/N)

Przyznam, że sam byłem zaskoczony tą wiadomością. Oczywiście zaraz strzeliłem się w czoło i przypomniałem sobie o tym, o czym nigdy nie chcę pamiętać: o poświadczaniu posiadania klucza. Widzicie, każdy może stworzyć sobie dowolny klucz i użyć w nim danych jakich mu się podoba. Nic nie stoi na przeszkodzie żebym wygenerował sobie klucz z fałszywymi informacjami i namówił ludzi do zaimportowania takiego klucza do ich systemów.

Jeżeli ktoś zaimportuje mój klucz, który mówi, że jestem billg@microsoft.com to w komunikacji z taką osobą mogę nie tylko udawać Billa, mogę używać tego klucza jako podpisu pod plikami.

Aby prawidłowo poświadczyć autentyczność pary klucz/osoba należałoby umówić się z drugą osobą na piwo, mieć przy sobie wydrukowany odcisk swojego klucza publicznego, wymienić się swoimi wydrukami, potwierdzić tożsamość i po stwierdzeniu poprawności, powrocie do domu i kacu wyedytować zaimportowany klucz i zwiększyć (lub zmiejszyć jeśli współpiwoszowi źle z oczu patrzyło) zaufanie do jego klucza, po czym ostatecznie podpisać jego klucz publiczny swoim kluczem prywatnym.

To chyba najgorsza część tej całej zabawy. Jeżeli na serio chcemy pewność korespondencji nie możemy po prostu zaufać elektronicznym drogom komunikacji. Zdaję sobie sprawę, że chodzenie z wydrukiem heksów i zmuszanie przyjaciół do składania na nich podpisów stawia nas pomiędzy zwolennikami teorii o tym, że Żydzi wysadzili WTC, a ludźmi którzy odbierają radio AM dzięki plombom. Kryptografia jest bardzo łatwa póki nie jest ciężka.

— gpg --edit-key emil@fuse.pl

gpg> trust

pub  1024D/96769184  utworzono: 2011-05-10  wygasa: nigdy       użycie: SC  
                    zaufanie: marginalne    poprawność: nieznany

sub  2048g/F8FE0300  utworzono: 2011-05-10  wygasa: nigdy       użycie: E   
[    nieznane   ] (1). Emil Oppeln-Bronikowski 
[    nieznane   ] (2)  Emil Oppeln-Bronikowski 

Zastanów się jak bardzo ufasz temu użytkownikowi w kwestii sprawdzania
tożsamości innych użytkowników (czy sprawdzi on odciski kluczy pobrane
z różnych źródeł, dokumenty potwierdzające tożsamość, itd.).
 1 = nie wiem albo nie powiem
 2 = NIE ufam
 3 = mam ograniczone zaufanie
 4 = mam pełne zaufanie
 5 = ufam absolutnie
 m = powrót do głównego menu

Twoja decyzja? 3

pub  1024D/96769184  utworzono: 2011-05-10  wygasa: nigdy       użycie: SC  
                    zaufanie: marginalne    poprawność: nieznany
sub  2048g/F8FE0300  utworzono: 2011-05-10  wygasa: nigdy       użycie: E   
[    nieznane   ] (1). Emil Oppeln-Bronikowski 
[    nieznane   ] (2)  Emil Oppeln-Bronikowski 
gpg> sign

Czy na pewno podpisać wszystkie identyfikatory użytkownika? (t/N) t
pub  1024D/96769184  utworzono: 2011-05-10  wygasa: nigdy       użycie: SC  
                    zaufanie: marginalne    poprawność: nieznany

Odcisk klucza głównego: 820F D398 6D48 4BF3 3F3F  23CF 4276 4910 9676 9184
    Emil Oppeln-Bronikowski 
    Emil Oppeln-Bronikowski 

Czy jesteś naprawdę pewien, że chcesz podpisać ten klucz
swoim kluczem ,,Emil Oppeln-Bronikowski (Testowa parka) '' (EFB571A3)

Czy na pewno podpisać? (t/N) t

Po tym jak wyedytowałem klucz i zadeklarowałem do niego pewne zaufanie, a ostatecznie podpisałem go swoim, wcześniej występujący komunikat nie powinien się już pojawiać.

— touch tajnydokument
— gpg -r emil@fuse.pl -e tajnydokument
— l tajnydokument*

-rw-r--r-- 1 emil users   0 06-13 17:20 tajnydokument
-rw-r--r-- 1 emil users 603 06-13 17:20 tajnydokument.gpg

Szyfrowanie symetryczne

Jeżeli po przeczytaniu tego całego tekstu poczułeś nienawiść do ludzi, którzy próbują skomplikować ci życie — nie rozpaczaj — GPG/PGP potrafi szyfrować też pliki „na hasło”, wystarczy, że użyjeszcz parametru -c i podasz unikalne hasło, które dowolny inny użytkownik, bez względu czy jest w posiadaniu twojego klucza, czy też nie może odszyfrować używając hasła.

— gpg -c test.pdf

Koniec

Tekst ten przeleżał kwartał na dysku i właściwie miał już nigdy nie trafić do edytora, ale ostatnie doniesienia o tym, że amerykańskie służby szpiegowskie szpiegują wystraszyły niemało ludzi, którzy używają wszędzie tego samego hasła i pomyślałem, że to czas żeby poodcinać trochę kuponów od nowej fali paranoi.

Mówiąc już zupełnie serio. Jeżeli używacie komputerów tak jak ja to są duże szanse, że macie na dyskach wiele ważnych dokumentów. Dokumentów, które może wkładacie do Dropboksa? Albo trzymacie na pulpicie? Wystarczy, że wygenerujecie dla siebie tę parę kluczy i zaczniecie przepuszczać te pliki przez gpg -e -r . Bams. Nie musicie się z nikim wymieniać kluczami prywatnymi, nie musicie ustawiać swoich klientów pocztowych, po prostu od czasu do czasu zaszyfrujcie „sami na siebie” ten dump bazy danych.

Dodatkowo

Piotr Szotkowski, który robił mi kurektę, poleca także następujące teksty:

  1. Co nie powinno się zdarzyć. Działo się to dawno temu kiedy jeszcze nie wiedziałem o czymś, co nazywamy „soleniem haseł”. []
  2. Wytłuszczam komendy i klawisze []
  3. wydrukować? Tak, o tym trochę później []

Wojna odwołana

Posted in Pan ma teraz relaks | Leave a comment

Przepraszam, ten tekst na dole jest taki głupi, że nie mogę wyjść z podziwu, że miałem siłę/ochotę wklepać go do edytora o trzeciej nad ranem. Miałem go skasować, ale postanowiłem, że zostawię go tutaj jako nauczkę, że rzeczy zabawne o trzeciej nad ranem są zabawne tylko wtedy, o trzeciej nad ranem.

Tomasz, z powodów nieznanych historii, został głową demokracji naszego kraju. Jedną z pierwszych decyzji, które podjął, dotyczyła prezentów wymienianych przez delegacje: prezenty miały być bezsensowne i obraźliwe, ale nie na tyle żeby wysłannicy zostali zabici przez gospodarzy.

Pewnego dnia wezwał mnie do siebie i powiedział, że jadę do Rosji. Jako prezent otrzymałem złoty pierścień wygrawerowany w tolkienowskim stylu. Napis mówił: „Białasy, to my wymyśliliśmy seks. Nie ma za co, Czarni – Jay-Z”.1

Putin nie był zadowolony. Mówił trochę o tym i owym, a kiedy polano wódki ustaliliśmy wspólnie, że każdy dwudziestoparolatek jest strasznym złamasem. Przerzucaliśmy się przykładami swoich przewinień, a on prowadził; ostatecznie kagiebeiści mają szersze pole do popisu w tej materii. A wiesz jak podrywałem dupy, zapytał? Nie wiedziałem. Mówiłem, że w KGB odbywają się orgie, a ja jestem niezapraszany.

Skrzywiłem się: jak to, kagiebeista na współczucie. Na współczucie, przyznał. Zaśmiałem się rzucając: Ha ha, rzeczy, które dowiedziałem się od Putina. On spochmurniał i kazał mi obiecać, że napiszę o tym dopiero jak umrze. W sumie ile mu zostało w tej sytuacji socjopolitycznej pomyślałem podając mu rękę na zgodę.

Podano ogórki.

Te i inne, równie popieprzone, rzeczy, śnią mi się po kilkukilometrowym spacerze, maratonie Robot Chicken i śnie do „Wstęp do etyki uniwersytetu Oxford”. Normalnie ślę tylko do bohaterów, ale dawno niczego nie pisałem, jest poniedziałek, godzina 4:19.2 Zacznę tydzień od czegoś głupiego to może narzucę mu jakąś narrację.

  1. Nie mam pojęcia, kto to jest dżejzi, dziękuję popkulturo. []
  2. Dlatego nie ma kurekty. Okazało się, że ludzie śpią o tej godzinie. Żal & rozpacz. []

Dobre intencje

Posted in µGeek | Leave a comment

Nie ma dla mnie nic bardziej niepokojącego niż Internet unoszący dłonie w geście zwycięstwa. Naturą Internetu jest to, że „wygrana” nie musi być wygraną obiektywną i mierzalną, uczciwym zwycięstwem nad jasno określonym przeciwnikiem według zasad. Tłum nie jest sumą głów. Tłum jest sumą odbytów i pięści.

Jeszcze niedawno takie zjawisko żyło w popkulturze dzięki wieśniakom dokonującym szturmu na zamek Doktora Frankensteina. Żyło też jako piętno publicznych linczów. Internet ukrył sznur i zamiast pochodni ma latarkę z LED. Internet przyczepił sobie też gwiazdę szeryfa, wystawił licencję na zabijanie, a za Fedorę zatknął przepustkę prasową.

Wydarzenia w Bostonie wstrząsnęły mną w sposób, jakiego nie byłem w stanie przewidzieć. Pomiędzy moją sympatią do miasta i podziwem dla maratońskiego wysiłku, pomiędzy zdjęciami z ludźmi, którzy rzucają się do pomocy i mną, wracającym na lekkim podpiciu do domu, wszystko nabrało dla mnie hiper-realności, której nie było w stanie przegonić kolejne piwo wypite już w pozycji leżącej. Spałem mało, o piątej wyszedłem do biura by przykleić się ekranu i czytać.

Czym więcej czytałem, tym bardziej rosła we mnie nienawiść. Na moich oczach powtarzał się cykl szaleństwa: garbage-in, garbage-out. Niesprawdzone, fantastyczne teorie wyprodukowane przez internetowych Batmanów uzbrojonych w kompletny brak empatii i MS Paint trafiały do szerszej konsumpcji, a po trawieniu zamieniały się w gówno, w którym taplali się spece od spiskowych teorii. Tempo produkcji oskarżycielskich obrazków rosło wraz z uczuciem podniecenia wśród klawiaturowych detektywów. Kulminacyjnym punktem był pościg bostońskiej policji za podejrzanymi. Stwierdzono deficyt rąk wśród tłumu poklepującego się po plecach, aż wreszcie ogłoszono ex cathedra, że oto jesteśmy światkami ostatecznego triumfu posiadaczy telefonów komórkowych z aparatami i stałego dostępu do sieci nad mediami tradycyjnymi. Jeden z użytkowników reddita z dumą rozdawał linka każdemu, kto chciał słuchać. Odgadł on słusznie, że zamachowcem będzie dwudziestoparolatek. Nie, że będzie ich dwóch i że 26 i 19 lat ledwie mieści się w jego przepowiedni. „Remember the hits, forget the misses”.

Pośród tego pościgu o dowody jeszcze mętniejsze, jeszcze lepiej korelujące z wyznawanym przez wskazującego smakiem rasizmu zdjęcia „potencjalnych podejrzanych”, hipotez o rządzie, który wysadził obywateli żeby ukryć to lub tamto, przepchnąć taką a nie inną ustawę, nikt nie wziął nawet oddechu by przystanąć i zastanowić się nad skutkami takich działań.

Internet stał się repozytorium głupoty, z której garściami czerpać może każdy, kto ma akurat ochotę na usztywnienie poglądów, jakie już wyznaje. Na tragediach budowane są kariery, które wspierają się o mantrę „ja tylko zadaję pytania!”.

I nie piszę tego żeby „bronić” mediów tradycyjnych. One też przykładają się do kociokwiku, legitymizując czasem te bajdurzenia. Piszę o tym dlatego, że czuję obrzydzenie do ludzi, którzy widzą się jako bohaterów, ponieważ mają konto w popularnym serwisie i potrafią narysować czerwoną linię na zdjęciu. Nie jesteście dziennikarzami śledczymi, nie jesteście Batmanami, nie jesteście bystrymi obserwatorami. Macie dostęp do Internetu.

git branch five-stages-of-fuckup

Posted in µGeek | 6 Comments

Popełniłem błąd w kodzie. Strasznie głupi, amatorski, „PHP w dwa tygodnie” błąd. Taki, którego się nie popełnia. Pominąłem jedną z warstw autoryzacji aplikacji i „wyciekłem” dane.

Zaprzeczenie

Nie ma szans, żeby był błąd. Dopisywałem wprawdzie w piątek poprawkę niedaleko middleware, ale przecież ona nie mogła wpłynąć na działanie warstwę niżej. Dzwonię do zgłaszającego błąd. Weryfikuję zgłoszenie. Użytkownik, który widzi niepoprawne informacje został dodany bez nadania roli. Ha ha. Nie ma błędu. Wysyłam głośnego e-maila, dwa razy używam wytłuszczenia. Moje na wierzchu, hurra.

Godzinę później otrzymuję paczkę e-maili od pracowników, którzy błąd znaleźli. Jest. Akurat w tym samym miejscu. Popełniłem błąd.

Gniew

Kurwa! Kurwa jebana mać. Ja pierdolę. To dlatego, że nigdy nie mam czasu. I w ogóle wszystko o kant dupy potłuc. Przecież to głupie. Pierdolę, nie robię.

Targowanie się

Może jednak nic się nie stało? O, praktycznie tylko jeden widok cieknie, a reszta i tak będzie rzucała wyjątkiem podczas filtrowania. Wezmę logi i sprawdzę.

Jeden grep, trzeci. -v lokalne_adresy. Wygląda normalnie. Może się jednak nic nie stało, prawda? No i ktoś musiałby świadomie wpisać cały URL. Nie ma szans, nie ma szans.

Depresja

Tyle lat to robię i nadal sadzę takie kwiatki. Może ja tylko świetnie gram światłego nerda ku uciesze internetowej gawiedzi? Nic dziwnego, że nic nie osiągnąłem i jestem zupełnie nikim, tak spieprzyć. W czym ja w ogóle jestem dobry? Stare meble nieźle rozwalam na kawałki. Może powinienem się zająć czymś prostszym tak żeby nie nieść zagrożenia?

Pogodzenie się

Jeszcze czekam.

中国银

Posted in Pan ma teraz relaks | 3 Comments

Obudziłem się na podłodze w biurze. Dzień tak rozpoczęty nie może być dobry, prawda? Zerknąłem w pocztę firmową, potem w prywatną. W prywatnej natknąłem się na e-mail, który teoretycznie powinien był zostać zjedzony przez spam-maszynę. Zaśmiałem się do siebie i przekleiłem propozycję na socjalweb, żeby inni mogli się pośmiać ze mną. Oto treść pierwszego e-maila:

(It’s very urgent, Please transfer this email to your CEO or appropriate person, thanks)

Dear CEO,
We are the department of asian domain registration service in China. Here I have something to confirm with you. We formally received an application on January 18, 2013 that a company claimed ”VTCC Intl Company” were applying to register”bronikowski”as their Net Brand and some “bronikowski” domain names through us.

Now we are handling this registration, and after our initial checking, we found the name were similar to your company’s, so we need to check with you whether your company has authorized that company to register these names. If you authorized this, we would finish the registration at once. If you did not authorize, please let us know within 5 workdays, so that we could handle this issue better. After the deadline we will unconditionally finish the registration for ”VTCC Intl Company”.

Looking forward to your prompt reply.

Popatrzyłem w swoją listę zadań na dziś. Powinienem pracować. Z drugiej strony istnieje zagrożenie, że stracę swoją sieciową markę w Chinach, a pomocny pracownik firmy patrzy w przód na moją natychmiastową odpowiedź.

Odpisałem więc, że to przerażające. Dodałem, że po otrzymaniu dokumentów natychmiast poinformuję Radę Starszyzny, która to Rada zarządza ogólnoświatową marką bronikowski. Zanim wysłałem list, przełączyłem szybko From: z adresu prywatnego (w domenie bronikowski.com) na adres firmowo-pracowy (w domenie fuse.pl).

Otrzymałem następującą odpowiedź:

At present, we haven’t passed their application, we need your opinion.If your company consider these names of importance to your company’s business or interest, we suggest that your company register these names first so as to avoid confusion or speculation.If you don’t think their application will affect
your company,then we will finish registering for VTCC Intl Company as per our duty. we will not bear any responsibility in future because we had informed you.

Kindly inform us your company’s decision as soon as possible in order to handle this issue better.

Muszę przyznać, że doceniłem zagrywkę. „Róbcie jak chcecie, ale jeżeli wiecie, co robicie, to zajmiecie się tematem, prawda?”. Postanowiłem dopytać, czym jest ten Net Brand. Domeny? Marki? Proszę powiedzieć, nie mogę iść do Starszyzny z pustymi rękami.

Odpisano mi niemal natychmiast:

They wants to register “fuse” net brand and following domain names:

fuse.my
fuse.ae
fuse.com.my
fuse.sg

Ojej, ale jak to „fuse”? Przecież pierwszy e-mail dotyczył marki „bronikowski”. Wytłuściłem moje wątpliwości, zaznaczając, że początkowo korespondencja dotyczyła innej marki i pytając, czy ma to jakiś związek z faktem, że piszę z innego adresu e-mail? Mój chiński rozmówca nawet nie mrugnął okiem i odpisał:

Yes,plus the “bronikowski” net brand and following domain names:

bronikowski.asia
bronikowski.cn
bronikowski.co.in
bronikowski.com.cn
bronikowski.com.hk
bronikowski.com.tw
bronikowski.hk
bronikowski.in
bronikowski.net.cn
bronikowski.org.cn
bronikowski.tw

Pokiwałem głową i zachwyciłem się kompleksową obsługą. Potwierdziłem, że mam już klucz do skarbca i poprosiłem o wycenę ww. domen. Dopytałem też, czy przypadkiem podstępni piraci marek internetowych nie zaczaili się na AntyWeb. Dmucham na zimne.

Nie uwierzycie w moje szczęście: AntyWeb też był do przejęcia. No, w takim razie nie pozostało mi nic innego, jak uratować siebie i polski Internet! Tylko nie mam specjalnie pieniędzy na przelewy. Przeprosiłem i dodałem, że jeżeli przyjmą srebro, które mój pradziad ukradł żydowskim1 rodzinom, to z pewnością się jakoś dogadamy.

Do tej pory nie otrzymałem odpowiedzi z adresem, gdzie mam przesłać monety. Wygląda na to, że moja przyszłość na rynku chińskiego blogerstwa została przekreślona.

  1. nie, ale historia równie wiarygodna jak firmy polujące na bronikowski []

2013

Posted in Pan ma teraz relaks | 4 Comments

Życie odmierzane jest coraz krótszymi odcinkami czasu. Kiedy porzuciliśmy zbieractwo i polowanie na rzecz rolnictwa i hodowli zwierząt, nasz czas przecinały pory roku. Kiedy sadzić, kiedy zbierać. Na krańcach zmian pór roku rozmaite religie umieściły swoje obrządki; jeśli nie przebłagamy bogów, którzy wciągają słońce na maszt nieba, to zima może się nigdy nie skończyć. Wtedy nie wiedzieliśmy jeszcze o tym, że nieba nie da się przekonać, przebłagać i przestraszyć. Że kręci się jednostajnie, z uporem, że po zimie przychodzi wiosna bez całopalnych ofiar.

Mijały lata, nauczyliśmy się oswajać zimno, postawiliśmy trwałe budynki, przez okna których nie wciskał się wiatr. Sztuczne światło zastąpiło oczekiwanie na równonoc, ciepło pieców rozproszyło mordercze mrozy zimy. Byliśmy miejskimi zwierzętami, nasz cykl pomiędzy życiem a śmiercią zamykał się teraz w miesiącu. Pomiędzy wypłatą a wypłatą.

Zbudowaliśmy jeszcze lepszy świat. Świat nagradzający tych, którzy oddali się mu umysłem i ciałem. Odmierzaliśmy pięć dni i dawaliśmy nura w hedonizm. Weekenders.

Uzbroiliśmy się w telefony. Decyzje zapadają w godzinę. Faksujemy umowy, przemierzamy kraje. Potem godzina telewizji przed snem.

Systemy informatyczne odpowiadają pięć razy szybciej niż trwa mrugnięcie okiem, 400 milisekund.

Za następne 4,40646031 × 1016 mrugnięć.

Chciałbym powiadomić

Posted in Pisanina | 4 Comments

Czy powinno się naśladować „realny świat” podczas projektowania aplikacji? Ofiary programów obitych „skórą”, których nawigacja jest „rozsypana” po wyłożonej panelami podłodze, które dotykają idealnie płaskiego ekranu celem „przekręcenia potencjometru na 11”, zawołają głośno, że nie, nie wolno. Potem dostaną coś na uspokojenie i będą mogły wrócić na terapię.

Poprawną odpowiedzią na to pytanie jest: „To zależy.”

Podczas udzielania tak głębokiej odpowiedzi najlepiej jest pocierać brodę i patrzeć wzrokiem widzącym sto lat do przodu. Nadaje to odpowiedniej powagi stwierdzeniu, które jest odpowiednikiem „nie wiem” dla tchórzy.

Do rzeczy: potrzebuję czasem stuknąć użytkownika w ramię i powiedzieć mu coś na ucho. Zostawić mu liścik, przesłać całusa. No, wysłać powiadomienie. W projektowaniu systemu powiadomień nie ma niczego skomplikowanego, prawda? Treść, do kogo i czy już była widziana. Proste. Banał. Zrobiłem.

Czasem przytrafi się sytuacja, kiedy napisany przeze mnie system oszaleje i nie potrafi sobie już sam pomóc. Kiedyś wyświetlałem błąd w nadziei, że zanim ja skoczę na ratunek, użytkownik wyciągnie wniosek z komunikatu i spróbuje iść dalej bez mojej asysty. Moje marzenia zostały przecięte serią e-maili o tym, że „jak klikam, to wyskakują bzdury”. Teraz zawracam nieszczęśnika na stronę główną, wysyłam sobie e-mail z trackbackiem i stosem, a użytkownika uspokajam przez powiadomienie, że już wiem, żeby napił się kawy i że w ogóle jest w dobrych rękach.

Nie minęło nawet kilka dni, kiedy podczas jednej z poprawek udało mi się doprowadzić do sytuacji, w której kod obsługujący wyjątki miał wyjątek. To oczywiście zbudowało fantastyczną kolejkę powiadomień zawierających informację o tym, że „nic się nie stało”.

Część użytkowników czekało sto kliknięć (lub po 30 sekund na automatyczne wygaszenie się informacji razy sto), żeby mogli się pozbyć żółtej ramki mówiącej, że nic się nie stało. Słabo. I teraz dochodzimy do tezy o „projektowaniu jakbyśmy byli w pubie”.

Gdyby podczas naszej wizyty w toalecie znajomy pytał się o ciebie innego znajomego kilka razy, to czy po powrocie przekazanie tej wiadomości wyglądałoby tak:

„Hej, był tu jakiś łoś, z pięć razy się o ciebie pytał”

czy

„Hej, był tu jakiś łoś”
„Hej, był tu jakiś łoś”
„Hej, był tu jakiś łoś”
„Hej, był tu jakiś łoś”
„Hej, był tu jakiś łoś”

Pierwszą modyfikacją kodu było grupowanie zdarzeń.

Kiedy napisałem nowy moduł komunikacji, wymyśliłem sobie, że można informować o wysłanych wiadomościach. Wcześniejsza modyfikacja okazała się trafić na wyboiste skały mojego braku wyobraźni i kompetencji. Przenieśmy się do naszego hipotetycznego pubu. Tym razem, walcząc z fobią społeczną, jesteśmy przedstawiani grupie osób.

„Poznajcie się: to Pan X, Pan X′ i Pan X″”
W mojej wersji byłoby to:

„Poznajcie się: to Pan X”
„Poznajcie się: to Pan X′”
„Poznajcie się: to Pan X″”

Żeby zrobić to dobrze, nie wystarczy po prostu sprawdzać, czy treść komunikatu, który chcemy zapisać, nie jest identyczna z ostatnią. Nie w sytuacji gdy mamy zmienną. Dodałem do kodu obsługę tagów dla zdarzeń i teraz, grupując, widzę serię E_HELLO i jako treść część zmienną — nazwiska. Mogę już przedstawić się jednym tchem.

Byłem zadowolony. Dopisałem sobie malutkie narzędzie, którego mogę używać do powiadomienia użytkowników o różnych rzeczach: „Za kwadrans konserwacja, baza będzie niedostępna”, „Proszę zamykać stare wydarzenia, bo mi się indeks urwie”, etc.

Moje pierwsze użycie było związane z przenosinami serwera. Ostrzegłem, że od 18. do dnia następnego system jest martwy i już. Pisałem to w piątek, prawdopodobnie po 17. Część ludzi pracuje do 16.

Zgadliście już? Tak, w poniedziałek rano otrzymali informację o tym, że dziś po 18. nie ma systemu do jutra. Byli słusznie oburzeni, że im się w poniedziałek i wtorek takie rzeczy robi.

Jeżeli informacja ma jakąś logiczną datę przydatności do spożycia, to powinno się ją po cichu schować po tej dacie. Ludzi po powrocie z urlopu nie interesuje brak dostępności sieci spowodowany faktem, że operator ISP się opił i wpadł w kable.

Z tym nie pójdziemy już do hipotetycznego pubu; sytuacja wymknęła się spod kontroli. Jesteśmy na hipotetycznym pogrzebie. Twoim własnym. Wypadek samochodowy. Ktoś informuje zebranych:

„Dwa tygodnie temu też wsiadł pijany”
„Hej, był tu jakiś łoś”
„Hej, był tu jakiś łoś”

Skutki bycia ekstremalnie zajętym

Posted in Pan ma teraz relaks | 9 Comments

To był bardzo męczący rok. Z wielką radością złożę jego truchło na stos i rzucę zapałkę. Siedzę teraz przy komputerze i próbuję ogarnąć ostatnie tematy zanim ludzie rozejdą się do domu, a ja będę mógł w spokoju przycupnąć sobie z drinkiem, wyobrażam sobie pierwszych pijanych wujków i kolejki po karpia w których utknęliście.

Mam kilka marzeń. Jednym z nich jest napisanie bardzo dobrej gry tekstowej. Rysuję sobie czasem schematy takiego silnika do tekstówek1 i marzę, że znajdę czas. Dziś moje zmęczenie i zniechęcenie osiągnęło apogeum, uciekłem więc w bezmyślne „googlanie” różnych problemów, których rozwiązania nie szukam.

Jak sprawdzić rozmiary terminala bez używania curses? Aha, ciekawe czy działa. Działa. To dopiszę jeszcze coś. Ha ha.

I tak z minuty na minutę zrobiłem to, co zrobiłem. Najlepiej zmarnowane 30 minut tego tygodnia.

ssh hi@tiny.magt.pl [hasło: hello]

screenshot_ssh_blog

PS. pluje w UTF8, ale bez kontroli, mój developerski serwer dostał ciężkiego zapalenie locales i jestem w trybie idontknowwhatimdoing.jgp

  1. wiem, że są. Chcę tego użyć jako zaczepki do nauki nowego języka programowania, więc NIH jest zupełnie usprawiedliwiony! []

Znikające e-maile

Posted in µGeek | Leave a comment

Przepraszam wszystkich, którzy pisali do mnie e-maile w przeciągu ostatnich dwóch tygodni. Przyszło ich więcej niż zwykle, a ja — będąc obecnie cyfrowym nomadem — wpadłem na pomysł złapania wszystkich moich kont pocztowych w brzuchu Thunderbirda. Zawsze mogłem znaleźć czas na odpisywanie w autobusie czy pociągu. Niestety, ustaliłem właśnie, że znaczna część tych e-maili wyparowała, prawdopodobnie w wyniku konfliktu konfiguracji, którą składuję w Dropboksie.

Przeczołgałem się przez IMAP-owy śmietnik i wyciągnąłem to, co mi się nawinęło. Jeżeli nie otrzymasz odpowiedzi do jutrzejszego popołudnia to znaczy, że Ameba się nażarła. Proszę więc o powtórkę i natarcie mi uszu.

PS. Tak rzadko używam blożka do komunikowania się ze światem, że czuję niemal dreszcz emocji pisząc taki krótki tekst, który nie ma wartości dla postronnego obserwatora i nie został przepuszczony przez baczność Szanowną Panią Redaktor /baczność.

Non_omnis_moriar.doc.gpg

Posted in Pan ma teraz relaks, Pisanina | 13 Comments

Obchodziliśmy niedawno święto ciętej dyni i gumowych masek. To dobry czas, żeby porozmawiać o umieraniu. Nie śmierci kulturowej, nie śmierci w wymiarze metafizycznym, nawet nie o samym fakcie gnicia. Porozmawiajmy o tym, co się dzieje, kiedy wyciągniesz nogi, a jesteś jednym z nas, szczęśliwców – kowalem własnego losu, samozatrudnionym ekspertem, wolną lancą, szybkim jak strzała blogerem.

W oczach świata składasz się ze starszego i młodszego bitu, z cyfrowych pierdnięć w światłowód, jesteś trochę domeną wpisaną w system nazw, odrobinę – profilową fotką. Dla większości z was ja nie jestem niczym więcej, wy nie jesteście niczym więcej dla mnie.

Zanim przyjdą futuryści i podłączą nasze martwe głowy do Internetu, w którym przyjdzie nam śmigać po wsze czasy, musimy jakoś zmierzyć się z faktem, że nigdy wcześniej nasze zejście nie dezintegrowało tylu naszych utworów. Jako wychowanek komputerów powierzyłem wszystkie myśli, wspomnienia, całą pracę zawodową, swoje hobby kawałkom metalu, w których kręcą się magnetyczne krążki. Nie ma listów do kobiet, które kochałem. Są e-maile, które znikną wraz z pierwszym nieopłaconym rachunkiem mojego operatora. Żaden bawidamek w przyszłości nie przeczyta antologii moich listów, by poznać surowe piękno kontaktów międzyludzkich na przełomie tysiąclecia.

Byliśmy tacy dumni, że Internet pozwolił nam wszystkim stać się autorami dzieł, tymczasem za trzydzieści lat okaże się, że przejedzie nas walec głównego nurtu kultury. Wypromowaliśmy sposób przekazu, który wymaga nieustannego karmienia monetami, a nawet nakarmiony może się obalić chromą nogą tej czy innej firmy.

Porzućmy jednak ten wątek. Wątek długiego życia, podczas którego możecie się przygotować, stać się kimś na tyle ważnym, żeby te okruszki życia nie zostały sprzątnięte. Możecie zginąć spektakularnie i niespodziewanie: zadławicie się papierosem, zostaniecie postrzeleni na konferencji, komuś z balkonu spadnie działo argonowe i rozłupie wasz łeb. Co wtedy? Czy któryś z przyjaciół może opłacić Waszą domenę? Napisać ostatnią notkę? Zgrać kopię zdjęć? Co z tymi wszystkimi książkami, filmami i muzyką, które kupiliście? Te DRM-owe na podpałkę, a te bez? Jedyny przypadek, w którym można podzielić między wszystkich tak, że każdy otrzyma komplet.

Jaką politykę obsługi sztywnych klientów ma Twój operator? Czy można wypłakać u Googla nowelkę, którą pisałeś przed śmiercią, schowaną „na sieci” w brzuszku Docsów?

No i rzecz równie ważna. Może najważniejsza, bo to od niej rozpocząłem dumanie nad kwestią śmiertelności w czasach e-wszystkiego. Jest duża szansa, że jesteś jednym z tych kowbojów Internetu. Opiekujesz się sygnaturami elektronicznego bydła twoich klientów. Gdybym teraz skoczył przez okno, pociągnąłbym z sobą kilka firm. Nie dlatego, że spadłbym na ich parking ubrany w kamizelkę z trotylem; w moich rękach witalne są części ich infrastruktury. Przykładowo: dziennie produkuje się około 4GiB różnych backupów, które trafiają do mojego prywatnego kuferka. Wszystkie są zaszyfrowane przy użyciu klucza GPG. Nawet gdyby ktoś wyrwał dysk z mojego laptopa, to wszystkie kopie bezpieczeństwa nie zdadzą się na wiele.

Ten tekst wyszedł troszkę zbyt kpiarsko jak na temat, który chciałem poruszyć. Zawsze jest ten pierwszy raz, kiedy położysz produkcyjną bazę, potkniesz się o kabel, prawie wszystko jest pierwszy raz, a nauczyć się unikać podobnych błędów macie szansę dopiero, gdy popełnicie je po raz trzeci lub siedemnasty. Umiera się tylko raz, dlatego trzeba się do tego przygotować z wyprzedzeniem. Zróbcie sobie, moi admini, moi programiści, moi technologiczni spece od wszystkiego, rachunek sumienia. Usuńcie się z równania i zobaczcie, co znika razem z wami.

Grają dramat na ekranach

Posted in Pisanina | 1 Comment

Jadłem kanapkę z jajkiem, kiedy otworzyły się drzwi od wagonu. Wsiadł on: ubrany w dwie kurtki, z brudnymi, przyklejonymi do czaszki włosami. W ręku trzymał zielony, wiklinowy koszyk. Farba zdawała się być nałożona zbyt entuzjastycznie, być może był to taki model koszyka z wikliny, jaki zamawia się u jakiegoś artysty. Sprawiał wrażenie zaniedbanego i zwariowanego. Okrążył wagon, w którym miałem zamiar spędzić samotne dwie godziny, poświęcając się kontemplacji słowa pisanego. Przycupnął wreszcie na rozkładanych krzesłach używanych na zatłoczonych trasach. Zerwał się dopiero na widok konduktora. Aha, typ bez biletu? Może chciał przemknąć tylko między Kaliską a Widzewem?

Mój współpasażer wyciągnął z wewnętrznej kieszeni jednej z dwóch kurtek portfel i zapłacił za bilet. Kiedy zostaliśmy sami, poprawił się znów na fotelu i wyciągnął z wiklinowego koszyka lewy but. Typ sportowy. Położył go na podłodze i przymierzył do swojej nogi. Ściągnął but, a ja automatycznie odwróciłem wzrok. Cóż może się kryć w bucie dwukurtkowego posiadacza wiklinowych koszyków?

Śnieżnobiała skarpetka. But niestety nie pasował i został ponownie wtrącony do koszykowego więzienia. Uwaga współpasażera przeniosła się na telewizor. Taki, na którym odtwarzane są trzy reklamy. Bez przerwy. Próbował bez powodzenia zmienić kanał.

Nasz wagon był wagonem użytkowym. Miał wieszaki na rowery, podesty dla użytkowników wózków inwalidzkich i toaletę. Toaletę, której drzwi zamykają się i otwierają na dotknięcie świecącego guzika. Towarzysz podróży obszedł ją z zainteresowaniem, nacisnął guzik i zniknął w środku.

Ucieszyłem się. Próbowałem czytać, ale wszystkie jego zachowania mój umysł rejestrował jako „warte uwagi” – jeżeli nie ze względu na noszenie zapasowych lewych butów w plecionym koszyku, to dlatego, że mam lęk przed byciem dziabniętym zardzewiałym nożem.

Po pewnym czasie wyszedł i zadowolony zajął miejsce naprzeciw kabiny. Nie musiał czekać długo, podróż trwała już jakiś czas, pierwszy gość w „jego toalecie” pojawił się w kilka minut po zamachu stanu, którego dokonał na nikim, a dzięki któremu stał się samozwańczym tyranem WC na trasie Łódź-Warszawa.

Goście ustawiali się karnie w kolejce. Otrzymywali instrukcje co do funkcjonowania toalety, jak ją otworzyć, zamknąć, znów otworzyć. Kilka osób podjęło grę. Zadało dodatkowe pytania i otrzymało odpowiedzi. Profesjonalnie. Podejmujesz grę albo spuszczasz oczy i czekasz na koniec instruktażu.

Zbliżaliśmy się powoli do końca naszej wspólnej przygody. Ja, próbujący czytać człowiek z notatnikiem i on, imperator doglądający swoich włości z fotela przy toalecie. Jaki Gal Anonim takie pierwsze królestwo.

Drzwi ubikacji otworzyły się i wyszedł z nich starszy, dystyngowany pan. Ładny płaszcz, stalowe włosy, utrzymany zarost. Nie wyglądał na osobę, która zwykła przyjmować połajanki. Nie od kogoś, kto tuli wiklinowy koszyk, a już z pewnością nie w sprawie zaniechania zamknięcia drzwi od toalety, które zamykają się automatycznie.

Krzyczeli do siebie przez chwilę, a ja oglądałem pantomimę, wygłuszając przedział słuchawkami. Stalowowłosy spojrzał nad fotelem swojego wroga i popatrzył mi w oczy. Bezgłośnie prosił o wsparcie. Wzruszyłem ramionami i odpatrzyłem mu: „Nie moja jurysdykcja, sukinsynu.”

Sytuacja uspokoiła się. Bohaterski obrońca toalety podszedł do telewizora i próbował znów zmienić kanał. Kolejna porażka. Tym razem nie miało się na tym skończyć. Chwycił brzegi ekranu i próbował zerwać go ze ściany.

Ekran po chwili zgasł. Jeżeli nie potrafimy się zachowywać, to nie będzie oglądania telewizji. Zniknął na Zachodnim.

Wysiadł albo nigdy nie istniał.

e-glina

Posted in Pisanina, µGeek | 16 Comments

Na początku ustalmy kilka faktów. Nie jestem dobrym recenzentem i nie lubię pisać recenzji. Moje opinie zbieżne są z opiniami garstki ludzi, którzy zwykle nie potrzebują zewnętrznych potwierdzeń dla wybranego oprogramowania bądź sprzętu.

Nienawidzę wydawać pieniędzy na gadżety. I komputery. Jest coś obrzydliwego w płaceniu za wygląd i markę. Za punkt honoru stawiam sobie wyduszenie z ledwie żywego złomu każdej kropelki elektronicznego potu przed jej śmiercią.

Nie jest to objaw skąpstwa. To kwestia mojej filozofii pracy z komputerami. One mają pracować dla mnie, nie ja dla nich. Możecie z mojego profilu odjąć punkty w pozycji „racjonalność”. Kiedy mówię: „skaczcie!”, one mają odpowiadać: „jak wysoko? (aplikacja nie odpowiada)”.

Tyle w kwestii formalnej.

Kupiłem sobie tablet. Nie z wewnętrznej potrzeby posiadania urządzenia do picia kawy w modnych miejscach. Chciałem zobaczyć, co można wcisnąć w kawałek plastiku za 360 PLN. Nie jestem nowym użytkownikiem takiego urządzenia – w 2004 klikałem w SIMPada SL4, a od 2008 noszę ze sobą N800, która dziś nie załapałaby się na definicję tabletu. Nie miałem wielkich oczekiwań, moje wymogi zamykały się w odtwarzaniu radia last.fm, czytniku komiksów i wyświetlaniu plików wideo. Minął tydzień (a może dwa? Czas nie płynie liniowo podczas nadchodzącej linii śmierci) i mogę podzielić się uwagami.

Depudełkacja

Depudełkacja zwana też unboksingiem jest przeżyciem religijnym, a mnie, jako ateiście, nie jest dane go dostąpić. Rozerwałem pudełko i wysypałem zawartość na biurko. Ze środka, prócz tabletu, wypadły: zasilacz, instrukcja, przewód USB i żeńska przejściówka USB, która pozwala podłączyć urządzenia zewnętrzne. Tablet wyglądał dokładnie jak 360 PLN. Był ciężkawy, plastikowy, a z jednego z boków wystawało trochę nadmiarowego plastiku, milimetr poza obudowę. Ludzie z internetowym OCD1 od razu wrzuciliby takie urządzenie do śmietnika. Kwadrans później miałem do nich dołączyć.

Pierwsze włączenie, wybrałem WiFi, zalogowałem się do konta na Google i pozwoliłem się mu zsynchronizować. Kiedy uznałem, że upłynęło wystarczająco dużo czasu, przesunąłem sobie tablet pod nos i odblokowałem ekran. Chwilę później tablet zdecydował, że rejestrowanie dotyku jest rzeczą zbyteczną, więc każde moje dotknięcie powodowało akcję w zupełnie innej części ekranu. Sfrustrowany i wypłukany już z repertuaru wulgaryzmów cisnąłem go w kąt i tak zostawiłem na godzinę lub dwie. Wtedy urządzenie porzuciło swój bunt i już nigdy nie próbowało rewolucji w temacie koordynatów.

Sprzęt

Tablet ma siedem cali, ekran pojemnościowy z kilkoma aktywnymi punktami. Nie wiem, ile waży. Ma port na kartę SD, wyjście HDMI, port zasilania, port USB, klawisze regulacji głośności i włącznik. Poza tym „na dole” znajdują się trzy dodatkowe guziki dotykowe: menu, home i back. Duplikują idealnie te, które znajdują się w Androidzie 4.0, ale nie będę narzekał.

Opiszę tu jedyną rzecz wartą odnotowania: ekran. Tablet składa się głównie z niego, a reszta to elementy dodatkowe. Zasilacz zasila, USB się komunikuje, tyle.

Ekran jest królewsko okropny. Jest tak okropny, że ściąłbym mu głowę. To chyba pierwszy ekran, który sprawił, że byłem smutny. Pisze to człowiek, który pracował na Amidze w trybie interlace, niszczącym wzrok skuteczniej niż przecieranie oczu wapnem gaszonym. Podświetlanie jest nierówne, daje to efekt „pogiętego papieru” w niektórych aplikacjach, gdzie autorzy niefortunnie dobrali paletę kolorów. Nie mogę też pominąć tego, że na moje oko system pracuje w palecie 16-, a może 15-bitowej. Efekt przejść kolorów w Reddit is Fun powoduje, że nic nie jest fun. O dziwo, najbardziej komfortowe warunki uzyskałem w aplikacji Kindle, która pozwala na inwersję kolorów. Białe litery z czarnego czyta się zdecydowanie lepiej.

Procesor jest. Boxchip A10 taktowany zegarem 1.5 Ghz. 1GiB pamięci. Mimo wysokiego taktowania wydaje się powolny. Nie udało mi się wygooglać żadnych ciekawych informacji (poza tym wiem niewiele o rdzeniach ARM-a), musicie więc polegać na mojej nienaukowej opinii. Wolny procesor w połączeniu z gigabajtem pamięci prowadzi do większej liczby nieszczęść, niż mogłem przewidzieć. Wszystko zostaje w tle, zjadając cykle procesora. Podejrzewam, że urwanie jednej kostki pamięci spowodowałoby znaczne przyspieszenie poprzez wymuszenie pracy wewnętrznego OOMK.

Bateria nie jest jeszcze do końca przetestowana. Wczoraj w nocy wrzuciłem w pełni naładowane urządzonko i chciałem zobaczyć, ile baterii zejdzie do rana. Po pięciu godzinach snu wskaźnik baterii pokazywał dziewięćdziesiąt pięć procent. Niestety, ten niski spadek wynika z bardzo agresywnego usypiania. Sieć bezprzewodowa jest odcinana równocześnie z wygaszeniem ekranu, więc aplikacje działające w tle nie poinformują Was o nowych wiadomościach. Z pewnością da się przestawić, ale absolutnie mi to nie przeszkadza – nie jestem fanem powiadomień.

Do tej pory miałem tylko jedną dłuższą sesję z tabletem. Po 4 godz. czytania Reddita i odpisywania na e-maile bateria pokazywała 56 proc. Myślę, że spokojnie można liczyć na sześć godzin ciągłego użycia. Spodziewałem się dużo gorszego wyniku.

Oprogramowanie

Tablet przychodzi z Androidem 4.0.3. Ku mojej radości nie zostałem skazany na jeden z „alternatywnych” sklepów z aplikacjami i mogłem używać oryginalnego Play Store, dzięki czemu moje zakupione aplikacje oraz „firmówki” takie jak Gmail i Google Maps były dostępne mimo braku „błogosławieństwa” dla produktu od Wielkiego G.

Zainstalowałem mnóstwo różnego śmiecia. Kilka gier, które nie były kłopotliwe i chodziły bardzo ładnie. Jedynym odstępstwem była gra „Cut the Rope”, zarówno wersja darmowa, jak i płatna. Na moje oko (i po odcyfrowaniu komunikatu błędu) system nie zawiera jakiegoś kodeka, który odpowiada za odtwarzanie animacji z intra.

Aplikacje użytkowe także nie sprawiały większego problemu. Comixology wyświetla Batmany, Twitter wyświetla łebskie wpisy znanych i światłych, Last.fm gra moją muzykę, VLC gra moje filmy – lokalnie i ze źródła streamu (oglądałem połowę meczu LM), a nawet via Samba z serwera ukrytego pod stołem kuchennym. Niestety, aplikacje, które potrzebują chwili na osiągnięcie stanu używalności (Flipboard aktualizujący kanały wiadomości), potrafią zatrzymać cały system. Czasem nawet doprowadzić do stanu, w którym zielony robot wyrzuca dłonie w górę, mówiąc „Nie wiem? Może zacznij z początku”, a tablet się restartuje.

Tak, miałem kilka twardych wywrotek. Najgorsze w nich jest to, że nie mogę odkryć dokładnego powodu. Kombinacja aplikacji? Stan baterii? Liczba rzeczy w tle? Jest to chyba najbardziej irytująca rzecz w tej całej zabawie. Mogę przeżyć ten okropny ekran, ale restarty psują całą zabawę w „urządzenie konsumpcyjne” i ciągnie mnie w stronę laptopa.

No i?

Moja opinia jest następująca: zabawka zdecydowanie przebiła moje oczekiwania w kontekście ceny. Oczekiwałem, że cisnę je w kąt po dniu, tymczasem jeździ ze mną non stop. Choć nie zostanie nigdy moim docelowym elektronicznym gadżetem2, to całkiem polubiłem krótkie sesje z Redditem i Readability. Moja N800 może wreszcie odejść na zasłużoną emeryturę. Gdyby wyeliminować te losowe zwieszki (może czas rozejrzeć się za jakąś zewnętrzną dystrybucją?), powiedziałbym, że jest to najlepsza rzecz, jaką można nabyć za 360 PLN.

Niestety, moja opinia jest pokolorowana faktami, o których wspomniałem na początku. Jeżeli chcesz być majnstrimowym użytkownikiem tabletów, to polecam dorzucić jeszcze sto dolarów i kupić Nexusa 7.

W tym tygodniu wykonam factory reset i pożyczę tablet przyjacielowi. Jeżeli jego opinia będzie diametralnie różna od mojej, to poproszę go, żeby zostawił komentarz pod tą notką.

PS Dwa miesiące bez tekstu. Życie nie chce, żebym został popularnym blogerem! Mam w lodówce pięć tekstów, które obiecuję sobie napisać. Tekstów ważnych, rzeczowych – takich, z których jestem znany3. Ba, dwa opowiadania! Za kilka dni zostanę „bezrobotny”, linia śmierci przetnie moje dni i może wreszcie będę mógł cieszyć się rzeczywistością, w której nie jestem zawsze spóźniony dwa dni w stosunku do tego, co mówi kalendarz.

  1. fałszywe OCD, które powoduje, że jesteś fajniejszy w oczach followersów na socjalmediach; nie prawdziwe schorzenie niszczące życie []
  2. wątpię, czy w ogóle jest taki tablet na rynku, mój laptop ma klawiaturę, 8 godz. baterii i waży kilogram. Mam też drugą baterię, która ciągnie kolejne 4 godz. []
  3. ha ha []

Hej, mamy 2012! ...a Twój Internet Explorer ma już ponad 10 lat!

Zaktualizuj natychmiast przeglądarkę lub zainstaluj którąś z alternatywnych:

...po czym wróć na naszą stronę :)