2. Dekripsi dengan PGP
Penerima email yang terenkripsi tersebut menggunakan kunci sesi session key untuk melakukan dekripsi terhadap email tersebut. Kunci sesi terdapat pada email yang
terenkripsi tersebut diperoleh dengan cara mendekripsinya dengan kunci private. Seperti yang dipaparkan pada gambar 2.8 dibawah ini:
Gambar 2.8 Proses dekripsi pada PGP
Strategi yang sama digunakan untuk mendeteksi apakah suatu pesan sudah mengalami perubahan atau belum dan juga menentukan apakah pesan bersasal dari
pengirim yang sebenarnya. Pengirim emenggunakan enkripsi PGP untuk memberikan tanda tangan digital digital signature pada pesan.
2.3 Lehmann Primary Test Tes Keprimaan Lehmann
Menurut Schneier 1996, berikut merupakan pengujian apakah p adalah bilangan prima:
1. Pilih sebuah bilangan acak a kurang dari p.
2. Hitung
. 3.
Jika , maka bukan bilangan prima.
4. Jika
, maka kemungkinan bukan
prima lebih dari 50.
5. Bila syarat telah terpenuhi maka dilakukan pengujian ulang sebanyak digit
bilangan prima yang diambil. Jika pada pengujian terakhir atau
, maka bilangan tersebut pasti bilangan prima.
Demikian sehingga, kemungkinan acak sebagai witness pada bilangan sebagai bilangan tidak prima. Ulangi pengujian t kali. Jika perhitungan menghasilkan 1 atau -
1, tetapi tidak selalu menghasilkan 1, maka tingkat kesalahan kemungkinan p sebagai prima dengan
.
Contoh 1: Penulis ingin mengetahui apakah 17 adalah bilangan prima a
2 p
Sesuai dengan ketentuan diatas dapat diambil kesimpulan bahwa merupakan
bilangan prima Contoh 2: Penulis ingin mengetahui apakah
adalah bilangan prima a
3 p
Untuk hasil diatas tidak sesui dengan ketentuan pada point 2 dan 3 diatas maka dilakukan pengujian sekali lagi dengan mengganti nilai a.
a 2
p
Jika pengujian telah dilakukan sebanyak 2 kali dengan mengganti nilai a, namun hasilnya tidak sesuai dengan point 2 dan 3 diatas, maka dipastikan bilangan 27 bukan
merupakan bilangan prima.
Contoh 3: Penulis ingin mengetahui apakah adalah bilangan prima
a 2
p
Sesuai dengan ketentuan point 2 dan 3 diatas dapat diambil kesimpulan bahwa 103 merupakan bilangan prima
2.4 Algoritma FEAL Fast Data Encipherment Agorithm
FEAL merupakan singkatan dari Fast Data Encipherment Agorithm. FEAL merupakan enkripsi tipe simetris block ciphers. Algoritma ini dibuat dengan tujuan
sebagai alternatif dari Data Encryption Standart DES dan di desain agar dapat beroperasi dengan lebih cepat pada perangkat lunak. FEAL termasuk kedalam
keluarga algoritma yang memainkan peranan penting ke dalam perkembangan dan perbaikan dari berbagai macam teknik kriptanalis. Termasuk kriptanalis linear dan
diferensial. Sama halnya seperti DES, FEAL berbasis algoritma Fiestel. FEAL pertama kali di publikasikan pada tahun 1987 oleh akhiro shmizu dan Shozi
Miyaguchi dari NTT. Cipher ini rentan terhadap berbagai bentuk kriptanalis, dan telah berperan penting sebagai katalis pada pertemuan kriptanalis diferensial dan linear.
Livia. 2010
Terdapat sejumlah revisi yang berbeda dari FEAL, meskipun semuanya merupakan cipher Fiestel, dan menggunakan dasar putaran kunci yang sama dan
beroperasi pada blok 64-bit. FEAL-N memetakan bit blok plaintext dengan
menggunakan 64-bit kunci rahasia. Sama halnya dengan DES, FEAL menggunakan N putaran cipher Feistel, namun dengan fungsi-f jauh lebih yang sederhana, dan di
jumlahkan dengan state awal dan akhir yang melakukan XOR sebagian dari kedua data seperti melakukan subkey langsung dengan sebagian data.
FEAL mempunyai panjang blok 64 bit, dibagi menjadi 32 + 32 blok, dan memiliki iterasi sebanyak 8 ronde seperti pada gambar. 2.9 dibawah ini:
Gambar 2.9 Diagram Alir Algoritma FEAL Semuil dan Wijaya, 2009
ciphertext
2.4.1 Sejarah dan penjelasan Algoritma FEAL
Untuk proses enkripsi, pertama kali program akan memerkas terlebih dahulu ada atau tidaknya teks pada kotak plaintext sebagi text input proses enkripsi, jika teks belum
dimasukkan maka akan ditampilkan pesan peringatan dan program akan dihentikan. Jika teks sudah dimasukkan maka akan dilakukan pengecekan karakter pada teks
masukan tersebut untuk validasi data. Pada fungsi enkrip, kemudian akan di cek jumkah karakter dari plaintextnya. Jika plaintext bukan kelipatan dari blok yang
panjangnya 64 bit, maka akan ditambahakan angka “0” sebanyak jumlah karakter yang perlu ditambahkan agar jumlahnya merupakan kelipatan 64 bit dikurangi satu,
dan karakter terakhir ditambahkan adalah nilai dari banyaknya karakter ditambahkan.
Berikut akan dijelaskan salah satu algoritma FEAL-N, yaitu FEAL-8, a.
Terdapat fungsi f fA,Y yang memetakan pasangan masukan 32 x 16 bit menjadi keluaran 32 bit.
b. Pada fungsi f tersebut terdapat dua byte-oriented data subtitusi S0 dan S1 yang
masing-masing digunakan dua kali. c.
Masing-masing data subtitusi tersebut akan memetakan sepasang masukan 8- bit menjadi 8-bit keluaran.
d. S0 dan S1 menambahkan 1 bit d e 0,1 menjadi 8-bit argumen x dan y,
dengan mengabaikan carry teratas, kemudian hasilnya di geser ke kiri sebanyak 2-bit ROT2
S x, y = ROT 2x + y + mod 256 e.
Terdapat pula fungsi key schedule fK A, B yang sama seperti fungsi f, fungsi ini memetakan dua 32-bit input menjadi keluaran 32-bit.
f. Pada tabel 2.3 dibawah ini, Ai, Bi, Yi, ti, dan Ui adalah variable berukuran 8-bit
Tabel 2.3 Sistem Kriptografi Algoritma FEAL
U←f A,Y U←fK A, B
t1 Ao
⊕A1 ⊕Y0 Ao
⊕A1 t2
A2 ⊕A3 ⊕Y1
A2 ⊕A3
U1 S1t1, t2
S1t1, t2 ⊕B0
U2 S0t2, U1
S0t2, U1 ⊕B1
U0 S0A0, U1
S0A0, U1 ⊕B2
U3 S1A3, U2
S1A3, U2 ⊕B3
2.4.2 Langkah Enkripsi Algoritma FEAL
Adapun langkah enkripsi pada algoritma FEAL adalah sebagai berikut:
1. Algoritma
ini menerima
input berupa
64-bit plaintext
dan 64-bit kunci 2.
Jika inputan 64-bit plaintext maka keluarannya adalah 64-bit blok ciphertext C= C1, C2, C3, ..., C64
3. Dengan fungsi key schedule yang dijelaskan dibawah, maka ubah 16-bit
subkey menjadi K1 dan K 4.
Defenisikan M
L
= M
1
, M2, M3, ... M32, dan M
R
= M
33
, M34, M35, ...,M64 5.
Lakukan XOR initial subkey: L0, R0
←ML, MR ⊕ K8, K9,K10, K11. 6.
R0 ←R0⊕L0. 7.
Untuk i = 1 hingga i = 8, lakukan: Li
←Ri-1 Ri
←Li-1 ⊕fRi-1, Ki-1 Gunakan Table 1 untuk fA, Y dengan
A = Ri-1=A0, A1, A2, A3 dan Y = Ki-1=Y0, Y1
8. Ls ← Ls⊕Rs
9. Lakukan XOR final subkey
Rs,Ls ←Rs,Ls ⊕K12,K13,K14,K15
10. C ←Rs, Ls
Algoritma dari proses pembangkit kunci adalah: 1.
Pilih dua bilangan prima yang berbeda p dan q
2. Hitung
3. Hitung
4. Pilih sebua integer e dengan batas
Dan memenuhi syarat:
Dengan menggunakan algoritma extended euclian dapat diperoleh nilai d, dengan batas
dan memenuhi syarat: ed ≡ 1 mod Ө
5. Diperoleh kunci public e, n dan kunci private d, n
6. Untuk memperoleh nilai signature digunakan persamaan:
S = H
d
mod n, Nilai H diambil dari nilai validasi
7. Dan untuk verifikasi digunakan persamaan
V = s
e
mod n
Contoh Enkripsi 1:
Diketahui public key: 2203, 5959 Private key
: 2667, 5959 Nilai signature : 3784
Ciphertext:
2.4.3 Proses Validasi Key Schedule Algoritma FEAL
Untuk proses validasi digunakan CRC cek. Pada CRC cek, pertama kali dilakukan inisialisasi tabel kemudian iCRC diatur sehingga semua bit-nya bernilai satu. Tabel
CRC terdiri dai 256 buah nilai yang tiap nilainya mewakili satu karakter. Nilai ini dibuat secara acak, yang masing-masing memiliki panjang 64 bit. Setiap karakter nilai
ini dibuat secara acak, yang masing-masing memiliki panjang 64 bit.
Fungsi key schedule: 1.
Fungsi ini menerima masukan 64-bit kunci K = k1
… k64. 2.
Sedangkan keluarannya adalah 256-bit extended key 16-bit subkey Ki, 0 ≤ i ≤ 15.
3. Inisialisasi:
U-2 ← 0, U-1 ← k1 … k32, U0 ← k33 … k64.
U ≝U0, U1, U2, U3 untuk 8-bit Ui.
4. Hitung K0, ..., K15 untuk i = 1 hingga i = 8:
a. U ←fKUi-2, Ui-1, Ui-3
fK didefinisikan pada Tabel 1, dengan A dan B menunjukkan 4-byte vector A0, A1, A2, A3, B0, B1, B2, B3
b. K2i-2 = U0, U1
K2i-1 = U2, U3 Ui
←U.
2.4.4 Proses Dekripsi algoritma FEAL
Proses dekripsi FEAL sama dengan proses enkripsi, hanya pada proses dekripsi input yang digunakan berupa ciphertext dan proses kerja kebalikan dari proses enkripsi.
Pada proses dekripsi urutan kunci yang digunakan merupaan kebalikan dari urutan kunci yang digunakan pada proses enkripsinya. Untuk mendekripsi ciphertext kembali
menjadi plaintext, digunakan cara yang sama dengan sewaktu mengenkripsi plaintext menjadi ciphertext, yaitu dengan menggunakan kunci K yang sama dan ciphertext C =
RS, LS yang menggantikan masukan plaintext. Namun fungsi key schedule digunakan secara terbalik.
Untuk lebih spesifik, berikut ini adalah urutan key schedule pada saat melakukan dekripsi:
1. Subkey K12, K13,K14,K15 digunakan untuk XOR initial subkey 2. Sedangkan subkey K8,K9,K10,K11 digunakan untuk XOR final subkey.
3. Dan putaran kunci digunakan dari i=8 hingga i=1 tahap 7
Contoh Dekripsi 1:
Diketahui kunci yang digunakan : elektro
Nilai signature yang dimasukkan :
Public key : 2203, 5959
Signature : 3784
Plaintext:
2.5 Algoritma ElGamal