Klucz sprzętowy (ang. dongle) – zabezpieczenie sprzętowe używane w zamkniętym oprogramowaniu; małe urządzenie podłączane zwykle do portu USB (wcześniej do portu równoległego lub szeregowego), którego obecność jest wymagana do uruchomienia danego programu.
Klucze sprzętowe mają w zamierzeniu uniemożliwić jednoczesne używanie programu na większej liczbie stanowisk niż liczba przewidziana w wykupionej licencji. Są relatywnie mocnym zabezpieczeniem, jednak istnieje wiele metod ich łamania. Klucz sprzętowy składa się z urządzenia elektronicznego oraz oprogramowania niezbędnego do jego prawidłowego funkcjonowania[1]. Oprogramowanie to składa się z trzech części:
W starszych rozwiązaniach oprogramowanie nie było instalowane po stronie elektroniki klucza. Bezpieczeństwo zabezpieczanego systemu gwarantowane jest przez prawidłowe współdziałanie wszystkich składowych części programowych i elektronicznych. Oprogramowanie po stronie zabezpieczanego systemu składa się najczęściej z bibliotek zawierających podstawowe procedury ochrony wywoływane z poziomu zabezpieczanej aplikacji. Oprogramowanie interfejsu klucza jest najczęściej oparte na typowych sterownikach zawartych w systemie operacyjnym. Dla osiągnięcia lepszego bezpieczeństwa stosuje się szyfrowanie pomiędzy kluczem sprzętowym a bibliotekami procedur ochrony klucza oraz pomiędzy tymi bibliotekami a zabezpieczanym oprogramowaniem.
Klucze sprzętowe stanowią zabezpieczenie nie tylko przed naruszeniem praw autorskich lub interesów ekonomicznych producenta. Stosuje się je coraz powszechniej do zabezpieczania systemów o szczególnych wymaganiach co do bezpieczeństwa użytkowników lub grup użytkowników. Przykładem mogą tu być rozwiązania stosowane do ochrony systemów czasu rzeczywistego[2] oraz maszyn mechanicznych i elektromechanicznych[3].