USB Dongle / USB Key Berbasis ATtiny2313 Sebagai Kunci Pengaman Software Aplikasi


usbdongle Banyak software aplikasi perkantoran maupun software operasional industri yang membutuhkan password atau kata-kunci yang tepat untuk dapat dioperasikan. Oleh karenanya hanya sebagian orang saja yang dapat mengoperasikan software tersebut, karena hanya orang-orang yang berkepentingan saja yang memiliki password atau kata-kunci tersebut.

Tak jarang seorang punggawa penting perusahaan mengantongi banyak password di memorinya sehingga boleh jadi suatu saat ketika lupa misalnya, atau gadget-nya ketinggalan di rumah misalnya, maka ia pun tidak dapat mengoperasikan software aplikasi yang harus dioperasikannya.🙂

USB Dongle atau USB Key adalah sebuah sistem mikrokontroler yang telah ditanami program implementasi protokol komunikasi USB dan menyimpan data-data seperti USER_NAME, USER_ID, dan USER_PASSWORD. Tentunya tidak hanya data-data tersebut yang dapat disimpan dalam sebuah USB Dongle atau USB Key. Ketiga data tersebut hanyalah contoh yang saya gunakan pada eksperimen ini.

Rangkaian yang saya gunakan pada eksperimen ini adalah rangkaian yang sama dengan eksperimen sebelumnya yakni pengontrolan LED via USB tanpa konverter USB-to-RS232. Sebuah LED berwarna merah dalam eksperimen ini juga masih berfungsi sebagai perwakilan output yang dikontrol oleh software melalui port USB.

Skenario Program

Ketika program aplikasi dijalankan, pertama-tama program akan mendeteksi adanya piranti USB yang dalam eksperimen ini adalah USB Dongle atau USB Key. Jika USB Dongle tidak ditemukan, maka program akan menampilkan pesan seperti pada screenshot berikut ini.

usbkey_locked

Jika program menemukan USB Dongle yang dimaksud, maka program akan meminta user untuk memasukkan password. Sesaat setelah user mengetikkan password dan meng-klik button OK atau menekan ENTER, maka program akan meminta data USER_PASSWORD dari USB Dongle dan membandingkannya dengan password yang dimasukkan oleh user.

usbkey_passwordJika password salah, maka program akan menampilkan pesan kesalahan dan program pun diakhiri (closed). Jika password benar, maka program akan menampilkan form tampilan utama program aplikasi. Program akan meminta data USER_NAME dan USER_ID dan menampilkannya pada form utama program.

Berikut adalah fungsi pemroses pesan dialog Password Entry.

/*
  PasswordDlgProc
  Fungsi pemroses pesan Password Entry Dialog
*/
static INT_PTR CALLBACK PasswordDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
  char pwd[10];
  HWND hwndEdit;
  int nBytes;
  char buffer[10];

  switch (uMsg)
  {
    case WM_SHOWWINDOW:
      hwndEdit = GetDlgItem(hwndDlg, 4002);
      SetFocus(hwndEdit);
      return TRUE;

    case WM_COMMAND:
      switch(GET_WM_COMMAND_ID(wParam, lParam))
      {
        case IDOK:
          nBytes = usb_control_msg(handle,
            USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
            PSCMD_GETPASSWORD, 0, 0, (char *)buffer, sizeof(buffer), 5000);

          GetDlgItemText(hwndDlg, 4002, pwd, 10);

          if (strcmp(pwd, buffer)!=0)
          {
            MessageBox(hwndDlg, "Sorry, wrong password!", "Error!", MB_ICONERROR);
            exit(1);
          }
          EndDialog(hwndDlg, 0);
          return TRUE;

        case IDCANCEL:
          exit(1);
          return TRUE;
      }
  }
  return FALSE;
}

Kita juga dapat mengubah skenario di atas sehingga user tidak hanya diharuskan untuk memasukkan password saja, akan tetapi juga diharuskan untuk memasukkan user-id.

usbkey_apprun Pada eksperimen ini, form utama program aplikasi ditunjukkan oleh screenshot di samping ini. Program menyediakan 2 buah button yakni START ENGINE dan STOP ENGINE. Button START ENGINE berfungsi untuk menyalakan LED, sedangkan button STOP ENGINE berfungsi untuk mematikan LED.

Eksperimen ini masih menggunakan V-USB untuk implementasi protokol USB pada mikrokontroler ATtiny2313, libusb-win32 sebagai driver piranti USB dan library pemrograman USB, serta Kompiler Pelles C sebagai IDE dan kompiler bahasa C untuk program contoh aplikasi.

USB Dongle juga dapat digunakan pada aplikasi sistem check-log karyawan. Aplikasi lainnya adalah sebagai dongle software aplikasi yang selain menyimpan data USER_NAME, USER_ID, dan USER_PASSWORD, piranti ini juga memiliki fungsi sebagai pengacak data. Karena pengacakan data dilakukan oleh USB Dongle secara eksternal, maka tentunya akan lebih aman jika dibandingkan yang hanya menggunakan software saja. Dan tentunya masih banyak lagi aplikasi-aplikasi yang dapat memanfaatkan teknologi ini sebagai pendukung sistemnya.

Jika Anda membutuhkan piranti USB seperti USB Dongle, USB-Relay Controller, USB Temperature Data Logger, USB Temperature & Humidity Data Logger, atau yang lain, silakan menghubungi kami melalui email ke: info@teknikelektrolinks.com. Silakan juga mengunjungi situs kami di: http://teknikelektrolinks.com.

Semoga bermanfaat, selamat belajar dan selamat berkarya!

🙂

2 comments

  1. toto xu · April 12, 2013

    Kalo usb dongle hilang, gimana cara nge-hack prohramnya ya pak ?
    Kebetulan mesin CNC kantor, usb dongle-nya dibawa orang yg tidak bertanggung jawab.

    Trims

    • Chandra MDE · April 13, 2013

      Kalau nge-hack pastinya tidak gampang. Menurut saya lebih gampang menghubungi authorized dealer atau technical support mesin CNC tersebut untuk mendapatkan dongle yang baru.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s