Trezor kontra Ledger Nano S

in #polish7 years ago (edited)

Na rynku dostępnych jest kilka portfeli sprzętowych, lecz na dobrą sprawę liczą się dwa - Trezor i Ledger Nano S. Który jest lepszy? Tego ci nie powiem. Zamiast tego omówię oba urządzenia, a decyzję zostawię tobie.


Szybki wstęp dla świeżaków

Jeśli czytasz ten artykuł, prawdopodobnie masz już jakieś pojęcie o kryptowalutach i wiesz, czym są portfele sprzętowe (z ang. hardware wallet). W takim wypadku możesz przejść do kolejnego punktu.

Portfel sprzętowy to urządzenie przechowujące klucze prywatne. Działa jak przenośny komputer, który może komunikować się jedynie przez kabel USB. Klucze prywatne nigdy nie opuszczają urządzenia. Proces wykonania transakcji przebiega w następujący sposób:

  1. Użytkownik żąda wykonania transakcji.
  2. Urządzenie prosi o potwierdzenie, przedstawiając adres odbiorcy i wartość transakcji.
  3. Jeśli wszystko się zgadza, użytkownik fizycznie potwierdza przyciskiem.
  4. Urządzenie podpisuje transakcję kluczem prywatnym.
  5. Podpisana transakcja przekazywana jest z powrotem do komputera (lub telefonu) i idzie w świat.

Klucze prywatne generowane są na podstawie seeda, czyli 24 angielskich słów. Urządzenie losuje seed podczas pierwszego uruchomienia, a naszym zadaniem jest go zanotować i schować w bezpiecznym miejscu. W przypadku kradzieży/zniszczenia portfela/zapomnienia PINu tylko dzięki niemu możemy odzyskać dostęp do naszych środków.

Wygląd i budowa

Oba urządzenia mają obudowę z plastiku. Ledger dodatkowo schowany jest w lśniącej, metalowej ramce, która chroni korpus przed zarysowaniem. Oprócz logo znajdziemy na nim napis vires in numeris (z łac. „siła liczb”).

Przyciski w Nano S wydają się nieco tandetne w porównaniu do konkurenta, jednak nie miałem z nimi jakichś większych problemów (raz tylko się zacięły, gdy wcisnąłem oba jednocześnie, ale nie udało mi się tego powtórzyć). Portfele są dobrze sprasowane, nic w nich nie trzeszczy. Nie sprawdzałem ich wytrzymałości, ale jeśli wierzyć testom na Youtube, nie ma powodu do narzekań (Ledger Nano S, Trezor). Oba urządzenia mają zbliżoną wysokość, Trezor jest trochę szerszy z powodu większego ekranu.

Gdy pokażesz przeciętnej osobie Ledgera i zapytasz, na co jej to wygląda, najprawdopodobniej padnie odpowiedź: „pendrive”. Uważam to za jego największą zaletę - nie rzuca się w oczy. Trezor natomiast wygląda jak efekt zabawy dziecka z drukarką 3D.


Wspierane kryptowaluty i wygoda użytkowania

Na początek zaznaczę, że nie uwzględniam tutaj kryptowalut obsługiwanych przez nieoficjalne oprogramowanie (tzw. custom firmware).

Twórcy pierwszego sprzętowego portfela nie rozpieszczają swoich klientów. Do wyboru jest tylko kilka najpopularniejszych coinów. Niedawno dołączył do nich NEM, ale ma on oddzielny portfel. Ethereum, podobnie jak tokeny ERC20, obsługiwane są za pośrednictwem MyEtherWallet (MEW).



Ledger wspiera znacznie więcej kryptowalut, a dodatkowo ma dedykowany portfel dla Ethereum. Niestety jest on dość ubogi - znajdziemy w nim jedynie możliwość wysłania i odbioru Etheru, a po obsługę tokenów ERC20 i podpisywanie wiadomości musimy udać się do MEW. Niedługo do tej pokaźnej listy dołączy Monero.

Trezorem zarządzamy za pośrednictwem dedykowanej strony internetowej. Jest to bardzo wygodne rozwiązanie. W każdej chwili możemy przełączać się między portfelami wszystkich obsługiwanych kryptowalut. Urządzenie zabezpiecza PIN, który wprowadzamy przy każdorazowym odpaleniu portfela. Ekran wyświetla cyfry od 1 do 9 w losowej kolejności, dzięki czemu użytkownik nie musi się obawiać np. malware śledzącego ruch myszy czy nagrywającego ekran.


W Ledgerze wygląda to zupełnie inaczej - portfele instalowane są na urządzeniu oraz na komputerze (obecnie jako aplikacje Chrome, niedługo jako samodzielne programy). Z powodu małej ilości pamięci w urządzeniu jednocześnie możemy zainstalować jedynie 4-5 aplikacji. Potem będziemy zmuszeni usunąć jedną z nich albo naszym oczom ukaże się taki komunikat:
Niezbyt wygodne dla kogoś, kto ma mocno zdywersyfikowane portoflio. PIN wprowadzamy fizycznie na urządzeniu. Warto włączyć opcję „shuffle PIN”, która sprawia, że początkowe cyfry są losowe (domyślnie jest to zawsze 5). Zabezpiecza to przed potencjalnym podglądaczem mogącym zliczać nasze kliknięcia.

Po odblokowaniu urządzenia należy wejść w zainstalowaną aplikację zarówno w Nano S, jak i na komputerze/telefonie. Jeśli chcemy skorzystać z MEW, w opcjach portfela Ethereum na urządzeniu musimy włączyć „browse support” oraz „contract support”.


Wprowadzanie seeda wygląda podobnie:
Trezor - przeglądarka, Ledger - na urządzeniu. I szczerze mówiąc w tym drugim przypadku jest to męczarnia. Ale po kolei.

Odzyskiwanie seeda w Trezorze zajęło mi niespełna 2 minuty. Procedura wygląda w ten sposób, że w przeglądarce wpisujemy nasze 24 słowa, ale w losowej kolejności. Kolejność podaje urządzenie, dlatego znowu - malware nagrywające pulpit na nic się nie zda. Nawet znając same słowa, kombinacji jest zbyt wiele, by atak brute-force (tzn. próbowanie wszystkim kombinacji po kolei) miał sens.

W Ledgerze zajęło mi to 3 minuty 35 sekund, ale nie to jest najgorsze. KLIKANIE. Każde słowo musimy wprowadzić po kolei poprzez wybieranie literek dwoma przyciskami. Wprawdzie po kilku wprowadzonych znakach urządzenie podpowiada nam możliwe do wyboru słowa, ale niewielka to pomoc. Osobiście jest to dla mnie chyba największa wada Ledgera.

Bezpieczeństwo

Obie firmy cechuje całkowicie odmienne podejście do oprogramowania. Trezor stawia na w pełni otwarte firmware, dzięki czemu można zweryfikować jego działanie. Niestety ułatwia to również pisanie exploitów. Skutkiem tego jest fakt, że Trezor został do tej pory złamany już 2 razy! Trzeba jednak zaznaczyć, że w obu przypadkach wymagany był fizyczny dostęp do urządzenia.

Pierwszy raz dokonał tego Jochen Hoenicke w 2015 roku. Gdy twórcy portfela się o tym dowiedzieli, postanowili go zatrudnić :) Luka została załatana w wersji 1.3.3. Drugi raz miał miejsce w 2017 roku, a exploit Saleem Rashida załatano w wersji 1.5.2. Trzeba zaznaczyć, że exploity były bezużyteczne, jeśli ustawiło się passphrase (o czym nieco dalej).

Ledger, w przeciwieństwie do Trezora, ma w środku dwa mikrokontrolery. Jeden z nich - ST31H320 Secure Element - ma częściowo zamknięte firmware (na marginesie: ta sama technologia wykorzystywana jest w bankowości). Nano S wykorzystuje ten chip do przechowywania kluczy prywatnych, dlatego ataki zastosowane w Trezorze tutaj nie działają. Rok temu CTO Ledgera napisał, że planują wprowadzić zmiany, dzięki którym nadal nie będzie możliwe sprawdzenie, co robi ten mikrokontroler, ale będzie dało się sprawdzić, czy robi tylko to, co zapisano w dokumentacji. Niestety nie wiem, czy wcielono to w życie.
Portfele umożliwiają ustawienie tak zwanego „passphrase”, czyli 25. słowa seedu. Może to być dowolne wybrane przez nas słowo. Jest to bardzo przydatna funkcja z dwóch powodów. Po pierwsze jeśli nasz seed wpadnie w niepowołane ręce, nasze środki nadal będą bezpieczne (chyba że ustawimy bardzo krótkie passphrase, co umożliwi atak brute-force). Po drugie włączenie tej opcji daje nam dostęp do więcej niż jednego konta. Na jednym koncie (tym niezabezpieczonym passphrase) możemy trzymać jakieś drobniaki, a na drugim resztę naszych monet. Zabezpiecza nas to przed sytuacją, w której ktoś siłą zmusza nas do odblokowania urządzenia.

Obie firmy zrobiły to trochę inaczej. W Ledgerze passphrase przypisywane jest do nowego PINu. Niestety możemy w ten sposób utworzyć tylko jedno „schowane konto”. Ponieważ PIN jest wymagany do odblokowania portfela, potencjalny złodziej nie wie, czy włączyliśmy wcześniej tę opcję. Trezor wypada tutaj trochę gorzej. Domyślnie passphrase wpisujemy po podaniu PINu.


Czytelnikom powinna się zapalić teraz lampka - „zaraz, a czy keylogger nie może przechwycić naszego passphrase?”. Otóż niestety - może. Ale to nie wszystko. Gdy złodziej zobaczy to okno, od razu będzie wiedział, że ustawiliśmy passphrase. Możemy wyłączyć tę opcję, ale wtedy wchodzenie do ukrytego konta będzie wyglądać następująco:
  1. Odblokowanie zwykłego konta samym PINem.
  2. Włączenie opcji passphrase.
  3. Odłączenie i ponowne podłączenie urządzenia.
  4. Wpisanie PINu i passphrase.
  5. Po wykonaniu transakcji ponowne wyłączenie tej opcji.
Strasznie niewygodne, prawda? Trezor ma tutaj przewagę tylko pod jednym względem - pozwala na utworzenie aż 10 kont.

Podejście do forków

Co tu dużo gadać - Slush, CEO Trezora, jest zwolennikiem Bitcoin Core. O ile w samym tym nie ma niczego złego, o tyle powinien zachować neutralność, jeśli chodzi o Trezora. Jak wiadomo, oficjalny skrót Bitcoin Casha to BCH (na początku było to BCC, ale szybko go zmieniono, gdyż kolidował z BitConnect). „Bcash” to termin ukuty przez przeciwników Bitcoin Casha, mający na celu pozbycie się słowa „Bitcoin” z nazwy kryptowaluty.


CTO Ledgera, mimo że również popiera zespół Core, zachowuje w tej kwestii profesjonalizm.


Kompatybilność z telefonem

Od razu uprzedzam, że nie wiem, jak to wygląda na urządzeniach z iOS, gdyż takowego nie posiadam. Jeśli nie masz telefonu z Androidem, możesz pominąć ten punkt.

Obu portfeli sprzętowych można używać z telefonem - kwestia implementacji przez developerów apek. Do Bitcoina polecam Mycelium. Wspiera on zarówno Trezora, jak i Ledgera. Jeśli chodzi o Bitcoin Cash, to teoretycznie można by użyć portfela Copay, ale z jakiegoś powodu aplikacja przy integracji z portfelem sprzętowym prosi mnie o podanie seeda (sic!). Co do Ethereum, to istnieje całkiem niezły WALLETH, ale na tę chwilę wspiera on jedynie Trezora (jednak Nano S jest w planach). Póki co combo Ethereum + Ledger Nano S można obsłużyć jedynie przez przeglądarkę Chrome.

SatoshiLabs stworzyło oficjalną aplikację do zarządzania Trezorem. Dzięki temu nie potrzebujemy komputera, by wgrać aktualizację oprogramowania czy zmienić PIN. Ledger takiej apki niestety nie posiada.


Menadżer haseł i inne funkcje dodatkowe

Oba portfele posiadają kilka funkcji dodatkowych. W przypadku Trezora są to:
- Menadżer haseł,
- Agent SSH/PGP,
- U2F,
- Trezor Connect.

A w przypadku Ledgera:
- Menadżer haseł (wersja alpha),
- Agent SSH/PGP (wersja alpha),
- U2F,
- Windows Hello,
- OpenPGP (wersja alpha).

Korzystałem jedynie z menadżera haseł i Trezor Connect (nawet nie wiem, do czego służą niektóre rzeczy z tej listy), dlatego tylko je omówię. Zacznę od Ledgera. Próbowałem używać ich menadżera, ale niestety jest jeszcze nieużywalny. Część leżąca po stronie urządzenia zdaje się być na wykończeniu, więc może za jakiś czas ujrzymy pełnoprawną aplikację. Póki co Trezor nie ma pod tym względem konkurencji.


Trezor wykorzystuje konto Google Drive lub Dropboxa - plik z zaszyfrowanymi hasłami zapisywany jest w chmurze, a portfel sprzętowy odpowiada za jego deszyfrację. Nie powtarzajcie mojego błędu i nie wyrzucajcie seeda, którego używaliście podczas pierwszego logowania do menadżera - utracicie w ten sposób dostęp do haseł. Trzeba mieć też na uwadze, że menadżer haseł Trezora nie chroni nas przed malware.

Z menadżera możemy skorzystać również na telefonie.

Bardzo spodobała mi się funkcja Trezor Connect. Umożliwia ona logowanie z wykorzystaniem Trezora. Jedyne, co musimy zrobić, to nacisnąć przycisk. Użytkownik identyfikowany jest, jak sądzę, po kluczu publicznym. Niestety wygląda na to, że obecnie tę opcję wspiera jedynie coinmap.org


Kilka rad of autora

  1. Włącz passphrase (a w przypadku Ledgera również Shuffle PIN).
  2. Przetestuj opcję odzyskiwania portfela, zanim przelejesz na niego wszystkie środki.
  3. Pamiętaj, że portfel sprzętowy nie uchroni cię przed wirusem podmieniającym adres portfela na ekranie twojego monitora.

Sort:  

nawet nie wiem, do czego służą niektóre rzeczy z tej listy

  • U2F Universal 2nd Factor to taki standard na 2FA (two factor authentication) - czyli uwierzytelnienie dwoma elementami. W przypadku U2F to najczęściej jest hasło (które zna użytkownik) i jakiś sprzętowy element (który ma użytkownik) z w bitym na stałe kluczem prywatnym niemożliwym do wyciągnięcia.
  • Agent SSH/PGP - to zapewne kawałek oprogramowania, który trzyma Ci pary kluczy dla SSH i PGP. SSH to w uproszczeniu taki szyfrowany protokół komunikacyjny używany najczęściej na linuksie i Unixach w ogóle (umożliwia Ci bezpieczne połączenie się ze zdalnym komputerem), który może używać infrastruktury klucza publicznego. PGP - to był kiedyś taki program do szyfrowania poczty, który z czasem stał się bardziej uniwersalnym softem do szyfrowania wszystkiego. Również używa par kluczy (prywatny plus publiczny). Agent ten więc potrafi trzymać klucze prywatne dla obu tych protokołów i zgaduję, że gdy trzeba podać klucz SSH czy PGP zamiast go wklejać czy wskazywać na plik z kluczem następuje jakaś interakcja z portfelem sprzętowym i agent uwierzytelnia operację (klucze nie opuszczają portfela).
  • OpenPGP to pewnie otwarta wersja PGP.
  • Windows Hello - tego nie znam.

AKTUALIZACJA 07.03.2018


Firmware 1.4.1 pozwoliło na zmieszczenie większej liczby portfeli. Poprzednio było to 4-5, obecnie średnio ok. 10-12 (teoretyczne maksimum to 18 portfeli, jeśli wybierzemy tylko takie kryptowaluty, których kod oparty jest w dużej mierze na kodzie Bitcoina (np. Dogecoin, Litecoin).

Super porównanie, ale dla mnie brakuje jednej kwestii, albo gdzieś nie doczytałem - ceny.

Cenę każdy może sprawdzić w 10 sekund, więc stwierdziłem, że nie ma sensu o tym pisać :P

Skoro to tylko 10 sekund to warto było jednak o tym wspomnieć, nadal możesz edytować. ;)

Congratulations @mido! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

<p dir="auto"><a href="http://steemitboard.com/@mido" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link"><img src="https://images.hive.blog/768x0/https://steemitimages.com/70x80/http://steemitboard.com/notifications/firstpayout.png" srcset="https://images.hive.blog/768x0/https://steemitimages.com/70x80/http://steemitboard.com/notifications/firstpayout.png 1x, https://images.hive.blog/1536x0/https://steemitimages.com/70x80/http://steemitboard.com/notifications/firstpayout.png 2x" /> You got your First payout <p dir="auto">Click on any badge to view your own Board of Honor on SteemitBoard.<br /> For more information about SteemitBoard, click <a href="https://steemit.com/@steemitboard" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">here <p dir="auto">If you no longer want to receive notifications, reply to this comment with the word <code>STOP <blockquote> <p dir="auto">By upvoting this notification, you can help all Steemit users. Learn how <a href="https://steemit.com/steemitboard/@steemitboard/http-i-cubeupload-com-7ciqeo-png" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">here!

Dzięki, tag dodany :)
Nie ogarniam jeszcze Steema.