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: