Minggu, 09 Mei 2010

TUGAS KEAMANAN KOMPUTER PERTEMUAN 5

1. SHA-1

Pada awalnya, algoritma SHA-1 ini dianggap cukup aman karena satu-satunya cara untuk mencari kolisi (collision) adalah dengan menggunakan serangan brute-force yang memiliki kompleksitas operasi sebesar 280, yang dengan super komputer yang ada sekalipun hanya mampu dicari dalam hitungan jutaan tahun. Adapun percobaan serangan terhadap SHA-1 lainnya memang ada yang mampu mencari kolisi dengan kompleksitas kurang 280 tetapi hal tersebut dilakukan terhadap versi yang dikurangi (reduced-version) dari SHA-1, yaitu putarannya hanya ada 53. Pada bulan Februari 2005, tiga orang peneliti dari Cina, Xiaoyun Wang, Yiqun Lisa Yin, dan Hongbo Yu, mempublikasikan bahwa mereka dapat mencari kolisi dalam fungsi SHA-1 versi penuh (full version) dalam operasi dengan kompleksitas 269. Angka tersebut sebenarnya angka yang masih besar karena untuk melakukannya akan membutuhkan waktu 170.000 tahun dengan menggunakan komputer yang tercepat saat ini. Akan tetapi, hal ini cukup menjadi pembicaraan hangat dunia dalam dunia kriptografi. Metode yang dilakukan oleh para peneliti tersebut adalah dengan menggunakan metode yang berdasarkan metode yang sebelumnya telah digunakan untuk mencari kolisi terhadap fungsi-fungsi hash yang lain seperti MD5 dan

SHA-0, tentunya dengan berbagai perbaikan

Fungsi Hash

Fungsi hash adalah fungsi yang menerima masukan string yang panjangnya sembarang dan

mengonversinya menjadi string keluaran yang panjangnya tetap. Persamaan fungsi hash dapat dinyatakan sebagai berikut:

h = H(M)

2. X.509

X.509 didefinisikan sebagai kerangka kerja (framework) untuk pengadaan servis autentikasi, dengan direktori X.500 kepada pengguananya. Direktori mungkin menyediakan repository dari sertifikat kunci public. Setiap sertifikat mengandung kunci public dari pengguna dan diberi tanda dengan kunci privat yang dipercaya sebagai kewenangan sertifikat. Dalam penambahan, X.509 menyediakan alternative protocol autentikasi yang berdasar atas penggunaan sertifikat dengan kunci public.


X.509 merupakan standar yang penting karena struktur dari sertifikat dan protocol autentikasi tersedia dalam X.509 yang digunakan dalam berbagai macam hubungan. Sebagai contoh, format sertifikat X.509 digunakan dalam S/MIME, kemanan IP, dan SSL/TLS serta SET.

X.509 telah mulai dirintis pada tahun 1988. Standar dari bebarapa pembahasan mengenai keamanan telah didokumentasikan dalam [IANS90] dan [MITC90]; perbaikan ini telah mulai dilakukan sejak tahun 1993. Versi ketiga pada tahun 1995 dan diperbarui pada tahun 2000.

X.509 berdasar atas penggunaan dari kunci public kriptography dan tanda tangan digital. Standarnya tidak mengatur masalah spesifikasi mengenai algoritma yang digunakan tetapi disarankan menggunakan RSA. Skema Tanda tangan digital ini seperti menggunakan fungsi hash. Lagi – lagi tidak ada standarnya dalam pengguanaan atas spesifikasi fungsi hash yang digunakan. Pada tahun 1988 anjuran mencakup deskripsi mengenai saran penggunaan algoritma; algoritma ini telah diganti sejak tahun 1993. gambar 1 memperlihatkan generasi dari sertifikat menggunakan kunci public.

Gambar 1. generasi sertifikat menggunakan kunci public.

Dalam otentikasi dikenal tiga macam otentikasi yaitu :

1. Pesan

2. Entity

3. Data origin

Dalam X.509 ini dapat memberikan otentikasi dari ketiga macam otentikasi diatas. Mengenai bagaiamana X.509 dapat memenuhi ketiganya dapat dibahas dalam bab 2

SERTIFIKAT

Inti dari skema X.509 adalah sertifikat kunci public yang berasosiasi dengan setiap pengguna. Sertifikat pengguna dianggap dibuat oleh seseorang yang dipercaya sebagai ahli sertifikat, CA (certification authority) dan disimpan dalam direktori oleh CA atau oleh pengguna. Direktori penyedia (directory server) tidak bertanggung jawab atas pembuatan kunci publik atau fungsi dari penyedia sertifikat; direktori (directory serve) hanya menyediakan lokasi yang mudah diakses guna pengguna unutk mendapatkan sertifikat. Gambar 2 menunjukan format umum sertifikat yang terdiri dari beberapa elemen :

  • Version: pembeda atas format sertifikat yang digunakan; format awal yang digunakan adalah versi 1. Jika terdapat Issuer Unique Identifier atau Subject Unique Identifier, seharusnya versi 2. jika tersedia extensions satu atau lebih, versinya seharusnya versi 3.
  • Serial number: merupakan bilangan bulat, unik sesuai dengan keputusan CA, hal itu tidak bersifait ambigu yang bersama dengan sertifikat ini.
  • Signature algorithm identifier: algoritma yang digunakan untuk menandai sertifikatnya, selalu digabung dengan parameter yang lainnya. Karena informasi ini diulang dalam lingkup penanda (the Signature field) pada bagian akhir dari sertifikat, lingkup ini kecil, jika apapun kegunaan.
  • Issuer name: Nama X.500 sebagai CA yang membuat dan menandai sertifikat ini.
  • Period of validity: Mengandung dua tanggal : awal dan akhir mas berlakunya sertifikat.
  • Subject name: Nama dari pengguna sertifikat ini. Dalam hal ini sertifikat menandai kunci publik dari pengguna yang berhubungan dengan kunci privat
  • Subject’s public-key information: Kunci publik pengguna, ditambah algoritma penanda, kunci yang digunakan selalu digabungkan dengan parameter lainya.
  • Issuer unique identifier: pilihan bit string yang digunkan untuk mengindentifikasi hasil CA yang unik dalam X.500 nama merupakan sebagai wujud yang berbeda (different entities).
  • Subject unique identifier: pilihan bit string yang digunakan untuk mengidentifikasi subjek yang unik dalam X.500 nama merupakan sebagai wujud yang berbeda (different entities).
  • Extensions: sebuah satuan satu atau lebih extention. Extention ditambahkan pada versi ke-3 dan dibicarakan selanjutnya.
  • Signature: menutupi semua isi sertifikat; ini mengandung nilai hash bagian lainnya, dienkripsi dengan kunci privat CA. ini menagndung pengidentifikasi algoritma penanda (the signature algorithm identifier)
  • 3.RSA

    RSA di bidang kriptografi adalah sebuah algoritma pada enkripsi public key. RSA merupakan algoritma pertama yang cocok untuk digital signature seperti halnya ekripsi, dan salah satu yang paling maju dalam bidang kriptografi public key. RSA masih digunakan secara luas dalam protokol electronic commerce, dan dipercaya dalam mengamnkan dengan menggunakan kunci yang cukup panjang.
    Operasional
    Pembangkitan Kunci
    Semisal Alice berkeinginan untuk mengizinkan Bob untuk mengirimkan kepadanya sebuah pesan pribadi (private message) melalui media transmisi yang tidak aman (insecure). Alice melakukan langkah-langkah berikut untuk membuat pasangan kunci public key dan private key:
    1. Pilih dua bilangan prima p ≠ q secara acak dan terpisah untuk tiap-tiap p dan q. Hitung N = p q. N hasil perkalian dari p dikalikan dengan q.
    2. Hitung φ = (p-1)(q-1).
    3. Pilih bilangan bulat (integer) antara satu dan φ (1 < e < φ) yang juga merupakan coprime dari φ.
    4. Hitung d hingga d e ≡ 1 (mod φ).
    • bilangan prima dapat diuji probabilitasnya menggunakan Fermat's little theorem- a^(n-1) mod n = 1 jika n adalah bilangan prima, diuji dengan beberapa nilai a menghasilkan kemungkinan yang tinggi bahwa n ialah bilangan prima. Carmichael numbers (angka-angka Carmichael) dapat melalui pengujian dari seluruh a, tetapi hal ini sangatlah langka.
    • langkah 3 dan 4 dapat dihasilkan dengan algoritma extended Euclidean; lihat juga aritmetika modular.
    • langkah 4 dapat dihasilkan dengan menemukan integer x sehingga d = (x(p-1)(q-1) + 1)/e menghasilkan bilangan bulat, kemudian menggunakan nilai dari d (mod (p-1)(q-1));
    • langkah 2 PKCS#1 v2.1 menggunakan &lamda; = lcm(p-1, q-1) selain daripada φ = (p-1)(q-1)).
    Pada public key terdiri atas:
    • N, modulus yang digunakan.
    • e, eksponen publik (sering juga disebut eksponen enkripsi).
    Pada private key terdiri atas:
    • N, modulus yang digunakan, digunakan pula pada public key.
    • d, eksponen pribadi (sering juga disebut eksponen dekripsi), yang harus dijaga kerahasiaannya.
    Biasanya, berbeda dari bentuk private key (termasuk parameter CRT):
    • p dan q, bilangan prima dari pembangkitan kunci.
    • d mod (p-1) dan d mod (q-1) (dikenal sebagai dmp1 dan dmq1).
    • (1/q) mod p (dikenal sebagai iqmp).
    Bentuk ini membuat proses dekripsi lebih cepat dan signing menggunakan Chinese Remainder Theorem (CRT). Dalam bentuk ini, seluruh bagian dari private key harus dijaga kerahasiaannya.
    Alice mengirimkan public key kepada Bob, dan tetap merahasiakan private key yang digunakan. p dan q sangat sensitif dikarenakan merupakan faktorial dari N, dan membuat perhitungan dari d menghasilkan e. Jika p dan q tidak disimpan dalam bentuk CRT dari private key, maka p dan q telah terhapus bersama nilai-nilai lain dari proses pembangkitan kunci.
    Proses enkripsi pesan
    Misalkan Bob ingin mengirim pesan m ke Alice. Bob mengubah m menjadi angka n < N, menggunakan protokol yang sebelumnya telah disepakati dan dikenal sebagai padding scheme.
    Maka Bob memiliki n dan mengetahui N dan e, yang telah diumumkan oleh Alice. Bob kemudian menghitung ciphertext c yang terkait pada n:

    Perhitungan tersebut dapat diselesaikan dengan cepat menggunakan metode exponentiation by squaring. Bob kemudian mengirimkan c kepada Alice.
    Proses dekripsi pesan
    Alice menerima c dari Bob, dan mengetahui private key yang digunakan oleh Alice sendiri. Alice kemudian memulihkan n dari c dengan langkah-langkah berikut:

    Perhitungan diatas akan menghasilkan n, dengan begitu Alice dapat mengembalikan pesan semula m. Prosedur dekripsi bekerja karena
    .
    Kemudian, dikarenakan ed ≡ 1 (mod p-1) dan ed ≡ 1 (mod q-1), hasil dari Fermat's little theorem.

    dan

    Dikarenakan p dan q merupakan bilangan prima yang berbeda, mengaplikasikan Chinese remainder theorem akan menghasilkan dua macam kongruen
    .
    serta
    .
    Contoh proses
    Berikut ini merupakan contoh dari enkripsi RSA dan dekripsinya. Parameter yang digunakan disini berupa bilangan kecil.
    Kita membuat
    p = 61 — bilangan prima pertama (harus dijaga kerahasiannya atau dihapus secara hati-hati)
    q = 53 — bilangan prima kedua (harus dijaga kerahasiannya atau dihapus secara hati-hati)
    N = pq = 3233 — modulus (diberikan kepada publik)
    e = 17 — eksponen publik (diberikan kepada publik)
    d = 2753 — eksponen pribadi (dijaga kerahasiannya)
    Public key yang digunakan adalah (e,N). Private key yang digunakan adalah d. Fungsi pada enkripsi ialah:
    encrypt(n) = ne mod N = n17 mod 3233
    dimana n adalah plaintext Fungsi dekripsi ialah:
    decrypt(c) = cd mod N = c2753 mod 3233
    dimana c adalah ciphertext
    Untuk melakukan enkripsi plaintext bernilai "123", perhitungan yang dilakukan
    encrypt(123) = 12317 mod 3233 = 855
    Untuk melakukan dekripsi ciphertext bernilai "855" perhitungan yang dilakukan
    decrypt(855) = 8552753 mod 3233 = 123
    Kedua perhitungan diatas diselesaikan secara effisien menggunakan square-and-multiply algorithm pada modular exponentiation.
    4. CAST-128
    CAST adalah suatu prosedur perancangan untuk algoritma enkripsi simetris. Dekembangkan pada tahun 1997 oleh Carlisle Adams dan Stafford Tavares dari Entrust Technologies Salah satu algoritma spesifik yang dikembangkan dalam CAST adalah CAST ‐128, yang didefinisikan dalam RFC 2144. Dibuat dengan panjang kunci mulai dari 40 bit sampai 128 bit dengan kenaikan 8 bit (40, 48, 56,…..,128). CAST menggunakan S‐Boxes tetap, tetapi lebih besar dibandingkan dengan DES. S‐Boxesnya dirancang sangat linier dan tahan terhap
    5. IDEA
    IDEA (The International Data Encryption Algorithm) merupakan sebuah Block Chiper Simetrik yang dikembangkan oleh Xuejia Lai dan James Massey dari SFIT (Swiss Federal Institute of Technology) pada tahun 1991. IDEA menggunakan sebuah key 128 bit. IDEA mempunyai perbedaan dengan DES dalam dua hal, yaitu fungsi Round dan fungsi Sub Key Generation
    Kapasitas untuk menciptakan dan memahami arti dari IDEA dianggap penting dan melukiskan corak manusia. Dalam pengertian umum, suatu IDEA [muncul] sebagai suatu refleks, secara spontan, bahkan tanpa berpikir.
    6. ELGAMAL
    Algoritma ElGamal merupakan algoritma enkripsi kunci asimetris untuk kriptografi kunci publik yang didasari kesepakatan kunci Diffie-Hellman. Hal ini diusulkan oleh Taher Elgamal pada tahun 1984. Algoritma ElGamal digunakan pada perangkat lunak GNU Privacy Guard, yang merupakan versi dari PGP, dan kriptosistem lainnya. Digital Signature Algorithm(DSA) merupakan varian dari skema tanda tangan digital ElGamal, dan tidak sama dengan algoritma ElGamal. ElGamal merupakan skema tanda tangan digital berbasis logaritma diskrit. ElGamal terdiri dari tiga komponen, yaitu pembangkit kunci (key generator), algoritma enkripsi, dan algoritma dekripsi
    7. DSS
    U.S. Diplomatic Security Service (DSS) adalah lengan tangan pelaksanaan hukum yang pemerintah pusat Departemen Amerika Serikat. Mayoritas tentang Agen Khusus nya adalah anggota Jasa/Layanan asing dan agen pelaksanaan hukum pemerintah pusat pada waktu yang sama, membuatnya unik. Kantor Keamanan Diplomatik, biasanya lebih dikenal sebagai Keamanan Diplomatik, atau DS, adalah organisasi induk yang Melayani Keamanan diplomatik. Kedua-Duanya terminologi, DSS atau DS, dapat digunakan dengan mempertukarkan Deparlu AS dengan para agen untuk mengacu pada DSS. DSS adalah tersusun dari agen pelaksanaan hukum pemerintah pusat, yang terdiri dari Agen Pemerintah pusat Amerika Serikat yang mengamanatkan untuk melayani luar negeri dan domestically.
    8. MD5
    Message Digest 5 (MD-5) adalah salah satu penggunaan fungsi hash satu arah yang paling banyak digunakan. MD-5 merupakan fungsi hash kelima yang dirancang oleh Ron Rivest dan didefinisikan pada RFC 1321[10]. MD-5 merupakan pengembangan dari MD-4 dimana terjadi penambahan satu ronde[1,3,10]. MD-5 memproses teks masukan ke dalam blok-blok bit sebanyak 512 bit, kemudian dibagi ke dalam 32 bit sub blok sebanyak 16 buah. Keluaran dari MD-5 berupa 4 buah blok yang masing-masing 32 bit yang mana akan menjadi 128 bit yang biasa disebut nilai hash[3,10]. Pada Gambar 3.1 terlihat simpul utama dari MD- 5. Simpul utama MD5 mempunyai blok pesan dengan panjang 512 bit yang masuk ke dalam 4 buah ronde. Hasil keluaran dari MD-5 adalah berupa 128 bit dari byte terendah A dan tertinggi byte D.
    9.RC2/40
    yang membutuhkan 40 bit material kunci pada saat algoritma dijalankan satu kali dengan nilai counter sama dengan 1 dan bit yang paling dari 40 bit tersebut digunakan sebagai kunci.
    10. 3DES
    3DES (Triple Data Encryption Standard) merupakan salah satu algoritma simetris pada kriptografi yang digunakan untuk mengamankan data dengan cara menyandikan data. Proses yang dilakukan dalam penyandian datanya, yaitu proses enkripsi dan proses dekripsi. Algoritma 3DES adalah suatu algoritma pengembangan dari algoritma DES (Data Encryption Standard). Perbedaan DES dengan 3DES terletak pada panjangnya kunci yang digunakan. Pada DES menggunakan satu kunci yang panjangnya 56-bit, sedangkan pada 3DES menggunakan 3 kunci yang panjangnya 168- bit (masing-masing panjangnya 56-bit). Pada 3DES, 3 kunci yang digunakan bisa bersifat saling bebas (K1 ≠ K2 ≠ K3) atau hanya dua buah kunci yang saling bebas dan satu kunci lainnya sama dengan kunci pertama (K1 ≠ K2 dan K3 = K1). Karena tingkat kerahasiaan algoritma 3DES terletak pada panjangnya kunci yang digunakan, maka penggunaan algoritma 3DES dianggap lebih aman dibandingkan dengan algoritma DES.

Rabu, 05 Mei 2010

TUGAS KEAMANAN KOMPUTER PERTEMUAN 4

Data Encryption Standard (DES)

Sejarah DES

· Algoritma DES dikembangkan di IBM dibawah kepemimpinan W.L. Tuchman pada tahun 1972. Algoritma ini didasarkan pada algoritma LUCIFER yang dibuat oleh Horst Feistel.

· Algoritma ini telah disetujui oleh National Bureau of Standard (NBS) setelah penilaian kekuatannya oleh National Security Agency (NSA) Amerika Serikat.

Tinjauan Umum

· DES termasuk ke dalam sistem kriptografi simetri dan tergolong jenis cipher blok.

· DES beroperasi pada ukuran blok 64 bit. DES mengenkripsikan 64 bit plainteks menjadi 64 bit cipherteks dengan menggunakan 56 bit kunci internal (internal key) atau upa-kunci (subkey). Kunci internal dibangkitkan dari kunci eksternal (external key) yang panjangnya 64 bit.

· Skema global dari algoritma DES adalah sebagai berikut (lihat Gambar 1):

1. Blok plainteks dipermutasi dengan matriks permutasi awal (initial permutation atau IP).

2. Hasil permutasi awal kemudian di-enciphering- sebanyak 16 kali (16 putaran). Setiap putaran menggunakan kunci internal yang berbeda.

3. Hasil enciphering kemudian dipermutasi dengan matriks permutasi balikan (invers initial permutation atau IP-1 ) menjadi blok cipherteks.

Plainteks


IP


16 kali Enciphering


IP-1


Cipherteks

Gambar 1. Skema Global Algoritma DES

· Di dalam proses enciphering, blok plainteks terbagi menjadi dua bagian, kiri (L) dan kanan (R), yang masing-masing panjangnya 32 bit. Kedua bagian ini masuk ke dalam 16 putaran DES.

· Pada setiap putaran i, blok R merupakan masukan untuk fungsi transformasi yang disebut f. Pada fungsi f, blok R dikombinasikan dengan kunci internal Ki. Keluaran dai fungsi f di-XOR-kan dengan blok L untuk mendapatkan blok R yang baru. Sedangkan blok L yang baru langsung diambil dari blok R sebelumnya. Ini adalah satu putaran DES.

Secara matematis, satu putaran DES dinyatakan sebagai

Li = Ri – 1

Ri = Li – 1 Å f(Ri – 1, Ki)

Gambar 2 memperlihatkan skema algoritma DES yang lebih rinci.

Gambar 2. Algoritma Enkripsi dengan DS

· Catatlah bahwa satu putaran DES merupakan model jaringan Feistel (lihat Gambar 3).

Gambar 3. Jaringan Feistel untuk satu putaran DES

· Perlu dicatat dari Gambar 2 bahwa jika (L16, R16) merupakan keluaran dari putaran ke-16, maka (R16, L16) merupakan pra-cipherteks (pre-ciphertext) dari enciphering ini. Cipherteks yang sebenarnya diperoleh dengan melakukan permutasi awal balikan, IP-1, terhadap blok pra-cipherteks.

Permutasi Awal

Sebelum putaran pertama, terhadap blok plainteks dilakukan permutasi awal (initial permutation atau IP). Tujuan permutasi awal adalah mengacak plainteks sehingga urutan bit-biit di dalamnya berubah. Pengacakan dilakukan dengan menggunakan matriks permutasi awal berikut ini:

58

50

42

34

26

18

10

2

60

52

44

36

28

20

12

4

62

54

46

38

30

22

14

6

64

56

48

40

32

24

16

8

57

49

41

33

25

17

9

1

59

51

43

35

27

19

11

3

61

53

45

37

29

21

13

5

63

55

47

39

31

23

15

7

Cara membaca tabel/matriks di atas: dua entry ujung kiri atas (58 dan 50) berarti:

“pindahkan bit ke-58 ke posisi bit 1”

“pindahkan bit ke-50 ke posisi bit 2”, dst

Pembangkitan Kunci Internal

· Karena ada 16 putaran, maka dibutuhkan kunci internal sebanyak 16 buah, yaitu K1, K2, …, K16. Kunci-kunci internal ini dapat dibangkitkan sebelum proses enkripsi atau bersamaan dengan proses enkripsi.

· Kunci internal dibangkitkan dari kunci eksternal yang diberikan oleh pengguna. Kunci eksternal panjangnya 64 bit atau 8 karakter.

· Misalkan kunci eksternal yang tersusun dari 64 bit adalah K.

Kunci eksternal ini menjadi masukan untuk permutasi dengan menggunakan matriks permutasi kompresi PC-1 sebagai berikut:

57

49

41

33

25

17

9

1

58

50

42

34

26

18

10

2

59

51

43

35

27

19

11

3

60

52

44

36

63

55

47

39

31

23

15

7

62

54

46

38

30

22

14

6

61

53

45

37

29

21

13

5

28

20

12

4

Dalam permutasi ini, tiap bit kedelapan (parity bit) dari delapan byte kunci diabaikan. Hasil permutasinya adalah sepanjang 56 bit, sehingga dapat dikatakan panjang kunci DES adalah 56 bit.

Selanjutnya, 56 bit ini dibagi menjadi 2 bagian, kiri dan kanan, yang masing-masing panjangnya 28 bit, yang masing-masing disimpan di dalam C0 dan D0:

C0: berisi bit-bit dari K pada posisi

57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18

10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36

D0: berisi bit-bit dari K pada posisi

63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22

14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4

Selanjutnya, kedua bagian digeser ke kiri (left shift) sepanjang satu atau dua bit bergantung pada tiap putaran. Operasi pergeseran bersifat wrapping atau round-shift. Jumlah pergeseran pada setiap putaran ditunjukkan pada Tabel 1 sbb:

Tabel 1. Jumlah pergeseran bit pada setiap putaran

Putaran, i Jumlah pergeseran bit

1 1

2 1

3 2

4 2

5 2

6 2

7 2

8 2

9 1

10 2

11 2

12 2

13 2

14 2

15 2

16 1

Misalkan (Ci, Di) menyatakan penggabungan Ci dan Di. (Ci+1, Di+1) diperoleh dengan menggeser Ci dan Di satu atau dua bit.

Setelah pergeseran bit, (Ci, Di) mengalami permutasi kompresi dengan menggunakan matriks PC-2 berikut:

14

17

11

24

1

5

3

28

15

6

21

10

23

19

12

4

26

8

16

7

27

20

13

2

41

52

31

37

47

55

30

40

51

45

33

48

44

49

39

56

34

53

46

42

50

36

29

32

Dengan permutasi ini, kunci internal Ki diturunkan dari (Ci, Di) yang dalam hal ini Ki merupakan penggabungan bit-bit Ci pada posisi:

14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10

23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2

dengan bit-bit Di pada posisi:

41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48

44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32

Jadi, setiap kunci internal Ki mempunyai panjang 48 bit.

Proses pembangkitan kunci-kunci internal ditunjukkan pada Gambar 4.

· Bila jumlah pergeseran bit-bit pada Tabel 1 dijumlahkan semuanya, maka jumlah seluruhnya sama dengan 28, yang sama dengan jumlah bit pada Ci dan Di. Karena itu, setelah putaran ke-16 akan didapatkan kembali C16 = C0 dan D16 = D0.

Gambar 4. Proses pembangkitan kunci-kunci internal DES

Enciphering

· Proses enciphering terhadap blok plainteks dilakukan setelah permutasi awal (lihat Gambar 1). Setiap blok plainteks mengalami 16 kali putaran enciphering (lihat Gambar 2). Setiap putaran enciphering merupakan jaringan Feistel yang secara matematis dinyatakan sebagai

Li = Ri – 1

Ri = Li – 1 Å f(Ri – 1, Ki)

Diagram komputasi fungsi f diperlihatkan pada Gambar 5.

Gambar 5. Rincian komputasi fungsi f

· E adalah fungsi ekspansi yang memperluas blok Ri – 1 yang panjangnya 32-bit menjadi blok 48 bit. Fungsi ekspansi direalisasikan dengan matriks permutasi ekspansi sbb:

32

1

2

3

4

5

4

5

6

7

8

9

8

9

10

11

12

13

12

13

14

15

16

17

16

17

18

19

20

21

20

21

22

23

24

25

24

25

26

27

28

29

28

29

30

31

32

1

· Selanjutnya, hasil ekpansi, yaitu E(Ri – 1), yang panjangnya 48 bit di-XOR-kan dengan Ki yang panjangnya 48 bit menghasilkan vektor A yang panjangnya 48-bit:

E(Ri – 1) Å Ki = A

· Vektor A dikelompokkan menjadi 8 kelompok, masing-masing 6 bit, dan menjadi masukan bagi proses substitusi. Proses substitusi dilakukan dengan menggunakan delapan buah kotak-S (S-box), S1 sampai S8. Setiap kotak-S menerima masukan 6 bit dan menghasilkan keluaran 4 bit. Kelompok 6-bit pertama menggunakan S1, kelompok 6-bit kedua menggunakan S2, dan seterusnya.

(cara pensubstitusian dengan kotak-S sudah dijelaskan pada materi “Prinsip-prinsip Perancangan Cipher Blok”)

Kedelapan kotak-S tersebut adalah:

S1:

14

4

13

1

2

15

11

8

3

10

6

12

5

9

0

7

0

15

7

4

14

2

13

1

10

6

12

11

9

5

3

8

4

1

14

8

13

6

2

11

15

12

9

7

3

10

5

0

15

12

8

2

4

9

1

7

5

11

3

14

10

0

6

13

S2:

15

1

8

14

6

11

3

4

9

7

2

13

12

0

5

10

3

13

4

7

15

2

8

14

12

0

1

10

6

9

11

5

0

14

7

11

10

4

13

1

5

8

12

6

9

3

2

15

13

8

10

1

3

15

4

2

11

6

7

12

0

5

14

9

S3:

10

0

9

14

6

3

15

5

1

13

12

7

11

4

2

8

13

7

0

9

3

4

6

10

2

8

5

14

12

11

15

1

13

6

4

9

8

15

3

0

11

1

2

12

5

10

14

7

1

10

13

0

6

9

8

7

4

15

14

3

11

5

2

12

S4:

7

13

14

3

0

6

9

10

1

2

8

5

11

12

4

15

13

8

11

5

6

15

0

3

4

7

2

12

1

10

14

9

10

6

9

0

12

11

7

13

15

1

3

14

5

2

8

4

3

15

0

6

10

1

13

8

9

4

5

11

12

7

2

14

S5:

2

12

4

1

7

10

11

6

8

5

3

15

13

0

14

9

14

11

2

12

4

7

13

1

5

0

15

10

3

9

8

16

4

2

1

11

10

13

7

8

15

9

12

5

6

3

0

14

11

8

12

7

1

14

2

13

6

15

0

9

10

4

5

3

S6:

12

1

10

15

9

2

6

8

0

13

3

4

14

7

5

11

10

15

4

2

7

12

9

5

6

1

13

14

0

11

3

8

9

14

15

5

2

8

12

3

7

0

4

10

1

13

11

6

4

3

2

12

9

5

15

10

11

14

1

7

6

0

8

13

S7:

4

11

2

14

15

0

8

13

3

12

9

7

5

10

6

1

13

0

11

7

4

9

1

10

14

3

5

12

2

15

8

6

1

4

11

13

12

3

7

14

10

15

6

8

0

5

9

2

6

11

13

8

1

4

10

7

9

5

0

15

14

2

3

12

S8:

13

2

8

4

6

15

11

1

10

9

3

14

5

0

12

7

1

15

13

8

10

3

7

4

12

5

6

11

0

14

9

2

7

11

4

1

9

12

14

2

0

6

10

13

15

3

5

8

2

1

14

7

4

10

8

13

15

12

9

0

3

5

6

11

· Keluaran proses substitusi adalah vektor B yang panjangnya 48 bit. Vektor B menjadi masukan untuk proses permutasi. Tujuan permutasi adalah untuk mengacak hasil proses substitusi kotak-S. Permutasi dilakukan dengan menggunakan matriks permutasi P (P-box) sbb:

16

7

20

21

29

12

28

17

1

15

23

26

5

8

31

10

2

8

24

14

32

27

3

9

19

13

30

6

22

11

4

25

· Bit-bit P(B) merupakan keluaran dari fungsi f.

· Akhirnya, bit-bit P(B) di-XOR-kan dengan Li 1 untuk mendapatkan Ri (lihat Gambar 6):

Ri = Li – 1 Å P(B)

· Jadi, keluaran dari putaran ke-i adalah

(Li, Ri) = (Ri – 1 , Li – 1 Å P(B))

Gambar 6. Skema perolehan Ri

Permutasi Terakhir (Inverse Initial Permutation)

· Permutasi terakhir dilakukan setelah 16 kali putaran terhadap gabungan blok kiri dan blok kanan.

· Proses permutasi menggunakan matriks permutasi awal balikan (inverse initial permutation atau IP-1 ) sbb:

40

8

48

16

56

24

64

32

39

7

47

15

55

23

63

31

38

6

46

14

54

22

62

30

37

5

45

13

53

21

61

29

36

4

44

12

52

20

60

28

35

3

43

11

51

19

59

27

34

2

42

10

50

18

58

26

33

1

41

9

49

17

57

25

Dekripsi

· Proses dekripsi terhadap cipherteks merupakan kebalikan dari proses enkripsi. DES menggunakan algoritma yang sama untuk proses enkripsi dan dekripsi. Jika pada proses enkripsi urutan kunci internal yang digunakan adalah K1, K2, …, K16, maka pada proses dekripsi urutan kunci yang digunakan adalah K16, K15, …, K1.

· Untuk tiap putaran 16, 15, …, 1, keluaran pada setiap putaran deciphering adalah

Li = Ri – 1

Ri = Li – 1 Å f(Ri – 1, Ki)

yang dalam hal ini, (R16, L16) adalah blok masukan awal untuk deciphering. Blok (R16, L16) diperoleh dengan mempermutasikan cipherteks dengan matriks permutasi IP-1. Pra-keluaran dari deciphering adalah adalah (L0, R0). Dengan permutasi awal IP akan didapatkan kembali blok plainteks semula.

· Tinjau kembali proses pembangkitan kunci internal pada Gambar 4. Selama deciphering, K16 dihasilkan dari (C16, D16) dengan permutasi PC-2. Tentu saja (C16, D16) tidak dapat diperoleh langsung pada permulaan deciphering. Tetapi karena (C16, D16) = (C0, D0), maka K16 dapat dihasilkan dari (C0, D0) tanpa perlu lagi melakukan pergeseran bit. Catatlah bahwa (C0, D0) yang merupakan bit-bit dari kunci eksternal K yang diberikan pengguna pada waktu dekripsi.

· Selanjutnya, K15 dihasilkan dari (C15, D15) yang mana (C15, D15) diperoleh dengan menggeser C16 (yang sama dengan C0) dan D16 (yang sama dengan C0) satu bit ke kanan. Sisanya, K14 sampai K1 dihasilkan dari (C14, D14) sampai (C1, D1). Catatlah bahwa (Ci – 1, Di – 1) diperoleh dengan menggeser Ci dan Di dengan cara yang sama seperti pada Tabel 1, tetapi pergeseran kiri (left shift) diganti menjadi pergeseran kanan (right shift).

Mode DES

· DES dapat dioperasikan dengan mode ECB, CBC, OFB, dan CFB. Namun karena kesederhanaannya, mode ECB lebih sering digunakan pada paket program komersil meskipun sangat rentan terhadap serangan.

· Mode CBC lebih kompleks daripada EBC namun memberikan tingkat keamanan yang lebih bagus daripada mode EBC. Mode CBC hanya kadang-kadang saja digunakan.

Implementasi Hardware dan Software DES

· DES sudah diimplementasikan dalam bentuk perangkat keras.

· Dalam bentuk perangkat keras, DES diimplementasikan di dalam chip. Setiap detik chip ini dapat mengenkripsikan 16,8 juta blok (atau 1 gigabit per detik).

· Implementasi DES ke dalam perangkat lunak dapat melakukan enkripsi 32.000 blok per detik (pada komputer mainframe IBM 3090).

Keamanan DES

· Isu-isu yang menjadi perdebatan kontroversial menyangkut keamanan DES:

1. Panjang kunci

2. Jumlah putaran

3. Kotak-S

Panjang kunci

· Panjang kunci eksternal DES hanya 64 bit atau 8 karakter, itupun yang dipakai hanya 56 bit. Pada rancangan awal, panjang kunci yang diusulkan IBM adalah 128 bit, tetapi atas permintaan NSA, panjang kunci diperkecil menjadi 56 bit. Alasan pengurangan tidak diumumkan.

· Tetapi, dengan panjang kunci 56 bit akan terdapat 256 atau 72.057.594.037.927.936 kemungkinan kunci. Jika diasumsikan serangan exhaustive key search dengan menggunakan prosesor paralel mencoba setengah dari jumlah kemungkinan kunci itu, maka dalam satu detik dapat dikerjakan satu juta serangan. Jadi seluruhnya diperlukan 1142 tahun untuk menemukan kunci yang benar.

· Tahun 1998, Electronic Frontier Foundation (EFE) merancang dan membuat perangkat keras khusus untuk menemukan kunci DES secara exhaustive search key dengan biaya $250.000 dan diharapkan dapat menemukan kunci selama 5 hari. Tahun 1999, kombinasi perangkat keras EFE dengan kolaborasi internet yang melibatkan lebih dari 100.000 komputer dapat menemukan kunci DES kurang dari 1 hari.

Jumlah putaran

· Sebenarnya, delapan putaran sudah cukup untuk membuat cipherteks sebagai fungsi acak dari setiap bit plainteks dan setiap bit cipherteks. Jadi, mengapa harus 16 kali putaran?

· Dari penelitian, DES dengan jumlah putaran yang kurang dari 16 ternyata dapat dipecahkan dengan known-plaintext attack lebih mangkus daripada dengan brute force attack.

Kotak-S

· Pengisian kotak-S DES masih menjadi misteri tanpa ada alasan mengapa memilih konstanta-konstanta di dalam kotak itu.

Kunci Lemah dan Kunci Setengah Lemah

· DES mempunyai beberapa kunci lemah (weak key). Kunci lemah menyebabkan kunci-kunci internal pada setiap putaran sama (K1 = K2 = … = K16). Akibatnya, enkripsi dua kali berturut-turut terhadap plainteks menghasilkan kembali plainteks semula.

· Kunci lemah terjadi bila bit-bit di dalam Ci dan Di semuanya 0 atau 1, atau setengah dari kunci seluruh bitnya 1 dan setengah lagi seluruhnya 0.

· Kunci eksternal (dalam notasi HEX) yang menyebabkan terjadinya kunci lemah adalah (ingat bahwa setiap bit kedelapan adalah bit paritas).

Kunci lemah (dengan bit paritas) Kunci sebenarnya


0101 0101 0101 0101 0000000 0000000

1F1F 1F1F 1F1F 1F1F 0000000 FFFFFFF

E0E0 E0E0 F1F1 F11F FFFFFFF 0000000

FEFE FEFE FEFE FEFE FFFFFFF FFFFFFF

· Selain kunci lemah, DES juga mempunyai sejumlah pasangan kunci setengah-lemah (semiweak key). Pasangan kunci setengah- lemah mengenkripsikan plainteks menjadi cipherteks yang sama. Sehingga, satu kunci dalam pasangan itu dapat mendekripsi pesan yang dienkripsi oleh kunci yang lain di dalam pasangan itu.

· Kunci setengah-lemah terjadi bila:

1. Register C dan D berisi bit-bit dengan pola 0101…0101 atau 1010…1010

2. Register yang lain (C atau D) berisi bit-bit dengan pola 0000…0000, 1111…1111, 0101…0101, atau 1010…1010

· Ada 6 pasang kunci setengah lemah (dalam notasi HEX):

a. 01FE 01FE 01FE 01FE dan FE01 FE01 FE01 FE01

b. 1FE0 1FE0 0EF1 0EF1 dan E01F E01F F10E F10E

c. 01E0 01E0 01F1 01F1 dan E001 E001 F101 F101

d. 1FFE 1FFE 0EFE 0EFE dan FE1F FE1F FE0E FE0E

e. 011F 011F 010E 010E dan 1F01 1F01 0E01 0E01

f. E0FE E0FE F1FE F1FE dan FEE0 FEE0 FEF1 FEF1