💾 Archived View for rawtext.club › ~faildev_mode › gemlog › on-screen.gmi captured on 2023-09-08 at 17:56:31. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
2023-09-03
Potrzebujemy skorzystać z praw administratora? Odblokować zaszyfrowany wolumin? Podpisać coś cyfrowo? Połączyć się z serwerem SSH? Zalogować się do sieci Wi-Fi? Od czasu do czasu podczas pracy przy komputerze zachodzi potrzeba autoryzacji. Zazwyczaj jako użytkownicy jesteśmy pytani o hasło. Pojawia się okno dialogowe mówiące, co się właśnie dzieje ze stosownym polem zasłaniającym wpisywane znaki. Błyskawicznie wystukujemy na klawiaturze dobrze znaną sekwencję i wciskamy „Enter”. Bez naszej zgody operacja nie zostanie dokonana.
A co gdybym wam powiedział, że właśnie mogliście paść ofiarą ataku? Że ktoś sprytnie podsunął wam fałszywy monit o hasło aby zdobyć od was to, co wasze? Faktem jest, że programy są w stanie wyświetlać na monitorze absolutnie wszystko. Mogą nawet imitować systemowe okna, a użytkownicy nie mogą ich w żaden sposób odróżnić od prawdziwych. Podobnie jest z programami tekstowymi: jeśli nie będziemy uważni, złośliwy program może dodać do pliku .bashrc polecenia zmieniające komendy w naszym terminalu.
To nie jest poradnik bezpieczeństwa. Pewne kwestie, jak nieuruchamianie niezaufanego oprogramowania powinny być oczywiste. Chciałbym przedstawić wam pewien pomysł, w jaki sposób systemy operacyjne mogłyby nam pomóc rozpoznawać fałszywki.
Na niskim poziomie mogłyby wydzielić niewielki fragment ekranu na wyświetlanie stanu użytkownikowi. Byłby on pod wyłączną kontrolą systemu operacyjnego, co oznacza, że nic nie może go zasłaniać. Powiedzmy, że jest to szary pasek na górze ekranu. W chwili gdy jest wyświetlane systemowe okno od wprowadzania hasła, i tylko wtedy, pasek zmienia kolor na zielony, co daje wyraźny sygnał, że wszystko jest w porządku. Użytkownik wpisując hasło powinien zawsze zwrócić uwagę na kolor paska. Pasek jest widoczny przez cały czas, także wtedy gdy okna są otwarte w trybie pełnoekranowym, a nawet gdy jest otwarta wirtualna konsola.
Dlaczego akurat pasek? Bo tak jest najprościej. Bo pozwala na zmniejszenie całej reszty tak, aby się zmieściła. Jeśli monitor miał wymiary 1080x720px, a pasek bezpieczeństwa 10px, środowisku graficznemu pozostanie obszar o wymiarach 1080px710p. Gdyby to był inny kształt, np. niewielkie wycięcie takie jak w nowych smartfonach na kamerę, wtedy albo interfejsy graficzne musiałyby się dostosować i zostawić na nie miejsce, albo wycięcie zasłaniałoby nam obraz. Ewentualnie całość przesunęłaby się o wysokość wycięcia, i tak zostawiając wolną przestrzeń w kształcie paska.
A skąd system będzie wiedział, że wyświetlone okno jest „legitne”? Dobre pytanie. Pinentry, popularne narzędzie systemowe do wprowadzania haseł, bezpośrednio związane z GnuPG (ale korzysta też z niego między innymi SSH), w momencie gdy się aktywuje, cała reszta sesji ulega ”zamrożeniu”: nie działają globalne skróty klawiszowe, przeciąganie okien, nie można otwierać innych programów. Wygląda na to, że wszystkie naciśnięcia klawiszy i kliknięcia myszy są przekazywane bezpośrednio do pinentry, inne programy nie mogą ich rejestrować. Wydaje się to bezpieczne, aczkolwiek nie znam szczegółów technicznych, w jaki sposób jest to osiągane. Nie zaobserwowałem natomiast takiego zachowania przy polkit, oprogramowaniu autoryzującym (coś w rodzaju graficznego sudo, ale nie do końca): tam pobraniem hasła od użytkownika zajmuje się *polkit-agent*, program działający w tle jako nieuprzywilejowany użytkownik. Program ten można łatwo zastąpić innym – nie wydaje się to zbyt bezpieczne.
Nie znam się, ale się wypowiem. Gdybym ja to projektował, udostępniłbym interfejs aktywujący pasek bezpieczeństwa połączony z opisanym wyżej blokowaniem sesji za pośrednictwem wirtualnego pliku gdzieś w /sys. Z tego interfejsu mogłyby korzystać tylko procesy z capability np. cap_trusted_input. Z tego samego interfejsu mogłyby przy okazji korzystać blokady ekranu i program login. To jest najprostsze rozwiązanie, choć może niezbyt atrakcyjne wizualnie. Być może gdy Wayland się już ustabilizuje, kompozytory przejmą rolę paska bezpieczeństwa, wyświetlając ikonę na pasku zadań lub wycięcie na ekranie – miejsca znajdujące się pod wyłączną kontrolą kompozytora. Poczekamy, zobaczymy.