08 November 2017

Simple Password Generator

Dengan perkembangan kemampuan komputasi yang ada saat ini, melalui teknologi komputasi paralel (FPGA, ASIC, GP-GPU, Cluster Computer dan Distributed Computing-seperti pada Mining Bitcoin/Ethereum-Proof of Work), cloud computing maka tidak dibutuhkan waktu yang lama untuk mem-brute force (exhaustive search) sebuah password (hash password) apalagi jika password-nya relatif sederhana. Salah satu metode untuk meningkatkan sistem keamaannya adalah dengan membuat password yang panjang, random dan menggunakan kombinasi huruf besar, huruf kecil,angka dan karakter-karakter lain.

Berikut contoh aplikasi Password Generator yang sederhana dengan menggunakan bahasa pemrograman Python, implementasi dengan SageMath.

28 October 2017

Menghitung Frekuensi Kemunculan Karakter Huruf dalam Bahasa Indonesia

Load File

Teorema Fermat

Teorema Fermat memegang peranan penting dalam kriptografi kunci publik (Public Key). Adapun bunyi teorema Fermat adalah sebagai berikut :
Jika p adalah bilangan prima dan a adalah bilangan bulat positif yang tidak dapat dibagi oleh p  maka berlaku a^(p-1)≡1(mod p)
Pembuktian teorema Fermat adalah sebagai berikut:
Tentukan himpunan bilangan bulat positif yang lebih kecil dari p yaitu:
p:{1,2,3,…,p-1} dan kalikan masing-masing elemen tersebut dengan a, modulo p untuk mendapatkan himpunan bilangan X∶ {a mod p,2a mod p,3a mod p,…,(p-1)a mod p} maka tidak ada satupun elemen dari himpunan X yang sama dengan 0. Bahkan tidak ada diantara bilangan tersebut sama. Untuk membuktikannya asumsikan bahwa ja ≡ka(mod p) , dimana 1≤j<k≤p-1. Karena a relatif prima dengan p, kita dapat menghilangkan a dari kedua sisi persamaan tersebut sehingga  menghasilkan j ≡k(mod p). Persamaan ini tidak mungkin karena kita tahu bahwa j dan k adalah bilangan bulat positif. Oleh sebab itu kita tahu bahwa semua elemen (p-1) dari X adalah bilangan bulat positif yang semua elemennya tidak ada yang sama. Kita dapat menyimpulkan bahwa X terdiri dari himpunan bilangan bulat {1, 2, …, p-1} dengan urutan yang berbeda. Mengalikan bilangan-bilangan dalam himpunan p dan X dan di-modulo p akan menghasilkan:
a x 2a x…x (p-1)a≡[(1 x 2 x…x (p-1))](mod p)
a^(p-1) (p-1)! ≡(p-1)!(mod p)
Kita dapat menghilangkan (p-1) karena relatif prima dengan p maka akan menghasilkan 
persamaan sebagai berikut : a^(p-1)≡1(mod p). (Terbukti)

Bentuk lain dari teorema Fermat yang juga sangat berguna adalah :
a^p≡a(mod p)

27 October 2017

AES

Enkripsi AES pada Library SageMath
Dekripsi AES

Mencari Primitive Root Modulo n

Mencari Primitive Root Modulo n



Mencari Bilangan Prima setelah n dan bilangan prima acak < n




Mencari Bilangan Prima dan Primitive Root dari bilangan acak antara n dan 2n

20 October 2017

Mencari nilai k pada Elliptic Curve GF(Prime)

Mencari nilai k yang membuat k*p = 0 pada Elliptic Curve GF(Prime) dimana n = prime number. Yang pertama p = 251

Mencari nilai k yang membuat k*p = 0 pada Elliptic Curve GF(Prime) dimana n = prime number. Yang kedua p = 2^256 - 2^32 - 2^9 - 2^8 - 2^7 - 2^6 - 2^4 - 1

Mencari bilangan prima

Mencari Titik Acak

Break ECC dengan algoritma Baby Step, Giant Step

19 October 2017

Key Exchange dengan Elliptic Curve Diffie-Hellman (ECDH)

Key Exchange dengan Elliptic Curve Diffie-Hellman (ECDH) dengan menggunakan library elliptic Curve yang tersedia pada Sagemath, Titik yang dipilih sebagai awal adalah titik G(Generator)
Key Exchange dengan Elliptic Curve Diffie-Hellman (ECDH) dengan menggunakan library elliptic Curve yang tersedia pada Sagemath, Titik yang dipilih sebagai awal adalah titik pilihan kita
Contoh Brute Force ECC
Cari Prime Number
Contoh Break ECC dengan Algoritma Baby Steps, Giant Steps

Bitcoin's Curve (secp256k1)

Public key generation, signature generation dan signature verification pada Bitcoin. 

Skenarionya adalah sebagai berikut: 
  • Alice ingin menandatangani pesan dengan kunci pribadinya (privKey), dan Bob ingin memvalidasi tanda tangan menggunakan kunci publik Alice (publicKeyy). Alice harus bisa menghasilkan tanda tangan digital yang sah. Dan setiap orang termasuk Bob harus bisa memeriksa keabsahan tanda tangan yang dibuat Alice.
  • Alice dan Bob menggunakan parameter domain yang sama. Algoritma yang digunakan adalah ECDSA (Elliptic Curve Digital Signature Algorithm) yang merupakan varian dari Digital Signature Algorithm yang diterapkan pada Elliptic Curve.
ECDSA bekerja pada hash pesan, bukan pada pesan itu sendiri. Pilihan fungsi hash terserah kita, tapi harus jelas bahwa fungsi hash kriptografi yang dipilih harus aman. Hash dari pesan harus dipotong sehingga panjang bit dari hash sama dengan panjang bit n (n adalah urutan subgroup dari order fungsi Elliptic Curve yang digunakan). Hash terpotong adalah bilangan bulat dan akan dinotasikan sebagai z.

18 October 2017

Elliptic Curve Polinomial GF\((2^{8})\)

Mencari titik-titik Elliptic Curve Polinomial GF\((2^{8})\)
Menghitung Penjumlahan Titik-titik pada Elliptic Curve Polinomial GF\((2^{8})\)
Menghitung Perkalian Titik dengan Skalar pada Elliptic Curve Polinomial GF\((2^{8})\)
Mencari nilai n yang memenuhi n*P=0
Cara mencari modulus Irreducible Polinomial GF\((2^{m})\)

Referensi :

  1.  William Stalling, "Cryptography and Network Security 6th Edition", Pearson, Page 301-303.

17 October 2017

Elliptic Curve Polinomial GF\((2^{4})\)

Mencari titik-titik Elliptic Curve Polinomial GF\((2^{4})\)
Menghitung Penjumlahan Titik-titik pada Elliptic Curve Polinomial GF\((2^{4})\)
Menghitung Perkalian Titik dengan Skalar pada Elliptic Curve Polinomial GF\((2^{4})\)
Mencari nilai n yang memenuhi n*P=0
Cara mencari modulus Irreducible Polinomial GF\((2^{m})\)

Referensi :

  1.  William Stalling, "Cryptography and Network Security 6th Edition", Pearson, Page 301-303.

16 October 2017

Perkalian Polinomial GF(2^n)

Interactive Shell 1. Merubah Bilangan Desimal ke Polinomial dan Perkalian Polinomial GF(2^8)

Interactive Shell 2. Merubah Bilangan Desimal ke Polinomial dan Perkalian Polinomial GF(2^3)

Jika ingin mengganti modulo yang digunakan pada perkalian polinomial (Interactive Shell 1), gunakan fungsi di bawah ini untuk mencari modulo polinomial irreducibe. Setelah didapatkan modulo yang baru, masukkan ke source code Interactive Shell 1 dan jalankan kembali untuk menghitung.

Interactive Shell 2. Cara mencari Polinomial irreducible.

Interactive Shell 3. Perkalian Polinomial GF(2^8) dengan Input Polinomial.

Interactive Shell 4. Perkalian Polinomial GF(2^8) dengan Input Biner (String).

13 October 2017

Elliptic Curve \(Z_{p}\) atau GF(p)

Interactive Shell 1. Plotting Elliptic Curve pada bilangan Real.
Persamaan yang digunakan adalah \(y^{2}=x^{3}+ax+b\) dengan kondisi \(4a^{3}+27b^{2}\neq 0\).
"Jika melakukan perubahan pada nilai a, b atau p jangan lupa untuk menjalankan semua interactive shell dari awal karena fungsi dan variabel interactive shell 2, 3 dan 4 mengikuti nilai pada interactive shell 1."
Interactive Shell 1. Mencari titik-titik Elliptic Curve \(E_{p}\).

Interactive Shell 2. Penjumlahan Titik pada \(E_{p}(a,b)\) (Butuh running Shell 1).

Interactive Shell 3. Perkalian Titik P dengan skalar n pada \(E_{p}(a,b)\) (Butuh running Shell 1).

Interactive Shell 4. Mencari nilai n yang memenuhi n*P=0 (Butuh running Shell 1 dan Shell 3 terlebih dahulu)

Referensi :
  1. William Stalling, "Cryptography and Network Security 6th Edition", Pearson, Page 296-301.
  2. https://en.wikipedia.org/wiki/Elliptic_curve_point_multiplication 

11 October 2017

Key Exchange dengan ECDH dengan angka besar

Key Exchange dengan ECDH dengan p besar
Mencari Bilangan Prima

10 October 2017

Aritmatika pada modulo n

Berikut adalah contoh menghitung penjumlahan dan perkalian dengan modulo n.

  • Penjumlahan modulo n.
  • Perkalian modulo n.
  • Mencari hasil perkalian dengan modulo n.

08 October 2017

Transformasi MixColumns pada AES

Transformasi MixColumns pada Enkripsi AES

Salah  satu  langkah  yang  harus  dilakukan  dalam  algoritma  kriptografi  Rijndael (AES) adalah transformasi  mixcolumns. Transformasi  mixcolumns  akan  mengalikan  setiap  kolom  dari  array state dengan  suatu  polinom  a(x)  mod  \(\left(x^{8}+x^{4}+x^{3}+x+1\right)\). Proses perkaliannya  mengikuti  aturan  seperti  pada  saat  mengalikan  matrik.  Setiap  kolom diperlakukan sebagai polinomial 4-suku pada Galois Field(2^8). Perkalian  array  state  dengan  x   dapat  juga direpresentasikan  dengan  menggunakan  left  shift   dan  operasi  logika XOR.

Berikut adalah contoh Transformasi MixColumns menggunakan Sage.

Jalankan dahulu fungsi di atas sebelum menjalankan fungsi untuk menghitung hasil transformasi MixColumns di bawah ini:

Cara mnghitung Invers Transformasi MixColumns di atas adalah sebagai berikut:

Berikut beberapa referensi untuk membantu kita memahami Transformasi MixColumns :
  1. Rijndael Animation(Flash),  Rijndael Animation(Zip)
  2. Understanding AES Mix-Columns Transformation Calculation.

07 October 2017

Bilangan Prima

Berikut adalah berbagai contoh fungsi untuk Bilangan Prima


Mencari Bilangan Polinomial Prima (Irreducible) diantara \(2^{n-1}\) dan \(2^{n}\).

Misalkan kita membutuhkan bilangan Polinomial untuk modulus seperti yang digunakan pada enkripsi AES (\(x^{8} +x^{4}+x^{3}+x+1\)). Terdapat hampir 40-an angka prima diantara \(2^{n-1}\) dan \(2^{n}\) yang bisa dijadikan modulus untuk operasi perkalian polinomial kita.  (\(x^{8} +x^{4}+x^{3}+x+1\)) adalah bilangan yang pertama. Setelah kita mendapatkan bilangan primanya dalam bentuk desimal, kita bisa rubah ke biner lalu ke bentuk polinomial GF(\(2^{n}\)).

Mencari Invers Perkalian dengan Extended Euclidean

Mencari Invers Perkalian dengan Algoritma Extended Euclidean. 

Di bawah ini adalah cara mencari invers Perkalian dengan Algoritma Extended Euclidean, hasilnya disertai langkah-langkah perhitungannya.

Mencari Invers Perkalian Polinomial GF(2^n)

Berikut adalah contoh mencari Invers Perkalian Polinomial pada GF(2^8) dengan menggunakan algoritma Extended Euclidean.

Pada contoh di bawah ini, kita akan menghitung invers perkalian dari \(\left(x^{7}+x+1\right)\bmod \left(x^{8}+x^{4}+x^{3}+x+1\right)\) dengan menggunakan algoritma Extended Euclidean untuk polinomial.

Dari hasil perhitungan di atas di dapatkan hasil dari \(\left(x^{7}+x+1\right)^{-1} = \left(x^{7}\right) \) .
Dapat juga ditulis sebagai berikut : \(\left(x^{7}+x+1\right)\left(x^{7}\right) \equiv 1\left(mod\left(x^{8}+x^{4}+x^{3}+x+1\right)\right)\)

06 October 2017

Aritmatika Polinomial pada \(GF(2^{n})\)

Aritmatika Polinomial Modulo (\(x^{3}+x+1\)).

  • Penjumlahan
  • Perkalian

Cara Lain Aritmatika Polinomial Modulo (\(x^{3}+x+1\)).

  • Penjumlahan
  • Perkalian

Aritmatika Polinomial Modulo (\(x^{4}+x+1\)).

  • Penjumlahan

Aritmatika Polinomial Modulo (\(x^{4}+x+1\)).

  • Perkalian

Aritmatika pada GF(\(Z_{p}\)) dan GF(\(Z\))

Berikut adalah contoh untuk menghitung Penjumlahan dan Perkalian pada Modulo tertentu.

Penjumlahan Modulo 7 atau bisa disebut Penjumlahan pada GF(7)

Penjumlahan Modulo n atau bisa disebut Penjumlahan pada GF(n)

Perkalian Modulo 7 atau bisa disebut Perkalian pada GF(7)

Perkalian Modulo n atau bisa disebut Perkalian pada GF(n)

Matriks

Operasi Matriks biasa.


Berikut adalah contoh Operasi Matriks pada Finite Field (GF).. Finite Field yang digunakan harus bilangan prima.


Cara membuat ruang Matriks dengan Finite Field GF(2), jumlah baris 4 dan kolom 8.

Berikut contoh membuat Matriks dengan Ring bilangan bulat (ZZ), matriks bilangan rasional (QQ), atau matriks bilangan real (RR).

01 October 2017

Test Elliptic Curve Certicom Patent

Simplified DES

Simplified DES atau S-DES adalah kriptografi yang di desain untuk tujuan edukasi, untuk membantu siswa/mahasiswa mempelajari tentang teknik kriptografi modern. S-DES mempunyai properti dan struktur yang sama seperti DES namun telah disederhanakan sehingga lebih mudah untuk melakukan perhitungan enkripsi dan dekripsi menggunakan pensil dan buku. Setelah mempelajari S-DES maka kita akan mempunyai bayangan yang mudah terhadap kriptografi DES dan block cipher yang lainnya.

Blok Diagram S-DES
DES sendiri adalah sebuah algoritma enkripsi blok dengan kunci simetrik dengan ukuran blok 64-bit dan ukuran kunci 56-bit. DES untuk saat ini sudah dianggap tidak aman lagi. Penyebab utamanya adalah ukuran kuncinya yang sangat pendek (56-bit). DES mempunyai potensi kelemahan terhadap exhaustive key search attack/brute force attack karena panjang kunci yang relatif pendek (hanya 56-bit). Sejak beberapa tahun yang lalu DES telah digantikan oleh Advanced Encryption Standard (AES).


SIMPLIFIED DES (S-DES)
  • Block input (plaintext)     : 8-bit
  • Block output (ciphertext) : 8-bit
  • Panjang Kunci (Key)       : 10-bit
  • Round key di-generate dengan permutasi dan left shift
  • Enkripsi : Initial Permutation (IP),  Round Function (\(f_{K}\)), Switch Half (SW)
  • Dekripsi : sama dengan enkripsi hanya urutan memasukkan Round Key dibalik

Algoritma S-DES menggunakan 5 (lima) buah fungsi : Initial Permutation (IP), Fungsi Kompleks  - \(f_{K}\) (Operasi Ekpand/Permutasi, Xor, Substitusi), Switch (SW), dan Invers Initial Permutation (\(IP^{-1}\)).

OPERASI-OPERASI PADA S-DES.

1. OPERASI PEMBANGKITAN KUNCI

Blok Diagram Key Generation S-DES

    a.  P10 (Permutasi)

         Input    : 1, 2, 3, 4, 5,  6, 7,  8,  9, 10
         Output : 3, 5, 2, 7, 4, 10, 1, 9,  8,  6

    b.  LS-1 (Left Shift 1 Posisi)
         Input    : 1, 2, 3, 4, 5
         Output : 2, 3, 4, 5, 1

    c.  P8 (Pemilihan dan Permutasi)
        Input    : 1, 2, 3, 4, 5,  6, 7,  8,  9, 10
        Output : 6, 3, 7, 4, 8, 5, 10, 9

    d.  LS-2 (Left Shift 2 Posisi)
         Input    : 1, 2, 3, 4, 5
        Output : 3, 4, 5, 1, 2

2. OPERASI ENKRIPSI

    a.  IP (Initial Permutation)
Blok Diagram Enkripsi S-DES
  
         
        Input    : 1, 2, 3, 4, 5,  6, 7,  8
         Output : 2, 6, 3, 1, 4,  8, 5,  7

    b.  E/P (Expand dan Permutate)
         Input    : 1, 2, 3, 4
        Output : 4, 1, 2, 3, 2,  3, 4,  1

    c. XOR (\(E/P\oplus K_{1}\))

    d.  S-Box (Substitution Box)
Matriks Substitusi S-Box S-DES
            S-Box adalah sebuah matriks substitusi. Kita menggunakan input untuk memilih
            baris-kolom dan nilai pada baris-kolom yang terpilih adalah outputnya.
            Input    : 4-bit (\(bit_{1}, bit_{2}, bit_{3}, bit_{4}\))
                          \(bit_{1}, bit_{4}\) untuk menentukan baris
                          \(bit_{2}, bit_{3}\) untuk menentukan kolom
            Output : 2-bit (diambil dari matriks substitusi yg baris-kolomnya terpilih).

        e.  P4 (Permutasi)
             Input    : 1, 2, 3, 4
             Output : 2, 4, 3, 1

        f.  XOR (Output IP-Left 4 bit XOR Output P4)

        g.  SW (Switch antara Output XOR dengan Output IP-Right)

        h.  \(IP^{-1}\) (Invers Initial Permutation)
             Input    : 1, 2, 3, 4, 5,  6, 7,  8
             Output : 4, 1, 3, 5, 7,  2, 8,  6

    3.  OPERASI DESKRIPSI

    • Merupakan kebalikan dari Operasi Enkripsi di atas, dengan menggunakan kunci yang sama hanya urutan memasukkan kunci dibalik.
    Berikut adalah contoh Simplified Data Encryption Standard (S-DES) dari Buku William Stalling :
    • Enkripsi.

    • Dekripsi.

    Kita bandingkan hasilnya dengan Simplified DES dari Library Sage sebagai berikut :

    Berikut cara mencari Invers Permutasi dengan library Sage:

    PERBANDINGAN S-DES DAN DES


    No S-DES DES
    1 8-bits block plaintext 64-bits block plaintext
    2 10-bits key 56-bits key
    3 2 x 8-bits round key 16 x 48-bits round key
    4 IP 8-bits IP 64-bits
    5 F operate on 4-bits F operate on 32-bits
    6 2 S-Boxes 8 S-Boxes
    7 2 rounds 16 rounds
    8 \(C=IP^{-1}(fK_{2}(SW(fK_{1}(IP(P)))))\) \(C=IP^{-1}(fK_{16}(SW(fK_{15}(SW(...(fK_{1}(IP(P))))))))\)

    SAAT RESTORAN DIBUKA KEMBALI, INILAH YANG HARUS ANDA KETAHUI TENTANG AC, ALIRAN UDARA, DAN COVID-19

    Pengunjung yang makan di restoran mungkin bisa memberi tahu banyak tentang bagaimana para penggiat bisnis restoran berusaha mengurangi risik...