قفل سخت افزاری (Hardware Lock) یا دانگل (Dongle) وسیله ای الکترونیکی است که به منظور ایجاد امنیت بیشتر برای نرم افزار و جلوگیری از کپی شدن غیرقانونی آن طراحی و ساخته شده است. فروشندگان نرم افزارهای گران قیمت همراه با نرم افزار خود یک قفل سخت افزاری نیز به کاربران ارائه می دهند؛ از آنجاییکه کپی کردن سخت افزار بسیار دشوارتر از کپی کردن نرم افزار است، قفل سخت افزاری می تواند تا حد زیادی از دسترسی غیرقانونی افراد غیرمجاز به نرم افزار جلوگیری کند.
قفل سخت افزاری (Hardware Lock) یا دانگل (Dongle) وسیله ای الکترونیکی است که به منظور ایجاد امنیت بیشتر برای نرم افزار و جلوگیری از کپی شدن غیرقانونی آن طراحی و ساخته شده است. فروشندگان نرم افزارهای گران قیمت، همراه با نرم افزار خود یک قفل سخت افزاری نیز به کاربران ارائه می دهند. از آنجاییکه کپی کردن سخت افزار بسیار دشوارتر از کپی کردن نرم افزار است، قفل سخت افزاری می تواند تا حد زیادی از دسترسی غیرقانونی افراد غیرمجاز به نرم افزار جلوگیری کند.
قفلهای سخت افزاری ابتدایی معمولاً به پورت سریال یا پورت موازی کامپیوتر متصل می شدند. این گونه قفلها، غیرفعال بودند و برنامه نمی توانست تبادل داده ای زیادی با آنها داشته باشد. طرز استفاده از آنها معمولاً به این صورت بوده که برنامه در هنگام بارگذاری، وجود قفل را بررسی می کرده و در صورتی که قفل بر روی کامپیوتر موجود نبوده باشد، به کار خود خاتمه می داده است. مشکل این گونه قفلهای سخت افزاری این است که به راحتی می توان آنها را دور زد؛ یک برنامه نویس آشنا به زبان اسمبلی کامپیوتر، به راحتی می تواند در فایل اجرایی به دنبال نقاط بررسی قفل رفته و با ایجاد تغییرات اندکی در حد چند بایت، رفتار برنامه را کاملاً برعکس کند و همچنین سخت افزار آنها براحتی قابل شبیه سازی می باشد.
قفلهای سخت افزاری مدرن امروزی توسط پورت USB به کامپیوتر متصل شده و می تواند با نرم افزار ارتباط برقرار کنند. این گونه قفلهای سخت افزاری با داشتن الگوریتمهای رمزنگاری قدرتمند داخلی، در مقابل حملات هکرها سرسختی بسیار زیادی از خود نشان می دهند. یک قفل سخت افزاری پیشرفته دارای یک حافظه داخلی غیرفرار است و می تواند کلیدهای رمزنگاری را در خود جای دهد. علاوه بر این کدهای داخل آن از هر گونه دسترسی محافظت شده اند. برنامه نویس با بهره گیری از این امکانات می تواند امنیت بسیار بالایی را برای نرم افزار خود ایجاد کند. اطلاعات کلیدی نرم افزار در قفل سخت افزاری قرار گرفته و استفاده از قفل سخت افزاری منحصر به بررسی کردن موجود بودن یا عدم موجود بودن آن نمی شود؛ بلکه در اینجا قفل به صورت فعال عمل کرده و می تواند با انجام عملیات رمزگشایی، اجرای توابع امنیتی و در اختیار گذاشتن داده های کلیدی نقش مهمی در امنیت نرم افزار داشته باشد.
یکی از مشکلات توسعه دهندگان نرم افزار، نیاز به نصب درایور های اضافی برای قفل سخت افزاری است؛ چرا که قفل سخت افزاری همانند هر گونه دستگاه دیگری که به کامپیوتر متصل می شود بایستی توسط درایورهای خود با نرم افزار ارتباط برقرار کند. نصب درایور اضافی به همراه نرم افزار، شاید اشکال چندانی نداشته باشد، اما به هر حال موضوعی است که توسعه دهندگان نرم افزار را آزار می هد. چرا که بوجود آمدن اشکالی کوچک در نصب و راه اندازی یک درایور جدید برای کاربرانی که از سیستمهای متفاوت استفاده می کنند، می تواند معضل بزرگی باشد. سازندگان قفل سخت افزاری محصولات خود را طوری طراحی کرده اند که برای نصب و استفاده نیازی به درایور نباشد. یک قفل سخت افزاری بدون نیاز به نصب درایور از تکنولوژی HID برای برقراری ارتباط با سیستم عامل استفاده کرده و از این طریق با نرم افزار ارتباط برقرار می کند.