Ketika Alice akan memasuki sebuah sistem komputer host (atau sebuah mesin ATM, atau sistem telephone banking, atau sistem- sistem lain), bagaimana caranya sistem tersebut misal komputer host tahu siapa yang akan memasuki sistemnya? Dan bagaimana sistem tersebut tahu bahwa yang akan masuk adalah benar-benar Alice bukanlah Eve yang berpura-pura dengan menggunakan identitas Alice? Sederhananya, penggunaan password dapat menyelesaikan permasalahan ini. Caranya Alice memasukkan password-nya, kemudian sistem mengkonfirmasi kebenaran password tersebut. Keduanya baik Alice dan sistem mengetahui password tersebut sebagai suatu pengetahuan yang rahasia dan sistem meminta password tersebut setiap Alice ingin masuk ke dalam sistem.
Otentikasi dengan menggunakan One Way Function
Penemuan Roger Needham dan Mike Guy menyatakan bahwa sistem tidak perlu mengetahui password, sistem hanya berkemampuan untuk dapat membedakan antara password yang valid dan password yang tidak valid. Hal ini mudah dilakukan dengan penerapan one way function. Daripada menyimpan password, sistem lebih diarahkan menyimpan one-way function dari password tersebut.
(1) Alice mengirimkan passordnya kepada sistem.
(2) Sistem menjalankan one-way function pada password.
(3) Sistem membandingkan nilai hasil dari one-way function dengan nilai yang sudah tersimpan sebelumnya.
Karena sistem tidak menyimpan tabel berisi password-pasword yang valid (digunakan), serangan berupa membobol sistem kemudian mencuri password tidak dapat dilakukan. Yang tersimpan hanyalah daftar nilai password hasil one-way function dan nilai tersebut tidak dapat digunakan karena one-way function tidak dapat dibalik untuk mendapatkan password sesungguhnya.
Dictionary Attack dan Salt
Sebuah file yang terenkripsi dengan one-way function masih mempunyai kelemahan. Pada durasi waktu tertentu, Mallory dapat mengumpulkan 1.000.000 password yang lazim digunakan dalam suatu daftar. Kemudian Mallory mengoperasikan semua (1.000.000) password tersebut dengan one-way function dan menyimpan hasil operasi tersebut. Jika setiap password berkapasitas sekitar 8 bytes, maka file yang Mallory simpan tidak lebih dari 8 megabytes, dan ukuran tersebut dapat disimpan hanya dalam sebuah disket (floopy disk). Sekarang, Mallory mencuri sebuah file password yang terenkripsi. Mallory membandingkan file tersebut dengan file kemungkinan password yang terenkripsi miliknya dan melihat file yang bersesuaian.
Usaha yang dilakukan Mallory tersebut dinamakan dictionary attack, dan secara mengejutkan ternyata usaha tersebut terbukti berhasil. Sedangkan Salt adalah suatu cara untuk membuat usaha tersebut menjadi lebih sulit. Salt adalah suatu string acak yang digabungkan dengan password sebelum dioperasikan dengan one-way function. Kemudian nilai salt dan hasil one-way function disimpan ke dalam database sistem. Jika nilai kemungkinan nilai salt cukup besar, maka secara praktis dapat menghindari dictionary attack terhadap password yang lazim digunakan karena Mallory harus membangkitkan one-way function dari semua kemungkinan nilai salt.
Intinya adalah meyakinkan bahwa Mallory harus melakukan percobaan enkripsi dari setiap password pada kamus (dicitonary) yang dimilikinya setiap saat ketika ia mencoba memecahkan password orang lain, daripada hanya melakukan sebuah prakomputasi besar-besaran untuk semua kemungkinan password.
Salt memang dibutuhkan. Kebanyaan sistem UNIX menggunakan hanya 12 bit nilai salt. Meskipun demikian, Daniel Klein mengambangkan program penebak password (password-guessing program) yang dapat meng-crack 40 persen dari password pada sistem yang diberikan dalam waktu satu minggu. David Feldmeier dan Philip Karn membuat daftar sekitar 732.000 password yang tergabungkan dengan setiap dari 4096 kemungkinan nilai salt. Mereka memperkirakan bahwa 30 persen password dari sembarang sistem yang diberikan dapat dipecahkan dengan daftar tersebut.
Salt bukanlah obat mujarab, dengan menambahkan jumlah bit salt tidak menyelesaikan semuanya. Salt hanya memproteksi terhadap dictionary attack yang umumnya dilakukan pada suatu file password, tidak menghindarkan dari concerted attack pada password single. Salt memproteksi penggunaan password sama pada beberapa sistem, tetapi tidak membuat password lebih kuat atau lebih baik.
SKEY
SKEY adalah sebuah program otentikasi yang bergantung pada one-way function pada keamanannya. Untuk mempersiapkan sistem, Alice memasukkan bilangan acak, R. Komputer menghitung nilai f(R),f (f(R)), f(f(f(R))) dan seterusnya, sekitar seratus kali. Sebut saja bilangan tersebut x1, x2, x3,…,x100. Komputer mencetak daftar nilai tersebut dan Alice menyimpan daftar tersebut secara aman. Komputer juga menyimpan x101 pada database login di sebelah nama Alice.
Saat pertama kali Alice login, Alice mengetik namanya dan nilai x100. Komputer menghitung f(xi) dan membandingkannya dengan xi+1 yang tersimpan dalam databasenya. Eve tidak dapat mengambil informasi yang berguna karena setiap nilai hanya digunakan satu kali, dan fungsinya adalah one-way. Dengan kata lain, database tidak berguna bagi attacke. Tentunya ketika Alice menjalankan nilai dari daftarnya, ia harus menginisialisasi ulang sistem.
Otentikasi menggunakan Public Key Cryptography
Meskipun dengan salt, protokol pertama mempunyai masalah keamanan yang serius. Ketika Alice mengirimkan passwordnya kepada sistemnya, siapapun yang mempunyai akses terhadap jalur datanya dapat membacanya. Eve dapat saja mengamati barisan (sequence) milik Alice untuk login. Jika Eve mempunyai akses terhadap memori prosesor sistem, ia dapat melihat password sebelum sistem meng-hash password tersebut.
Public Key Cryptography dapat mengatasi permasalahan ini. Sistem menyimpan file public key setiap user dan setiap user menyimpan private key mereka. Berikut protokol otentikasi menggunakan public key cryptography ketika Alice melakukan login:
(1) Sistem mengirimkan string acak kepada Alice.
(2) Alice mengenkripsi string acak tersebut dengan private key yang dimilikinya kemudian mengirimkan kembali kepada sistem bersama dengan namanya.
(3) Sistem melihat public key Alice dalam database kemudian mendekripsi pesan menggunakan public key tersebut.
(4) Jika hasil dekripsi dengan string yang dikirimkan di awal ternyata cocok, maka Alice diperbolehkan memasuki sistem.
Tidak seorang pun mempunyai akses terhadap private key Alice, maka tidak seorang pun dapat berpura-pura sebagai Alice. Terlebih Alice tidak pernah mengirimkan private key miliknya melalui jalur transmisi menuju sistem. Dengam mengamati tansmisi (interaksi) Eve tidak mendapatkan informasi apapun yang dapat digunakan untuk menarik kesimpulan private key dan berpura-pura sebagai Alice.
Suatu kebodohan jika mengenkripsi sembarang string yang tidak hanya dikirimkan oleh pihak ketiga yang tidak terpercaya namun pada setiap kondisi. Secure proof-of-identity protocols sebagai berikut lebih rumit:
(1) Alice menghitung berdasarkan beberapa bilangan acak dan private key-nya dan mengirimkan hasilnya ke sistem.
(2) Sistem mengirimkan Alice sebuah bilangan acak yang berbeda.
(3) Alice melakukan beberapa perhitungan berdasarkan bilangan acak (baik satu yang ia hitung dan satu lagi yang ia terima dari sistem) dan private key miliknya, dan mengirimkan hasilnya ke sistem.
(4) Sistem melakukan beberapa perhitungan pada bilangan yang berbeda-beda yang diterimanya dari Alice dan public key milik Alice untuk memverifikasi bahwa Alice mengetahui private key miliknya.
(5) Jika ia mengetahui, maka identitasnya valid.
Jika Alice tidak memepercayai sistem lagi sebagaimana sistem mempercayai Alice, maka Alice akan meminta sistem untuk membuktikan identitasnya.
Step (1) terlihat tidak terlalu dibutuhkan dan membingungkan, tapi ini dibutuhkan untuk mencegah attack pada protokol.
Mutual Otentikasi menggunakan Protokol Interlock
Alice dan Bob adalah dua orang user yang ingin mengotentikasi satu sama lain. Masing-masing mempunyai password yang diketahui pihak satu yang lain. Alice mempunyai Pa dan Bob mempunyai Pb. Berikut protokol yang akan berjalan:
(1) Alice dan Bob tukar menukar public key.
(2) Alice mengenkripsi Pa dengan public key Bob dan mengirimnya kepada Bob.
(3) Bob mengenkripsi Pb dengan public key Alice dan mengirimkannya kepada Alice.
(4) Alice mendekripsi yang diterimanya pada step(2) dan memverifikasi kebenarannya.
(5) Bob mendekripsi yang diterimanya pada step (3) dan menverifikasi kebenarannya.
Mallory dapat melakukan man-in-the-middle attack sebagai berikut:
(1) Alice dan Bob saling menukar public key. Mallory menagkap kedua pesan tersebut. Ia menukarkan public key miliknya dengan milik Bob dan mengirimkannya kepada Alice. Kemudian ia menukarkan public key miliknya dengan milik Alice dan mengirikannya kepada Bob.
(2) Alice mengenkripsi Pa dengan public key “Bob” dan mengirimkannya kepada Bob. Mallory menangkap pesan tersebut, mendekripsi Pa dengan private key miliknya, mengenkripsi ulang dengan Alice public key dan mengirimkannya kepada Bob.
(3) Bob mengenkripsi Pb dengan public key “Alice” dan mengirimkannya kepada Alice. Mallory menangkap pesan tersebut, mendekripsi Pb dengan private key miliknya, mengenkripsi ulang dengan public key Alice dan dikirimkan kepada Alice.
(4) Alice mendekripsi Pb dan memverifikasi kebenarannya.
(5) Bob mendekripsi Pa dan memverifikasi kebenarannya.
Alice dan Bob tidak melihat perbedaan apapun. Meskipun, Mallory mengetahui Pa dan Pb. Donald Davies dan Wyn Price menjelaskan bagaimana protokol interlock dapat mengalahkan attack ini. Steve Bellovin dan Michael Merrit mendiskusikan cara untuk menyerang protokol ini. Jika Alice adalah user dan Bob adalah sistem, Mallory dapat berpura-pura sebagai Bob, menjalankan step permulaan dari protokol dengan Alice, kemudian menghentikan koneksi. Mallory dapat melakukan hal ini dengan mensimulasikan jalur noise atau kegagalan jaringan, dimana hasil akhirnya yaitu Mallory mendapatkan password milik Alice. Kemudian Mallory dapat berhubungan dengan Bob dan menyelesaikan protokol, dengan demikian Mallory akan mendapatkan password milik Bob juga.
Protokol dapat diubah sehingga Bob memberikan password miliknya sebelum Alice, berdasarkan asumsi bahwa password milik user (Alice) lebih sensitif dibandingkan password milik sistem (Bob). Hal ini menyebabkan butuhkan attack yang lebih rumit.
SKID
SKID2 dan SKID3 adalah protokol identifikasi berbasis kriptografi simetrik yang dikembangkan oleh RACE’RIPE project. Mereka menggunakan sebuah MAC untuk menyediakan keamanan dan keduanya berasumsi bahwa Alice dan Bob saling memberikan secret key, K.
SKID2 memungkinkan Bob untuk membuktikan identitasnya kepada Alice. Berikut protokolnya:
(1) Alice memilih sebuah bilangan acak, Ra. Kemudian mengirimkannya kepada Bob.
(2) Bob memilih bilangan acak, Rb. Kemudiaan Bob mengirimkan Alice: Rb, Hk(Ra,Rb,B). Hk adalah nilai MAC. B adalah nama Bob.
(3) Alice menghitung Hk(Ra,Rb,B) dan membandingkannya dengan yang ia terima dari Bob. Jika hasilnya identik, maka Alice tahu bahwa ia berhubungan dengn Bob.
SKID3 menyediakan otentikasi mutual antara Alice dan Bob. Step (1) sampai step (3) identik dengan SKID2, kemudian protocol dilanjutkan dengan:
(4) Alice mengirimkan Bob: Hk(Rb,A). A adalah nama Alice.
(5) Bob menghitung Hk(Rb,A) dan membandingkannya dengan yang ia terima dari Alice. Jika hasilnya identik, maka Bob tahu ia sedang berkomunikasi dengan Alice.
Protokol ini tidak aman dari man-in-the-middle attack. Secara umum, man-in-the-middle attack dapat memecahkan sembarang protokol yang tidak mengandung beberapa variabel rahasia.
Otentikasi Pesan
Ketika Bob menerima pesan dari Alice, bagaiman dia tahu pesan tersebut otentik? Ini mudah jika Alice menandatangani pesannya. Tandatangan digital Alice sudah cukup untuk meyakinkan siapapun bahwa pesan tersebut otentik.
Kriptografi simetrik menyediakan beberapa otentikasi. Ketika Bob menerima sebuah pesan dari Alice yang terenkripsi dengan shared key, Bob tahu pesan tersebut berasal dari Alice. Tidak seorang pun diluar mereka yang mengetahui kunci yang mereka gunakan. Meskipun Bob tidak mempunyai cara untuk meyakinkan pihak ketiga akan fakta ini. Bob tidak dapat memeprlihatkan kepada Trean pesan tersebut dan meyakinkan Trent pesan tersebut berasal dari Alice. Trent dapat yakin bahwa pesan berasal dari salah satu yaitu Bob atau Alice (selama tidak seorang pun yang tahu kunci yang mereka gunakan), tetapi tidak dapat mengetahui yang mana milik Bob dan yang mana milik Alice.
Jika pesan tidak terenkripsi, Alice dapat juga menggunakan MAC. MAC juga dapat meyakinkan Bob bahwa pesan tersebut otentik, tetapi memiliki permasalahan yang sama dengan solusi kriptografi asimetrik.