Paweł Goleń, blog

Co jakiś czas można natknąć się na “artykuł” opisujący skomplikowane zadanie, nad którym męczą się rodzice dzieci. Często jest to zadanie matematyczne, wszak matematyka jest trudna i nikomu niepotrzebna, prawda? Ostatnio w oczy rzuciło mi się takie zadanie:

Klein przeczytał 30 stron książki w poniedziałek i jedną ósmą książki we wtorek. Ukończył pozostałą ¼ w środę. Ile stron ma ta książka?

Całość zakończona typowym:

A wy, w której grupie jesteście? Potraficie rozwiązać tę matematyczną zagadkę? Podzielcie się swoimi odpowiedziami w komentarzach.

Tak, wiem. O te komentarze chodzi, im większy ruch, tym więcej reklam, a więc więcej pieniędzy. Celem takich “artykułów” jest właśnie wygenerowanie ruchu, monetyzacja i tak dalej. Ale mimo tego, że wiem o co chodzi, i tak czuję się delikatnie zirytowany.

Dlaczego? Bo to nie jest żadna zagadka matematyczna, rozwiązanie tego zadania nie wymaga jakiejś specjalnej wiedzy czy kreatywnego myślenia. Jest to trywialne zadanie typu “ułóż równanie z jedną niewiadomą”. W tym wypadku jest to po prostu:

    30 + 1/8x + 1/4x = x

Robienie z tego typu zadań “zagadek matematycznych” i tworzenie “artykułów” o tym, ile to osób nie potrafiło go rozwiązać jest... zasmucające.

P.S. Jeszcze bardziej zasmucające jest to, że zaledwie kilka dni później w oczy rzucił mi się kolejny artykuł tego typu, z drobną różnicą dotyczącą zadania. Nie chodziło o czytanie książki, ale o wydawanie pieniędzy. Identyczny schemat zadania na równianie z jedną niewiadomą i identyczny zbiór utyskiwań, że zadanie jest trudne i nawet dorośli sobie z nim nie radzą.

Oryginał tego wpisu dostępny jest pod adresem “Zagadka matematyczna”

Autor: Paweł Goleń

OpenHab posiada Cloud Connector, który pozwala na dostęp do swojej instancji zdalnie. I wszystko działa pięknie przez większość czasu. Bo oczywiście wtedy, gdy taki zdalny dostęp jest najbardziej potrzebny, coś przestaje działać.

Czytaj dalej...

Od zawsze byłem raczej użytkownikiem Windows na desktopie. Bo poza desktopem, to różnie, bo różne systemy nadają się do różnych zastosowań. Natomiast nigdy nie mogłem przekonać się do macOS. Nie mam problemu z iOS czy iPadOS, lubię korzystać zarówno z iPhone, jak i iPad, do tej pory jednak broniłem się przed macOS. Ale przyszła pora na zmiany.

Dlaczego przyszła pora na zmiany? Bez konkretnego powodu, po prostu zacząłem zastanawiać się nad unowocześnieniem sprzętu, moje dwa laptopy, z których korzystam (Dell XPS 13 9333 i Dell Latitude E7450) nie są już pierwszej nowości. Dają radę, nawet z Windows 11 (tak, bez oficjalnego wsparcia) i do większości rzeczy są dla mnie wystarczające. Mimo wszystko jednak czułem potrzebę jakiegoś odświeżenia sprzętu i doszedłem do wniosku, że może pora spróbować czegoś innego. Innego, bo nie tylko Apple, ale również Apple silicon. Ostatecznie zdecydowałem się na MacBook Air z procesorem M1 świadomie rezygnując z M2, bo doszedłem do wniosku, że różnice nie uzasadniają różnicy w cenie (dla mnie, żeby było jasne). Choć chyba to nie tylko moja opinia, za MacBook Air (Apple silicon):

(...) The price increase over the M1 model was noted, with most concluding that the M1 model was a better value.

Poza chęcią spróbowania czegoś nowego jest jeszcze jeden ważny powód dla tej decyzji. Po zrobieniu inwentaryzacji programów, z których korzystam okazało się, że tak naprawdę 99% z nich ma swoje wersje na macOS. A te, które nie mają, mają dobre zamienniki jak KeePassXC.

Zobaczę, czy za kilka tygodni zweryfikuję swoje założenia i oczekiwania. Na razie spodziewam się zmiany raczej mało bolesnej. Otwartą kwestią pozostaje to, czy dobrej.

Oryginał tego wpisu dostępny jest pod adresem Piekło zamarzło, czyli kupuję sobie MacBook

Autor: Paweł Goleń

Oczywiście jest to “teoria spiskowa”, której nie należy traktować poważnie. Raczej jest to pewnego rodzaju eksperyment myślowy. A więc do dzieła.

Co jest główną cechą Bitcoin? Anonimowość? Nie. Bitcoin nie jest anonimowy. Jest to dobrze opisane na stronie projektu Zerocoin:

The Bitcoin payment network offers a highly decentralized mechanism for creating and transferring electronic cash around the world. Unfortunately, Bitcoin suffers from a major limitation: since transactions are stored in a public ledger (called the “block chain”) it may be possible to trace the history of any given payment — even years after the fact. Worse, since the Bitcoin ledger is public, any party can recover this information and data mine to identify users and patterns in the transactions. In other words: Bitcoin transactions are conducted in public.

Alternatywnie polecam lekturę tego wpisu: Zerocoin: making Bitcoin anonymous. I tak, ten wpis został opublikowany w roku 2013 co sprawia, że czuję się staro.

Na początku swojej kariery zawodowej miałem przyjemność pracować w departamencie bezpieczeństwa jednego z banków. Departament ten zajmował się wieloma różnymi ciekawymi rzeczami, IT wcale nie było główną i najbardziej istotną domeną. Istotne było również bezpieczeństwo fizyczne (oddzielne historie) czy pranie brudnych pieniędzy. I właśnie tutaj ciekawym doświadczeniem było podpatrywanie pracy osób zajmujących się tematem “przeciwdziałania praniu brudnych pieniędzy” korzystających z narzędzi do wizualizacji powiązań między kontami i przepływów pieniędzy.

I teraz wiele lat później coraz częściej można usłyszeć o wynikach analizy transaction ledger , często z Chainanalysis w tle. Koncepcyjnie praktycznie to samo, co kiedyś. Z jedną różnicą – zasięg jest globalny.

W ramach ciekawostek – można też o takich śledztwach poczytać w książce TRACERS IN THE DARK: The Global Hunt for the Crime Lords of Cryptocurrency albo posłuchać tutaj: EP 131: WELCOME TO VIDEO.

No więc kim jest Satoshi Nakamoto? Może to ONI stworzyli Bitcoina i przekonali ludzi, że Bitcoin jest czymś (w sensie – oferuje coś), czym w rzeczywistości nie jest. Potem cierpliwie czekali, a teraz...

Abstrakcja? Pewnie tak, ale hej – co z DualECDRBG? ;)

Oryginał tego wpisu dostępny jest pod adresem Bitcoin. Teoria spiskowa

Autor: Paweł Goleń

Tak czytam sobie Notice of Recent Security Incident i mam dziwne przebłyski z przeszłości. Mniej więcej 10 lat temu (konkretnie, w 2011 roku) LastPass również informowało o potencjalnym incydencie. W efekcie powstał wpis Najpierw miało być o LastPass, a potem mnie poniosło.

Wiele się zmieniło od czasu powstania tamtego wpisu, choćby to:

To further increase the security of your master password, LastPass utilizes a stronger-than-typical implementation of 100,100 iterations of the Password-Based Key Derivation Function (PBKDF2), a password-strengthening algorithm that makes it difficult to guess your master password. You can check the current number of PBKDF2 iterations for your LastPass account here.

Nie zmienia to jednak mojej rezerwy odnośnie modelu LassPass. Nie chodzi mi nawet o sam fakt przechowywania zaszyfrowanych baz haseł w chmurze. Boli mnie natomiast możliwość wprowadzenia niewielkich modyfikacji do kodu LastPass, które w efekcie mogą spowodować wyciek masterpassword. Cytując samego siebie:

Z perspektywy ZŁEGO zdecydowanie bardziej efektywnym sposobem uzyskania dostępu do danych użytkowników byłoby wprowadzenie delikatnej zmiany w kodzie (np. aplikacji internetowej) tak, by hasło użytkownika jednak było przesyłane na serwer.

A uzupełniając fragment “a nie mówiłem”, to zwracam uwagę, że teraz również główną słabością (potencjalną) są hasła użytkowników. Bo AES-256 to jedno, a i tak wszystko sprowadza się do klucza bo...

(...) Sam algorytm to nie wszystko, ważny jest jeszcze jego klucz i sposób, w jaki został uzyskany...

Oryginał tego wpisu dostępny jest pod adresem LastPass – a nie mówiłem?

Autor: Paweł Goleń

13 lat temu pisałem, że encoding musi być dostosowany do kontekstu, w którym dane mają być użyte: Znaj swój kontekst. Dokładnie to samo można przeczytać w OWASP Cross Site Scripting Prevention Cheat Sheet. I co? I dalej można spotkać się z sytuacjami, gdy ktoś uważa, że jedna magiczna funkcja problem XSS rozwiązuje raz i na zawsze, w każdym możliwym przypadku. I oczywiście w dalszym ciągu przychodzą Źli Ludzie™ i pokazują, jak bardzo się ktoś myli...

Czytaj dalej...

Nie, nie taka “hokus pokus”, również nie taka “niewytłumaczalna”. Raczej zjawisko, którego wystąpienia się nie spodziewałem. Takie z gatunku tych, kiedy to WiFi działa, albo nie działa, albo jeszcze dawniejszych czasów studiów, gdy problem z niestabilnym połączeniem sieciowym został ostatecznie rozwiązany przesuwając kable sieciowe dalej od wysłużonej lodówki. No i nie tak zaskakujący, jak mordercze moce Rhythm Nation.

Czytaj dalej...

Ostatnio postanowiłem dokształcić się z Kubernetes. Dla większej motywacji nabyłem ODROID-C4, na którym zamierzam postawić microk8s. Tak, wiem. Niepotrzebnie, można korzystać albo z jakiegoś sandboxa, albo nawet postawić VM z taką konfiguracją (co zresztą już mam). Ale mnie taka inwestycja motywuje :)

A po co mi to? Z ciekawości. I z tego powodu, że tutaj jest steep learning curve. Jakiś czas temu wpadłem na pomysł, by “pobawić” się Dockerem i to było raczej proste. W tym sensie, że dość łatwo było mi zrozumieć co, jak i dlaczego. W tej chwili mój DYI Smart Home działa na Docker Swarm, choć akurat z trybu Swarm wykorzystuję tylko overlay network. Podejście / logika w Kubernetes jest jednak mocno inna i na razie mam mgliste pojęcie, jak osiągnąć to samo.

I znowu, mam tak dziwnie, że najlepiej uczę się, przez reverse engineering, więc mam niejasne wrażenie, że istotnym krokiem będzie przekonwertowanie mojego docker-compose przy użyciu Kompose.

Oryginał tego wpisu dostępny jest pod adresem Z serii “człowiek uczy się całe życie”

Autor: Paweł Goleń

Czy ja już pisałem, że jestem wielkim fanem Principle of least astonishment?

Kolejny scenariusz, w którym czuję się zaskoczony... Lubię popatrzeć w dane, moim typowym sposobem postępowania jest wrzucenie tego, co mam w Excela i zrobienie pivota. Proste, ale w wielu wypadkach w zupełności wystarczające. I zmieniając wymiary tabeli naprawdę można zobaczyć ciekawe rzeczy. Oczywiście, można być zaskoczonym wynikami tej analizy, ale ja wspominam o POLA nie w tym kontekście.

O co mi chodzi? Czasami dane do analizy trzeba pozyskać z innego systemu. Czasem można podpiąć się bezpośrednio do bazy, czasem trzeba korzystać z jakiejś funkcji import/export. I tu dochodzimy do sedna – funkcja Export All Data brzmi może fajnie, prawda? A jakież zaskakujące jest to, że w rzeczywistości “All Data” oznacza “nie więcej niż X wierszy (...)”. Zaskakujące? Dla mnie tak.

I tak, takie ograniczenie ma swoje uzasadnienie, w szczególności w przypadkach, gdzie ilość danych jest duża i eksport wszystkiego może negatywnie odbić się na dostępności lub wydajności systemu (czyli innymi słowy spowodować DoS).

Oryginał tego wpisu dostępny jest pod adresem POLA

Autor: Paweł Goleń

Bardzo podoba mi się numer odcinka – RK115. Do usłyszenia wieczorem!

Oryginał tego wpisu dostępny jest pod adresem Rozmowa Kontrolowana

Autor: Paweł Goleń