Kriptografi Elliptic Curve [11] Landasan Teori

logaritma diskrit mirip dengan kompleksitas penguraian yaitu sub-exponential. Jadi kompleksitas untuk elliptic curve tumbuh lebih cepat dibandingkan kompleksitas untuk finite field. Berdasarkan perkiraan oleh Alfred Menezes, penggunaan kriptografi finite field seperti DSA atau RSA dengan kunci sebesar 1024 bit sama kuatnya dengan penggunaan kripografi elliptic curve dengan kunci sebesar 160 bit. Jadi cukup menyolok perbedaan besar kunci untuk kekuatan yang sama. Untuk kekuatan yang lebih besar, perbedaan semakin menyolok karena kekuatan elliptic curve tumbuh lebih cepat exponential dibandingkan sub-exponential untuk finite field , seperti terlihat pada Tabel 2.13 ECDSA adalah DSA versi elliptic curve Tabel 2.13 Besar kunci untuk kekuatan yang sama DSAElGamal RSA ECDSAECES 1024 1024 160 2048 2048 224 3072 3072 256 7680 7680 384 15360 15360 512 Sedangkan ECES adalah ElGamal versi elliptic curve. Tabel II.8 menunjukkan relatif waktu yang dibutuhkan untuk berbagai operasi. Untuk key generation, RSA jauh lebih lambat dibandingkan DSAElGamal Tabel 2.14 Waktu untuk berbagai operasi DSAElGamal RSA ECDSAECES 1024 bit 1024 bit 160 bit encryption 480 17 120 decryption 240 384 60 signing 240 384 60 verification 480 17 120 dan ECDSAECES. Jadi cukup jelas mengapa sistem kriptografi public key dengan elliptic curve sangat menarik, terutama untuk aplikasi di perangkat kecil dengan kemampuan terbatas seperti smartcard atau perangkat Bluetooth. Kriptografi elliptic curve juga semakin menarik untuk penggunaan masa depan karena pertumbuhan kunci yang dibutuhkan tidak sebesar kriptografi finite field. Sebetulnya versi elliptic curve untuk RSA juga ada, namun berbeda dengan logaritma diskrit dimana versi elliptic curve lebih sukar untuk dipecahkan dibandingkan versi finite field, penguraian bilangan bulat tetap merupakan penguraian bilangan bulat, jadi tidak ada keuntungan dengan menggunakan elliptic curve untuk RSA. 2.2.11 SHA [12] Algoritma secure hashing SHA dirancang oleh National Security Agency NSA dan dijadikan standard FIPS. Ada 4 varian SHA dalam standard FIPS-180- 2 dengan parameter yang berbeda. 4 varian SHA dapat dilihat pada tabel II.9. Keamanan algoritma didasarkan pada fakta bahwa birthday attack pada digest sebesar n bit menghasilkan collision dengan faktor kerja sekitar 2 n2 . Tabel 2.15 Varian SHA Algoritma Naskah bit Block Bit Word Bit Digest bit Keamanan bit SHA-1 2 64 512 32 160 80 SHA-256 2 64 512 32 256 128 SHA-384 2 128 1024 64 384 192 SHA-512 2 128 1024 64 512 256 SHA-1 menggunakan fungsi � , dimana 0 ≤ � ≤ 79, dengan masukan 3 word masing-masing sebesar 32 bit dan menghasilkan keluaran 1 word: = �ℎ , , = ∧ �⨁¬ ∧ , 0 ≤ � ≤ 19 ����� , , = ⨁ ⨁ , 20 ≤ � ≤ 39 ��� , , = ∧ ⨁ ∧ ⨁ ∧ , 40 ≤ � ≤ 59 ����� , , = ⨁ ⨁ , 60 ≤ � ≤ 79 SHA-1 menggunakan konstan � � sebagai berikut dengan menggunakan hexadecimal : = � 5 �827999 0 ≤ � ≤ 19 6 �9 ��1 20 ≤ � ≤ 39 8 1 ����� 40 ≤ � ≤ 59 ��62�1�6 60 ≤ � ≤ 79 Seperti halnya dengan MD5, SHA-1 terdiri dari dua tahap yaitu preprocessing dan hashing . Preprocessing dimulai dengan padding yang prosesnya persis sama dengan MD5, yaitu setelah akhir naskah, 1 bit dengan nilai 1 ditambahkan, disusul oleh bit dengan nilai 0 sebanyak 0 sampai dengan 511 tergantung panjang naskah, dan diahiri dengan 64 bit yang merepresentasikan besar naskah asli. Setelah padding , naskah terdiri dari n word M [0 . . . n − 1] dimana n adalah kelipatan 16. Langkah berikutnya dalam preprocessing adalah menyiapkan SHA-1 buffer sebesar 5 word: �� , � , � , � , � �. Buffer diberi nilai awal sebagai berikut nilai dalam hexadecimal: � ← 67452301 � ← ����89 � ← 98���� � ← 10325476 � ← �3�2 1 0 Setelah buffer diberi nilai awal, tahap kedua yaitu hashing dilakukan terhadap setiap blok M 1 , M 2 , ..., M n sebagai berikut i = 1, 2, ..., n: 1. Siapkan message schedule {W t }: � � ← � � � � , 0 ≤ � ≤ 15 � �− ⨁� �−8 ⨁� �− ⨁� �− 6 1, 16 ≤ � ≤ 79 2. Berikan nilai awal untuk variabel a, b, c, d, dan e � ← � �− � ← � �− � ← � �− � ← � �− ← � �− 3. Untuk t = 0, 1, 2, ...., 79: � ← � 5 + � �, �, � + + � � + � � ��� 2 ← � � ← � � ← � 30 � ← � � ← � 4. Lakukan kalkulasi hash value tahap i: