Matematika Dasar dalam Kriptografi

2.1.2. Manajemen kunci Aspek manajemen kunci sangat penting dalam aplikasi kriptografi. Proses pembuatan kunci sangat penting dan sebaiknya dilakukan dengan acak. Sumber acak dapat diambil dari berbagai kejadian events yang muncul secara acak. Sistem operasi seperti unix menggunakan kombinasi system events termasuk interrupts sebagai sumber entropi yang kemudian dikombinasikan dengan algoritma pseudo-random number generator menjadi random number generator. Aplikasi kriptografi dapat menggunakan random number generator yang disediakan sistem operasi untuk pembuatan kunci, akan tetapi sebaiknya ini dilakukan hanya jika random number generator cukup acak. Distribusi kunci secara aman juga penting untuk keperluan pengamanan komunikasi. Sebagai contoh, untuk komunikasi yang diamankan dengan enkripsi simetris, tentunya kedua mitra dalam komunikasi harus menggunakan kunci yang sama. Kunci ini dapat dibuat oleh satu pihak dan dikirim secara aman ke mitra komunikasi. Pengiriman kunci dapat dilakukan out-of-band, yaitu menggunakan jalur khusus di luar jalur normal komunikasi, atau dilakukan in-band melalui jalur normal menggunakan sarana kriptografi kunci publik. Alternatif dari pengiriman kunci adalah key agreement, di mana kedua mitra berpartisipasi membuat kunci tanpa dapat diketahui oleh pihak ketiga. Key agreement juga menggunakan kriptografi kunci publik. Penyimpanan kunci jelas sangat penting untuk pengamanan sistem enkripsi secara menyeluruh. Kunci yang disimpan secara sembrono akan mudah untuk dicuri oleh pihak yang tidak diinginkan. Solusi untuk penyimpanan kunci beraneka ragam. Mulai dari penggunaan hardware khusus, di mana kunci dekripsi disimpan dan tidak dapat keluar dari hardware tersebut, sampai dengan penyimpanan dalam file yang dienkripsi menggunakan password atau passphrase Kromodimoeljo, 2010.

2.2. Matematika Dasar dalam Kriptografi

Aritmatika modular sangat berperan dalam kriptografi karena banyak digunakan dalam algoritma enkripsi, baik untuk kriptografi simetris maupun kriptografi kunci publik. Dalam aritmatika modular, konsep GCD Greatest Common Divisors digunakan antara lain untuk operasi invers yang dapat dikalkulasi secara efisien menggunakan algoritma Euclidean, algoritma sangat penting yang telah berusia lebih dari 2000 tahun. Sebelum mempelajari kriptografi lebih mendalam, akan dibahas terlebih dahulu studi tentang teori bilangan. Universitas Sumatera Utara 2.2.1. Keterbagian dan GCD Greatest Common Divisors Sebagian besar kriptografi modern dibangun atas dasar-dasar aljabar dan teori bilangan. Pada tingkat yang paling dasar, teori bilangan adalah studi tentang bilangan asli , , , , , …, atau lebih tepatnya, studi tentang bilangan bulat … , − , − , , , , …. Himpunan bilangan bulat dilambangkan dengan simbol ℤ. Jika dan adalah bilangan bulat, maka kedua bilangan bulat tersebut dapat ditambahkan + , dikurangi − , dikalikan ∙ , dan memenuhi semua aturan umum aritmatika hukum komutatif, asosiatif, distributif, dan lain-lain. Tetapi, suatu bilangan bulat tidak selalu bisa dibagi dengan bilangan bulat yang lain. Sebagai contoh, tidak bisa dibagi dengan , karena tidak ada bilangan bulat . Hal inilah yang menjadi konsep dasar keterbagian. Definisi 2.1 . Misalkan dan adalah bilangan bulat, dengan ≠ . Maka dapat dikatakan membagi , atau habis dibagi dengan , jika ada bilangan bulat sedemikian rupa sehingga = . Untuk menunjukkan bahwa habis dibagi dengan , dapat dilambangkan dengan | . Jika tidak dapat membagi , maka dapat dilambangkan dengan ∤ Hoffstein, et al. 2008. Contohnya | . , karena . = ∙ . Contoh lainnya, ∤ , karena ketika mencoba untuk membagi dengan , didapatkan sisa . Lebih tepatnya = ∙ + . Jadi, bukan kelipatan . Semua bilangan bulat habis dibagi dengan . Bilangan bulat yang habis dibagi adalah bilangan bulat genap, dan bilangan bulat yang tidak habis dibagi adalah bilangan bulat ganjil. Dan berikut adalah sifat-sifat dari keterbagian. Misalkan , , ∈ ℤ, maka: a Jika | dan | , maka | . b Jika | dan | , maka = ± . c Jika | dan | , maka | + dan | − Hoffstein, et al. 2008. Definisi 2.2 . Faktor persekutuan terbesar dari dan adalah bilangan bulat positif terbesar, sehingga | dan | . Faktor persekutuan terbesar dari dan dinotasikan dengan gcd , dalam bahasa Indonesia disebut FPB. Jika kedua nilai dan adalah , maka gcd , tidak terdefinisi Hoffstein, et al. 2008. Contoh 2.1 . FPB dari dan adalah , karena | dan | dan tidak ada nilai lain yang lebih besar dari . Jadi, gcd , = . Universitas Sumatera Utara Algoritma yang efisien untuk menghitung FPB adalah division with remainder atau biasa disebut dengan metode pembagian panjang. Jika dan adalah bilangan bulat positif dan dibagi dengan b, maka akan diperoleh hasil bagi dan sisanya , di mana sisa lebih kecil dari . Sebagai contoh, dibagi dengan memberikan hasil bagi dengan sisa . Atau dapat ditulis sebagai = ∙ + , di mana sisanya 9 lebih kecil dari pembagi . Definisi 2.3 Algoritma Pembagian. Misalkan dan adalah bilangan bulat positif. Kemudian dibagi dengan b memiliki hasil bagi dan sisanya , berarti bahwa = ∙ + dengan . Jika adalah pembagi untuk dan , maka jelas dari persamaan bahwa juga pembagi untuk . Demikian pula, jika adalah pembagi untuk dan , maka juga pembagi untuk . Dengan kata lain, pembagi dan adalah sama dengan pembagi untuk dan , karenanya gcd , = gcd , Hoffstein, et al. 2008. Dengan proses yang sama, membagi dengan untuk mendapatkan hasil bagi dan sisa lainnya, maka = ∙ ′ + ′ dengan ′ . Dan gcd , = gcd , ′ . Jika proses ini terus berlanjut, maka sisanya akan terus menjadi lebih kecil sampai akhirnya mendapatkan sisa , di mana nilai akhir dari gcd , = adalah sama dengan FPB dari dan . Melanjutkan Contoh 2.1 untuk mengetahui FPB dari dan dengan menggunakan algoritma division with remainder, = ∙ + = ∙ + = ∙ + = ∙ + = ∙ + Teorema 2.1 Algoritma Euclidean. Misalkan dan adalah bilangan bulat positif dengan . Berikut adalah algoritma untuk menghitung gcd , : 1 Misalkan = dan = . 2 = . 3 Bagi �− dengan � untuk mendapatkan hasil bagi � dan sisa �+ , �− = � ∙ � + �+ dengan �+ � . 4 Jika sisa �+ = , maka � = gcd , dan algoritma berakhir. 5 Jika tidak, �+ , sehingga = + dan lanjut ke Langkah 3. = Universitas Sumatera Utara Pembagian pada Langkah dilakukan sebanyak + kali. Teorema 2.2 Algoritma Extended Euclidean. Misal dan adalah bilangan bulat positif. Maka persamaan + = gcd , selalu memiliki solusi dalam bilangan bulat dan . Jika , adalah salah satu solusinya, maka setiap solusi memiliki bentuk: = + ∙ gcd , = + ∙ gcd , Definisi 2.4 . Misalkan dan adalah bilangan bulat. Dikatakan bahwa dan adalah relatif prima atau koprima, jika gcd , = . Secara umum, persamaan + = gcd , dapat dijadikan relatif prima dengan membagi kedua sisi dengan gcd , , sehingga gcd , + gcd , = di mana = gcd , dan = gcd , adalah relatif prima dan memenuhi + = Hoffstein, et al. 2008. Berdasarkan Contoh 2.1, gcd , = dan memenuhi − ∙ + ∙ = . Agar menjadi relatif prima, kedua sisi dibagi dengan . Sehingga persamaan sebelumnya menjadi − ∙ + ∙ = , dengan = − dan = adalah koefisien kombinasi linear dari dan yang sama dengan . Contoh selanjutnya menjelaskan bagaimana menyubstitusi nilai-nilai dari algoritma Euclidean untuk menyelesaikan + = gcd , , serta menghitung dan jika dan relatif prima. Misalkan = dan = . Dengan menggunakan algoritma Euclidean diperoleh hasil sebagai berikut: = ∙ + = ∙ + = ∙ + = ∙ + . Berdasarkan hasil bagi , , dan , tercipta sebuah algoritma seperti berikut: 2 1 11 2 1 a c e g 1 b d f h Untuk semua ∈ ℤ Universitas Sumatera Utara 2 1 11 2 1 2 c e g = ∙ + = 1 1 d f h = ∙ + = 2 1 11 2 1 2 3 e g = ∙ + = 1 1 1 f h = ∙ + = 2 1 11 2 1 2 3 35 g = ∙ + = 1 1 1 12 h = ∙ + = 2 1 11 2 1 2 3 35 73 = ∙ + = 1 1 1 12 25 ℎ = ∙ + = Terlihat bahwa kolom terakhir adalah masing-masing nilai untuk dan . Dan kolom di samping kolom terakhir adalah nilai dan . Jadi, dari contoh ini ditemukan bahwa ∙ − ∙ = Hoffstein, et al. 2008. Secara umum, jika dan relatif prima dan jika , , … , adalah sederetan hasil bagi dari penerapan algoritm Euclidean terhadap dan , maka … − 1 … − a 1 … − b Nilai-nilai pada kotak dihitung dengan terlebih dahulu melakukan inisialisasi sebagai berikut: = , = , = ∙ + , = ∙ lalu, selama , hitung � = � ∙ �− + �− dan � = � ∙ �− + �− . Empat nilai dari dua kolom terakhir memenuhi ∙ − − ∙ − = − . Dengan mengalikan kedua sisi dengan − memberikan penyelesaian: = − − , = − + − ke dalam persamaan + = Hoffstein, et al. 2008. 2.2.2. Aritmatika modular Setiap orang pasti pernah membaca jam, di mana terdapat perhitungan yang aneh. Misalnya, + = atau − = . Tetapi tidak ada yang salah dalam perhitungan Universitas Sumatera Utara waktu tersebut, karena jam : adalah jam sebelum jam : . Jadi, yang pertama sekali dilakukan adalah menghitung − = − , lalu menambahkannya dengan . Demikian pula, jam setelah jam : adalah jam : , karena + − = . Teori kongruen adalah metode paling tepat dalam perhitungan yang didasarkan pada gagasan sederhana jam aritmatika. Definisi 2.5 : Misalkan bilangan bulat , maka bilangan bulat dan disebut kongruen modulo jika selisih keduanya habis dibagi . Sehingga dapat ditulis , dan nilai disebut modulus Hoffstein, et al. 2008. Contoh jam sebelumnya dapat ditulis sebagai kongruen menggunakan modulus = , + = dan − = − . Angka-angka yang memenuhi adalah angka yang habis dibagi dengan , yaitu kelipatan . Teorema 2.3 : Misalkan bilangan bulat , a Jika dan , maka ± ± dan ∙ ∙ . b Misalkan bilangan bulat , kemudian ∙ untuk suatu bilangan bulat jika dan hanya jika gcd , = . Jika bilangan bulat ada, maka dapat dikatakan bahwa adalah invers dari modulo Hoffstein, et al. 2008. Teorema 2.3b mengatakan bahwa jika gcd , = , maka ada invers dari modulo . Misalkan = dan = , jelas gcd , = , sehingga ada invers untuk modulo . Dan inversnya adalah , karena ∙ . Jadi, − . Demikian pula, gcd , = sehingga − ada dalam modulo . Dan karena ∙ , maka adalah invers dalam modulo . Permasalahan modulo dalam pecahan dapat diselesaikan selama penyebut adalah relatif prima terhadap . Sebagai contoh modulo , dengan terlebih dahulu mengamati bahwa ∙ , maka − . Selanjutnya: = ∙ − ∙ Selanjutnya jika dibagi dengan memiliki hasil bagi dan sisa bagi , dapat ditulis sebagai = ∙ + dengan . Hal ini menunjukkan bahwa untuk suatu bilangan bulat antara sampai − . Jadi, jika ingin Universitas Sumatera Utara menghitung bilangan bulat modulo , cukup menggunakan bilangan . Dan definisi selanjutnya adalah: ℤ ℤ = { , , , … , − } di mana ℤ ℤ disebut ring bilangan bulat modulo . Perhatikan bahwa setiap kali dilakukan penambahan atau perkalian dalam ℤ ℤ, hasilnya selalu dibagi dengan dan mengambil sisanya untuk mendapatkan sebuah elemen dalam ℤ ℤ. Tabel 2.1 memperlihatkan ring ℤ ℤ dengan tabel penjumlahan dan perkalian dalam modulo secara lengkap. + 0 1 2 3 4 ∙ 1 2 3 4 1 2 3 4 1 1 2 3 4 1 1 2 3 4 2 2 3 4 1 2 2 4 1 3 3 3 4 1 2 3 3 1 4 2 4 4 1 2 3 4 4 3 2 1 Tabel 2.1: Penjumlahan dan perkalian dalam modulo . Definisi 2.6 : Teorema 2.3b menjelaskan bahwa memiliki invers modulo jika dan hanya jika gcd , = . Bilangan-bilangan yang memiliki invers disebut unit. Himpunan semua unit dinotasikan sebagai ℤ ℤ ∗ = { ∈ ℤ ℤ ∶ gcd , = } = { ∈ ℤ ℤ ∶ memiliki invers modulo }, himpunan ℤ ℤ ∗ disebut kumpulan unit group of units modulo . Perhatikan bahwa jika dan adalah unit modulo , hasilnya adalah . Jadi, ketika dua unit dikalikan, hasilnya selalu unit. Sedangkan jika dua unit ditambahkan, hasilnya belum tentu adalah unit. Group of units modulo adalah ℤ ℤ ∗ = { , , , , , , , }. Tabel perkalian untuk ℤ ℤ ∗ seperti ditunjukkan pada Tabel 2.2: Tabel 2.2: Perkalian group of units modulo . ∙ 1 5 7 11 13 17 19 23 1 1 5 7 11 13 17 19 23 5 5 1 11 7 17 13 23 19 7 7 11 1 5 19 23 13 17 11 11 7 5 1 23 19 17 13 13 13 17 19 23 1 5 7 11 17 17 13 23 19 5 1 11 7 19 19 23 13 17 7 11 1 5 23 23 19 17 13 11 7 5 1 Universitas Sumatera Utara Definisi 2.7 : Fungsi phi Euler sering juga disebut sebagai fungsi totient Euler adalah fungsi � didefinisikan oleh aturan � = ℤ ℤ ∗ = { ∶ gcd , = }. Berdasarkan contoh sebelumnya, � = . Dengan kata lain hasil dari fungsi � adalah banyaknya bilangan bulat non- negatif dan lebih kecil dari yang relatif prima dengan . Jadi, � = dan untuk bilangan prima , � = − , karena , , , … , − semua relatif prima terhadap , sedangkan gcd , = ≠ . Untuk bilangan prima , � = − − Hoffstein, et al. 2008. 2.2.3. Bilangan prima, faktorisasi prima, dan finite field Di bagian sebelumnya telah dipelajari aritmatika modular dalam operasi penambahan, pengurangan, dan perkalian bilangan bulat modulo . Sedangkan pembagian, dapat menjadi masalah karena bilangan bulat dapat dibagi dengan dalam ℤ ℤ hanya jika gcd , = . Jika bilangan bulat adalah prima, maka dapat dibagi dengan setiap elemen ℤ ℤ yang bukan nol. Maka, selanjutnya akan dipelajari ring ℤ ℤ dengan bilangan prima . Definisi 2.8 : Bilangan bulat disebut prima jika dan bilangan bulat positif yang bisa membagi hanya dan Hoffstein, et al. 2008. Teorema 2.4 Teorema Dasar Aritmatika. Misalkan bilangan bulat , Maka dapat difaktorkan sebagai hasil dari bilangan prima Hoffstein, et al. 2008 = × × × … × � Definisi 2.9 . Teorema dasar aritmatika mengatakan bahwa dalam faktorisasi bilangan bulat positif ke bilangan prima , setiap memiliki pangkat tertentu. Pangkat ini dinotasikan dengan . Untuk semua bilangan prima, = Hoffstein, et al. 2008. Contoh, faktorisasi adalah = ∙ , sehingga = , = , dan = untuk semua bilangan prima . Jika adalah prima, maka setiap bilangan bukan nol modulo memiliki invers perkalian modulo . Ini berarti bahwa operasi aritmatika modulo , tidak hanya bisa menambah, mengurangi, mengalikan, tetapi juga bisa membagi dengan bilangan bukan nol, sama seperti operasi pada bilangan real. Universitas Sumatera Utara Misalkan adalah bilangan prima. Maka setiap anggota dalam ℤ ℤ yang bukan nol memiliki invers perkalian, yaitu yang memenuhi . Nilai dinotasikan dengan − . Definisi 2.10 . Jika adalah bilangan prima, maka himpunan bilangan bulat ℤ ℤ modulo dengan aturan penambahan, pengurangan, perkalian, dan pembagian- nya adalah contoh dari sebuah field yang merupakan nama umum untuk komutatif ring, di mana setiap anggota bukan nol-nya memiliki invers perkalian. Beberapa contoh di antaranya adalah field untuk bilangan real ℝ, field untuk bilangan rasional pecahan ℚ, dan field untuk bilangan kompleks ℂ. Field ℤ ℤ dari bilangan bulat modulo hanya memiliki jumlah anggota yang berhingga yang disebut sebagai finite field yang dilambangkan dengan � . Jadi, � dan ℤ ℤ adalah dua notasi yang berbeda untuk objek yang sama. Demikian pula, anggota dari group of units ℤ ℤ ∗ dilambangkan dengan � ∗ . Finite field adalah aspek dasar yang paling penting dalam seluruh kriptografi Hoffstein, et al. 2008. Meskipun ℤ ℤ dan � digunakan untuk menotasikan konsep yang sama, namun kesetaraan elemen di antaranya dinyatakan agak berbeda dalam dua aturan. Untuk , ∈ � , kesetaraan dan dilambangkan dengan = . Sedangkan untuk , ∈ ℤ ℤ, kesetaraan dan dinotasikan dengan . 2.3. Advanced Encryption Standard AES AES Advanced Encryption Standard adalah teknik enkripsi yang dijadikan standar FIPS oleh NIST pada tahun 2001. AES dimaksudkan secara bertahap akan mengganti- kan DES Data Encryption Standard sebagai standar enkripsi di Amerika Serikat untuk abad ke-21 DES sebagai standard FIPS telah dicabut, Mei 2005. AES menjadi standar melalui proses seleksi. Dari beberapa teknik enkripsi yang dicalonkan untuk menjadi AES, yang terpilih adalah enkripsi Rijndael. Jadi, algoritma AES dikenal juga dengan algoritma Rijndael. Teknik enkripsi ini termasuk jenis block cipher seperti halnya dengan DES. Perbedaan utama antara teknik enkripsi DES dengan AES adalah dalam transformasi subBytes menggunakan S-boxes. AES melakukan transformasi secara langsung terhadap naskah, sedangkan DES menggunakan substitusi S-box hanya dalam fungsi cipher f, yang hasilnya kemudian dioperasikan terhadap naskah menggunakan exclusive OR. AES juga menggunakan kunci enkripsi yang lebih besar yaitu 128 bit, 192 bit, atau 256 bit Kromodimoeljo, 2010. Universitas Sumatera Utara Secara umum, transformasi dalam algoritma Rijndael terdiri dari: subBytes, shiftRows, mixColumns, dan AddRoundKey. Algoritma Rijndael beroperasi terhadap state dari naskah yang dipandang sebagai matriks berukuran × . Setiap kolom dari state merepresentasikan 1 word, dengan .� sebagai most significant byte untuk kolom ke-i. Beberapa operasi pada algoritma Rijndael didefinisikan pada tingkat byte yang mewakili anggota dalam polynomial field . Operasi lainnya didefinisikan dalam istilah 4-byte word Daemen Rijmen, 2002. 2.3.1. Matematika pengantar  Polinomial field Setiap anggota dalam finite field dapat direpresentasikan dalam beberapa cara yang berbeda. Untuk setiap pangkat bilangan prima ada sebuah finite field yang karenanya semua representasi dari adalah isomorfik. Representasi dalam persamaan ini memiliki dampak pada kompleksitas implementasi. Sebuah byte , terdiri dari serangkaian bit yang dianggap sebagai polinomial dengan koefisien dalam { , } Daemen Rijmen, 2002: + + + + + + + . Contoh, byte dengan dengan nilai heksadesimal biner: bersesuaian dengan polinomial: + + + + .  Penambahan Dalam representasi polinomial, jumlah dari dua elemen adalah polinomial dengan koefisien yang diberikan oleh penjumlahan dalam modulo 2 yaitu, + = terhadap koefisien-koefisiennya. Contoh: + = , atau dengan notasi polinomial: + + + + + + + = + + + . Dalam notasi biner: + = . Operasi penambahan sesuai dengan bitwise XOR dilambangkan dengan pada tingkat byte. Semua kondisi yang harus terpenuhi dalam kelompok Abelian adalah: internal, asosiatif, elemen netral , elemen inverse dan komutatif Daemen Rijmen, 2002.  Perkalian Dalam representasi polinomial, perkalian dalam bersesuaian dengan perkalian polinomial modulo suatu irreducible binary polynomial berderajat . Dalam Rijndael, polinomial ini adalah: = + + + + Universitas Sumatera Utara atau dalam representasi heksadesimal. Contoh: ∙ = , atau: + + + + ∙ + + = + + + + + + + + + + + + + + = + + + + + + + + + + + + + + Jelas, hasilnya akan menjadi polinomial biner berderajat di bawah . Tidak seperti penambahan, tidak ada penyederhanaan operasi perkalian pada tingkat byte. Perkalian seperti yang telah didefinisikan sebelumnya adalah asosiatif dan ada elemen netral . Untuk setiap polinomial biner berderajat di bawah , algoritma extended Euclidean digunakan untuk menghitung polinomial , sedemikian rupa sehingga ∙ + ∙ = , oleh karena itu, ∙ atau − . Selain itu, dapat dinyatakan bahwa ∙ + = ∙ + ∙ . Ini memungkinkan himpunan byte sebesar dengan XOR sebagai penambahan dan perkalian yang didefinisikan seperti pada struktur finite field Daemen Rijmen, 2002.  Perkalian dengan Jika dikalikan dengan polinomial , hasilnya: + + + + + + + dalam modulo . Jika = , penyederhanaan ini disebut operasi identitas, jika = , maka harus dikurangi dengan operasi XOR. Oleh karena itu, perkalian dengan heksadesimal dapat diimplementasikan pada tingkat byte sebagai pergeseran ke kiri dan dengan kondisi tertentu di-XOR-kan dengan . Operasi ini dilambangkan dengan = . Dalam kondisi tertentu, xtime hanya membutuhkan 4 kali XOR. Perkalian dengan pangkat yang lebih tinggi dari dapat diimplementasikan dengan xtime berulang kali. Dengan penambahan terpisah, perkalian dengan konstanta apapun dapat diimplementasikan dengan mudah Daemen Rijmen, 2002. Contoh: ∙ = . ∙ = = ∙ = = ∙ = = ∙ = = ∙ = ∙ = = Universitas Sumatera Utara  Polinomial dengan koefisien dalam Polinomial dapat didefinisikan dengan koefisien dalam . Dengan cara ini, vektor 4-byte bersesuai dengan polinomial berderajat di bawah . Polinomial dapat ditambahkan dengan hanya menambahkan koefisien yang sesuai. Sebagaimana penambahan dalam adalah operasi XOR, penambahan dua vektor juga menggunakan operasi XOR. Anggaplah dua polinomial dalam , yaitu: = + + + dan = + + + . Hasilnya adalah = ∙ = + + + + + + di mana, = ∙ = ∙ ∙ ∙ = ∙ ∙ = ∙ ∙ = ∙ ∙ ∙ = ∙ = ∙ ∙ ∙ ∙ Jelas, tidak dapat lagi diwakili oleh vektor 4-byte. Dengan menjadikan dalam modulo polinomial berderajat 4 hasilnya dapat disederhanakan menjadi polinomial berderajat di bawah . Pada algoritma Rijndael, hal ini dilakukan dengan polinomial = + . Karena � + = � adalah hasil modular dari dan , dapat dinotasikan dengan = = + + + . Di mana, = ⋅ ⋅ ⋅ ⋅ = ⋅ ⋅ ⋅ ⋅ = ⋅ ⋅ ⋅ ⋅ = ⋅ ⋅ ⋅ ⋅ Operasi perkalian dengan polinomial tetap dapat ditulis sebagai perkalian matriks sebagai berikut: [ ] = [ ] [ ] + bukan merupakan irreducible polynomial dalam , ini dikarenakan perkalian dengan polinomial tetap belum tentu memiliki invers. Dalam cipher Rijndael, harus menggunakan polinomial tetap yang memiliki invers Daemen Rijmen, 2002. Universitas Sumatera Utara  Perkalian dengan Jika dikalikan dengan , maka hasilnya adalah + + + . Hasil diperoleh dengan mereduksi hasil di atas dengan modulo + . Sehingga menjadi + + + . Perkalian dengan setara dengan perkalian dengan matriks seperti di atas di mana semua � = kecuali = . Misalkan = , maka: [ ] = [ ] [ ] Oleh karena itu, perkalian dengan atau pemangkatan dengan , sesuai dengan pergeseran siklik byte di dalam vektor Daemen Rijmen, 2002. 2.3.2. State, cipher key dan jumlah putaran Rijndael menghasilkan blok yang diacak berulang kali berdasarkan variabel panjang blok dan kunci yang masing-masing dapat berukuran 128, 192 atau 256 bit. Naskah asli atau naskah acak cipher yang belum selesai ditransformasi disebut state. Suatu state digambarkan sebagai array dua dimensi dalam byte. Array ini memiliki empat baris dan jumlah kolom dilambangkan dengan yang sama dengan panjang blok dibagi dengan 32. Cipher key juga digambarkan sebagai array dua dimensi dengan empat baris dan jumlah kolom dilambangkan dengan yang sama dengan panjang kunci dibagi dengan 32. Dalam beberapa kasus, blok ini juga dianggap sebagai array satu dimensi dari vektor 4-byte, di mana setiap vektor terdiri dari kolom yang sesuai dalam representasi array dua dimensi. Array ini memiliki panjang masing-masing 4, 6, atau 8, dan indeks dalam rentang . . , . . , atau . . . Vektor 4-byte ini disebut dengan word. Input yang diproses dan output yang dihasilkan oleh Rijndael adalah array satu dimensi berukuran × − byte atau setara dengan 16, 24 atau 32 byte dan indeks dalam rentang . . , . . atau . . . Setiap input dalam satuan byte dipetakan ke dalam state dengan urutan , , , , , , , , , , , , , , , , … , ,� � − , begitu juga dengan cipher key yang dipetakan dengan urutan , , , , , , , , , , , , , , , , … , ,� � − . Di akhir operasi, output diekstrak kembali dari state dengan urutan yang sama Daemen Rijmen, 2002. Universitas Sumatera Utara , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Tabel 2.3: Contoh representasi state = dan cipher key = . Jika indeks array satu dimensi dalam byte suatu blok adalah dan indeks array dua dimensi adalah , , maka: = , = , = + Nilai adalah jumlah vektor 4-byte atau word, sedangkan menunjukkan indeks vektor atau word dalam blok. Banyaknya jumlah putaran bergantung pada panjang blok dan kunci Daemen Rijmen, 2002, seperti ditunjukkan pada Tabel 2.3. � = = = = 10 12 14 = 12 12 14 = 14 14 14 Tabel 2.4: Jumlah putaran sebagai fungsi blok terhadap panjang kunci. 2.3.3. Enkripsi Pada proses enkripsi AES dilakukan transformasi subBytes, shiftRows, mixColumns, dan addRoundKey berulang kali hingga − . Di putaran ke- , transformasi yang dilakukan tetap sama, tetapi tanpa transformasi mixColumns. Berikut pseudocode enkripsi AES: Roundstate, roundKey 1. subBytesstate; 2. shiftRowsstate; 3. mixColumnsstate; 4. addRoundKeystate, roundKey;  Transformasi subBytes Transformasi subBytes adalah substitusi byte non-linear, yang beroperasi pada setiap byte pada state secara independen. Tabel substitusi S-box dapat diinvers dan dibuat dengan dua transformasi. Pertama, menggunakan invers perkalian dalam , kemudian menerapkan transformasi affine dalam Daemen Rijmen, 2002 yang didefinisikan sebagai berikut: Universitas Sumatera Utara Contoh: = , = Paar, 2010. 1 2 3 4 5 6 7 8 9 A B C D E F 63 7C 77 7B F2 6B 6F C5 30 01 67 2B FE D7 AB 76 1 CA 82 C9 7D FA 59 47 F0 AD D4 A2 AF 9C A4 72 C0 2 B7 FD 93 26 36 3F F7 CC 34 A5 E5 F1 71 D8 31 15 3 04 C7 23 C3 18 96 05 9A 07 12 80 E2 EB 27 B2 75 4 09 83 2C 1A 1B 6E 5A A0 52 3B D6 B3 29 E3 2F 84 5 53 D1 00 ED 20 FC B1 5B 6A CB BE 39 4A 4C 58 CF 6 D0 EF AA FB 43 4D 33 85 45 F9 02 7F 50 3C 9F A8 7 51 A3 40 8F 92 9D 38 F5 BC B6 DA 21 10 FF F3 D2 8 CD 0C 13 EC 5F 97 44 17 C4 A7 7E 3D 64 5D 19 73 9 60 81 4F DC 22 2A 90 88 46 EE B8 14 DE 5E 0B DB A E0 32 3A 0A 49 06 24 5C C2 D3 AC 62 91 95 E4 79 B E7 C8 37 6D 8D D5 4E A9 6C 56 F4 EA 65 7A AE 08 C BA 78 25 2E 1C A6 B4 C6 E8 DD 74 1F 4B BD 8B 8A D 70 3E B5 66 48 03 F6 0E 61 35 57 B9 86 C1 1D 9E E E1 F8 98 11 69 D9 8E 94 9B 1E 87 E9 CE 55 28 DF F 8C A1 89 0D BF E6 42 68 41 99 2D 0F B0 54 BB 16 Tabel 2.5: AES S-Box.  Transformasi shiftRows Pada transformasi shiftRows, deretan baris pada state digeser ke kiri sebanyak kali. Untuk , baris pertama tidak bergeser, baris kedua digeser sekali ke kiri, baris ketiga digeser dua kali ke kiri, dan baris keempat digeser sebanyak tiga kali ke kiri atau digeser sekali ke kanan. Pergeseran ini dinotasikan dengan , , dan tergantung pada panjang blok Daemen Rijmen, 2002 seperti pada Tabel 2.5: � 1 2 3 1 2 3 1 3 4 Tabel 2.6: Besarnya pergeseran baris pada shiftRows terhadap panjang blok. [ ] [ ] [ ] + [ ] Universitas Sumatera Utara mixColumnsstate, Nb 1. C = { 0, 1, 2, 3 }; 2. ifNb 6 3. C = { 0, 1, 2, 4 }; 4. for i ← 0; i Nb; i ← i + 1 5. for j ← 0; j 4; j ← j + 1 6. block[i][j] = state[i + C[j] Nb][j]; 7. return block;  Transformasi mixColumns Pada transformasi mixColumns, setiap kolom pada state dapat dipandang sebagai polinomial dalam dan dikalikan dengan polinomial tetap modulo + , yaitu: = + + + . Polinomial ini adalah relatif prima untuk + dan memiliki invers Daemen Rijmen, 2002. Misalkan = , maka perkalian matriksnya adalah: [ ] = [ ] [ ] Contoh: Misalkan state seperti berikut, dan akan dilakukan transformasi mixColumns, = ⋅ ⋅ ⋅ ⋅ = = ⋅ ⋅ ⋅ ⋅ = = ⋅ ⋅ ⋅ ⋅ = = ⋅ ⋅ ⋅ ⋅ = = ⋅ ⋅ ⋅ ⋅ = D4 E0 B8 1E BF B4 41 27 5D 52 11 98 30 AE F1 E5 02 03 01 01 01 02 03 01 01 01 02 03 03 01 01 02 . 04 E0 48 28 66 CB F8 06 81 19 D3 26 E5 9A 7A 4C = Tidak digeser Digeser kali Digeser kali Digeser kali Universitas Sumatera Utara  Transformasi addRoundKey Transformasi ini cukup sederhana, yaitu dengan melakukan operasi XOR terhadap cipher key dengan state. Cipher key diperoleh melalui proses key schedule, sebagian menyebut proses ini dengan ekspansi kunci. Panjang cipher key bervariasi tergantung dengan panjang kuncinya Daemen Rijmen, 2002. Untuk AES 128-bit dengan state sebesar 4 word, diperlukan cipher key dengan panjang 44 word. Hal ini dikarenakan jumlah putarannya sebanyak 10 kali, dengan setiap putaran diperlukan sebesar 4 word untuk dilakukan XOR terhadap state dengan besar yang sama = word. Dengan demikian, total panjang kunci adalah ∗ word = word ditambah dengan addRoundKey yang pertama kali, sehingga word + word = word. Hal yang sama untuk AES 192-bit dan AES 256-bit, panjang cipher key yang diperlukan masing-masing 52 word dan 60 word. Panjang state harus sama dengan panjang kunci , seperti berikut: 04 E0 48 28 66 CB F8 06 81 19 D3 26 E5 9A 7A 4C A0 88 23 2A FA 54 A3 6C FE 2C 39 76 17 B1 39 05 A4 68 6B 02 9C 9F 5B 6A 7F 35 EA 50 F2 2B 43 49 = Universitas Sumatera Utara Start Nr, key, message cipher cipherKey = keySchedule key addRoundKey message, key i = 0 i Nr - 1 subBytes state, cipherKey[i] True shiftRows state, cipherKey[i] mixColumns state, cipherKey[i] addRoundKey state, cipherKey[i] i = i + 1 subBytes state, cipherKey[i] False shiftRows state, cipherKey[i] addRoundKey state, cipherKey[i] End Gambar 2.1: Flowchart algoritma enkripsi AES. 2.3.4. Dekripsi Algoritma dekripsi AES adalah kebalikan dari algoritma enkripsi AES. Jumlah putaran tetap sama, hanya saja pada putaran pertama transformasi yang dilakukan adalah addRoundKey, shiftRows, dan subBytes yang sama dengan kebalikan dari transformasi pada proses enkripsi AES di putaran terakhir. Sisa putaran selanjutnya dilakukan transformasi dengan urutan sebagai berikut: addRoundKey, mixColumns, shiftRows, dan subBytes. Universitas Sumatera Utara Start Nr, key, cipher cipherKey = keySchedule key addRoundKey cipher, cipherKey[Nr - 1] shiftRows state, cipherKey[Nr - 1] subBytes state, cipherKey[Nr - 1] i = Nr - 2 i - 1 addRoundKey state, cipherKey[i] True mixColumns state, cipherKey[i] shiftRows state, cipherKey[i] subBytes state, cipherKey[i] i = i - 1 addRoundKey state, key False cipher End Gambar 2.2: Flowchart algoritma dekripsi AES.  Transformasi subBytes invers Sama seperti proses enkripsi, hanya saja transformasi subBytes invers pada proses dekripsi menggunakan tabel S-box invers yang diperoleh dari invers pemetaan affine, diikuti perkalikan invers dalam . Tabel 2.6 adalah tabel S- ′. Universitas Sumatera Utara 1 2 3 4 5 6 7 8 9 A B C D E F 52 09 6A D5 30 36 A5 38 BF 40 A3 9E 81 F3 D7 FB 1 7C E3 39 82 9B 2F FF 87 34 8E 43 44 C4 DE E9 CB 2 54 7B 94 32 A6 C2 23 3D EE 4C 95 0B 42 FA C3 4E 3 08 2E A1 66 28 D9 24 B2 76 5B A2 49 6D 8B D1 25 4 72 F8 F6 64 86 68 98 16 D4 A4 5C CC 5D 65 B6 92 5 6C 70 48 50 FD ED B9 DA 5E 15 46 57 A7 8D 9D 84 6 90 D8 AB 00 8C BC D3 0A F7 E4 58 05 B8 B3 45 06 7 D0 2C 1E 8F CA 3F 0F 02 C1 AF BD 03 01 13 8A 6B 8 3A 91 11 41 4F 67 DC EA 97 F2 CF CE F0 B4 E6 73 9 96 AC 74 22 E7 AD 35 85 E2 F9 37 E8 1C 75 DF 6E A 47 F1 1A 71 1D 29 C5 89 6F B7 62 0E AA 18 BE 1B B FC 56 3E 4B C6 D2 79 20 9A DB C0 FE 78 CD 5A F4 C 1F DD A8 33 88 07 C7 31 B1 12 10 59 27 80 EC 5F D 60 51 7F A9 19 B5 4A 0D 2D E5 7A 9F 93 C9 C9 EF E A0 E0 3B 4D AE 2A F5 B0 C8 EB BB 3C 83 53 99 61 F 17 2B 04 7E BA 77 D6 26 E1 69 14 63 55 21 0C 7D Tabel 2.7: AES S- ′.  Transformasi shiftRows invers Pada dekripsi, shiftRows invers ditransformasikan dengan arah yang berlawanan dengan shiftRows pada proses enkripsi. Jadi, arah pergeserannya adalah ke kanan.  Transformasi mixColumns invers Transformasi mixColumns invers pada dekripsi sama seperti mixColumns pada proses enkripsi, hanya saja setiap kolom state ditransformasikan dengan perkalian terhadap polinomial + + + . Yang memenuhi hukum invers: + + + + + + = , sehingga perkalian matriksnya adalah: [ ] = [ ] [ ] Universitas Sumatera Utara 2.3.5. Key sechedule Round key berasal dari Cipher key dengan menggunakan proses Key schedule yang nantinya diperlukan pada transformasi addRoundKey, di mana dilakukan proses XOR terhadap state dengan round key. Proses ini terdiri dari dua tahap, yaitu ekspansi kunci dan pemilihan round key. Prinsip dasarnya adalah sebagai berikut:  Jumlah round key dalam bit adalah sama dengan panjang blok dikalikan dengan jumlah putaran ditambah satu. Misalnya, untuk panjang blok 128 bit dan 10 putaran, jumlah round key yang diperlukan sebesar 1408 bit.  Cipher key yang sudah diperbesar disebut Expanded key.  Round key diambil dari expanded key dengan cara berikut: round key yang pertama diambil dari word pertama, round key yang kedua diambil dari word berikutnya, dan begitu seterusnya. Expanded key adalah array sebesar 4-byte word dan dilambangkan dengan [ ∗ + ]. word pertama berisi cipher key, sementara word lainnya didefinisikan secara rekursif dalam word dengan indeks yang lebih kecil. Fungsi ekspansi kunci tergantung pada nilai . Dalam uraian ini, adalah fungsi yang mengembalikan 4-byte word, di mana setiap byte adalah hasil dari penerapan Rijndael S-box terhadap byte yang posisinya sesuai dengan word masukan. Fungsi mengembalikan sebuah word di mana suatu word masukan , , , menghasilkan word keluaran , , , . Pada pertama diisi dengan cipher key. Setiap word berikutnya [ ] adalah sama dengan XOR dengan word sebelumnya [ − ] dan word diposisikan dengan [ − ]. Untuk word dalam posisi yang merupakan kelipatan , transformasi dengan operasi XOR diterapkan terlebih dahulu terhadap [ − ] dengan dan konstanta putaran. Konstanta putaran ini didefinisikan dengan: [ ] = [ [ ] ], di mana [ ] mewakili elemen dalam dengan nilai �− . Round key ke- sama dengan word [ ∗ ] sampai [ ∗ + ] Daemen Rijmen, 2002. Universitas Sumatera Utara

2.4. Algoritma Percobaan Bilangan Prima Miller-Rabin