Otentikasi pesan memainkan peran penting dalam otentikasi identitas dan merupakan bagian penting dari sistem otentikasi.
Kode otentikasi pesan (Message Authentication Code, atau MAC) biasanya digunakan sebagai dasar otentikasi.
Prinsip dasarnya adalah: gunakan kunci (kunci pribadi) untuk menghasilkan blok data kecil dan menambahkannya ke pesan yang akan dikirimkan. Teknologi ini mengasumsikan bahwa kedua pihak yang berkomunikasi berbagi kunci K. Ketika salah satu pihak yang berkomunikasi ingin mengirimkan data M ke pihak lain, MAC dari pesan M dihitung melalui algoritma tertentu = F (K, M), dimana F adalah Merujuk ke fungsi operasi otentikasi, dan kemudian data pesan M dan MAC dikirim ke pihak lain secara bersamaan. Ketika pihak lain menerima data, terlebih dahulu menggunakan algoritma F yang sama untuk menghitung MAC dan membandingkannya dengan MAC yang dikirimkan. Jika sama, data dianggap benar. Fungsi autentikasi sering dianggap sebagai salah satu jenis algoritma enkripsi, namun perbedaannya adalah fungsi ini tidak digunakan untuk operasi invers dan memiliki tingkat keamanan tertentu. Biasanya, sistem aplikasi yang berbeda menggunakan fungsi otentikasi spesifiknya sendiri, yang menjamin keamanan data sampai batas tertentu.
Mulai j2sdk1.4 dan seterusnya, Java menyediakan otentikasi pesan kelas javax.crypto.Mac.
lihat salinan biasa ke cetak papan klip?
byte[] macData = "ini adalah tes mac".getBytes(); //dapatkan instance Mac, menggunakan algoritma HmacMD5
Mac mac = Mac.getInstance("HmacMD5"); //init IV algoritma, 8 byte dapat dibaca dari file
byte[] ivInitKey = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 };
IvParameterSpec spec = new IvParameterSpec(ivInitKey); // byte kunci rahasia validasi Mac, Dapat dibaca dari file juga
byte[] keyBytes = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f }; //hasilkan Objek Kunci rahasia menggunakan byte rahasia dan Algoritma DESede
Kunci SecretKey = new SecretKeySpec(keyBytes, "DESede"); // init Mac mac.init(key, spec);
byte[] macCode = mac.doFinal(macData);
byte[] macData = "ini adalah tes mac".getBytes(); //dapatkan instance Mac, menggunakan algoritma HmacMD5
Mac mac = Mac.getInstance("HmacMD5"); //init IV algoritma, 8 byte dapat dibaca dari file
byte[] ivInitKey = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 };
IvParameterSpec spec = new IvParameterSpec(ivInitKey); // byte kunci rahasia validasi Mac, Dapat dibaca dari file juga
byte[] keyBytes = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f }; //hasilkan Objek Kunci rahasia menggunakan byte rahasia dan Algoritma DESede
Kunci SecretKey = new SecretKeySpec(keyBytes, "DESede"); // init Mac mac.init(key, spec);
byte[] macCode = mac.doFinal(macData);
macCode adalah Mac yang dihasilkan, dan mac yang sama dapat dibuat dengan kunci yang sama.
Selama pihak yang berkomunikasi memastikan bahwa mereka menggunakan kunci yang sama, mereka dapat memastikan bahwa mereka mendapatkan Mac yang sama untuk mencapai tujuan verifikasi pesan.
Tampaknya prinsip ini sama dengan checksum yang biasa digunakan di Internet.
-