Senin, 29 Maret 2010

DES

  1. Algoritma DES dan GOST

    Algoritma DES

DES (data encrytion standard) mengenkrip plaintext sebesar 64 bit (8 byte) dengan panjang kunci sekitar 56 bit (7 byte), sebanyak 16 putaran. Data 64 bit akan disubtitusi terlebih dahulu dengan permutasi IP (initial permutation). IP digunakan sebelum putaran pertama dari 16 putaran, dan mensubtitusi blok input dengan ketentuan sebagai berikut:

IP = 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.

Sebagai contoh IP akan memindahkan bit ke-58 dari plaintext menjadi bit ke-1, bit ke-50 menjadi bit ke-2, bit ke-43 menjadi bit ke-3, dan seterusnya.

IP (initial permutation) dan final permutation atau invers IP tidak mempengaruhi keamanan dari DES. Tujuan utamanya yaitu hanya untuk memudahkan dalam memanggil data plaintext atau data ciphertext ke dalam chip DES yang berbentuk potongan-potongan byte dalam software/program komputer.

Plaintext yang telah disubtitusi akan dipecah menjadi dua bagian sebesar 32 bit kiri L dan 32 bit kanan R. pada setiap putarannya data kiri akan menjadi data kanan, data kanan akan dilakukan operasi data kiri di-Xor-kan dengan fungsi f.

          Li=Ri-1

          Ri=Li-1 Xor f(Ri-1,Ki)

Kemudian dilanjutkan dengan melakukan subtitusi final permutation atau invers IP (IPinv). Ipinv merupakan invers dari IP dan digambarkan dengan ketentuan sebagai berikut:

Ipinv = 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.

dalam putaran terakhirnya, blok R16L16 tidak terjadi pertukaran tetapi blok ini menjadi input untuk IPinv.
Untuk fungsi f, data sebelah kanan sebesar 32 bit akan dipermutasi dengan expansion permutation (E) sehingga akan menghasilkan ciphertext sebesar 48 bit, kemudian dilakukan operasi Xor dengan blok kunci dan diinputkan ke dalam sbox. Sbox terdiri atas 8 buah. Hasilnya akan disubtitusi dengan P-Box permutation (P) sekaligus membentuk data menjadi 32 bit lagi. Berikut isi dari E dan P:


E = 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.

P = 16, 7, 20, 21, 29, 12, 28, 17,

    1, 15, 23, 26, 5, 18, 31, 10,

2, 8, 24, 14, 32, 27, 3, 9,

Isi dari Sboxnya adalah sebagai berikut:

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, 5,

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, 6,

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, 14, 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.

Blok kunci terdiri atas 16 blok, masing-masing berjumlah 56 bit. Sebelumnya, inputan blok kunci (64 bit) akan didistribusi terlebih dahulu dengan permuted Choice 1 (Pc1) atau disebut juga sebagai Key Permutation (blok kunci menjadi 56 bit), kemudian dipecah menjadi 2 bagian dengan setiap bagian sebesar 28 bit . Setiap blok ke 1, 2, 9, 16 akan dirotasi 1 bit ke kiri, sisanya 2 bit ke kiri kemudian digabungkan kembali menjadi 56 bit. Terakhir dilakukan permutasi dengan Permuted Choice 2 (Pc2) atau disebut juga sebagai Compression Permutation sehingga menjadi 48 bit. Berikut isi dari Pc1 dan Pc2:

Pc1 = 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.

Pc2 = 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.
Analisa Masalah

Dengan berkembangnya sistem komputer dan teknik komunikasi memungkinkan adanya hubungan antar komputer untuk menyalurkan data dari satu komputer ke komputer lain. Maka hal ini dapat menunjang terselesaikannya suatu pekerjaan secara efisien, cepat dan akurat. Namun permasalahannya adalah data tersebut dapat dibaca , dicuri, disalahgunakan, bahkan dirusak oleh pihak-pihak yang tidak bertanggung jawab.

  1. Penyelesaian Masalah

Berdasarkan hal di atas maka salah satu elemen yang paling penting dalam komunikasi menggunakan komputer untuk menjamin kerahasian data adalah enkripsi. Enkripsi adalah sebuah proses yang melakukan sebuah perubahan kode dari yang bisa dimengerti menjadi sebuah kode atau cipher yang tidak bisa dimengerti. Sebuah cipher menggunakan suatu algoritma yang dapat mengkodekan semua aliran data (stream) bit dari sebuah pesan menjadi cryptogram yang tidak dimengerti (unintelligible). Karena teknik cipher merupakan suatu sistem yang telah siap untuk di automasi, maka teknik ini digunakan dalam sebuah sistem keamanan sebuah PC (personal computer)dan sistem keamanan jaringan/network.

Untuk proteksi data yang cukup penting tidak ada jalan lain selain menggunakan program khusus proteksi/enkripsi data. Saat ini telah banyak beredar program khusus proteksi data baik freeware, shareware, maupun komersial yang sangat baik. Pada umumnya program tersebut tidak hanya menyediakan satu metode saja, tetapi beberapa jenis metode.

Teknik enkripsi ada bermacam-macam metode misalnya, DES, TEA, GOST, RSA, Blowfish, Skipjack, Twofish dan lain sebagainya. Pada penulisan tugas akhir Mata Kuliah Sistem Keamanan Lanjut (EC 7010) ini menggunakan algoritma dari metode DES (Data Encryption Standard) dan algoritma dari metode GOST (Gosudarstennyi Standard).

Karena metode DES dan GOST merupaka blok cipher 64 bit (8 byte), kebanyakan data yang dibagi ke dalam 64 bit tidak bulat, oleh sebab itu dalam blok cipher diperlukan data tambahan pada blok terakhir untuk menggenapi blok menjadi 64 bit, hal ini biasanya disebut padding. Data akan ditambahkan dengan bilangan random sebanyak yang dibutuhkan.

Misalkan data berupa text "Enkripsi dan Dekripsi" maka:

Panjang data: 20 byte 20 mod 8 = 4 byte

4 byte tersebut akan diisi oleh bilangan random antara 1 - 255. Misalkan keempat bilangan tersebut secara urut adalah 2, 3, 4, 5, maka data akan menjadi: "Enkripsi dan Dekripsi2345" dan panjang data akan menjadi: 20 + 4 = 24 byte.
  1. Proses Enkripsi

Pada dasarnya proses enkripsi ini terbagi atas 2 tahap, yaitu tahap pertama adalah enkripsi dengan metode DES, dan tahap ke dua enkripsi hasil metode DES dengan metode GOST.

  • Tahap Pertama

Pada tahap pertama dilakukan proses pengenkripsian dengan metode DES. Pertama-tama dilakukan pembentukan subkunci yang terdiri atas 16 blok sepanjang 48 bit (6 byte) setiap bloknya. Terlebih dahulu kunci yang mulanya sepanjang 32 byte akan diambil hanya sepanjang 64 bit (8 byte). Setelah disubtitusi dengan blok Pc1 (permuted choice 1), panjang kunci akan menjadi 56 bit (7 byte). Kemudian untuk setiap blok akan dipecah menjadi 2 bagian (masing-masing 28 bit) dan setiap blok ke 1, 2, 9, 16 akan dirotasi 1 bit ke kiri, sisanya dirotasi 2 bit ke kiri, hasilnya akan disubtitusi lagi dengan blok Pc2 (permuted choice 2) untuk menghasilkan keluaran 48 bit. Pembentukan subkunci akan dijalankan terlebih dahulu, kemudian akan dilakukan pengenkripsian plaintext.

Algoritmanya adalah sebagai berikut:

    1. Panggil Byte2Bin(ByteKey(), 8, KeyBin())
    2. Selama a=0 hingga a=55 lakukan perulangan

      KeySchedule(a)=KeyBin(m_PC1(a))

    1. Akhir perulangan
    2. Panggil CopyMem(c(0), KeySchedule(0), 28)
    3. Panggil CopyMem(d(0), KeySchedule(28), 28)
    4. Selama i=1 hingga i=16 lakukan perulangan
    5. Panggil CopyMem(temp(0), C(0), m_LeftShifts(i))
    6. Panggil CopyMem(c(0), c(m_LeftShifts(i)), 28 - m_LeftShifts(i))
    7. Panggil CopyMem(c(28 - m_LeftShifts(i)), temp(0),

      M_LeftShits(i))

    1. Panggil CopyMem(temp(0), d(0), m_LeftShipts(i))
    2. Panggil CopyMem(d(0), d(m_LeftShifts(i)), 28 - m_LeftShifts(i))
    3. Panggil CopyMem(d(28- m_LeftShifts(i)), temp(0),

    m_LeftShifts(i))

    1. Panggil CopyMem(CD(0), C(0), 28)
    2. Panggil CopyMem(CD(28), d(0), 28)
    3. Selama a=0 hingga a=47 lakukan perulangan

      m_Key(a,I)=CD(m_PC2(a))

    1. Akhir perulangan
    2. Akhir Perulangan
    3. Pesan dimensi Array ByteKey(0 31)

Setelah pembentukan subkey, dilanjutkan dengan melakukan subtitusi plaintext dengan permutasi IP. Plaintext sebesar 64 bit (8 byte) akan dibagi dua masing-masing 32 bit sekaligus disubtitusi dengan m_IP. m_IP merupakan blok bilangan dari inisial permutasi IP. algoritmanya adalah sebagai berikut:

    1. Panggil Byte2Bin(BlockData(), 8, BinBlock())
    2. For a=0 to 31

      L(a)=BinBlock(m_IP(a))

      R(a)=BinBlock(m_IP(a+32))

    1. Next

Fungsi Byte2Bin akan mengubah byte menjadi bit, algoritmanya sebagai berikut:

    1. Panggil CopyMem(BinarryArray(0), m_EmptyArray(0), ByteLen*8)
    2. BinLength=0
    3. Selama a=0 hingga a=(ByteLen-1) lakukan perulangan
    4. ByteValue=ByteArray (a)
    5. Jika (ByteValue and 128) maka BinaryArray(BinLength)=1
    6. Jika (ByteValue and 64) maka BinaryArray(BinLength + 1)=1
    7. Jika (ByteValue and 32) maka BinaryArray(BinLength + 2)=1
    8. Jika (ByteValue and 16) maka BinaryArray(BinLength + 3)=1
    9. Jika (ByteValue and 8) maka BinaryArray(BinLength + 4)=1
    10. Jika (ByteValue and 4) maka BinaryArray(BinLength + 5)=1
    11. Jika (ByteValue and 2) maka BinaryArray(BinLength + 6)=1
    12. Jika (ByteValue and 1) maka BinaryArray(BinLength + 7)=1
    13. BinLength = BinLength + 8
    14. Akhir perulangan

Setelah operasi di atas, selanjutnya data disebelah kanan akan diekspansi menjadi 48 bit (6 byte) yang urutan bitnya sesuai dengan bit E, sekaligus di Xor-kan dengan hasil kunci di atas. Algoritmanya adalah sebagai berikut (i = 1 sampai 16):

    1. ErxorK(0) = r(31) Xor m_Key(0, i )
    2. ErxorK(1) = r(0) Xor m_Key(1, i)
    3. ErxorK(2) = r(1) Xor m_Key(2, i)
    4. ErxorK(3) = r(2) Xor m_Key(3, i)
    5. ErxorK(4) = r(3) Xor m_Key(4, i)
    6. ErxorK(5) = r(4) Xor m_Key(5, i)
    7. ErxorK(6) = r(3) Xor m_Key(6, i)
    8. ErxorK(7) = r(4) Xor m_Key(7, i)
    9. ErxorK(8) = r(5) Xor m_Key(8, i)
    10. ErxorK(9) = r(6) Xor m_Key(9, i)
    11. ErxorK(10) = r(7) Xor m_Key(10, i)
    12. ErxorK(11) = r(8) Xor m_Key(11, i)
    13. ErxorK(12) = r(7) Xor m_Key(12, i)
    14. ErxorK(13) = r(8) Xor m_Key(13, i)
    15. ErxorK(14) = r(9) Xor m_Key(14, i)
    16. ErxorK(15) = r(10) Xor m_Key(15, i)
    17. ErxorK(16) = r(11) Xor m_Key(16, i)
    18. ErxorK(17) = r(12) Xor m_Key(17, i)
    19. ErxorK(18) = r(11) Xor m_Key(18, i)
    20. ErxorK(19) = r(12) Xor m_Key(19, i)
    21. ErxorK(20) = r(13) Xor m_Key(20, i)
    22. ErxorK(21) = r(14) Xor m_Key(21, i)
    23. ErxorK(22) = r(15) Xor m_Key(22, i)
    24. ErxorK(23) = r(16) Xor m_Key(23, i)
    25. ErxorK(24) = r(15) Xor m_Key(24, i)
    26. ErxorK(25) = r(16) Xor m_Key(25, i)
    27. ErxorK(26) = r(17) Xor m_Key(26, i)
    28. ErxorK(27) = r(18) Xor m_Key(27, i)
    29. ErxorK(28) = r(19) Xor m_Key(28, i)
    30. ErxorK(29) = r(20) Xor m_Key(29, i)
    31. ErxorK(30) = r(19) Xor m_Key(30, i)
    32. ErxorK(31) = r(20) Xor m_Key(31, i)
    33. ErxorK(32) = r(21) Xor m_Key(32, i)
    34. ErxorK(33) = r(22) Xor m_Key(33, i)
    35. ErxorK(34) = r(23) Xor m_Key(34, i)
    36. ErxorK(35) = r(24) Xor m_Key(35, i)
    37. ErxorK(36) = r(23) Xor m_Key(36, i)
    38. ErxorK(37) = r(24) Xor m_Key(37, i)
    39. ErxorK(38) = r(25) Xor m_Key(38, i)
    40. ErxorK(39) = r(26) Xor m_Key(39, i)
    41. ErxorK(40) = r(27) Xor m_Key(40, i)
    42. ErxorK(41) = r(28) Xor m_Key(41, i)
    43. ErxorK(42) = r(27) Xor m_Key(42, i)
    44. ErxorK(43) = r(28) Xor m_Key(43, i)
    45. ErxorK(44) = r(29) Xor m_Key(44, i)
    46. ErxorK(45) = r(30) Xor m_Key(45, i)
    47. ErxorK(46) = r(31\) Xor m_Key(46, i)
    48. ErxorK(47) = r(0) Xor m_Key(47, i)

Kemudian hasil di atas akan disubtitusikan dengan m_sBox (blok Sbox DES) sebanyak 6 bit yang menhasilkan keluaran 4 bit ditampung dalam array sBox sebanyak 32 bit. Algoritmanya sebagai berikut:

    1. Panggil CopyMem(sBox(0),m_sBox(0, ErxorK(0),

    ERxorK(1), ERxorK(2), ERxorK(3), ERxorK(4), ERxorK(5)),4)

    1. Panggil CopyMem(sBox(4),m_sBox(1, ErxorK(6),

    ERxorK(7), ERxorK(8), ERxorK(9), ERxorK(10), ERxorK(11)),4)

    1. Panggil CopyMem(sBox(8),m_sBox(2, ErxorK(12),

    ERxorK(13), ERxorK(14), ERxorK(15), ERxorK(16), ERxorK(17)),4)

    1. Panggil CopyMem(sBox(12),m_sBox(3, ErxorK(18),

    ERxorK(19), ERxorK(20), ERxorK(21), ERxorK(22), ERxorK(23)),4)

    1. Panggil CopyMem(sBox(16),m_sBox(4, ErxorK(24),

    ERxorK(25), ERxorK(26), ERxorK(27), ERxorK(28), ERxorK(29)),4)

    1. Panggil CopyMem(sBox(20),m_sBox(5, ErxorK(30),

    ERxorK(31), ERxorK(32), ERxorK(33), ERxorK(34), ERxorK(35)),4)

    1. Panggil CopyMem(sBox(24),m_sBox(6, ErxorK(36),

    ERxorK(37), ERxorK(38), ERxorK(39), ERxorK(40), ERxorK(41)),4)

    1. Panggil CopyMem(sBox(28),m_sBox(7, ErxorK(42),

    ERxorK(43), ERxorK(44), ERxorK(45), ERxorK(46), ERxorK(47)),4)

Setelah sBox dihasilkan, kemudian hasilnya akan di Xor-kan dengan data sebelah kiri dengan urutan bit sesuai dengan m_P Permutasi dari blok P) dan hasilnya akan ditampung dalam array LiRi sebanyak 32 bit. Algoritmanya sebagai berikut:

    1. LiRi(0) = L(0) Xor sBox(15)
    2. LiRi(1) = L(1) Xor sBox(6)
    3. LiRi(2) = L(2) Xor sBox(19)
    4. LiRi(3) = L(3) Xor sBox(20)
    5. LiRi(4) = L(4) Xor sBox(28)
    6. LiRi(5) = L(5) Xor sBox(11)
    7. LiRi(6) = L(6) Xor sBox(27)
    8. LiRi(7) = L(7) Xor sBox(16)
    9. LiRi(8) = L(8) Xor sBox(0)
    10. LiRi(9) = L(9) Xor sBox(14)
    11. LiRi(10) = L(10) Xor sBox(22)
    12. LiRi(11) = L(11) Xor sBox(25)
    13. LiRi(12) = L(12) Xor sBox(4)
    14. LiRi(13) = L(13) Xor sBox(17)
    15. LiRi(14) = L(14) Xor sBox(30)
    16. LiRi(15) = L(15) Xor sBox(9)
    17. LiRi(16) = L(16) Xor sBox(1)
    18. LiRi(17) = L(17) Xor sBox(7)
    19. LiRi(18) = L(18) Xor sBox(23)
    20. LiRi(19) = L(19) Xor sBox(13)
    21. LiRi(20) = L(20) Xor sBox(31)
    22. LiRi(21) = L(21) Xor sBox(36)
    23. LiRi(22) = L(22) Xor sBox(2)
    24. LiRi(23) = L(23) Xor sBox(8)
    25. LiRi(24) = L(24) Xor sBox(18)
    26. LiRi(25) = L(25) Xor sBox(12)
    27. LiRi(26) = L(26) Xor sBox(29)
    28. LiRi(27) = L(27) Xor sBox(5)
    29. LiRi(28) = L(28) Xor sBox(21)
    30. LiRi(29) = L(29) Xor sBox(10)
    31. LiRi(30) = L(30) Xor sBox(3)
    32. LiRi(31) = L(31) Xor sBox(24)

Hasil data diatas akan dijadikan data sebelah kanan, data kiri diisi dengan data kanan sebelumnya lalu keduanya disatukan kembali menjadi data 64 bit kembali sekaligus disubtitusi dengan m_IP dan 64 bit tersebut dijadikan 8 byte kembali. m_IP merupakan blok bilangan dari invers permutasi pada DES. Algoritmanya sebagai berikut:

    1. Panggil CopyMem(RL(0), r(0), 32)
    2. Panggil CopyMem(RL(32), L(0), 32)
    3. Selama a=0 hingga a=63 lakukan perulangan

      BinBlock(a)=RL(m_IPInv(a))

    1. Akhir perulangan
    2. Panggil Bin2Byte(BinBlock(), 8, BlockData())

Fungsi Bin2Byte akan mengubah bin menjadi byte, algoritmanya sebagai berikut:

    1. BinLength=0
    2. Selama a=0 hingga a=(ByteLen - 1) lakukan perulangan
    3. ByteValue=0
    4. Jika (BinarryArray(BinLength)=1)maka ByteValue=ByteValue+128
    5. Jika (BinarryArray(BinLength+1)=1)maka ByteValue=ByteValue+64
    6. Jika (BinarryArray(BinLength+2)=1)maka ByteValue=ByteValue+32
    7. Jika (BinarryArray(BinLength+3)=1)maka ByteValue=ByteValue+16
    8. Jika (BinarryArray(BinLength+4)=1)maka ByteValue=ByteValue+8
    9. Jika (BinarryArray(BinLength+5)=1)maka ByteValue=ByteValue+4
    10. Jika (BinarryArray(BinLength+6)=1)maka ByteValue=ByteValue+2
    11. Jika (BinarryArray(BinLength+7)=1)maka ByteValue=ByteValue+1
    12. ByteArray(a)=ByteValue
    13. BinLength=BinLength + 8
    14. Akhir perulangan

Langkah-langkah di atas dilakukan sebanyak 16 kali / 16 putaran (round), dan hasilnya akan dijadikan input untuk proses enkripsi dengan metode Gost. Perlu diperhatikan disini, yaitu setiap blok IP, blok invers IP, blok Sbox, blok P, blok E, blok Pc1, dan blok Pc2 pada metode DES adalah blok yang isinya merupakan ketetapan dari algoritma DES.

  • Tahap Kedua

Pada tahap ke dua ini, subkunci untuk Gost terdiri sebanyak 8 buah blok dengan panjang setiap bloknya adalah 32 bit. Untuk mempersulit, maka setiap bloknya akan dirotasi 11 bit ke kiri. Algoritmanya adalah sebagai berikut:

    1. K1 =SB_X(ByteKey(),0)
    2. K2 =SB_X(ByteKey(),4)
    3. K3 =SB_X(ByteKey(),8)
    4. K4 =SB_X(ByteKey(),12)
    5. K5 =SB_X(ByteKey(),16)
    6. K6 =SB_X(ByteKey(),20)
    7. K7 =SB_X(ByteKey(),24)
    8. K8 =SB_X(ByteKey(),28)

Algoritma untuk fungsi SB_Xnya adalah sebagai berikut:

    1. bb(0) = ByteKey(offset)
    2. bb(1) = ByteKey(offset + 1)
    3. bb(2) = ByteKey(offset + 2)
    4. bb(3) = ByteKey(offset + 3)
    5. F0 =TBin(aa)
    6. F1 = TBin(bb)
    7. F2 = TBin(cc)
    8. F3 = TBin(dd)
    9. temp = F0 & F1 & F2 & F3
    10. Putar1 = Mid$(Temp, 1, 11)
    11. Putar2 = Mid$(Temp, 12, 22)
    12. temp = putar1 & putar2
    13. bb(0) = TDec(Mid$(Temp, 1, 8))
    14. bb(1) = TDec(Mid$(Temp, 9, 8))
    15. bb(2) = TDec(Mid$(Temp, 17, 8))
    16. bb(3) = TDec(Mid$(Temp, 25, 8))
    17. temp = Chr$(bb(0)) & Chr$(bb(1)) & Chr$(bb(2)) & Chr$(bb(3))
    18. x() = Konversi temp ke from Unicode
    19. panggil GetWord(has, x(), 0)
    20. SB_X = has

Kemudian plaintext berupa hasil enkripsi dari metode DES akan dipecah menjadi dua bagian, yaitu 32 bit (4 byte) kiri dan 32 bit (4 byte) kanan. Setiap blok kiri dan kanan akan diubah menjadi satu bilangan 32 bit. Algoritmanya sebagai berikut:

    1. Panggil GetWord(LeftWord, ByteArray(), Offset)
    2. Panggil GetWord(LeftWord, ByteArray(), Offset + 4)

    Algoritma untuk GetWordnya adalah sebagai berikut:

    1. CryptBuffer(3) = bb(Offset)
    2. CryptBuffer(2) = bb(Offset + 1)
    3. CryptBuffer(1) = bb(Offset + 2)
    4. CryptBuffer(0) = bb(Offset + 3)
    5. Panggil CopyMem(LongValue, CryptBuffer(0),4)

Untuk pengembalian nilainya, data kiri ataupun kanan akan dipisah kembali menjadi 4 bilangan (masing-masing 8 bit). Algoritmanya sebagai berikut:

    1. Panggil PutWord(LeftWord, ByteWord(), Offset)
    2. Panggil PutWord(LeftWord, ByteWord(), Offset + 4)

Algoritma untuk PutWordnya adalah sebagai berikut:

    1. Panggil CopyMem(CryptBuffer(0), LongValue, 4)
    2. aByte(Offset) = CryptBuffer(3)
    3. aByte(Offset + 1) = CryptBuffer(2)
    4. aByte(Offset + 2) = CryptBuffer(1)
    5. aByte(Offset + 3) = CryptBuffer(0)

Setelah dibentuk subkey, dilanjutkan dengan melakukan enkripsi plaintext sebanyak 32 putaran dengan operasi:

    Li = RI-1

    Ri = LI-1 xor f(RI-1,Ki)

Algoritma untuk operasi di atas adalah sebagai berikut:

    1. selama i=1 hingga i=3 lakukan perulangan
    2. Temp = LeftWord
    3. LeftWord = RightWord
    4. RightWord = Temp Xor F (RightWord, K1)
    5. Temp = LeftWord
    6. LeftWord = RightWord
    7. RightWord = Temp Xor F (RightWord, K2)
    8. Temp = LeftWord
    9. LeftWord = RightWord
    10. RightWord = Temp Xor F (RightWord, K3)
    11. Temp = LeftWord
    12. LeftWord = RightWord
    13. RightWord = Temp Xor F (RightWord, K4)
    14. Temp = LeftWord
    15. LeftWord = RightWord
    16. RightWord = Temp Xor F (RightWord, K5)
    17. Temp = LeftWord
    18. LeftWord = RightWord
    19. RightWord = Temp Xor F (RightWord, K6)
    20. Temp = LeftWord
    21. LeftWord = RightWord
    22. RightWord = Temp Xor F (RightWord, K7)
    23. Temp = LeftWord
    24. LeftWord = RightWord
    25. RightWord = Temp Xor F (RightWord, K8)
    26. Akhir perulangan
    27. Temp = LeftWord
    28. LeftWord = RightWord
    29. RightWord = Temp Xor F (RightWord, K8)
    30. Temp = LeftWord
    31. LeftWord = RightWord
    32. RightWord = Temp Xor F (RightWord, K7)
    33. Temp = LeftWord
    34. LeftWord = RightWord
    35. RightWord = Temp Xor F (RightWord, K6)
    36. Temp = LeftWord
    37. LeftWord = RightWord
    38. RightWord = Temp Xor F (RightWord, K5)
    39. Temp = LeftWord
    40. LeftWord = RightWord
    41. RightWord = Temp Xor F (RightWord, K4)
    42. Temp = LeftWord
    43. LeftWord = RightWord
    44. RightWord = Temp Xor F (RightWord, K3)
    45. Temp = LeftWord
    46. LeftWord = RightWord
    47. RightWord = Temp Xor F (RightWord, K2)
    48. Temp = LeftWord
    49. LeftWord = RightWord
    50. RightWord = Temp Xor F (RightWord, K1)

Untuk fungsi F, blok data sebelah kanan akan dijumlahkan dengan blok kunci. Setiap perulangan akan digunakan blok kunci yang berbeda. Untuk mencegah terjadinya overflow, maka datanya akan dilakukan operasi byte per byte modulus 255. Kemudian hasilnya dipecah menjadi 2 bilangan, dan disubtitusi dengan Sbox dari Gost. Hasil keluaran dari Sbox akan digunakan kembali menjadi bilangan 32 bit. Terakhir bilangan tersebut akan dirotasi 11 bit ke kiri. Algoritmanya adalah sebagai berikut:

    1. R = RightWord
    2. K = Key
    3. Addval = unsignedHelp(R,K)
    4. F = Addval

Algoritma untuk fungsi unsignedHelp:

    1. Panggil PutWord(R,a(),0)
    2. Panggil PutWord(Key,b(),0)
    3. Count = 0
    4. Selama m=0 hingga m=3 lakukan perulangan
    5. Addval = CLng(a(m))+CLng(b(m))
    6. Addval = Addval Mod 255
    7. d = 1
    8. selama n=0 hingga n=1 lakukan perulangan
    9. KeyWord(n) = Tdec("0000" & Mid$(Tbin(Addval),d,4))
    10. Tempbit(count) = SboxGhost(count,KeyWord(n))
    11. Count = count + 1
    12. d = d + 4
    13. Akhir perulangan
    14. akhir perulangan
    15. m = 0
    16. Selama m=0 hingga m=7 lakukan perulangan
    17. TempString = TempString & Mid$(Tbin(tempbit(m)),5,4)
    18. Akhir Perulangan
    19. TempString = Mid$(TempString,12,21) & Mid$(TempString,1,11)
    20. c(0) = TDec(Mid$(TempString,1,8))
    21. c(1) = TDec(Mid$(TempString,7,8))
    22. c(2) = TDec(Mid$(TempString,17,8))
    23. c(3) = TDec(Mid$(TempString,25,8))
    24. Panggil GetWord(Addval, c(), ))
    25. unsignedHelp = Addval

Total bilangan yang dihasilkan dari operasi di atas untuk disubtitusi ke Sbox berjumlah 8 buah bilangan. Dalam metode Gost, tidak ditentukan standar dalam pembuatan Sboxnya, sehingga ada kemungkinan Sbox yang dibuat akan kurang baik. Sbox yang akan digunakan merupakan Sbox yang sama dengan yang digunakan oleh Central Bank of The Russian Federation.

Setelah proses selesai, nilai bilangan kiri dan kanan akan dikembalikan lagi menjadi 64 bit (8byte). Algoritmanya adalah sebagai berikut:

Panggil PutWord(LeftWord,ByteArray(),Offset)

Panggil PutWord(RightWord,ByteCipher(), Offset + 4)

Ciphertext yang dihasilakan akan diubah ke dalam bentuk string lagi dan disimpan ke dalam file baru. di sini file asli tidak akan diganti dengan file hasil enkripsi. File baru akan dibuat untuk menampung hasil enkripsi. Header file dan jumlah penambahan adata akan ditambahkan ke dalam file baru ini. Jika file baru sudah ada, maka akan dihapus dahulu kemudian diisi kembali dengan hasil enkripsi tersebut.

  1. Proses Dekripsi

Proses ini merupakan kebalikan dari proses enkripsi yaitu proses mengembalikan data yang terenkripsi menjadi data yang sebenarnya. Pada dasarnya proses dekripsi ini terbagi atas 2 tahap, yaitu tahap pertama adalah dekripsi dengan metode GOST, dan tahap ke dua dekripsi dengan metode DES. Pada proses dekripsi ini juga dilakukan tahapan-tahapan yang sama seperti pada tahapan enkripsi.

  • Tahap Pertama

Untuk fungsi f pada GOST, algoritma dekripsinya sama dengan algoritma enkripsinya. Sebelum melakukan dekripsi, kunci akan didekripsi terlebih dahulu. Pada fungsi f data kanan akan menjadi data kiri kemudian sebaliknya, dan setiap putaran akan menggunakan blok kunci yang berbeda, dimulai dari blok kunci terakhir. Algoritmanya adalah sebagai berikut:

    1. Temp = LeftWord
    2. LeftWord = RightWord
    3. RightWord = Temp Xor F (RightWord, K1)
    4. Temp = LeftWord
    5. LeftWord = RightWord
    6. RightWord = Temp Xor F (RightWord, K2)
    7. Temp = LeftWord
    8. LeftWord = RightWord
    9. RightWord = Temp Xor F (RightWord, K3)
    10. Temp = LeftWord
    11. LeftWord = RightWord
    12. RightWord = Temp Xor F (RightWord, K4)
    13. Temp = LeftWord
    14. LeftWord = RightWord
    15. RightWord = Temp Xor F (RightWord, K5)
    16. Temp = LeftWord
    17. LeftWord = RightWord
    18. RightWord = Temp Xor F (RightWord, K6)
    19. Temp = LeftWord
    20. LeftWord = RightWord
    21. RightWord = Temp Xor F (RightWord, K7)
    22. Temp = LeftWord
    23. LeftWord = RightWord
    24. RightWord = Temp Xor F (RightWord, K8)
    25. Selama i=1 hingga i=3 lakukan perulangan
    26. Temp = RightWord
    27. RightWord = LeftWord
    28. LeftWord = Temp Xor F (LeftWord, K8)
    29. Temp = RightWord
    30. RightWord = LeftWord
    31. LeftWord = Temp Xor F (LeftWord, K7)
    32. Temp = RightWord
    33. RightWord = LeftWord
    34. LeftWord = Temp Xor F (LeftWord, K6)
    35. Temp = RightWord
    36. RightWord = LeftWord
    37. LeftWord = Temp Xor F (LeftWord, K5)
    38. Temp = RightWord
    39. RightWord = LeftWord
    40. LeftWord = Temp Xor F (LeftWord, K4)
    41. Temp = RightWord
    42. RightWord = LeftWord
    43. LeftWord = Temp Xor F (LeftWord, K3)
    44. Temp = RightWord
    45. RightWord = LeftWord
    46. LeftWord = Temp Xor F (LeftWord, K2)
    47. Temp = RightWord
    48. RightWord = LeftWord
    49. LeftWord = Temp Xor F (LeftWord, K1)
    50. Akhir perulangan

  • Tahap Kedua

Sama seperti GOST, pada DES algoritmanya akan sama dengan algoritma enkripsinya, hanya yang berbeda yaitu data kanan akan dijadikan data kiri dan sebaliknya dengan 16 blok kunci akan dimulai dari blok kunci terakhir. Algoritmanya adalah sebagai berikut (dengan i = 16 samapai 1):

    1. ERxorK(0) = r(31) Xor m_Key(0, i )
    2. ERxorK(1) = r(0) Xor m_Key(1, i)
    3. ERxorK(2) = r(1) Xor m_Key(2, i)
    4. ERxorK(3) = r(2) Xor m_Key(3, i)
    5. ERxorK(4) = r(3) Xor m_Key(4, i)
    6. ERxorK(5) = r(4) Xor m_Key(5, i)
    7. ERxorK(6) = r(3) Xor m_Key(6, i)
    8. ERxorK(7) = r(4) Xor m_Key(7, i)
    9. ERxorK(8) = r(5) Xor m_Key(8, i)
    10. ERxorK(9) = r(6) Xor m_Key(9, i)
    11. ERxorK(10) = r(7) Xor m_Key(10, i)
    12. ERxorK(11) = r(8) Xor m_Key(11, i)
    13. ERxorK(12) = r(7) Xor m_Key(12, i)
    14. ERxorK(13) = r(8) Xor m_Key(13, i)
    15. ERxorK(14) = r(9) Xor m_Key(14, i)
    16. ERxorK(15) = r(10) Xor m_Key(15, i)
    17. ERxorK(16) = r(11) Xor m_Key(16, i)
    18. ERxorK(17) = r(12) Xor m_Key(17, i)
    19. ERxorK(18) = r(11) Xor m_Key(18, i)
    20. ERxorK(19) = r(12) Xor m_Key(19, i)
    21. ERxorK(20) = r(13) Xor m_Key(20, i)
    22. ERxorK(21) = r(14) Xor m_Key(21, i)
    23. ERxorK(22) = r(15) Xor m_Key(22, i)
    24. ERxorK(23) = r(16) Xor m_Key(23, i)
    25. ERxorK(24) = r(15) Xor m_Key(24, i)
    26. ERxorK(25) = r(16) Xor m_Key(25, i)
    27. ERxorK(26) = r(17) Xor m_Key(26, i)
    28. ERxorK(27) = r(18) Xor m_Key(27, i)
    29. ERxorK(28) = r(19) Xor m_Key(28, i)
    30. ERxorK(29) = r(20) Xor m_Key(29, i)
    31. ERxorK(30) = r(19) Xor m_Key(30, i)
    32. ERxorK(31) = r(20) Xor m_Key(31, i)
    33. ERxorK(32) = r(21) Xor m_Key(32, i)
    34. ERxorK(33) = r(22) Xor m_Key(33, i)
    35. ERxorK(34) = r(23) Xor m_Key(34, i)
    36. ERxorK(35) = r(24) Xor m_Key(35, i)
    37. ERxorK(36) = r(23) Xor m_Key(36, i)
    38. ERxorK(37) = r(24) Xor m_Key(37, i)
    39. ERxorK(38) = r(25) Xor m_Key(38, i)
    40. ERxorK(39) = r(26) Xor m_Key(39, i)
    41. ERxorK(40) = r(27) Xor m_Key(40, i)
    42. ERxorK(41) = r(28) Xor m_Key(41, i)
    43. ERxorK(42) = r(27) Xor m_Key(42, i)
    44. ERxorK(43) = r(28) Xor m_Key(43, i)
    45. ERxorK(44) = r(29) Xor m_Key(44, i)
    46. ERxorK(45) = r(30) Xor m_Key(45, i)
    47. ERxorK(46) = r(31\) Xor m_Key(46, i)
    48. ERxorK(47) = r(0) Xor m_Key(47, i)
Untuk proses selebihnya sama persis dengan waktu enkripsi pada metode DES. Setelah proses di atas selesai, ciphertext akan menjadi plaintext dan disimpan kembali ke dalam file tersebut dengan nama sebelumnya.
Kesimpulan dan Saran
  • Kesimpulan

Berdasarkan analisa yang telah dilakukan, dapat diambil kesimpulan bahwa:

  1. Penyandian dengan metode DES yang dikombinasikan dengan metode GOST cukup memadai untuk menangkal penyerangan data oleh user yang tidak berhak terutama ditinjau dari tingkat kesulitan dalam memecahkan penyandian.
  2. Pengenkripsian kunci pada awal program dan kunci pada metode GOST dapat lebih menyulitkan dalam memecahkan penyandian pada ciphertext.
  3. Perancang GOST mencoba mengambil keseimbangan antara efisiensi dan keamanan. Mereka memodifikasi design dasar DES untuk menciptakan algoritma yang lebih baik dalam implementasinya pada software. Mereka juga kurang yakin dalam keamanan algoritmanya, dan mencoba untuk melengkapinya dengan membuat panjang kuncinya (256 bit), tetap merahasiakan dari Sboxnya, dan melipatgandakan jumlah iterasinya (32 putaran).


referensi
http://74.125.153.132/search?q=cache:AQqxz73wOUoJ:budi.insan.co.id/courses/ec7010/2004-2005/budi-report.rtf+Metode+DES&cd=4&hl=id&ct=clnk&gl=id

disusun oleh :
Aji Nugroho 2007-53-198
Zuliana Putri Dewi 2007-53-202
Ahmad teguh Susilo 2007-53-240
Lilik Chusnawati 2007-53-241

skipjack

Salah satu hal yang penting dalam komunikasi menggunakan komputer untuk menjamin kerahasiaan data adalah enkripsi. Enkripsi adalah sebuah proses yang melakukan perubahan sebuah kode yang biasa dimengerti menjadi sebuah kode yang tidak biasa dimengerti (tidak terbaca). Enkripsi dapat diartikan sebagai kode atau chipper. Sebuah chipper menggunakan suatu algoritma yang dapat mengkodekan semua aliran data (stream) bit dari sebuah pesan menjadi cryptogram yang tidak dimengerti (unintelligible). Karena teknik chipper merupakan suatu system yang telah siap untuk di automasi, maka teknik ini digunakan dalam system keamanan komputer dan network.

    Skipjack sebagai salah satu chipper merupakan suatu encryption algoritma yang dikembangkan oleh National Security Agency Badan Keamanan Nasional Amerika Serikat ( NSA) untuk Clipper Chip. Tidak banyak diketahui algoritma Skipjack ini, karena itu algoritma Skipjack digolongkan rahasia oleh pemerintah Amerika Serikat.

Algoritma Skipjack diketahui suatu algoritma symmetric, yang menggunakan 80-bit kunci dan mempunyai 32 putaran untuk memproses setiap masing-masing encrypt atau decrypt operasi. Clipper-Chip adalah suatu chip komersil dibuat oleh NSA untuk encryption, dan menggunakan Algoritma Skipjack. AT&T mempunyai rencana untuk menggunakan Clipper Chip untuk encrypted jalur suara telpon.
Spesifikasi SKIPJACK
    1. Notasi dan Terminologi:

      v” Set dari semua nilai n-bit

word: Sebuah element dari v16 ; bernilai 16-bit.

Byte: sebuah elemen dari v8 ; bernilai 8-bit.

          Permutasi vn : Sebuah invertible(satu-ke-satu dan selanjutnya) fungsi dari Vn ke Vn. Nilai permutasi didalam vn, nilainya tidak dalam bits.

    X Y Nilai exclusive –OR dari X dan Y

          X || Y X serangkai dengan Y. Lihat X, Y merupakan bytes, kemudian X || Y = X x 28 + Y adalah sebuah word. Selanjutnya, X adalah high-order byte, dan Y adalah low-order byte.

    1. Struktur Dasar: SKIPJACK encrypts 4-word (Contoh: 8-byte) data blok pengganti antara dua langkah aturan (A dan B) yang diperlihatkan seperti dibawah ini.

    Langkah dari aturan A seperti berikut:

      1. G permutasi W1,
      2. w1 yang baru adalah xor dari keluaran G, sebuah counter, dan w4
      3. words w2 dan w3 pindah satu register ke kanan; contoh menjadi w3, dan w4 berurutan.
      4. w2 yang baru adalah keluaran G
      5. Counter adalah hasil dari kenaikan

    1. Langkah-langkah Persamaan Peraturan.

Persamaan dibawah ini, superscript dari langkah-langkah angka.

    Aturan A Aturan B

    w1k+1 = Gk(w1k) w4k counterk w1k+1 = w4k

    w2k+1 = Gk(w1k) w 2k+1 = Gk-1 (w1k)

    w3k+1 = w2k w3k+1 = w1k w2k counterk

    w4k+1 = w3k w1k+1 = Gk(w1k) w4k counterk

        DECRYPT

    Aturan A-1 Aturan B-1

    w1k-1 = [Gk-1]-1 (w2k) w1k-1 = [Gk-1] (w2k)

    w2k-1 = w3k w2k-1 = [Gk-1]-1 (w2k) w3k counterk-1

    w3k-1 = w4k w3k-1 = w4k

    w4k-1 = w1k w2k counterk-1 w4k-1 = w1k

    1. Urutan langkah-langkah:

    Algoritma ini totalnya 32 langkah.

      1. Melakukan encripsi: Masukan adalah wi0, 1 i 4 (contoh k = 0 untuk langkah awal). Counter di 1. Langkah menurut aturan A dengan 8 langkah, kemudian berubah ke aturan B dan langkahnya lebih dari 8 langkah. Hasil dengan aturan A dengan 8 langkah, kemudian melengkapi encryption dengan 8 langkah dengan aturan B. Counter increment satu kali pada masing-masing langkah. Keluarannya adalah wi32 , 1 i 4 .
      2. Untuk mendecrypt: Masukan adalah wi32, 1 i 4 , (contoh k=32 untuk memulai langkah). Mulai counter di langkah 32. Langkah menurut aturan B-1 untuk langkah ke delapan, kemudian berubah ke aturan A-1 dan langkah lebih dari 8 kali.
      3. Hasil aturan B-1 untuk 8 langkah selanjutnya, kemudian dilengkapi decrypsinya dengan 8 langkah pada aturan A-1. Counter decrement satu kali setelah setiap langkah. Keluarannya adalah wi0, 1 i 4 .

    1. Permutasi - G.

    Cryptovariable-dependent pemutasi G di v16 adalah empat putaran struktur Feistel. Fungsi putaran adalah mencampur tabel byte-substitusi (permutasi di v8), yang disebut dengan F-tabel. Masing-masing putaran dari G juga gabungan sebuah byte dari cryptovariable. Ada dua karakteristik dari fungsi seperti dibawah ini.

      1. Dengan rekursif (system matematika): Gk (w = g1 || g2) = g5 || g6 dimana g1 = F(g I-1 cv4k + i-3) gi-2 adalah (4k + i – 3)th byte didalam penjadwalan criptovariable. Lalu,

      g3 = F (g2 cv4k) g1

      g4 = F (g3 cv4k+1) g2

      g5 = F (g4 cv4k+2) g3

      g6 = F (g5 cv4k+3) g4

      Biasanya untuk kebalikannya, [Gk]-1(w = g5|| g6 =g1 || g2 dimana gi-2 = F (gi-1 cv4k + I - 3) gi.

      1. Skemanya:



      Gambar 8. Diagram Permutasi – G

    1. Penjadwalan Cryptovariable.

    Criptovariable panjangnya 10 bytes (labelnya dari 0 sampai 9) dan digunakan untuk pemakaian biasa. Lalu penjadwalan subscript diberikan dalam definisi permutasi-G yang diinterpretasikan mod-10.

    1. F-Tabel:
F-tabel pada SKIPJACK diberikan pada notasi hexadesimal. Order index yang tertinggi 4 bit
dari masukan baris dan order terendah index 4 bits pada kolom. Untuk contoh, F(7a) = d6

Tes Vector

    Semua nilai adalah heksadesimal. Data ini tidak termasuk atau ditentukan oleh banyak antar muka biasa. Informasi biasanya dengan Most Significant Bit/Byte/Word ke sebelah kiri. X menggambarkan “don’t care”.

  1. SKIPJACK – MODE CODEBOOK

    Plaintext input : 33221100ddccbbaa

    Cryptovariable: 00998877665544332211

    Langkah lanjutan:

    w1 w2 w3 w4

0 33221100 ddccbbaa

1 b0040baf 1100ddcc

2 e6883b46 0baf1100

3 3c762d75 3b460baf

4 4c4547ee 2d753b46

5 b949820a 47ee2d75

6 f0e3dd90 820a47ee

7 f9b9be50 dd90820a

8 d79b5599 be50dd90

9 dd901e0b 820bbe50

10 be504c52 c391820b

11 820b7f51 f209c391

12 c391f9c2 fd56f209

13 f20925ff 3a5efd56

14 fd5665da d7f83a5e

15 3a5e69d9 9883d7f8

16 d7f88990 53979883

17 9c000492 89905397

18 9fdccc59 04928990

19 3731beb2 cc590492

20 7afb7e78 beb2cc59

21 7759bb15 7e7dbeb2

22 fb6445c0 bb157e7d

23 6f7f1115 45c0bb15

24 65a7deaa 111545c0

25 45c0e0f9 bb141115

26 11153913 a523bb14

27 bb148ee6 281da523

28 a523bfe2 35ee281d

29 281d0d84 1adc35ee

30 35eee6f1 25871adc

31 1adc60ee d3002587

32 2587cae2 7a12d300

Keluaran Ciphertext : 2587cae27a12d300

  1. Algoritma pertukaran kunci (KEA)

p = 9d4c6e6d 42ea91c8 28d67d49 94a9f01b 8e5b5b73 0d0faae7 bd569dd1

    914e3ad4 759c8053 31eda145 9fb56be8 a8de4736 652a82b2 76e82acd

    63f5b78d 0b75a03e b34d397d be7b3740 8f72136a cb0879fe 61c718a3

    7f5154b5 078a7649 fb3d4fb4 c481e010 62c5241f 229fa580 423368dd

    51090dbf 25351f0c 5800de05 b92ba6a9

q = 97ad85fd 2b371ed0 69818ab3 c6ee8773 d9db029d

g = 595d3443 ec897c82 51e5fa9d 02ab8b75 c0fc57b0 969f880d a366a100

    01912a01 96bcb81c 41ac8485 031ac598 b5481eae 2726b719 d8d9915a

    61059734 72386c0a 6a2c732c d6700d34 1f54bf28 d12d692d e2fa05f5

    5e898c2e 20bb8a26 02db1ba01 7de672e3 b96d9ac2 9a188450 63d918c3

    2ed71266 b783311a 0a8d08ac 487bea44

ra = 6201dd56 237c228a 3f54bc7e 794bdf32 41c67ea6

xa = 62319ac4 7dc14518 0abd323c 59e2b600 2781e494

Ya = 2d29ecd0 2e3497a6 7222d8de bc286131 d149f458 1b3e586d 0151024c

    02e8b23d a09a430e 2ca5ed1a 4b2d7725 62316e4d 2804d226 788284ed

    655ef546 10d38f66 fab1a0a2 e2d3c661 4401901d 9758d566 722aff1f

    734b2adb d2b67f13 00ce455f 00968ca7 91a87678 67363d7d 49ee74a2

    8dc349d9 fdfdb96b 01f0fc1f 0690ec96

xb = 63decdad 4487eb71 31dff4f5 1cfbae39 446b9b3d

rb = 52bfa1d7 2f1cf0f0fb 0ff6d5df 15fb7483 167eb0e7

Yb = 7730d4bb f3a2efdb 218e7041 3e861020 14cec06c 205f5419 293b65c6

    9a971e54 55eb79a0 bdb90ab2 14c5240e de6cfdd5 8c7c19c5 269d57df

    f60b61c1 db2ff648 64bee519 87f27003 4bc390ad 73168209 5e42608c

    3d7987f9 649fbf71 6887633e b574b39c c73df899 51fc1bd6 d3889d48

    fe2244b8 29afd405 06ab9221 ba562c07

Penghitungan oleh A:

Ra = 97c1fd8a 69fc8f34 a74c7ec3 c1ab176a b91fa0ea d0e6b097 06ae07a1

    fbf8d0a6 67032ea4 798082b8 caea827b 4f604b71 e6c24469 211363ea

    4bd2122f 4aa6af 4aa6afb9 4857ff06 9db03701 2b289057 b4855e70 f8f7ac4f

    92falfe7 6c2a5c82 781ee611 1c1fbdf7 a6eb9dc3 59a8fca0 b632ef3a

    2af82e52 c0a7f6a6 a2c961ea fe67

Penghitungan oleh B:

Rb = 91f61808 38f03d5b 6be538ff 6e0bf3cb 9d8afbbe ef199334 b389708b

    b0c848da 860f0f27 62cc94a8 e496f8fc 94945538 cf6f1719 57cee4f1

    e2eca2ba ddb340da f406e636 bbc6368e 4658fbfo 1a41cbef 5adb4086

    42d03cec 4e85920c 8e7530bd e2b78cb8 7cbae364 31de373c d2ebaf29

    d8412932 8550dd8c f33e03c2 1a5056a0

Hasil untuk pemakai A:

Uab = 1585dbba c06b963d 6ef5a30e 5c40220b 76fe0528 660be31a c496d1cb

    0883ba8e 5a0331e9 ce3fe382 f47a353c edc6896d fdb4c0b5 67aafd72

    4ba0ff6f 2c0fa428 fcb07a32 bf6fb88e 22c5ca47 7c9bb9cd 882da4f5

    4cc57980 c174352f 13434623 ce3df2d4 14a9e0fb 7a905fe8 4ab282d5

    e76e703a 55dabb38 27c2979f 08ea28c8

tab = 8032eb2c b67534a9 c5faf6be a1eb6ef1 de0d3f48 c86be240 8f807e66

    8622b9f3 87e0f50f a5868bf5 29ff008d 3ad55e9c 4366bad4 ae4190ce

    bc3ae56f 34bf70b6 3ca021dd 563005db bc7e62bb ccc9127a 3603bf00

    be8fee9b f46bf538 86c4a761 4b43adfe 7282efe4 f9e146b7 1e9f89d6

    2bd3c7ed 7d127719 ebf0e08 79e0d0d9

w =95b8c6e7 76e0cae7 34f099cc fe2b90fd 550b4471 2e77c55b 54175031

    8ea67481 e1e426f9 73c66f78 1e7935ca 289be80a 411b7b8a 15ec8e41

    07dbe4de 60cf14df 39509c10 159fbe69 df442d03 4964cc47 be3163f6

    0b55481c b5e02a67 9a07ed85 1981a0d2 872cd0e0 7451a69f 69520cac

    13423827 d2ed3252 13b37897 82caf9a1

v1 = 95b8c6e7 76e0cae7 34f0xxxx

v2= 99ccfe2b 90fd550b 4471xxxx

v1 XOR pad = e7496e99 e4628b7f 9ffbxxxx

Kunci untuk pemakai A = 740839de e833add4 6b41xxxx

Hasil untuk pemakai B:

tab = 8032eb2c b67534a9 c5faf6be a1eb6ef1 de0d3f48 c86be240 8f807e66

    8622b9f3 87e0f50f a5868bf5 29ff008d 3ad55e9c 4366bad 4 ae4190ce

    bc3ae56f 34bf70b6 3ca021dd 563005db bc7e62bb ccc9127a 3603bf00

    be8fce9b f46bf538 86c4a761 4b43adfe 7282efe4 f9c146b7 1e9f89d6

    2bd3c7ed 7d127719 ebf0e0f8 79e0d0d9

uab = 1585dbba c06b963d 6ef5a30e 5c40220b 76fe0528 660be31a c496d1cb

    0883ba8e 5a0331e9 ce3fe382 f47a353c edc6896d fdb4c0b5 67aafd72

    4ba0ff6f 2c0fa428 fcb07a32 bf6fb88e 22c5ca47 7c9bb9cd 882da4f5

    4cc57980 c174352f 13434623 ce3df244 14a9e0fb 7a905fe8 4ab282d5

    e76e703a 55dabb38 27c2979f 08ea28c8

w = 95b8c6e7 76e0cae7 34f099cc fe2b90fd 550b4471 2e77c55b 54175031

    8ea67481 e1e426f9 73c66f78 1e7935ca 289be80a 411b7b8a 15ec8e41

    07dbe4de 60cf14df 39509c10 159fbe69 df442d03 4964cc47 be3163f6

    0b55481c b5e02a67 9a07ed85 1981a0d2 872cd0e0 7451a69f 69520cac

    13423827 d2ed3252 13b37897 82caf9a1

v1 = 95b8c6e7 76e0cae7 34f0xxxx

v2 = 99ccfe2b 90fd550b 4471xxxx

v1 XOR pad = e7496e99 e4628b7f 9ffbxxxx

Kunci untuk pemakai B = 740839de e833add4 6b41xxxx



  1. Pertukaran KEA untuk E-Mail

      p= 9d4c6e6d 42ea91c8 28d67d49 94a9f01b 8e5b5b73 0d0faae7 bd569dd1 914e3ad4 759c8053 31eda145 9fb56be8 a8de4736 652a82b2 76e82acd 63f5b78d 0b75a03e b34d397d be7b3740 8f72136a cb0879fe 61c718a3 7f5154b5 078a7659 fb3d4fb4 c481e010 62c5241f 229fa580 423368dd 51090dbf 25351f0c 5800de05 b92ba6a9

    q= 97ad85fd 2b371ed0 69818ab3 c6ee8773 d9db029d

    g= 595d3443 ec897c82 51e5fa9d 02ab8b75 c0fc57b0 969f880d a366a100

    01912a01 96bcb81c 41ac8485 031ac598 b5481eae 2726b719 d8d9915a 61059734 72386c0a 6a2c732c d6700d34 1f54bf28 d12d692d e2fa05f5 5e898c2e 20bb8a26 02db1ba0 7de672e3 b96d9ac2 9a188450 63d918c3 2ed71266 b783311a 0a8d08ac 487bea44

ra = 6201dd56 237c228a 3f54bc7e 794bdf32 41c67ea6

xa = 62319ac4 7de14518 0abd322c 59e2b600 2781e494

Ya = 2d29ccd0 2c3497a6 7222d8de bc286131 d149f458 1b3e586d 0151024c

02e8b23d a09a430e 2ca5ed1a 4b2d7725 62316e4d 2804d266 788284ed

    655cf546 10d38f66 fab1a0a2 e2d3c661 4401901d 9758d566 722aff1f

    734b2adb d2b67f13 00ce455f 00968ca7 91a87678 67363d7d 49ee74a2

    8dc349d9 fdfdb96b 01f0fc1f 0690ec96

xb = 63decdad 4487eb71 31dff4f5 1cfbae39 446b9b3d

Yb = 7730d4bb f3a2efdb 218e7041 3e861020 14cec06c 205f5419 293b65c6

    9a971e54 55eb79a0 bdb90ab2 14c5240e de6cfdd5 8c7c19c5 269d57df

    f60b61c1 db2ff648 64bee519 87f27003 4bc390ad 4bc390ad 73168209 5e42608c 3d7987f9 649fbf71 6887633e b574b39c c73df899 51fc1bd6 d3889d48 fe2244b8 29afd405 06ab9221 ba562c07

Penghitungan oleh A:

Ra = 97c1fd8a 69fc8f34 a74c7ec3 c1ab176a b91fa0ea d0e6b097 06ae07a1

    Fbf8d0a6 67032ea4 798082b8 caea827b 4f604b71 e6c24469 211363ea

    4bd2122f 4aa6afb6 4857ff06 9db03701 2b289057 b4855e70 f8f7ac4f

    92fa1fe7 6c2a5c82 781ee611 1c1fbdf7 a6eb9dc3 59a8fca0 b632ef3a

    2af82e52 c0a7f6a6 a2c961ea fc67f418

Hasil untuk pemakai A:

tab = 8032eb2c b67534a9 c5faf6be a1eb6ef1 de0d3f48 c86be240 8f807e66

    8622b9f3 87e0f50f a5868bf5 29ff008d 3ad55e9c 4366bad4 ae4190ce

    bc3ae56f 34bf70b6 3ca021dd 563005db bc7e62bb ccc9127a 3603bf00

    be8fce9b f46bf538 86c4a761 4b43adfe4 7282efe4 f9c146b7 1e9f89d6

    2bd3c7ed 7d127719 ebf0e0f8 79e0d0d9

uab = 17087175 9f16dfbf b0a0c05e 0ee49abd 49586033 93aa7df3 3d99bc61

    68ad318a 7cf81fa8 74f4eb04 4433abe0 6423eb2f 1ebb3cdb 33067152

    242d7cf8 987f208d cfdf3797 6398ccd5 6a0bdc1b 2bfd6734 35dedcc9

    06bd6d71 a4516738 b91f2a52 689a2d60 802de96d 150fe661 469a2643

    18c8d8f5 9ec040ea c623c51a 91d861d1

w = 973b5ca2 558c1469 769bb71c b0d009af 27659f7c 5c166033 cd1a3ac7

    eecfeb7e 04d914b8 1a7b76f9 6e32ac6d 9ef949cb 6221f7af e1480220

    e0686267 cd3e9144 0c7f5974 b9c8d2b1 268a3ed6 f8c679ae 6be29bc9

    c54d3c0d 98bd5c71 3fe3d1b3 b3dddb5e f2b0d952 0ed12d18 6539b019

    449ca0e3 1bd2b804 b214a613 0bb932aa

v1 = 973b5ca2 558c1469 769bxxxx

v2 = b71cb0d0 09af2765 9f7cxxxx

v1 XOR pad = e5caf4dc c70e55f1 dd90xxxx

Kunci untuk pemakai A = 97fd1c6b d86bc439 115bxxxx

Hasil untuk pemakai B:

Tab = 8032eb2c b67534a9 c5faf6be a1eb6ef1 de0d3f48 c86be240 8f807e66

    8622b9f3 87e0f50f a5868bf5 29ff008d 3ad55e9c 4366bad4 ae4190ce

    bc3ae56f 34bf70b6 3ca021dd 563005db bc7e62bb ccc9127a 3603bf00

    be8fce9b f46bf538 86c4a761 4b43adfe 7282efe4 f9c146b7 1e9f89d6

    2bd3c7ed 7d127719 ebf0e0f8 79e0d0d9

uab = 17087175 9f16dfbf b0a0c05e 0ee49abd 49586033 93aa7df3 3d99bc61

    68ad318a 7cf81fa8 74f4eb04 4433abe2f 1ebb3cdb 33067152

    242d7cf8 987f208d cfdf3797 6398ccd5 6a0bdc1b 2bfd6734 35dedcc9

    06bd6d71 a4516738 b91f2a52 689a2d60 802de96d 150fe661 469a2643

    18c8d8f5 9ec040ea c623c51a 91d861d1

w = 973b5ca2 558c1469 769bb71c b0d009af 27659f7c 5c166033 cd1a3ac7

    eecfeb7e 04d914b8 1a7b76f9 6ef949cb 6221f7af e1480220

    e0686267 cd3e9144 0c7f5974 b9c8d2b1 268a3ed6 f8c679ae 6be29bc9

    c54d3c0d 98bd5c71 3fe3d1b3 b3dddb5e f2b0d952 0ed12d18 6539b019

    449ca0e3 1bd2b804 b214a613 0bb932aa

v1 = 973b5ca2 558c1469 769bxxxx

v2 = b71cb0d0 09af2765 9f7cxxxx

v1 XOR pad = e5caf4dc c70e55f1 dd90xxxx

Kunci untuk pemakai B = 97fd1c6b d86bc439 115bxxxx

Kesimpulan.

    Cryptography telah berkembang sejak lama, ketika orang menginginkan informasi yang ia kirimkan tidak dapat “dibaca” oleh pihak tak berkepentingan. Cryptography secara tradisional dikenal dengan dua mekanisme, yaitu kunci privat dan kunci publik. Sesuai dengan materi yang penulis buat maka enkripsi Skipjack termasuk dalam kunci privat berupa DES (data encryption standard). Enkripsi secara konvensional tergantung pada beberapa factor:

    1. Algoritma enkripsi harus cukup kuat sehingga menjadikan sangat sulit untuk mendekripsikan chipper teks yang diterima dengan chipper teks tersebut terutama oleh orang yang tidak berkepentingan dengan pesan kita.
    2. Keamanan dari algoritma enkripsi bergantung pada kerahasiaan dari kuncinya bukan algoritmanya.

    Mengingat enkripsi dengan Skipjack secara matematis sangat terjamin, untuk itu dalam bekerja dengan enkripsi ini diperlukan kesepakatan bagi pemegangnya agar aman harus:

  1. Kunci harus dirahasiakan.
    1. Adalah tidak mungkin atau sangat tidak praktis untuk menterjemahkan informasi yang telah dienkripsi.
    1. Pengetahuan tentang algoritma dan sample dari kata yang terenkripsi tidak mencukupi untuk menentukan kunci.

    Dengan demikian apabila kita ingin menekuni bidang enkripsi ini, diperlukan pengetahuan khusus agar kita dapat mengelola dengan baik enkripsi chipper text dari pesan-pesan yang memang perlu dirahasiakan.

    Kesimpulan.

      Cryptography telah berkembang sejak lama, ketika orang menginginkan informasi yang ia kirimkan tidak dapat “dibaca” oleh pihak tak berkepentingan. Cryptography secara tradisional dikenal dengan dua mekanisme, yaitu kunci privat dan kunci publik. Sesuai dengan materi yang penulis buat maka enkripsi Skipjack termasuk dalam kunci privat berupa DES (data encryption standard). Enkripsi secara konvensional tergantung pada beberapa factor:

    1. Algoritma enkripsi harus cukup kuat sehingga menjadikan sangat sulit untuk mendekripsikan chipper teks yang diterima dengan chipper teks tersebut terutama oleh orang yang tidak berkepentingan dengan pesan kita.
    2. Keamanan dari algoritma enkripsi bergantung pada kerahasiaan dari kuncinya bukan algoritmanya.

    Mengingat enkripsi dengan Skipjack secara matematis sangat terjamin, untuk itu dalam bekerja dengan enkripsi ini diperlukan kesepakatan bagi pemegangnya agar aman harus:

  1. Kunci harus dirahasiakan.
    1. Adalah tidak mungkin atau sangat tidak praktis untuk menterjemahkan informasi yang telah dienkripsi.
    1. Pengetahuan tentang algoritma dan sample dari kata yang terenkripsi tidak mencukupi untuk menentukan kunci.

    Dengan demikian apabila kita ingin menekuni bidang enkripsi ini, diperlukan pengetahuan khusus agar kita dapat mengelola dengan baik enkripsi chipper text dari pesan-pesan yang memang perlu dirahasiakan.

    Referensi

    http://74.125.153.132/search?q=cache:AbhO20thNTwJ:budi.insan.co.id/courses/el7010/dikmenjur/zaidan-report.doc+metode+keamanan+komputer+skipjack&cd=1&hl=id&ct=clnk&gl=id

    disusun :

    Aji Nugroho 2007-53-198

    Zulia Putri Dewi 2007-53-202

    Ahmad Teguh Susilo 2007-53-240

    Lilik Chusnawati 2007-53-241