Standardowy NoN standard – Uwaga na Potentatów!

Jak niewiele potrzeba żeby zburzyć człowiekowi światopogląd…. Ile by nie narzekać na molex’y i standard ATX jest to standard. Patrzy się na wtyk czy gniazdo, i wiadomo – to będzie z tym działać.
Tak powinno być.
Jednak w świecie obowiązuje inny standard – NoN Standard.
To on sprawia, że te same gniazda i te same wtyki mają różne wyprowadzenia, często służą do zupełnie różnych rzeczy. Gorzej, doskonale rozpoznawalne kształty połączone ze świetnie identyfikowalnymi kolorami znane z produktów mało znanych marek, których producenci muszą się dopasować do standardów zaczynają znaczyć zupełnie co innego. Przykład? Wszyscy wiedzą, że jak trzymają w ręce zasilacz i jeden z przewodów z niego wyprowadzonych ma kolor żółty to oznacza, że dysponuje stabilizowanym źródłem stałego napięcia +12V, natomiast podobny przewód o czerwonym kolorze izolacji oznacza +5V względem potencjału przewodu czarnego, zaś dla przykładu kolor pomarańczowy symbolizuje wyprowadzenie 3.3V.
I wszystko jest proste.

Jednak uważaj, gdy trzymasz w ręce urządzenie znanego, renomowanego producenta. Wtedy białe naprawdę oznacza czarne, a czarne często oznacza żółte, żeby tak sparafrazować Byłego Pana Premiera.
I właśnie jeden z powszechnie uznanych symboli stabilności totalnie zdestabilizował mój światopogląd. Nie dość, że ułożenie wyprowadzeń pomimo zgodności kształtów niemiało nic wspólnego ze standardem, to jeszcze się okazało że zamiast +12V w żółtym przewodzie było -12V, zaś pomarańczowy oznaczał +12V.

Wiem o tym, że ktoś może mi zarzucić przywiązanie do kolorów, czy też bezmyślne stosowanie jakiegoś schematu.
Ale właśnie po to są standardy, żeby nie musieć się zastanawiać, i wyrwanym z głębokiego snu w sytuacji zagrożenia wiedzieć, co jest co.

Tak więc, pamiętaj Drogi Czytelniku o Zasadzie Ograniczonego Zaufania.

Posted in Uncategorized | 1 Reply

Uwaga na kolejność tworzenia obiektów modyfikujących stan wątków

Sytuacja przedstawiona przez Temporala:
Klasa aplikacji tworząca w funkcji Run() obiekt managera zadań wykonywanych przez system.
Jednym z zadań jest przechwytywanie faktów wciśnięcia klawiszy niezależnie od tego jakie okno jest aktualnie aktywne (mam nadzieję, że Temp wkrótce szerzej opisze rozwiązanie). Istotą jest fakt, że dokonuje się to przez modyfikację zachowania pętli komunikatów aktywowanej przez Application.Run().
Oczywistym jest, że zadanie to jest reprezentowane przez odrębną klasę, której instację tworzy Manger. W tym konstruktorze wykonywane są wszystkie czynności związane ze zmianą zachowania pętli komunikatów (inicjalizacja kolejnego obiektu zarządzającego wywołaniami WinApi z C#). Następnym krokiem jest utworzenie przez Managera wątku uruchamiającego funkcję Start() modułu, która jest zawieszana w pętli komunikatów przez wywołanie Application.Run().
Dodać należy że zmiana zachowania pętli komunikatów dokonywana jest lokalnie dla wątku.

Efektem wykonania niniejszej sekwencji było NIC. Aplikacja się wykonywała, nie prezentując żadnych efektów. Po wielu próbach i stworzeniu dodatkowych dwóch wątków udało się stwierdzić, że system pracuje poprawnie tylko w sytuacji gdy zablokuje w się pętli komunikatów wątek mangera. TeMPOraL zaczął się denerwować, powiedziałem mu “Daj mi tego Kompa, wątki nie znają telepatii, chcę to prześledzić”. On mi na to, to już jest dość złożony projekt, i nie przebiję się. Nie dałem za wygraną, zacząłem od EntryPoint’a. Mniejsza. Po opisie który przytoczyłem i po tytule tego posta już widać, gdzie tkwi problem. Konstruktor obiektu roboczego modyfikował nie tę pętlę komunikatów, którą powinien.

Solution było proste. Przenieść inicjalizację obiektu zarządzającego WinApi do wnętrza funkcji Start(). To pokazuje dlaczego kolejność tworzenia “Wątkowych” obiektów jest bardzo ważna. Dobra rada – uważajcie!

Posted in Uncategorized | 1 Reply

Szablonowy certyfikat dla Pingwina : Microsoft Certificates Services

Usługi certyfikacyjne Microsoftu działają w oparciu o szablony certyfikatu, w których zawarte są informacje dotyczące przeznaczenia certyfikatu wydanego na jego podstawie, atrybutów zabezpieczeń związanych z możliwością wydawania i użytkowania certyfikatu i tym podobnych rzeczy powiązanych z użytkowaniem Centrum Certyfikacji w strukturach Active Directory.
Bardzo często w takim środowisku musi się pojawić system działający pod kontrolą linuxa. Ot, choćby VMware ESX, które są hostowane przez Red Hat’a. W takich systemach wszelkie operacje związane z certyfikatami wykonywane jest przez pakiet openssl. Potrafi on niezmiernie dużo zrobić z automatu, jednakże jego funkcjonalność ogranicza się do działań kryptograficznych, jako że nie jest to narzędzie przeznaczone do integracji z Active Directory. Na szczęście jednak Microsoft swoje rozwiązanie automatyzujące wydawanie certyfikatów zmieścił w ramach standardu, i przy niewielkich modyfikacjach pliku konfiguracyjnego można także w Żądaniu Certyfikatu (Certificate Request) generowanym przy pomocy tego narzędzia umieścić także pole odpowiedzialne za szablon przy pomocy którego CA utworzy certyfikat.
Aby takie rozszerzenie dodać, trzeba przede wszystkim poinformować openssl’a o tym, że taki mechanizm istnieje. Robi się to przez rejestrację w pliku konfiguracyjnym openssl’a oid’u wykorzystywanego przez Microsoft do oznaczenia szablonu certyfikatu. W tym celu należy umieścić w sekcji

1
[ new_oids ]

linię

1
CertificateTemplate = 1.3.6.1.4.1.311.20.2

oraz zarejestrować tę sekcję jako definiującą niestandardowe oidy za pomocą linii

1
oid_section     = new_oids

umieszczonej na początku pliku, gdzie definiuje się zmnienne i sekcje. (obszar ten jest zbiorem wpisów podobnych do przytoczonego) Następnie koniecznym jest zdefiniowanie zestawu szablonów możliwych do wykorzystania przez openssl’a przy tworzeniu żądań certyfikatów. Wykonuje się to przez przypisanie zarejestrowanemu wcześniej oid’owi odpowiedniej nazwy szablonu. Jest to realizowane przy pomocy definicji sekcji nazwanej zgodnie z nazwą szablonu o następującej strukturze:

1
2
[ Template Name ]
CertificateTemplate     = ASN1:PRINTABLESTRING:Template Name

Przytoczona sekcja definiuje szablon o nazwie “Template Name”. Liczba sekcji nie jest ograniczona, należy je dla zachowania przejrzystości pliku konfiguracyjnego umieszczać bezpośrednio po sekcji

1
[ req ]

która odpowiedzialna jest za opcje związane z żądaniami certyfikatu.

Ostatnim krokiem jest sama generacja klucza prywatnego oraz żądania certyfikatu poświadczającego klucz publiczny z nim skojarzony. Wykonuje się to poprzez wydanie komendy:

1
openssl genrsa -out RSAkey.pem -des3 1048

celem utworzenia klucza, oraz następnie

1
openssl req -outform DER -out RSAreq.req -new -key RSAkey.pem -reqexts "Template Name"

Jak widać, poza typowymi argumentami podawanymi do komendy req występuje parametr

1
-reqexts

który odpowiada za wybór odpowiedniego szablonu certyfikatu który zostanie wykorzystany przez CA do utworzenia Certyfikatu.

Następnie pozostaje wysłać Request do Urzędu Certyfikacji i przetworzyć odpowiedź. Niestety na razie nie znam metody na wykonanie tego prosto spod Linuxa, więc należy się uciec do narzędzi windows’owych (np. certreq.exe), ale prace trwają.
O efektach będę informował 🙂

Microsoft Certification Services : Web Enrollment with Alternate Name

Certyfikaty to potężna tarcza. Stojący za protokołem ssl kryptosystem RSA daje mocną gwarancję pochodzenia danych i konkretną identyfikację osoby/maszyny z którą się komunikujemy. Problem jednak pojawia się wtedy, gdy pod jednym adresem IP, pod jednym domyślnym portem ssl 443 chcemy umieścić więcej niż jedną stronę. Gdy potrzebujemy więcej nazw dns dla naszych portali. Dlaczego? Ponieważ “Nazwa Tematu Certyfikatu” (Certificate Subject Name) może zawierać tylko jedną nazwę. I w przypadku certyfikatów ssl jest to nazwa dns. Oczywiście dla innych zastosowań może być to inna nazwa.
Szukając jakiejś wskazówki odnośnie metody utworzenia certyfikatu opiewającego na większą ilość nazw, zwróciłem się w stronę Windows Certificates Web Enrollment Service. Kreator w sumie przyjemny, szybciutko się wypełnia formularz, formatka activeX tworzy żądanie i wysyła do serwera. Jednak nic o zaawansowanych zastosowaniach nie ma tam wspomniane.
Po głębszym dochodzeniu odnalazłem pole żądania opisane jako “Atrybuty”. Niestety jak na złość w takich sytuacjach nigdzie na wierzchu dokumentacji do tego pola nie było. Po żmudnych poszukiwaniach udało mi się odnaleźć stronę. Dociekliwym polecam lekturę, tutaj przytaczam sedno sprawy.
Mianowicie pole to umożliwia dodanie do żądania dowolnych pól atrybutów zdefiniowanych standardem x509. Niestety, jak to często bywa, i w tym przypadku składnia nie jest wcale oczywista. Aby nasz certyfikat mógł poświadczać więcej niż jedną nazwę umieszczoną na tym samym porcie pod tym samym adresem IP musimy skorzystać z atrybutu “Alternatywnej Nazwy Tematu Certyfikatu” (Certificate Subject Alternate Name).
Na tę okoliczność Panowie z Redmont przygotowali następującą składnię:

1
san:dns=dns.name[&dns=dns.name]

na przykład:

1
san:dns=wawszczak.pr0.pl

czy

1
san:dns=wawszczak.pr0.pl&dns=poezja.pr0.pl

dla certyfikatu poświadczającego witrynę główną pr0.pl.
Aby jednak wszystko chodziło poprawnie nie należy zapomnieć o dodaniu do SAN także nazwy głównej witryny przedstawionej w polu CN (Common Name) certyfikatu.

Podsumowując, wraz z prostym interfacem Web’owym znów otrzymujemy bogatą funkcjonalność, szkoda tylko że właściwie w wersji instant.

Speech Control in Vista – czyli jak pogadać sobie z komputerem

Ostatnio w ramach odkrywania ciekawych zakamarków Visty, i szukania (momentami trochę na siłę) powodów uzasadniających przesiadkę z Windowsa XP na Viste znalazłem bardzo ciekawe uzupełnienie dla standardowego interface’u użytkownika. Mianowicie moduł rozpoznawania mowy. Działa on (dla użytkowników spoza anglosaskiego społeczeństwa, niestety) jedynie w oparciu o barbarzyński język galów, jednakże nie umniesza to jego funkcjonalności.

Ustrojstwo to pozwalana na wykonanie praktycznie dowolnej akcji związanej z interfacem użytkownika za pomocą głosu. Od tak elementarnych zadań jak zmiana aktywnego okna, wykonywanie akcji w oknach dialogowych czy uruchamianie programów z menu Start aż po tak wyrafinowane umiejętności jak dopasowanie wymówionego tekstu do umieszczonych na witrynie sieci Web linków i przejście na wskazaną stronę. Ponadto umożliwia edycję tekstów, a i w tym zakresie znane z Windows XP/2003 SAPI może się schować. Nie tylko bardzo rozbudowana gramatyka angielska, nie tylko możliwość literowania słów za pomocą funkcji “Spell it” ale też korekcja na bierząco, zaznaczanie, zmienianie, formatowanie. I to wszystko bez dotknięcia klawiatury.

Niestety rozwiązanie to wciąż nie jest wolne od wad. Jedną z najbardziej dokuczliwych jest częste wzbudzanie się systemu z powodu prowadzonych w języku polskim rozmów w obecności komputera z włączonym modułem. Innym problemem jest brak umiejętności odfiltrowania tego co mówi sam komputer od tego, co intencjonalnie mówi do komputera użytkownik. Ta wada sprawia, że na razie swobodna konwersacja z komputerem jest jeszcze nie możliwa.

Myślę, że ten krótki przegląd możliwości tego narzędzia daje choć wątły argument ZA Vistą.

Posted in Uncategorized | 1 Reply

Standardowe Biometric API w Windows 7

Nie jest jeszcze bardzo rozgłaśniane nadejście Windows 7, ale już znalazłem dobry powód do niecierpliwego oczekiwania na jego nadejście.
W trakcie poszukiwań związanych z próbami wykorzystania standardowych mechanizmów dostępu do Kart Inteligentnych w Windows ku mojemu radosnemu zaskoczeniu odnalazłem w MSDN’ie kategorię Biometric API. Po lekturze wstępu do tego interface’u okazało się, że jest on dostępny dopiero w Windows 7. Ostudziło to trochę mój pierwszy wybuch radości, jednakże fakt że Microsoft zdecydował się na wprowadzenie nowego API świadczy zarówno o aprobacie tej metody autentykacji która przez wielu uważana jest za jedynie niepotrzebne i szkodliwe złudzenie bezpieczeństwa. I w pewnym sensie można się zgodzić co do tego, że do tej pory oprogramowanie obsługujące przede wszystkim czytniki odcisków palca, które zaczęły być masowo montowane w Notebookach, było i jest bardzo ubogie i obarczone błędami – zarówno w obszarze integracji z Systemem Operacyjnym, jak i w dziedzinie samej obsługi danych nadesłanych z czytnika. Prostym przykładem jest produkt wypuszczony przez Lenovo, który po uruchomieniu autoryzacji poprzez Finger Print przestaje w jakikolwiek sposób odpowiadać na włożenie do czytnika karty inteligentnej.

Mam szczerą nadzieję, że ta biblioteka umożliwi szersze i łatwiejsze wykorzystanie czytników biometrycznych w codziennym życiu.

Posted in Uncategorized | 1 Reply

Chrońmy subtelny klimat KAŻDEGO języka! Czyli pragmatyka vs. Matematyka

Tyle się mówi o czystości języka, zapobieganiu kalkom, czy uzdatnianiu słów i fraz na potrzeby języka polskiego.
Tyle się mówi o konieczności czytelnego i wyraźnego kodowania w językach wysokiego poziomu, tak mocne są starcia pomiędzy programistami różnych języków o konwencję.
I bardzo słusznie. Każde działanie mające na celu utrzymanie pewnego specyficznego klimatu języka którym się w pewnych sytuacjach posługujemy jest rzeczą dobrą, i wartą poparcia.
Jednakże nie widzę absolutnie żadnych podstaw do nawracania na jedynie słuszną drogę ludzi reprezentujących trochę odmienne przekonania i dążenia, które wyrażają w innym, posiadającym WŁASNY klimat, języku.

Dlatego mówię NIE takim ogólnym hasłom jak to:

Wyrażenie występujące na tym sloganie wzięte jest żywcem z mojego programu z MatLab’a.
A matlab jak wiadomo jest językiem matematycznym. Więc dlaczego pozbawiać go subtelnego uroku wyrażenia matematycznego.

Wiem z doświadczenia, że w dużych projektach w językach obiektowych jednoliterowe zmienne nie tylko drażnią, ale i powodują błędy. Natomiast jakby nie spojrzeć, opisywanie zmiennych matematycznych za pomocą nazw w stylu “czestotliwosc_probkowania” jest niszczeniem klimatu matematyki i sztucznym wydłużaniem skomplikowanych wyrażeń które stają się przez to, paradoksalnie, jeszcze bardziej nieczytelne ze względu na rozwlekłość zapisu.

Rozważmy więc, czy jest sens sobie utrudniać życie.

Windows SFU 3.5 NFS, czyli Okna przyjazne Pingwinowi

Ostatnio udało mi się okiełznać składnik systemu Windows o którym głośno jest od dawna. Są to Services For Unix, element mający na celu dostosowanie Okien spod igły Microsoftu do wymanagań standardu POSIX.
O ile wersja umieszczona na płytach instalacyjnych jest praktycznie nie do użytku ze względu na ubogi zasób narzędzi oraz totalny brak mechanizmów zarządzających, o tyle najnowsza edycja robi wrażenie. Zarządzanie z poziomu MMC, składniki WMI oraz prawie pełne odwzorowanie API znane z Linux/Unix’ów umożliwia praktycznie pozbycie się z dysku Cygwina. Do obszernych możliwości tego podsystemu, bo całość architektury jest bardzo podobna do bardzo dobrze znanych mechanizmów emulacji systemów 16bitowych, jeszcze powrócę. Dzisiaj chciałbym zwrócić szczególną uwagę na jeden ważny element tego pakietu, mianowicie na Klienta NFS.
Ma on dwie bardzo ważne zalety – ogólnodostępność oraz podobieństwo zarówno do narzędzi znanych z linuxa (wykorzystanie polecienia mount) jak i windowsa (możliwość operowania na ścieżkach przypominających NetBios). A więc do rzeczy.

Instalacja wszystkich składników jest bardzo przydatna, uważam że nie ma sensu oszczędzać niczego z tych 450MiB jakie zajmuje pakiet. Z całą pewnością będzie to dobrze spożytkowana powierzchnia dysku. Dlatego nie rozwodzę się zbyt długo nad samą instalacją.
Następnym krokiem jest konfiguracja mapowania użytkowników, jednak w najbardziej podstawowym zastosowaniu, gdy możemy sobie pozwolić na autoryzację jedynie za pomocą adresu IP (podstawowa metoda identyfikacji klienta przez serwer NFS) można to pominąć. Więcej szczegółów na ten temat w doskonały sposób opisał Ashish.Tak więc teraz powinniśmy się zająć konfiguracją naszego serwera nfs. Piszę o tym, ponieważ jednym z częstszych zastosowań tego mechanizmu są sytuacje przejściowe – wszelkiego typu migracje, przenosiny, i inne podobne im operacje. A w ferworze walki często można coś zapomnieć, czy przeoczyć, czego jestem najlepszym przykładem.
Tak więc, po pierwsze należy zwrócić uwagę na plik /etc/exports (lokalizacja na pewno sprawdzona na systemie Gentoo, w innych powinna być podobna), w którym zapisujemy wszystkie katalogi które chcemy udostępnić przez nfs. Koniecznie upewnijmy się, że stacja kliencka należy do podsieci uwzględnionej we wpisach share’ów! W tym momencie możemy ustanowić faktyczne połączenie do serwera:

1
mount \\<em>servername</em>\<em>sharename</em> Z:

gdzie servername – nazwa naszego serwera nfs, sharename – jeden z udostępnionych katalogów (widniejący w /etc/exports), a Z: – litera dysku pod którą chcemy ujrzeć podmontowany zasób. Od tego momentu powinniśmy ujrzeć drzewo katalogów podmontowane pod określoną literę dysku. Powinniśmy, ponieważ to nie koniec.
Jeśli to się nie powiedzie, należy spojrzeć do konfiguracji SFU w mmc. Potrzebujemy zmodyfikować opcję “Prevent use of low port numbers”. Chodzi w tym o to, iż klient windowsowy domyślnie operuje na dowolnych wolnych portach powyżej 1024, co często jest przyczyną konfliktu ze starszymi wersjami serwerów nfs, które oczekują połączeń na “klasycznych” portach.
Trzecim, wcale nie oczywistym problemem jest kwestia praw dostępu. Jak pamiętamy, dla prostoty pominęliśmy konfigurację mapowania nazw użytkowników. Zagadnienie które pochłonęło mi dużo czasu brzmiało “to w takim razie z jakimi poświadczeniami uzyskuję dostęp do plików” ? Jak się okazało, z pomocą przyszły dobrodziejstwa unixowego systemu plików. Wystarczy jedynie nadać uprawnienia w trzeciem “triplecie” rwxrwxrwx odpowiednie dla naszych potrzeb. Kwestię bezpieczeństwa i fakt że większość adminów unixowych podniosła by wielkie larum widząc coś w stylu rw-r–rw- pozostawiam na boku, jako że w zamierzeniu było szybkie skopiowanie danych i nic więcej. Ta sztuczka pozwala przestać się przejmować jakimikolwiek poświadczeniami. Wykorzystujemy triplet “others”.

Te trzy proste ustawienia nie wyglądają groźnie. Ale wiedziony doświadczeniem, podpowiadam, że najciemniej jest zawsze pod latarnią.

O innych dobrodziejstwach SFU już wkrótce.

Nowa Rzeczywistość Technika

Kolejna porcja Egzaminów za Nami. I ponad rok nie obecności w Tym miejscu.
Trzy sesje, dużo nauki, spore zmiany. Świat obrócony do góry nogami, centrum wszechświata zmieniło położenie.

Czy taka sytuacja może dotyczyć Technika?
Odpowiedź Ciśnie się sama – “A dlaczego Nie?”

Ta zmiana sprawiła, że stałem się wreszcie Mężczyzną. Można być specjalistą w wielu technicznych tematach, można mieć zmysł orientacji w świecie techniki, a wciąż się bać samego siebie. Bać się tego, co się czuje, o czym się myśli poza nauką i techniką. Nie akceptować tego co się we własnym wnętrzu dzieje. Ale tak nie musi być. Do niedawna myślałem, że to jest właśnie wyróżnikiem techniczności, że stopień znieczulenia na ogólnoludzki świat marzeń, poglądów i zachowań jest odzwierciedleniem poziomu technicznego wtajemniczenia. Starałem się wykorzenić z siebie wszystko, co się mogło wiązać z tematami popularnymi w świecie.

Teraz widzę, że separacja jest bezsensowna. Prowadzi do wyjałowienia umysłu, zszarzenia życia, a w końcu do depresji. Jedynym ratunkiem jest akceptacja w sobie istoty społecznej, momentami wręcz instynktownych zachowań, które ratują życie.
Zaraz się, Drogi Czytelniku oburzysz – “Jak to? Technik podatny na instynkty? A co to, zwierzę jestem?”
A ja odpowiem – Tak, Jesteś. O tyle, o ile pochodzimy, tak Ty, jak i ja od zwierząt. Odziedziczyliśmy instynkty, właśnie po to, żeby nie stracić życia. Czy fizycznego, czy emocjonalnego – nieważne – to są składniki Nas samych.

Proces zmian jest długotrwały, zabiera wiele energii, której momentami może wręcz być Ci żal, bo można by ją spożytkować w ramach jakiegoś ciekawego projektu. Ale postawmy problem inaczej. Separacja również szkodzi Twojemu spojrzeniu na projekt. Przecież współpracujesz z ludźmi. “No tak, ale sobie podobnymi – nie trzeba nic zmieniać” – Odpowiesz od razu. A tak, jasne. Ale oprócz tego pewnie każdy z Nas ma swoją drugą połówkę, ma rodziców, znajomych, ogólnie ludzi wokół siebie. I z Nimi też trzeba rozmawiać. Ba… Nawet negocjować. A oni już nie rozumieją (bo przecież nie muszą) że napięcie w układzie raczej nie wyskakuje powyżej napięcia zasilania (przyjmujemy, że nie lubimy się z Cewkami), często po prostu nie mają siły analizować wysublimowanego stwierdzenia opartego o czysto matematyczną analizę życia. I nagle okazuje się, że stajemy się niezrozumiani, a przez to na przykład pozbawieni ważnego zasobu. Ot, przykład – Wsparcia Duchowego ze strony Najbliższych. Albo dotacji od sponsora. Życie pisze różne scenariusze.
Inna sprawa, że często zmiany konieczne do obrania kierunku “Na Społeczeństwo” mogą wywoływać tęsknotę czy smutek za tym co było. Bo było wygodne, przyjemne, Techniczne… Ale dla zwykłego obywatela “Dziwne”! I tu leży sedno zagadnienia.

Technik nie może być dziwakiem! Powinien być ekspertem, specjalistą, ale aby takim się stać, musi posiadać reputację. Dobrą reputację.

A taką napewno nie jest powszechna opinia Dziwaka.

NTFS nie całkiem bezpieczny….

Tak. That’s true. Zwłaszcza, gdy przygotowując się właśnie do prezentacji od której zależy Twój awans, nie dysponujesz kontem z prawami administratora na laptopie, z którego przyszło Ci korzystać podczas jej trwania. A dlaczego? Gdyż Twój PenDrive, czy inny nośnik pamięci wymiennej, którym dysponujesz został przezornie ze względów bezpieczeństwa sformatowany pod NTFS’em. NTFS przechowuje dane o użytkownikach, którzy mają Grant Access do pliku w tak zwanym deskryptorze zabezpieczeń pliku. Jest to obszar w MFT (Master File Table) gdzie zapisywane są informacje o zabezpieczeniach pliku, takie jak prawa dostępu, czy atrybuty szyfrowania. A każdy taki wpis dotyczy użytkownika lokalnego systemu, w którym aktualnie jest wolumin NTFS podmontowany. Tak więc, gdy w domu tworzysz plik na NTFS’ie umieszczonym na nośniku pamieci przenośnej, zapisujesz jego pole OWNER guid’em (Global User ID – czyli unikalnym identyfikatorem użytkownika generowanym przez system) użytkownika, na którego profil jesteś aktualnie zalogowany. Kiedy przenosisz swój plik, i próbujesz go otworzyć na innym komputerze, Microsoft gwarantuje, że uid użytkownika będzie inny. Tak więc, domyślny deskryptor zabezpieczeń, który daje Grant Access Owner’owi, uniemożliwia odczyt tego pliku. Oczywiście zawsze istnieje możliwość przejęcia go na własność, ale wtedy musimy dysponować kontem z prawami administratora, a i to sie da wyłączyć. Z drugiej strony zawsze można skorzystać z “magicznej” grupy Everyone, której GUID należy do “Well Known GUIDs”. Tylko wtedy należy sobie zadać pytanie, po co tyle trudu i energii włożyliśmy w zabezpieczanie naszego nośnika, kiedy nic nie zyskaliśmy na tym. Tak samo sprawa ma się z szyfrowaniem. System szyfrowania w NTFS’ie opiera się na certyfikatach i kluczach prywatnych użytkowników systemu. Bezpieczny storage certyfikatów identyfikuje je także po GUID’ach użytkowników do których należą. Tak więc, na innym systemie dane będą po prostu nie czytelne. Znów istnieje workaround tego problemu wymagający już nie tylko uprawnień administratora, ale także uprawnień do przywracania certyfikatów szyfrowanych danych. Posiadając swój klucz prywanty (SIC!! Jest zaszyfrowany? ) można dane odtworzyć. Ale wtedy znów się niszczy oryginalny deskryptor zabezpieczeń pochodzący z Twojego systemu.

Drugą kwestią jest fakt, że system Windows domyślnie włącza dla NTFS’a cache systemu plików celem poprawy wydajności komunikacji z dyskiem twardym. W przypadku kieszeni dyskowych na usb trudno mówić o jakiejkolwiek poprawie, gdyż jak wiadomo usb ma limit 4 MiBps. Tak więc, jest to feature zupełnie nie potrzebny, a należało by go za każdym podmontowaniem woluminu wyłączać ręcznie. A tym razem dlaczego? Ponieważ interface USB nie zapewnia odpowiedniej komunikacji systemu operacyjnego z cache’em na płycie dysku, i bardzo często jest to przyczyną błędów opóźnionego zapisu (“delayed write error”), które w konksekwencji kończą sie nie spójnością dysku, a są praktycznie nie do naprawienia przez chkdsk, o ile nawet ten ostatni jest w stanie je wykryć…

Tak, że mając na względzie własne doświadczenia z utraconymi danymi dzieki próbom zabezpieczania się NTFS’em na pamięciach przenośnych, zdecydowanie odradzam tę koncepcję z powodów które opisałem 🙂