Key generation

**Generasi Kunci** merupakan kegiatan manajemen kunci dalam menghasilkan kunci yang acak dimana keacakan kunci merupakan bagian terpenting dalam menjamin kekuatan suatu kriptografi dalam membuat kunci yang dapat mengenkripsi atau mendekrepsi suatu data. Perangkat atau program yang digunakan untuk membuat kunci disebut *keygen*

## Syarat-syarat keacakan kunci
Syarat untuk menguji keacakan pada suatu rangkaian kunci yang dihasilkan, kita dapat mengujinya dengan menggunakan uji statistik, diantaranya:
:* Five basic test, tes ini terdiri dari:
::frequency test untuk menentukan apakah jumlaj bit '0' dan '1' dalam barisan bit mempunyai jumlah bit yang relatif sama, seperti yang diharapkan untuk barisan acak.
:* Serial test. untuk mementukan apakah jumlah dari pasangan bit 00,01,10 dan 11 dalam barisan bit mempunyai jumlah yang relatif sama, seperti yang diharapkan untuk barisan acak.
:* Poker test. untuk menentukan apakah jumlah dari barisan bit dengan lebar tertentu muncul dalam barisan bit seperti yang diharapkan untuk barisan acak.
:* Runs test. untuk menetukan apakah jumlah runtun dalam barisan bit, baik runtun bit '0' ataupun bit '1'dalamb arisan bit mempunyai jumlah yang relatif sama, seperti yang diharapkan untuk barisan acak.
:* Autocorrelation test. untuk menentukan apakah perbedaan jumlah bit '0' dan '1' dalam barian bit (cycle) mempunyai jumlah yang relatif sama, seperti yang diharapkan untuk barisan acak seperti : FIPS 140; FIPS 140; NIST SP 800.22.v.1.8;  die hard test; maurer's universal statistic test.
Selain telah lulus uji statistik juga unpredictable (tidak dapat diramalkan).secara perhitungan akan sulit untuk menentukan atau menduga bit bit selanjutnya yang akan muncul dari rangkaian tersebut. selain itu rangkaian itu haruslah tidak memberikan pengetahuan yang lengkap tentang algoritme atu infrastruktur hardware yang digunakan dalam pembangkitan rangkaian seluruh bit bit sebelumnya dalam rangkaian itu seniri
apabila menggunakan alat yang menghasilkan suatu kunci, ia tidak pernah menghasilkan kunci yang hampir sama atu sama persis dengan kunci yang dihasilkan sebelumnya. hal ini berarti jika pembangkit tersebut digunakan dua kali dengan input yang sama maka akan didapatkan dua rangkaian acak yang sama sekali berbeda dan tidak saling berhubungan.Namun untuk menghasilkan kunci yang acak tidaklah mudah. . ada dua macam untuk menghasilkan rangkaian kunci, yaitu:
secara manual
Metode ini masih sederhana.Biasanya digunakan koin dalam membangkitkan kuncinya.
Ataupun dapat menggunakan Boudout Code jika yang dibangkitkan adalah karakter.
Misal: Rumah = 0, Burung = 1. Untuk menghasilkan 2 karakter maka pelemparan koin harus dilakukan sebanyak 10 kali, hasilnya dapat dilihat pada tabel boudout. Kelebihan metode manual ini yaitu tidak membutuhkan biaya besar dan tidak memerlukan keahlian khusus. Sedangkan kekurangannya adalah membutuhkan tenaga yang besar dan membutuhkan waktu yang lama.

## Secara elektronis
Pembuatan kunci secara elektronis merupakan teknik pembuatan rangkaian kunci yang menggunakan suatu alat pembangkit rangakain kunci (key generator). cara ini memiliki banyak. Metode ini sudah menggunakan alat elektronik dalam pembangkitan kuncinya. Biasanya 	menggunakan RK Generator seperti RNG (Random Number Generator yang akan kami 	bahas pada paper kali ini).cara ini memiliki banyak keuntungan contonya tenaga yang dibutuhkan kecil dan watu yang dibutuhkan sedikit. tetapi ia memiki kelemahan yaitu biaya yang dibutuhkan besar dan harus memiliki SDM yang mempunyai keahlian khusus.

### Random Bit Generator
Random Bit Generator (pembangkit kunci acak) adalah sebuah alat ataupun algoritma yang mampu menghasilkan suatu rangkaian bit acak atau kunci. Idealnya, suatu algoritma sandi menggunakan kunci yang dihasilkan oleh Random Bit Generator ini. Hal ini dikarenakan bit-bit yang dihasilkan oleh Random Bit Generator benar-benar acak, sehingga sangat sulit untuk dianalisis. Ada beberapa metode yang dapat kita lakukan untuk membangkitkan rangkaian kunci dengan Random Bit Generator ini, yaitu

# Pembangkit kunci berbasis hardware, yaitu pembangkitan kunci yang dilakukan dengan memanfaatkan keacakan yang ditimbulkan oleh kejadian yang bersifat fisik, beberapa contoh kejadian fisik tersebut dapat adalah sebagai berikut: Suara dari mikropon atau input dari kamera; Ketidakstabilan dari ascilator yang bekerja; Thermal noise yang dihasilkan oleh semi-konduktor diode ataupun resistor; Turbulensi udara pada diskdrive yang tertutup rapat menyebabkan fluktuasi yang acak pada diskdrive sector read latency time.
# Pembangkit kunci berbasis software, Pada umumnya pembangkitan kunci dengan cara ini lebih sulit dibuat dibandingkan pembangkitan kunci berbasis hardware. Pembangkitan kunci berbasis software ini dalam prosesnya biasanya memanfaatkan: Jam yang terdapat pada sistem; Lama waktu penekanan tombol; Mouse movement; dan Input yang diberikan user.

Data yang digunakan pada pembangkit software sangat bervariasi dan bergantung pada banyak faktor, seperti platform komputer. Namun sulit untuk mencegah pihak-pihak yang tidak berkepentingan untuk meneliti dan memanipulasi data yang dihasilkan. Suatu software pembangkit bit acak seharusnya menggunakan beberapa sumber yang sifatnya acak yang dihasilkan pada sistem komputer.

### Pseudo random bit generator.
Pseudo random bit generator (PRNG) adalah pembangkit rangkainbilangan pseurandom, diman proses pembangkitan tiap elemen tergantung dari formulasi matematis yang digunakan, dan ia membutuhkan seed. Seed yaitu input yang digunakan pada pseudo random bit generator sedangkan outputnya disebutpseudo random bit sequences (rangkaian bit semi acak). seed berfungsi sebagai inputan pseudo random bit generator, karena seed meupakan inputan pembangkit kunci semi acak, maka panjangnya disesuiaikan dengan algoritma pseudorandom generator yang digunakan. Untuk pseudorandom bit, seed inilah yang berperan penting, pada pseudorandom yang baik tidak ditentukan oleh seed melainkan oleh formulasi matematis yang digunakan pada algoritma tersebut.

Bilangan pseudorandom dapat dibangkitkan dari bit pseudorandom oleh karena itu sekarang berkembang Pseudorandom Bit Generator. Pseudorandom Bit Generator ini adalah suatu algoritma yang mempunya sifat deterministik, dimana apabila diberikan berisan biner dengan panjang x, maka akan mengahsilkan barisan biner dengan panjang x yang kelihatan acak, deterministik berarti apabila generator diberikan initial seed yang sama maka akan menghasilkan barisan output yang sama atau berulang. aswin--