Contoh Manual Enkripsi and Dekripsi Berd
GOST ALGORITHYM
Sub Materi :
1. Konsep Kerja GOST
2. Contoh Enkripsi dan Dekripsi GOST
ALGORITMA GOST
GOST merupakan singkatan dari Gosudarstvennyi
Standard atau sering disebut Goverment Standard.
Penemu : Warga Kebangsaan Uni Soviet
• Memiliki jumlah proses sebanyak 32 round (putaran)
• Menggunakan 64 bit
block cipher pada setiap kali
prosesnya dan 256 bit kunci atau 32 karakter
• Menggunakan 8 buah S-Box yang berbeda-beda
• Menggunakan operasi XOR dan Left Circular Shift
11 bit atau Rotate Left Shift (RLS 11 bit)
• Menggunakan modulo 232
PERTEMUAN XI-XII
Proses Enkripsi :
1. Konversi Plaintext dan Kunci ke Biner
2. Kelompokkan Biner Kunci menjadi 8 Kelompok
Jumlah bit kunci setiap kelompok adalah 32 bit.
dimulai dari K[0] = bit ke 32..1,
K[1] = bit ke 64..33,
.....dst, sampai
K[7] = bit ke 256..225
3. Kelompokkan plainteks menjadi 2 bagian yaitu R[0] dan L[0] dengan
jumlah tiap kelompok adalah 32 bit. 32 bit bagian kiri menjadi
menjadi R[0] dan mulai bit ke 33 sampai bit ke 64 (sebelah kanan)
menjadi L[0]. Proses penulisan bitnya dilakukan secara terbalik.
R[0] = bit[32], bit[31]......bit[1]
L[0] = bit[64], bit[63]......bit[33]
PERTEMUAN XI-XII
4. Proses Enkripsi
Proses enkripsi dilakukan sebanyak 32 round (mulai dari Round 0 s/d 31)
Pseudocode untuk setiap round :
j = 0 //array bit kunci; nilai i adalah putran
If i < 31 then
For i = 0 to 31
R[ i +1] = RLS[ i ] XOR L[ i ]
//kelompok bit plaintext
L[ i +1 ] = R[ i ] sebelum diproses
L[ i ] = 32 bit L[ i ]
Else
R[ i ] = 32 bit R[ i ]
R[ i +1] = R[ i ] sebelum proses
//jumlahkan R[ i ] dan L[ i ], kemudian mod 232
L[ i +1 ] = RLS[ i ] XOR L[ i ]
if i < 24 then
if j = 7 then j = 0
R[ i +1] =Reverse R[ i ]
(R[ i ] + K[ j ] ) Mod 232
L[i+1] = Reverse L[ i ]
j = j +1
Cipher = Reverse R[ i ], Reverse L[ i ]
else
Next i
j=7
Aturan Penggunaan Kunci :
(R[ i ] + K[ j ] ) Mod 232
j=j–1
Round 0 s/d Round 23 K[0] ... K[7]
End If
Round 24 s/d 31 K[7] ... K[0]
Hasil (R[ i ] + K[ j ] ) Mod 232 Pecah menjadi 8 kelompok (4 bit per kelompok),
kemudian permutasikan dengan SBox
Gabungkan biner-biner hasil permutasi SBox
RLS = Lakukan proses Rotate Left Shift dari bit gabungan sebanyak 11 bit (dari kiri ke kanan)
PERTEMUAN XI-XII
5. Proses Dekripsi :
Proses dekripsi dilakukan sebanyak 32 round (mulai dari Round 0 s/d 31) sama seperti proses enkripsi
Pseudocode untuk setiap round :
j = 0 //array bit kunci; nilai i adalah putran
Hasil (R[ i ] + K[ j ] ) Mod 232 Pecah menjadi 8
For i = 0 to 31
kelompok (4 bit per kelompok), kemudian
permutasikan dengan SBox
//kelompok bit ciphertext
L[ i ] = 32 bit L[ i ]
Gabungkan biner-biner hasil permutasi SBox
R[ i ] = 32 bit R[ i ]
//jumlahkan R[ i ] dan L[ i ], kemudian mod 232
RLS = Lakukan proses Rotate Left Shift dari bit
gabungan sebanyak 11 bit (dari kiri ke kanan)
if i < 8 then
(R[ i ] + K[ j ] ) Mod 232
If i < 31 then
j = j +1
R[ i +1] = RLS[ i ] XOR L[ i ]
else
L[ i +1 ] = R[ i ] sebelum diproses
j=7
Else
if j = 0 then
R[ i +1] = R[ i ] sebelum proses
j=j+7
L[ i +1 ] = RLS[ i ] XOR L[ i ]
else
j=j-1
end if
(R[ i ] + K[ j ] ) Mod 232
End If
R[ i +1] =Reverse R[ i ]
L[i+1] = Reverse L[ i ]
Cipher = Reverse R[ i ], Reverse L[ i ]
End if
Next i
PERTEMUAN XI-XII
TABEL SBOX METODE GOST
Cara membaca tabel Sbox :
Misalnya pecahan biner 1011 dijadikan sebagai Sbox 3, maka nilainya adalah :
1011 = 11 (dlm desimal). Maka SBOX 3 yang nilainya 11 adalah :
Lihat baris Sbox 3, kolom 11 nilainya adalah 12 = 1100 (dlm biner)
PERTEMUAN XI-XII
Contoh Prosess ENKRIPSI :
Plaintext = STMIK_BD
Kunci
= Algoritma_GOST_Taroni_Zebua_2017
Plaintext :
Char
Dec
Biner
S
83
01010011
T
M
I
K
_
B
D
84
77
73
75
95
66
68
01010100 01001101 01001001 01001011 01011111 01000010 01000100
Gabungan Biner Plaintext :
01010011010101000100110101001001 (kiri) R0
01001011010111110100001001000100 (kanan) L0
L[0] = 00100010010000101111101011010010
R[0] = 10010010101100100010101011001010
PERTEMUAN XI-XII
Contoh Prosess Konversi Kunci (256 bit atau 32 karakter atau 32 byte):
Konversi Kunci
Char Desimal
Biner
Char Desimal
Biner
A
65
01000001
a
97
01100001
l
108
01101100
r
114
01110010
g
103
01100111
o
111
01101111
o
111
01101111
n
110
01101110
r
114
01110010
i
105
01101001
i
105
01101001
_
95
01011111
t
116
01110100
Z
90
01011010
m
109
01101101
e
101
01100101
a
97
01100001
b
98
01100010
_
95
01011111
u
117
01110101
G
71
01000111
a
97
01100001
O
79
01001111
_
95
01011111
S
83
01010011
2
50
00110010
T
84
01010100
0
48
00110000
_
95
01011111
1
49
00110001
T
84
01010100
7
55
00110111
PERTEMUAN XI-XII
Contoh Prosess Pengelompokkan Kunci:
Biner Kunci Seluruhnya :
01000001011011000110011101101111011100100110100101110100011011010110000101
011111010001110100111101010011010101000101111101010100011000010111001001101
1110110111001101001010111110101101001100101011000100111010101100001010111110
0110010001100000011000100110111
Pengelompokkan Biner Kunci :
Kunci
K[0] =
K[1] =
K[2] =
K[3] =
K[4] =
K[5] =
K[6] =
K[7] =
Posisi Bit
32...1
64...33
96...65
128...97
160...129
192...161
224...193
256...225
Biner yang diambil
11110110111001100011011010000010
10110110001011101001011001001110
11110010111000101111101010000110
00101010111110100010101011001010
01110110111101100100111010000110
10100110010110101111101010010110
11111010100001101010111001000110
11101100100011000000110001001100
Cara pengelompokkan :
Ambil 32 bit pertama
Tulis binernya dari bit
32 hingga bit 1 (ditulis
terbalik dari kanan ke
kiri).
Demikian
untuk
kelompok bit seterusnya
Mis : ambil bit 33 hingga
64 (tulis mulai dari 64 –
33)
PERTEMUAN XI-XII
Contoh Prosess Enkipsi :
PUTARAN – 0 i = 0 :
Tahap 1 :
Tahap 2 :
L[0] = 00100010010000101111101011010010
R[0] = 10010010101100100010101011001010
rubah ke desimal
( R[0] + K[0] ) Mod 232
R[0] =
2461149898 biner R[0] setelah di rubah ke Desimal
K[0] =
4142282370 biner K[0] setelah di rubah ke Desimal
Hasil =
6603432268 Mod 232
Hasil Mod =
2308464972 konversi ke biner
Biner = 10001001100110000110000101001100
Tahap 3 :
Kelompokkan biner hasil di atas menjadi 4 bit tiap kelompok :
Biner
Kelompok
Dec
Nilai Bit
SBOX
Hasil Permutasi
dengan SBOX
Biner
1000
1001
1001
1000
0110
0001
0100
1100
8
9
9
8
6
1
4
12
S-Box(0)
S-Box(1)
S-Box(2)
S-Box(3)
S-Box(4)
S-Box(5)
S-Box(6)
S-Box(7)
6
3
15
14
13
11
3
6
0110
0011
1111
1110
1101
1011
0011
0110
PERTEMUAN XI-XII
Contoh Prosess Enkipsi :
PUTARAN – 0 i = 0 :
Tahap 4 :
Gabungkan biner-biner hasil penukaran dari tabel Sbox dan lakukan Rotate Left Shift 11 bit
Hasil Gabungan
: 01100011111111101101101100110110
Hasil RLS[0] 11 bit : 11110110110110011011001100011111
Tahap 5 :
R[1] = RLS[0] XOR L[0]
RLS[0] = 111101 10110110011011001100011111
hasil RLS R[0]
L [0] = 00100010010000101111101011010010 L[0] awal
R [1] = 11010100100110110100100111001101
L[1] = R[0] sebelum di proses
L[1] = 10010010101100100010101011001010
Tahap 6 :
Hasil Putaran – 0 atau pada PUTARAN – i = 0, adalah :
L[1] = 10010010101100100010101011001010
R[1] = 11010100100110110100 100111001101
PERTEMUAN XI-XII
Contoh Prosess Enkipsi :
PUTARAN – 1 i = 1 :
Tahap 1 :
L[1] = 10010010101100100010101011001010
R[1] = 11010100100110110100100111001101 rubah ke desimal
Tahap 2 :
( R[1] + K[1] ) Mod 232
R[1] =
3566946765 biner R[1] setelah di rubah ke Desimal
K[1] =
3056506446 biner K[1] setelah di rubah ke Desimal
Hasil =
6623453211 Mod 232
Hasil Mod =
2328485915 konversi ke biner
Biner = 10001010110010011110000000011011
Tahap 3 :
Kelompokkan biner hasil di atas menjadi 4 bit tiap kelompok :
Biner
kelompok
Dec
Nilai Bit
SBOX
Hasil Permutasi
dengan SBOX
Biner
1000
1010
1100
1001
1110
0000
0001
1011
8
10
12
9
14
0
1
11
S-Box(0)
S-Box(1)
S-Box(2)
S-Box(3)
S-Box(4)
S-Box(5)
S-Box(6)
S-Box(7)
6
8
6
4
11
4
11
14
0110
1000
0110
0100
1011
0100
1011
1110
PERTEMUAN XI-XII
Contoh Prosess Enkipsi :
PUTARAN – 1 i = 1 :
Tahap 4 :
Gabungkan biner-biner hasil penukaran dari tabel Sbox dan lakukan Rotate Left Shift 11 bit
Hasil Gabungan
: 01101000011001001011010010111110
Hasil RLS[1] 11 bit : 00100101101001011111001101000011
Tahap 5 :
R[2] = RLS[1] XOR L[1]
RLS[1] =
L [1] =
R [2] =
00100101101001011111001101000011
10010010101100100010101011001010
10110111000101111101100110001001
hasil RLS R[1]
L[1] awal
L[2] = R[1] sebelum di proses
L[2] = 11010100100110110100100111001101
Tahap 6 :
Hasil Putaran – 1 atau pada PUTARAN – i = 1, adalah :
L[2] = 11010100100110110100100111001101
R[2] = 10110111 000101111101100110001001
Lanjutkan untuk proses PUTARAN KE-2 sampai PUTARAN KE-30
INGAT ...!! Pada putaran ke 24 sampai 31, kunci yang digunakan TERBALIK URUTANNYA, yaitu
mulai dari K[7] .....K[0]
PERTEMUAN XI-XII
Contoh Prosess Enkipsi :
PUTARAN – 31 i = 31 :
Tahap 1 :
L[31] = 00001001000001110000000100000111
R[31] = 11001001000001000011010010101110 rubah ke desimal
Tahap 2 :
( R[31] + K[0] ) Mod 232
R[31] =
3372496046 biner R[30] setelah di rubah ke Desimal
K[0] =
4142282370 biner K[0] setelah di rubah ke Desimal
Hasil =
7514778416 Mod 232
Hasil Mod =
3219811120 konversi ke biner
Biner = 10111111111010100110101100110000
Tahap 3 :
Kelompokkan biner hasil di atas menjadi 4 bit tiap kelompok :
Biner
kelompok
Dec
Nilai Bit
SBOX
Hasil Permutasi
dengan SBOX
Biner
1011
1111
1110
1010
0110
1011
0011
0000
11
15
14
10
6
11
3
0
S-Box(0)
S-Box(1)
S-Box(2)
S-Box(3)
S-Box(4)
S-Box(5)
S-Box(6)
S-Box(7)
12
9
9
6
13
5
1
1
1100
1001
1001
0110
1101
0101
0001
0001
PERTEMUAN XI-XII
Contoh Prosess Enkipsi :
PUTARAN – 31 i = 31 :
Tahap 4 :
Gabungkan biner-biner hasil penukaran dari tabel Sbox dan lakukan Rotate Left Shift 11 bit
Hasil Gabungan
: 11001001100101101101010100010001
Hasil RLS[31] 11 bit : 10110110101010001000111001001100
Tahap 5 :
R[32 = R[31] sebelum diproses
R[32] = 11001001000001000011010010101110
Tahap 6 :
L[32] = RLS[31] XOR L[31]
RLS[31] = 10110110101010001000111001001100
hasil RLS R[31]
L [31] = 00001001000001110000000100000111 L[31] awal
L [32] = 10111 11 1101011111000111101001011
Tahap 7 :
Lakukan pembalikkan penulisan biner-biner L[31] dan R[31]
L[32] = 11010010111100011111010111111101
R[32] = 01110101001011000010000010010011
Tahap 8 :
Gabungkan R[32] dan L[32]
mulai dari bit R[1], R[2]...,.R[32], L[1], L[2],...L[32]
HASIL : 0111010100101100001000001001001111010010111100011111010111111101
Kelompokkan Bit Hasil 8 bit per kelompok, kemudian masing-masing kelompok bit
konversi menjadi karakter. Sehingga :
Tahap 9 :
CIPHERTEXT : u,
“Òñõý
PERTEMUAN XI-XII
Contoh Prosess DEKRIPSI :
Ciphertext = u, “Òñõý
Kunci : Algoritma_GOST_Taroni_Zebua_2017
Ciphertext :
Char
Dec
Biner
u
117
01110101
,
44
00101100
32
00100000
“
Ò
ñ
õ
ý
147
210
241
245
253
10010011 11010010 11110001 11110101 11111101
Gabungan Biner Ciphertext :
0111010100101100001000001001001111010010111100011111010111111101
L[0]
R[0]
= 10111111101011111000111101001011
= 11001001000001000011010010101110
Konversi kunci dan kelompokkan seperti pada proses ENKRIPSI
PERTEMUAN XI-XII
Contoh Prosess DEKRIPSI :
Penggunaan Kunci pada Proses Dekripsi :
Putaran ke-0 s/d 7
Putaran ke-8 s/d 15
Putaran ke-16 s/d 23
Putaran ke-24 s/d 31
=
=
=
=
K[0], K[1], K[2], ....
K[7], K[6], K[5], ....
K[7], K[6], K[5], ....
K[7], K[6], K[5], ....
, K[7]
, K[0]
, K[0]
, K[0]
PROSES DEKRIPSI :
PUTARAN KE-0 :
Tahap 1 : L[0] =
R[0] =
10111111101011111000111101001011
11001001000001000011010010101110 Konversi ke Desimal
Tahap 2: ( R[0] + K[0] ) Mod 223
R[0] =
3372496046 biner R[0] setelah di rubah ke Desimal
K[0] =
4142282370 biner K[0] setelah di rubah ke Desimal
Hasil =
7514778416 Mod 232
Hasil Mod =
3219811120 konversi ke biner
Biner = 10111111111010100110101100110000
PERTEMUAN XI-XII
Contoh Prosess DEKRIPSI :
PUTARAN – 0 i = 0 :
Tahap 3 :
Kelompokkan biner hasil di atas menjadi 4 bit tiap kelompok :
Hasil Biner pada Proses Tahap Ke-2 :
10111111111010100110101100110000 dikelompokkan 4 bit per kelompok
Biner
Dec
Kelompok Nilai Bit
1011
1111
1110
1010
0110
1011
0011
0000
Tahap 4 :
11
15
14
10
6
11
3
0
SBOX
S-Box(0)
S-Box(1)
S-Box(2)
S-Box(3)
S-Box(4)
S-Box(5)
S-Box(6)
S-Box(7)
Hasil
Permutasi
dengan SBOX
12
9
9
6
13
5
1
1
Biner
1100
1001
1001
0110
1101
0101
0001
0001
Gabungkan biner-biner hasil penukaran dari tabel Sbox dan lakukan Rotate Left Shift 11 bit
Hasil Gabungan
: 11001001100101101101010100010001
Hasil RLS[0] 11 bit : 10110110101010001000111001001100
PERTEMUAN XI-XII
Contoh Prosess DEKRIPSI :
PUTARAN – 0 i = 0 :
Tahap 5 :
R[1] = RLS[0] XOR L[0]
RLS[0] = 10110110101010001000111001001100
hasil RLS R[0]
L [0] = 10111 1111010111 11000111101001011 L[0] awal
R [1] = 00001001000001110000000100000111
L[1] = R[0] sebelum di proses
L[1] = 11001001000001000011010010101110
Tahap 6 :
Hasil Putaran – 0 atau pada PUTARAN – i = 0, adalah :
L[1] = 11001001000001000011010010101110
R[1] = 00001001000001110000000100000111
PERTEMUAN XI-XII
Contoh Prosess DEKRIPSI :
PUTARAN KE-1 :
Tahap 1 : L[1] = 11001001000001000011010010101110
R[1] = 00001001000001110000000100000111 Konversi ke Desimal
Tahap 2:
( R[1] + K[1] ) Mod 223
R[1] =
151453959 biner R[0] setelah di rubah ke Desimal
K[1] =
3056506446 biner K[0] setelah di rubah ke Desimal
Hasil =
3207960405 Mod 232
Hasil Mod =
3207960405 konversi ke biner
Biner = 10111111001101011001011101010101
Tahap 3 :
Tahap 4 :
Kelompokkan biner hasil di atas menjadi 4 bit tiap kelompok :
Biner
Kelompok
Dec
Nilai Bit
SBOX
Hasil Permutasi
dengan SBOX
Biner
1011
1111
0011
0101
1001
0111
0101
0101
11
15
3
5
9
7
5
5
S-Box(0)
S-Box(1)
S-Box(2)
S-Box(3)
S-Box(4)
S-Box(5)
S-Box(6)
S-Box(7)
12
9
13
8
10
13
15
7
1100
1001
1101
1000
1010
1101
1111
0111
Gabungkan biner-biner hasil penukaran dari tabel Sbox dan lakukan Rotate Left Shift 11 bit
Hasil Gabungan
: 11001001110110001010110111110111
Hasil RLS[1] 11 bit : 11000101011011111011111001001110
PERTEMUAN XI-XII
Contoh Prosess DEKRIPSI :
PUTARAN – 1
Tahap 5 :
R[2] = RLS[1] XOR L[1]
RLS[1] = 110001010110111 11011111 001001110
hasil RLS R[0]
L [1] = 11001001000001000011010010101110 L[1] awal
R [2] = 00001100011010111000101011100000
L[2] = R[1] sebelum di proses
L[2] = 00001001000001110000000100000111
Tahap 6 :
Hasil Putaran – 1 atau pada PUTARAN – i = 1, adalah :
L[2] = 00001001000001110000000100000111
R[2] = 00001100011010111000101011100000
Lanjutkan untuk proses PUTARAN KE-2 sampai PUTARAN KE-30
INGAT ...!! Pada putaran ke 8 sampai 31, kunci yang digunakan TERBALIK URUTANNYA, yaitu
mulai dari K[7] .....K[0]
PERTEMUAN XI-XII
Contoh Prosess DEKRIPSI:
PUTARAN – 31 i = 31 :
Tahap 1 :
L[31] = 11010100100110110100100111001101
R[31] = 10010010101100100010101011001010 rubah ke desimal
Tahap 2 :
( R[31] + K[0] ) Mod 232
R[31] =
K[0] =
Hasil =
Hasil Mod =
2461149898 biner R[30] setelah di rubah ke Desimal
4142282370 biner K[0] setelah di rubah ke Desimal
6603432268 Mod 232
2308464972 konversi ke biner
Biner = 10001001100110000110000101001100
Tahap 3 :
Tahap 4
Kelompokkan biner hasil di atas menjadi 4 bit tiap kelompok :
Biner
kelompok
Dec
Nilai Bit
SBOX
Hasil Permutasi
dengan SBOX
Biner
1000
1001
1001
1000
0110
0001
0100
1100
8
9
9
8
6
1
4
12
S-Box(0)
S-Box(1)
S-Box(2)
S-Box(3)
S-Box(4)
S-Box(5)
S-Box(6)
S-Box(7)
6
3
15
14
13
11
3
6
0110
0011
1111
1110
1101
1011
0011
0110
Gabungkan biner-biner hasil Tahap 3, kemudian lakukan RLS sebanyak 11 bit
Gabungan : 01100011111111101101101100110110
Hasil RLS : 11110110110110011011001100011111
PERTEMUAN XI-XII
Contoh Prosess Enkipsi :
PUTARAN – 31 i = 31 :
Tahap 5 :
R[32 = R[31] sebelum diproses
R[32] = 10010010101100100010101011001010
Tahap 6 :
L[32] = RLS[31] XOR L[31]
RLS[31] = 11110110110110011011001100011111
L [31] = 11010100100110110100100111001101
L [32] = 00100010010000101111101011010010
hasil RLS R[31]
L[31] awal
Tahap 7 :
Lakukan pembalikkan penulisan biner-biner L[31] dan R[31]
L[32] = 01001011010111110100001001000100
R[32] = 01010011010101000100110101001001
Tahap 8 :
Gabungkan R[32] dan L[32]
mulai dari bit R[1], R[2]...,.R[32], L[1], L[2],...L[32]
HASIL : 0101001101010100010011010100100101001011010111110100001001000100
Tahap 9 :
Kelompokkan Bit Hasil 8 bit per kelompok, kemudian masing-masing kelompok bit
konversi menjadi karakter. Sehingga :
PLAINTEXT : STMIK_BD
Sub Materi :
1. Konsep Kerja GOST
2. Contoh Enkripsi dan Dekripsi GOST
ALGORITMA GOST
GOST merupakan singkatan dari Gosudarstvennyi
Standard atau sering disebut Goverment Standard.
Penemu : Warga Kebangsaan Uni Soviet
• Memiliki jumlah proses sebanyak 32 round (putaran)
• Menggunakan 64 bit
block cipher pada setiap kali
prosesnya dan 256 bit kunci atau 32 karakter
• Menggunakan 8 buah S-Box yang berbeda-beda
• Menggunakan operasi XOR dan Left Circular Shift
11 bit atau Rotate Left Shift (RLS 11 bit)
• Menggunakan modulo 232
PERTEMUAN XI-XII
Proses Enkripsi :
1. Konversi Plaintext dan Kunci ke Biner
2. Kelompokkan Biner Kunci menjadi 8 Kelompok
Jumlah bit kunci setiap kelompok adalah 32 bit.
dimulai dari K[0] = bit ke 32..1,
K[1] = bit ke 64..33,
.....dst, sampai
K[7] = bit ke 256..225
3. Kelompokkan plainteks menjadi 2 bagian yaitu R[0] dan L[0] dengan
jumlah tiap kelompok adalah 32 bit. 32 bit bagian kiri menjadi
menjadi R[0] dan mulai bit ke 33 sampai bit ke 64 (sebelah kanan)
menjadi L[0]. Proses penulisan bitnya dilakukan secara terbalik.
R[0] = bit[32], bit[31]......bit[1]
L[0] = bit[64], bit[63]......bit[33]
PERTEMUAN XI-XII
4. Proses Enkripsi
Proses enkripsi dilakukan sebanyak 32 round (mulai dari Round 0 s/d 31)
Pseudocode untuk setiap round :
j = 0 //array bit kunci; nilai i adalah putran
If i < 31 then
For i = 0 to 31
R[ i +1] = RLS[ i ] XOR L[ i ]
//kelompok bit plaintext
L[ i +1 ] = R[ i ] sebelum diproses
L[ i ] = 32 bit L[ i ]
Else
R[ i ] = 32 bit R[ i ]
R[ i +1] = R[ i ] sebelum proses
//jumlahkan R[ i ] dan L[ i ], kemudian mod 232
L[ i +1 ] = RLS[ i ] XOR L[ i ]
if i < 24 then
if j = 7 then j = 0
R[ i +1] =Reverse R[ i ]
(R[ i ] + K[ j ] ) Mod 232
L[i+1] = Reverse L[ i ]
j = j +1
Cipher = Reverse R[ i ], Reverse L[ i ]
else
Next i
j=7
Aturan Penggunaan Kunci :
(R[ i ] + K[ j ] ) Mod 232
j=j–1
Round 0 s/d Round 23 K[0] ... K[7]
End If
Round 24 s/d 31 K[7] ... K[0]
Hasil (R[ i ] + K[ j ] ) Mod 232 Pecah menjadi 8 kelompok (4 bit per kelompok),
kemudian permutasikan dengan SBox
Gabungkan biner-biner hasil permutasi SBox
RLS = Lakukan proses Rotate Left Shift dari bit gabungan sebanyak 11 bit (dari kiri ke kanan)
PERTEMUAN XI-XII
5. Proses Dekripsi :
Proses dekripsi dilakukan sebanyak 32 round (mulai dari Round 0 s/d 31) sama seperti proses enkripsi
Pseudocode untuk setiap round :
j = 0 //array bit kunci; nilai i adalah putran
Hasil (R[ i ] + K[ j ] ) Mod 232 Pecah menjadi 8
For i = 0 to 31
kelompok (4 bit per kelompok), kemudian
permutasikan dengan SBox
//kelompok bit ciphertext
L[ i ] = 32 bit L[ i ]
Gabungkan biner-biner hasil permutasi SBox
R[ i ] = 32 bit R[ i ]
//jumlahkan R[ i ] dan L[ i ], kemudian mod 232
RLS = Lakukan proses Rotate Left Shift dari bit
gabungan sebanyak 11 bit (dari kiri ke kanan)
if i < 8 then
(R[ i ] + K[ j ] ) Mod 232
If i < 31 then
j = j +1
R[ i +1] = RLS[ i ] XOR L[ i ]
else
L[ i +1 ] = R[ i ] sebelum diproses
j=7
Else
if j = 0 then
R[ i +1] = R[ i ] sebelum proses
j=j+7
L[ i +1 ] = RLS[ i ] XOR L[ i ]
else
j=j-1
end if
(R[ i ] + K[ j ] ) Mod 232
End If
R[ i +1] =Reverse R[ i ]
L[i+1] = Reverse L[ i ]
Cipher = Reverse R[ i ], Reverse L[ i ]
End if
Next i
PERTEMUAN XI-XII
TABEL SBOX METODE GOST
Cara membaca tabel Sbox :
Misalnya pecahan biner 1011 dijadikan sebagai Sbox 3, maka nilainya adalah :
1011 = 11 (dlm desimal). Maka SBOX 3 yang nilainya 11 adalah :
Lihat baris Sbox 3, kolom 11 nilainya adalah 12 = 1100 (dlm biner)
PERTEMUAN XI-XII
Contoh Prosess ENKRIPSI :
Plaintext = STMIK_BD
Kunci
= Algoritma_GOST_Taroni_Zebua_2017
Plaintext :
Char
Dec
Biner
S
83
01010011
T
M
I
K
_
B
D
84
77
73
75
95
66
68
01010100 01001101 01001001 01001011 01011111 01000010 01000100
Gabungan Biner Plaintext :
01010011010101000100110101001001 (kiri) R0
01001011010111110100001001000100 (kanan) L0
L[0] = 00100010010000101111101011010010
R[0] = 10010010101100100010101011001010
PERTEMUAN XI-XII
Contoh Prosess Konversi Kunci (256 bit atau 32 karakter atau 32 byte):
Konversi Kunci
Char Desimal
Biner
Char Desimal
Biner
A
65
01000001
a
97
01100001
l
108
01101100
r
114
01110010
g
103
01100111
o
111
01101111
o
111
01101111
n
110
01101110
r
114
01110010
i
105
01101001
i
105
01101001
_
95
01011111
t
116
01110100
Z
90
01011010
m
109
01101101
e
101
01100101
a
97
01100001
b
98
01100010
_
95
01011111
u
117
01110101
G
71
01000111
a
97
01100001
O
79
01001111
_
95
01011111
S
83
01010011
2
50
00110010
T
84
01010100
0
48
00110000
_
95
01011111
1
49
00110001
T
84
01010100
7
55
00110111
PERTEMUAN XI-XII
Contoh Prosess Pengelompokkan Kunci:
Biner Kunci Seluruhnya :
01000001011011000110011101101111011100100110100101110100011011010110000101
011111010001110100111101010011010101000101111101010100011000010111001001101
1110110111001101001010111110101101001100101011000100111010101100001010111110
0110010001100000011000100110111
Pengelompokkan Biner Kunci :
Kunci
K[0] =
K[1] =
K[2] =
K[3] =
K[4] =
K[5] =
K[6] =
K[7] =
Posisi Bit
32...1
64...33
96...65
128...97
160...129
192...161
224...193
256...225
Biner yang diambil
11110110111001100011011010000010
10110110001011101001011001001110
11110010111000101111101010000110
00101010111110100010101011001010
01110110111101100100111010000110
10100110010110101111101010010110
11111010100001101010111001000110
11101100100011000000110001001100
Cara pengelompokkan :
Ambil 32 bit pertama
Tulis binernya dari bit
32 hingga bit 1 (ditulis
terbalik dari kanan ke
kiri).
Demikian
untuk
kelompok bit seterusnya
Mis : ambil bit 33 hingga
64 (tulis mulai dari 64 –
33)
PERTEMUAN XI-XII
Contoh Prosess Enkipsi :
PUTARAN – 0 i = 0 :
Tahap 1 :
Tahap 2 :
L[0] = 00100010010000101111101011010010
R[0] = 10010010101100100010101011001010
rubah ke desimal
( R[0] + K[0] ) Mod 232
R[0] =
2461149898 biner R[0] setelah di rubah ke Desimal
K[0] =
4142282370 biner K[0] setelah di rubah ke Desimal
Hasil =
6603432268 Mod 232
Hasil Mod =
2308464972 konversi ke biner
Biner = 10001001100110000110000101001100
Tahap 3 :
Kelompokkan biner hasil di atas menjadi 4 bit tiap kelompok :
Biner
Kelompok
Dec
Nilai Bit
SBOX
Hasil Permutasi
dengan SBOX
Biner
1000
1001
1001
1000
0110
0001
0100
1100
8
9
9
8
6
1
4
12
S-Box(0)
S-Box(1)
S-Box(2)
S-Box(3)
S-Box(4)
S-Box(5)
S-Box(6)
S-Box(7)
6
3
15
14
13
11
3
6
0110
0011
1111
1110
1101
1011
0011
0110
PERTEMUAN XI-XII
Contoh Prosess Enkipsi :
PUTARAN – 0 i = 0 :
Tahap 4 :
Gabungkan biner-biner hasil penukaran dari tabel Sbox dan lakukan Rotate Left Shift 11 bit
Hasil Gabungan
: 01100011111111101101101100110110
Hasil RLS[0] 11 bit : 11110110110110011011001100011111
Tahap 5 :
R[1] = RLS[0] XOR L[0]
RLS[0] = 111101 10110110011011001100011111
hasil RLS R[0]
L [0] = 00100010010000101111101011010010 L[0] awal
R [1] = 11010100100110110100100111001101
L[1] = R[0] sebelum di proses
L[1] = 10010010101100100010101011001010
Tahap 6 :
Hasil Putaran – 0 atau pada PUTARAN – i = 0, adalah :
L[1] = 10010010101100100010101011001010
R[1] = 11010100100110110100 100111001101
PERTEMUAN XI-XII
Contoh Prosess Enkipsi :
PUTARAN – 1 i = 1 :
Tahap 1 :
L[1] = 10010010101100100010101011001010
R[1] = 11010100100110110100100111001101 rubah ke desimal
Tahap 2 :
( R[1] + K[1] ) Mod 232
R[1] =
3566946765 biner R[1] setelah di rubah ke Desimal
K[1] =
3056506446 biner K[1] setelah di rubah ke Desimal
Hasil =
6623453211 Mod 232
Hasil Mod =
2328485915 konversi ke biner
Biner = 10001010110010011110000000011011
Tahap 3 :
Kelompokkan biner hasil di atas menjadi 4 bit tiap kelompok :
Biner
kelompok
Dec
Nilai Bit
SBOX
Hasil Permutasi
dengan SBOX
Biner
1000
1010
1100
1001
1110
0000
0001
1011
8
10
12
9
14
0
1
11
S-Box(0)
S-Box(1)
S-Box(2)
S-Box(3)
S-Box(4)
S-Box(5)
S-Box(6)
S-Box(7)
6
8
6
4
11
4
11
14
0110
1000
0110
0100
1011
0100
1011
1110
PERTEMUAN XI-XII
Contoh Prosess Enkipsi :
PUTARAN – 1 i = 1 :
Tahap 4 :
Gabungkan biner-biner hasil penukaran dari tabel Sbox dan lakukan Rotate Left Shift 11 bit
Hasil Gabungan
: 01101000011001001011010010111110
Hasil RLS[1] 11 bit : 00100101101001011111001101000011
Tahap 5 :
R[2] = RLS[1] XOR L[1]
RLS[1] =
L [1] =
R [2] =
00100101101001011111001101000011
10010010101100100010101011001010
10110111000101111101100110001001
hasil RLS R[1]
L[1] awal
L[2] = R[1] sebelum di proses
L[2] = 11010100100110110100100111001101
Tahap 6 :
Hasil Putaran – 1 atau pada PUTARAN – i = 1, adalah :
L[2] = 11010100100110110100100111001101
R[2] = 10110111 000101111101100110001001
Lanjutkan untuk proses PUTARAN KE-2 sampai PUTARAN KE-30
INGAT ...!! Pada putaran ke 24 sampai 31, kunci yang digunakan TERBALIK URUTANNYA, yaitu
mulai dari K[7] .....K[0]
PERTEMUAN XI-XII
Contoh Prosess Enkipsi :
PUTARAN – 31 i = 31 :
Tahap 1 :
L[31] = 00001001000001110000000100000111
R[31] = 11001001000001000011010010101110 rubah ke desimal
Tahap 2 :
( R[31] + K[0] ) Mod 232
R[31] =
3372496046 biner R[30] setelah di rubah ke Desimal
K[0] =
4142282370 biner K[0] setelah di rubah ke Desimal
Hasil =
7514778416 Mod 232
Hasil Mod =
3219811120 konversi ke biner
Biner = 10111111111010100110101100110000
Tahap 3 :
Kelompokkan biner hasil di atas menjadi 4 bit tiap kelompok :
Biner
kelompok
Dec
Nilai Bit
SBOX
Hasil Permutasi
dengan SBOX
Biner
1011
1111
1110
1010
0110
1011
0011
0000
11
15
14
10
6
11
3
0
S-Box(0)
S-Box(1)
S-Box(2)
S-Box(3)
S-Box(4)
S-Box(5)
S-Box(6)
S-Box(7)
12
9
9
6
13
5
1
1
1100
1001
1001
0110
1101
0101
0001
0001
PERTEMUAN XI-XII
Contoh Prosess Enkipsi :
PUTARAN – 31 i = 31 :
Tahap 4 :
Gabungkan biner-biner hasil penukaran dari tabel Sbox dan lakukan Rotate Left Shift 11 bit
Hasil Gabungan
: 11001001100101101101010100010001
Hasil RLS[31] 11 bit : 10110110101010001000111001001100
Tahap 5 :
R[32 = R[31] sebelum diproses
R[32] = 11001001000001000011010010101110
Tahap 6 :
L[32] = RLS[31] XOR L[31]
RLS[31] = 10110110101010001000111001001100
hasil RLS R[31]
L [31] = 00001001000001110000000100000111 L[31] awal
L [32] = 10111 11 1101011111000111101001011
Tahap 7 :
Lakukan pembalikkan penulisan biner-biner L[31] dan R[31]
L[32] = 11010010111100011111010111111101
R[32] = 01110101001011000010000010010011
Tahap 8 :
Gabungkan R[32] dan L[32]
mulai dari bit R[1], R[2]...,.R[32], L[1], L[2],...L[32]
HASIL : 0111010100101100001000001001001111010010111100011111010111111101
Kelompokkan Bit Hasil 8 bit per kelompok, kemudian masing-masing kelompok bit
konversi menjadi karakter. Sehingga :
Tahap 9 :
CIPHERTEXT : u,
“Òñõý
PERTEMUAN XI-XII
Contoh Prosess DEKRIPSI :
Ciphertext = u, “Òñõý
Kunci : Algoritma_GOST_Taroni_Zebua_2017
Ciphertext :
Char
Dec
Biner
u
117
01110101
,
44
00101100
32
00100000
“
Ò
ñ
õ
ý
147
210
241
245
253
10010011 11010010 11110001 11110101 11111101
Gabungan Biner Ciphertext :
0111010100101100001000001001001111010010111100011111010111111101
L[0]
R[0]
= 10111111101011111000111101001011
= 11001001000001000011010010101110
Konversi kunci dan kelompokkan seperti pada proses ENKRIPSI
PERTEMUAN XI-XII
Contoh Prosess DEKRIPSI :
Penggunaan Kunci pada Proses Dekripsi :
Putaran ke-0 s/d 7
Putaran ke-8 s/d 15
Putaran ke-16 s/d 23
Putaran ke-24 s/d 31
=
=
=
=
K[0], K[1], K[2], ....
K[7], K[6], K[5], ....
K[7], K[6], K[5], ....
K[7], K[6], K[5], ....
, K[7]
, K[0]
, K[0]
, K[0]
PROSES DEKRIPSI :
PUTARAN KE-0 :
Tahap 1 : L[0] =
R[0] =
10111111101011111000111101001011
11001001000001000011010010101110 Konversi ke Desimal
Tahap 2: ( R[0] + K[0] ) Mod 223
R[0] =
3372496046 biner R[0] setelah di rubah ke Desimal
K[0] =
4142282370 biner K[0] setelah di rubah ke Desimal
Hasil =
7514778416 Mod 232
Hasil Mod =
3219811120 konversi ke biner
Biner = 10111111111010100110101100110000
PERTEMUAN XI-XII
Contoh Prosess DEKRIPSI :
PUTARAN – 0 i = 0 :
Tahap 3 :
Kelompokkan biner hasil di atas menjadi 4 bit tiap kelompok :
Hasil Biner pada Proses Tahap Ke-2 :
10111111111010100110101100110000 dikelompokkan 4 bit per kelompok
Biner
Dec
Kelompok Nilai Bit
1011
1111
1110
1010
0110
1011
0011
0000
Tahap 4 :
11
15
14
10
6
11
3
0
SBOX
S-Box(0)
S-Box(1)
S-Box(2)
S-Box(3)
S-Box(4)
S-Box(5)
S-Box(6)
S-Box(7)
Hasil
Permutasi
dengan SBOX
12
9
9
6
13
5
1
1
Biner
1100
1001
1001
0110
1101
0101
0001
0001
Gabungkan biner-biner hasil penukaran dari tabel Sbox dan lakukan Rotate Left Shift 11 bit
Hasil Gabungan
: 11001001100101101101010100010001
Hasil RLS[0] 11 bit : 10110110101010001000111001001100
PERTEMUAN XI-XII
Contoh Prosess DEKRIPSI :
PUTARAN – 0 i = 0 :
Tahap 5 :
R[1] = RLS[0] XOR L[0]
RLS[0] = 10110110101010001000111001001100
hasil RLS R[0]
L [0] = 10111 1111010111 11000111101001011 L[0] awal
R [1] = 00001001000001110000000100000111
L[1] = R[0] sebelum di proses
L[1] = 11001001000001000011010010101110
Tahap 6 :
Hasil Putaran – 0 atau pada PUTARAN – i = 0, adalah :
L[1] = 11001001000001000011010010101110
R[1] = 00001001000001110000000100000111
PERTEMUAN XI-XII
Contoh Prosess DEKRIPSI :
PUTARAN KE-1 :
Tahap 1 : L[1] = 11001001000001000011010010101110
R[1] = 00001001000001110000000100000111 Konversi ke Desimal
Tahap 2:
( R[1] + K[1] ) Mod 223
R[1] =
151453959 biner R[0] setelah di rubah ke Desimal
K[1] =
3056506446 biner K[0] setelah di rubah ke Desimal
Hasil =
3207960405 Mod 232
Hasil Mod =
3207960405 konversi ke biner
Biner = 10111111001101011001011101010101
Tahap 3 :
Tahap 4 :
Kelompokkan biner hasil di atas menjadi 4 bit tiap kelompok :
Biner
Kelompok
Dec
Nilai Bit
SBOX
Hasil Permutasi
dengan SBOX
Biner
1011
1111
0011
0101
1001
0111
0101
0101
11
15
3
5
9
7
5
5
S-Box(0)
S-Box(1)
S-Box(2)
S-Box(3)
S-Box(4)
S-Box(5)
S-Box(6)
S-Box(7)
12
9
13
8
10
13
15
7
1100
1001
1101
1000
1010
1101
1111
0111
Gabungkan biner-biner hasil penukaran dari tabel Sbox dan lakukan Rotate Left Shift 11 bit
Hasil Gabungan
: 11001001110110001010110111110111
Hasil RLS[1] 11 bit : 11000101011011111011111001001110
PERTEMUAN XI-XII
Contoh Prosess DEKRIPSI :
PUTARAN – 1
Tahap 5 :
R[2] = RLS[1] XOR L[1]
RLS[1] = 110001010110111 11011111 001001110
hasil RLS R[0]
L [1] = 11001001000001000011010010101110 L[1] awal
R [2] = 00001100011010111000101011100000
L[2] = R[1] sebelum di proses
L[2] = 00001001000001110000000100000111
Tahap 6 :
Hasil Putaran – 1 atau pada PUTARAN – i = 1, adalah :
L[2] = 00001001000001110000000100000111
R[2] = 00001100011010111000101011100000
Lanjutkan untuk proses PUTARAN KE-2 sampai PUTARAN KE-30
INGAT ...!! Pada putaran ke 8 sampai 31, kunci yang digunakan TERBALIK URUTANNYA, yaitu
mulai dari K[7] .....K[0]
PERTEMUAN XI-XII
Contoh Prosess DEKRIPSI:
PUTARAN – 31 i = 31 :
Tahap 1 :
L[31] = 11010100100110110100100111001101
R[31] = 10010010101100100010101011001010 rubah ke desimal
Tahap 2 :
( R[31] + K[0] ) Mod 232
R[31] =
K[0] =
Hasil =
Hasil Mod =
2461149898 biner R[30] setelah di rubah ke Desimal
4142282370 biner K[0] setelah di rubah ke Desimal
6603432268 Mod 232
2308464972 konversi ke biner
Biner = 10001001100110000110000101001100
Tahap 3 :
Tahap 4
Kelompokkan biner hasil di atas menjadi 4 bit tiap kelompok :
Biner
kelompok
Dec
Nilai Bit
SBOX
Hasil Permutasi
dengan SBOX
Biner
1000
1001
1001
1000
0110
0001
0100
1100
8
9
9
8
6
1
4
12
S-Box(0)
S-Box(1)
S-Box(2)
S-Box(3)
S-Box(4)
S-Box(5)
S-Box(6)
S-Box(7)
6
3
15
14
13
11
3
6
0110
0011
1111
1110
1101
1011
0011
0110
Gabungkan biner-biner hasil Tahap 3, kemudian lakukan RLS sebanyak 11 bit
Gabungan : 01100011111111101101101100110110
Hasil RLS : 11110110110110011011001100011111
PERTEMUAN XI-XII
Contoh Prosess Enkipsi :
PUTARAN – 31 i = 31 :
Tahap 5 :
R[32 = R[31] sebelum diproses
R[32] = 10010010101100100010101011001010
Tahap 6 :
L[32] = RLS[31] XOR L[31]
RLS[31] = 11110110110110011011001100011111
L [31] = 11010100100110110100100111001101
L [32] = 00100010010000101111101011010010
hasil RLS R[31]
L[31] awal
Tahap 7 :
Lakukan pembalikkan penulisan biner-biner L[31] dan R[31]
L[32] = 01001011010111110100001001000100
R[32] = 01010011010101000100110101001001
Tahap 8 :
Gabungkan R[32] dan L[32]
mulai dari bit R[1], R[2]...,.R[32], L[1], L[2],...L[32]
HASIL : 0101001101010100010011010100100101001011010111110100001001000100
Tahap 9 :
Kelompokkan Bit Hasil 8 bit per kelompok, kemudian masing-masing kelompok bit
konversi menjadi karakter. Sehingga :
PLAINTEXT : STMIK_BD