Thursday, January 5, 2023

Threat Modeling-WKRPL

Posted by Amelia Rahmadhini on January 05, 2023 with No comments

Threat Modeling

 

A.    What is Threats?

Sumber bahaya bagi proyek pengembangan aplikasi, karena proyek tersebut akan diimplementasikaN

B.     Kategori threats:

a.       Business threats

·         Merupakan ancaman terhadap fungsi bisnis yang mendasari dan mungkin tidak mudah terlihat.

·         Business threats: ancaman terhadap fungsi bisnis yang dapat menyebabkan gangguan atau kerusakan pada fungsi bisnis atau proses dan sumber daya pendukung bisnis.

·         Contoh: fungsi penggajian di sebagian besar bisnis. Jika aplikasi absensi karyawan tidak tersedia untuk melaporkan jumlah jam kerja karyawan, maka fungsi penggajian mungkin terpengaruh karena tidak ada dasar untuk mengukur berapa jam setiap karyawan telah bekerja.

·         Business threats sering diabaikan selama pengembangan perangkat lunak karena mudah tersesat dalam fokus memenuhi persyaratan/requirement proses desain, tanpa menyadari bahwa fungsi bisnis tambahan mungkin terpengaruh.

·         Kegagalan untuk mengenali ancaman bisnis selama proses penilaian risiko dapat mengakibatkan kegagalan untuk menambahkan perlindungan yang tepat selama fase desain ketika biayanya relatif kecil dibandingkan dengan menambahkan perlindungan yang sama setelah fase implementasi.


b.      System threats

·         System threats adalah ancaman langsung terhadap aplikasi atau salah satu subsistemnya.

·         Biasanya lebih banyak ancaman langsung yang ditujukan pada aplikasi perangkat lunak atau platform tempat aplikasi tersebut digunakan.

·         Threats ini biasanya lebih mudah untuk dikenali selama usaha pengembangan perangkat lunak.

·         Contoh: Simple data entry errors pada sistem absensi karyawan. Jika jumlah jam kerja yang diinputkan untuk seorang pegawai tidak benar, maka akan menyebabkan pegawai tersebut kurang bayar atau lebih bayar.

 

c.       Environmental threats

·         Menunjukkan bahaya terhadap informasi atau sistem informasi berdasarkan lingkungan sekitan sistem informasi.

·         Contoh: kabel terpotong, electromagnetic interference, kondisi lingkungan,material berbahaya, fluktuasi daya.


d.      Natural threats

·         Menunjukkan bahaya terhadap informasi atau sistem informasi berdasarkan kejadian alam, seperti banjir, tornado, putting beliung dan longsor.

 

C.     Cara Mengidentifikasi threats

1)      Melakukan review terhadap histori serangan

2)      Melakukan review terhadap isu saat ini yang melibatkan pelanggaran data

3)      Melakukan review situs internet

4)      Threat Modeling

 

D.    THREAT MODELING

-          Threat Modeling merupakan proses menganalisa sebuah sistem untuk melihat kelemahannya yang berasal dari pilihan desain yang kurang diinginkan.

-          Tujuannya untuk Mengidentifikasi kelemahan sebelum sistem diimplementasikan, sehingga dapat dilakukan tindakan korensi secepat mungkin.

-          Threat modeling merupakan sebuah aktivitas siklus → Aktivitas ini dimulai dari tujuan yang jelas, kemudian dilanjutkan dengan aksi dan analisis yang dilakukan berulang

-          Threat modeling merupakan aktivitas yang dilakukan dalam siklus pengembangan sistem.

-          Threat modeling memberikan perspektif yang dapat digunakan untuk memandu setiap keputusan yang memengaruhi keamanan selama proses pengembangan perangkat lunak

-          Threat modeling membuat pekerjaan pengembangan sistem menjadi lebih mudah dan lebih baik dalam jangka waktu yang panjang.

-          Threat modeling akan mengarah pada arsitektur yang lebih bersih, batas kepercayaan yang terdefinisi dengan baik, pengujian keamanan yang fokus, dan dokumentasi yang lebih baik

-          Langkah-Langkah Dasar Threat Modeling

1.      Identifikasi objek dari sistem yang sedang dipertimbangkan

2.      Identifikasi alur antar objek tersebut

3.      Identifikasi asset

4.      Identifikasi kelemahan dan kerentanan sistem

5.      Identifikasi threats (ancaman)

6.      Tentukan eksploitasi

 

E.     Threat Modeling Metodologi

1.      STRIDE

·         STRIDE merupakan singkatan dari Spoofing, Tampering, Repudiation,

 Information disclosure, Denial of Service, Elevation of privilege

·         Metode ini diformalisasi oleh Microsoft pada tahun 1999 dan pertama kali disebutkan dalam paper yang ditulis oleh Loren Kohnfelder dan Praerit Garg, dengan judul “The Threats To Our Products”

·         Sebagai anggota tim development, kita diminta untuk “Berfikir seperti hacker” Ketika melakukan klasifikasi threat

 

a.      Spoofing Threats

Spoofing adalah salah satu bentuk kejahatan dunia maya atau cyber crime yang perlu Anda waspadai.Spoofing adalah setiap ancaman dunia maya yang berpura-pura menjadi seseorang atau sesuatu yang palsu. Teknik spoofing biasanya berupa pengiriman pesan menggunakan alamat IP yang seolah-olah dikirim dari port komputer yang aman ke suatu komputer. Tetapi sebenarnya, pesan tersebut dikirim dari komputer hacker yang telah memalsukan alamat IP tersebut.

 

b.      Tampering Threats

Tampering yaitu memodifikasi sesuatu, biasanya pada disk, jaringan, atau memori. Ini dapat mencakup mengubah data dalam spreadsheet

(menggunakan program seperti Excel atau editor lain), mengubah file

biner atau konfigurasi pada disk, atau memodifikasi struktur data yang

lebih kompleks, seperti database pada disk.

 

c.       Repudiation Threats

-          Repudiation : mengklaim Anda tidak melakukan sesuatu, atau tidak bertanggung jawab atas apa yang terjadi. Orang dapat menyangkal dengan jujur atau menipu.

-          Repudiation umumnya terjadi pada business layer

 

d.      Denial-of-Service Threats

Denial-of-service (serangan DoS) adalah serangan dunia maya di mana pelaku berupaya membuat mesin atau sumber daya jaringan tidak tersedia bagi pengguna yang dituju dengan mengganggu layanan host yang terhubung ke Internet untuk sementara atau tanpa batas. Denial-of-Service Threats menyerap resource yang dibutuhan untuk

menyediakan layanan.

 

e.       Elevation of Privilege Threats

Elevation of Privilege Threats yaitu mengizinkan seseorang untuk

melakukan sesuatu yang tidak boleh mereka lakuka misalnya,

mengizinkan pengguna normal untuk mengeksekusi kode sebagai

admin, atau mengizinkan orang jarak jauh tanpa hak istimewa apa pun

untuk menjalankan kode.

 

2.      Identifikasi STRIDE

·         Spoofing

User Alice dapat dipalsukan saat mengirimkan permintaan, karena tidak ada indikasi bahwa pengguna diautentikasi ke sistem pada saat permintaan dikirimkan. Ini dapat dikurangi dengan membuat skema otentikasi pengguna yang tepat.

·         Tampering dapat terjadi antara key server dan key repository. Penyerang dapat mencegat komunikasi dan mengubah nilai key blob yang sedang ditransaksikan dengan meniru salah satu endpointa (yang dapat menyebabkan peniruan lebih lanjut atau menangkap informasi sensitif). Hal ini dapat dikurangi dengan membangun komunikasi yang diautentikasi bersama melalui TLS

·         Repudiation

Penyerang dapat langsung mengakses database key repository dan menambah atau mengubah key. Penyerang juga dapat menganggap key untuk pengguna yang tidak memiliki cara untuk membuktikan bahwa mereka tidak mengubahnya. Ini dapat dikurangi dengan mencatat log operasi dan hash key pada waktu pembuatan pada sistem terpisah yang tidak dapat diakses dengan tingkat kepercayaan yang sama dengan database.

·         Information disclosure

Penyerang dapat mengamati lalu lintas antara Alice dan server utama dan memastikan bahwa Alice berkomunikasi dengan Bob. Bahkan tanpa akses ke isi pesan (karena mereka tidak melintasi sistem ini), ada nilai potensial untuk mengetahui kapan dua pihak sedang berkomunikasi. Mitigasi yang mungkin terjadi adalah menutupi identitas Alice dan Bob dalam pengidentifikasi yang digunakan sistem, sehingga mereka memiliki arti sementara dan tidak dapat diperoleh jika informasi diamati bersama, tentu saja, dengan enkripsi saluran komunikasi melalui TLS atau Ipsec.

·         Elevation of privilege

Penyerang mungkin menggunakan fungsionalitas mirip exec() di database untuk mengeksekusi perintah di server pada level database priviledge (yang berpotensi lebih tinggi daripada pengguna biasa). Hal ini dapat dikurangi dengan hardening basis data dan mengurangi priviledge yang dimilikinya saat dijalankan, serta memvalidasi semua input dan menggunakan pernyataan yang disiapkan dan mode akses object-relational mapping (ORM) untuk mencegah masalah SQL injection

 

3.      Variasi dari STRIDE :

·         STRIDE-per-element

·         STRIDE-per-Interaction

 

Sunday, December 4, 2022

Pertemuan 12 : Modul 10 - Gui dengan Python (Socket Programming)

Posted by Amelia Rahmadhini on December 04, 2022 with No comments

 GUI dengan Python


Python menyediakan berbagai cara untuk membuat aplikasi dengan Graphical User Interface (GUI). Salah satu library yang paling sering digunakan adalah tkinter. Jalankan perintah berikut untuk instalasi library Tcl/Tk: sudo apt-get install python3-tk


Percobaan

Percobaan 1

Program

Output

Tugas 1: Amatilah dan A nalisa data program, kemudian jelaskan cara kerjanya

Pada percobaan ini akan dilakukan penampilan Graphical User Interface (GUI) yang mana pada tampilannya menampilkan tulisan "Hello World". Pada programnya terdapat from tkinter impor *. dan juga from tkinter import ttk. Tkinter merupakan library yang sudah sering didengar untuk membuat aplikasi antarmuka (GUI) python. Tkinter menyediakan cara cepat dan mudah yang berorientasikan objek yang kuat dalam membuat aplikasi python berbasiskan GUI. Tkinter biasanya secara default di-bundle dengan Python. Kemudian terdapat root = Tk() yang mana itu merupakan class nya yang nantinya pada bagian window dari outputnya terdapat tulisan t. Kemudian juga terdapat button dan juga terdapat text "Hello World" kemudian juga terdapat grid(). Grid() merupakan sebuah method yang berfungsi untuk mengatur widget grid dan juga terdapat mainloop(). Mainloop ()digunakan ketika aplikasi kamu siap dijalankan. mainloop () adalah loop tak terbatas yang digunakan untuk menjalankan aplikasi, tunggu sampai suatu peristiwa terjadi dan proseskan peristiwa selama jendela tidak ditutup.

Percobaan 2

Program

Output

Tugas 2: Amatilah dan analisa data program, kemudian jelaskan cara kerjanya. 

Pada bagian ini terdapat from tkinter impor * dan juga tedapat from tkinter import ttk. Lalu terdapat class FeetToMeters yang mana nantinya ini akan mengukur panjang dengan kaki menjadi meter. Didalam class FeetToMeters digunakan def yang mana terdapat sel dan root. Kemudian pada root title nya digunakan Feet to  Meters. Pada mainframe nya digunakan padding dengan ukuran 3,3,12,12 lalu juga digunakan grid untuk coloum, row dan stickynya. Kemudian juga terdapat coloumconfigure dan rowconfigure. Pada bagian self.feet nya digunakan StringVar dan juga terdapat feet_entry. Selanjutnya digunakan ttk.label dn juga ttk.Button. Lalu setelah itu terdapat def calculate dimana terdapat try dan juga except. Pada bagian outputnya terdapat window dengan nama feet to meterd yang mana di dalamnya terdapat calculate yang nantinya akan mengubah dari ukuran kaki menjadi meter. Pada outputnya diilakukan percobaan menambahkan angka 5 sebagai ukuran kaki nya maka saat dilakukan calculate menjadi meters mendapatkan hasil 1524 meters. 


Percobaan 3

Program

Output

Tugas 3: Amatilah dan analisa data program, kemudian jelaskan cara kerjanya. 

Pada bagian ini akan dilakukan send to country's leader yang mana nntinya kita dapat memberikan greeting card, flowers dan nastygram kepada suatu negara. Pada bagian programnya digunakna from tkinter import *, from tkinter import tk dan juga root = Tk(). Pada bagian countrycodesnya ditambahakan nama kode dari beberapa negara, kemudian pada bagian countrynames nya ditambahkan nama-nama negara  yang sudah dibuatkan kode nya tadi. Lalu pada bagian cnames nya digunakan StringVar dan juga terdapat populasi dari masing-masing negara. Kemudian terdapat gifts yang mana gifts ini nantinya akan muncul pada output dan dapat diberikan kepada negara yang sudah kita selct. Kemudian terdapat tipe data dari masing masing gifts nya. Selanjutnya juga terdapat def showPopulation dimana ini nantinya akan menampilkan populasi dari suatu negara, kemudian terdapat def sendGifts yang mana bagian ini kita dapat memberikan gifts kepada negara, lalu juga digunakan gtid dan juga terdapat for. Pada bagian outpunya di bagian window terdapat tylisan tk yang mana pada outputnya terdapat nama-nama negara yang disebelahnya terdapat gifts yang dapat kita berikan kepada negara tersebut dengan cara menkil bagian gift nya lalu pilih button sendgift maka gifts tersebut terkirim kepada dengan nya, misalnya pada output diatas kita mengirimkan hadian kepadan negara sweden maka akan muncul message " sent Greeting card to leader of sweden". Lalu pada outputnya juga terdapat Populasi dari negara tersebut, saat kita klik suatu negara maka akan langsung muncul jumlah populasi pada negara tersebut. 



Thursday, December 1, 2022

Pertemuan 11 : Latihan Software Security Design

Posted by Amelia Rahmadhini on December 01, 2022 with No comments

1. Rangkuman Materi

Software Security Design


Secure Software Development  Life Cycle (SDLC)



Pada bagian software security design terdapat berberapa masalah design yang terjadi terkait 
dengan business logic flaw. Memperbaiki Memperbaiki masalah (security) yang terjadi di production 100x lebih mahal daripada ketika pada fase desain. Terdapat salah satu contoh kesalahan desain yaitu banyaknya aplikasi yang tidak melakukan verifikasi email (sebagai identitas) untuk pembuatan akun, reset password, dll yang mengakibatkan orang lain dapat membuat akun kita dengan alamat email orang tersebut. Langkah yang dapat dilakukan sehingga ti9dak terjadinya hal seperti itulah adalah 

  • Pengguna mengisikan alamat email sebagai akun
  • Email dikirimkan dengan tautan (link) yang unik
  • Tunggu pengguna melakukan klik terhadap tautan (untuk verifikasi)
  • Akun baru dibuat Setelah sistem mendapatkan verifikasi tersebut
Security is a Concern not a Feature

- User authentication pada website penyimpanan foto

  • User story (function-focused) : Sebagai pengguna, Saya ingin sebuah halaman login sehingga Saya dapat mengakses foto yang sudah saya upload.
  • User story (security concern) : Sebagai pengguna, Saya ingin mengakses foto yang sudah saya upload melewati halaman login, sehingga foto saya tetap rahasia
Pendekatan tradisional Software Security dan Kelemahannya
  • Cara penanganan keamanan dalam perangkat lunak seperti ini biasa terjadi, tetapi juga bermasalah karena beberapa alasan, beberapa di antaranya:
    • Pengembang perlu secara eksplisit memikirkan kerentanan keamanan, sementara pada saat yang sama berfokus pada penyelesaian fungsionalitas bisnis.
    • Mengharuskan setiap pengembang untuk menjadi ahli keamanan.
    • Diasumsikan bahwa orang yang menulis kode dapat memikirkan setiap potensi kerentanan yang mungkin terjadi sekarang atau di masa mendatang.
Arsitektur dan Desain
  • Arsitektur dan desain merupakan fase kritis dari SDLC
  • Keputusan yang diambil pada fase ini menentukan ketahanan sistem terhadap serangan. 
    • Keputusan yang baik yang dibuat selama fase ini tidak hanya akan menghasilkan pendekatan dan struktur yang lebih tangguh dan tahan terhadap serangan, tetapi juga sering membantu untuk menentukan dan memandu keputusan yang baik di fase selanjutnya seperti kode dan pengujian. Keputusan buruk yang dibuat selama fase ini dapat menyebabkan cacat desain yang tidak pernah dapat diatasi atau diselesaikan bahkan oleh kode dan upaya pengujian yang paling cerdas dan disiplin sekalipun.
  • Setengah dari cacat yang menyebabkan kerentanan keamanan yang ditemukan dalam perangkat lunak saat ini sebenarnya disebabkan oleh kelemahan dalam arsitektur dan desain [McGraw 2006]
  • Tujuan membangun keamanan ke dalam fase arsitektur
Issue dan Tantangan
  • Tantangan untuk membangun keamanan ke dalam bagian arsitektur dan desain dari SDLC adalah bahwa arsitektur tidak hanya harus mengatasi masalah keamanan yang dipahami namun pada tingkat abstraksinya juga harus fleksibel dan tangguh di bawah kondisi keamanan yang terus berubah. 
  • Tidak ada sistem yang dapat sepenuhnya aman
Software Architecture and Software Design
  • Arsitektur perangkat lunak (Software Architecture) dari suatu sistem menggambarkan organisasi atau struktur sistem, dan memberikan penjelasan tentang bagaimana perilakunya. 
  • Desain perangkat lunak (Software Design) adalah proses konseptualisasi requirement perangkat lunak ke dalam implementasi perangkat lunak.
Hubungan Software Architecture dan Software Design
  • Arsitektur perangkat lunak memaparkan struktur sistem sambil menyembunyikan detail implementasi. Arsitektur juga berfokus pada bagaimana elemen dan komponen dalam suatu sistem berinteraksi satu sama lain.
  • Desain perangkat lunak menggali lebih dalam detail implementasi sistem. Masalah desain mencakup pemilihan struktur data dan algoritma, atau detail implementasi komponen individual.
Architectural Risk Analyst
  • Melakukan analisis risiko arsitektur
  • Analisis risiko arsitektur dimaksudkan untuk memberikan jaminan bahwa masalah keamanan tingkat arsitektur dan desain diidentifikasi dan ditangani sedini mungkin dalam life cycle, menghasilkan tingkat ketahanan, toleransi, dan ketangguhan terhadap serangan yang lebih baik.
  • Tanpa analisis semacam ini, kelemahan arsitektural akan tetap tidak tertangani sepanjang life cycle dan kemungkinan besar akan mengakibatkan kerentanan keamanan yang serius pada perangkat lunak yang diterapkan.
Aktivitas Risk Analysis Methodology

1. Software characterization
  • Memahami software dan cara kerjanya. 
  • Untuk architectural risk analysis membutuhkan deskripsi minimal menggunakan diagram yang menghasilkan gambaran yang komprehensif, namun ringkas yang secara jelas menggambarkan sifat sebenarnya dari perangkat lunak tersebut.
  • Mengumpulkan informasi untuk karakterisasi perangkat lunak ini biasanya melibatkan peninjauan spektrum yang luas dari artefak sistem dan melakukan wawancara mendalam dengan pemangku kepentingan tingkat tinggi seperti manajer produk/program dan desainer perangkat lunak.


2. Threat analysis
  • Threat (Ancaman) adalah agen yang melanggar perlindungan aset informasi dan kebijakan keamanan situs.
  • Threat Analysis mengidentifikasi ancaman yang relevan untuk arsitektur, fungsionalitas, dan konfigurasi tertentu.
  • Selama analisis ini, threat dapat dipetakan ke kerentanan untuk memahami bagaimana perangkat lunak dapat dieksploitasi.
  • Rencana mitigasi terdiri dari tindakan pencegahan yang dianggap efektif terhadap kerentanan yang teridentifikasi yang dieksploitasi oleh ancaman ini.
3. Architectural vulnerability assessment
  • Penilaian kerentanan memeriksa prasyarat yang harus ada agar kerentanan dapat dieksploitasi dan menilai status yang mungkin dimasuki perangkat lunak saat dieksploitasi. 
  • Tiga kegiatan membentuk penilaian kerentanan arsitektur: analisis resistensi serangan, analisis ambiguitas, dan analisis ketergantungan. 
  • Pengujian analisis risiko hanya dapat membuktikan adanya—bukan tidak adanya—cacat. 
  • Analisis risiko arsitektur mempelajari kerentanan dan ancaman yang mungkin berbahaya atau tidak berbahaya. Apakah kerentanan dieksploitasi secara sengaja (jahat) atau tidak sengaja (nonmalicious)
  • Salah satu keuntungan saat melakukan penilaian kerentanan pada tingkat arsitektur adalah kemampuan untuk melihat hubungan dan efek pada tampilan “forest-level" daripada “tree-level". 
4. Risk likelihood determination
  • Setelah menentukan ancaman mana yang penting dan kerentanan mana yang mungkin ada untuk dieksploitasi, akan berguna untuk memperkirakan kemungkinan berbagai kemungkinan risiko.
  • Dalam keamanan perangkat lunak, "kemungkinan" adalah perkiraan kualitatif tentang seberapa besar kemungkinan serangan yang berhasil.
  • Meskipun demikian, konsep kemungkinan dapat berguna saat memprioritaskan risiko dan mengevaluasi keefektifan mitigasi potensial.
  • Faktor-faktor yang perlu dipertimbangkan:
    • Motivasi dan kemampuan ancaman
    • Dampak kerentanan (dan karena itu daya tarik bagi penyerang)
    • Efektivitas kontrol saat ini
5. Risk impact determination
  • Risk Impact harus di tentukan
  • Aspek yang perlu diperhatikan
    • Identify Threatened Assets
    • Identify Business Impact
    • Risk Exposure Statement
6. Risk mitigation planning
  • Mitigasi risiko memerlukan perubahan arsitektur perangkat lunak atau bisnis dalam satu atau lebih cara untuk mengurangi kemungkinan atau dampak risiko.
  • Pengujian formal dan informal, seperti pengujian penetrasi, dapat digunakan untuk menguji keefektifan tindakan mitigasi ini.
  • Mitigasi yang ditujukan pada kelemahan arsitektur seringkali lebih rumit untuk diimplementasikan daripada mitigasi yang berfokus pada bug pengkodean, yang cenderung lebih terlokalisasi.
  • Mitigasi arsitektur sering membutuhkan perubahan pada banyak modul, banyak sistem, atau setidaknya banyak kelas dan entitas yang terpengaruh dapat dikelola dan diimplementasikan oleh tim yang berbeda.
Desain
  • Desain adalah panduan prinsip bagaimana sebuah sistem dibangun dan dapat diterapkan di semua tingkatan 
  • Desain mencakup aktivitas apa pun yang melibatkan pengambilan keputusan aktif
Security Design (Desain Keamanan)
  • Mendefinisikan sesuatu yang tidak boleh terjadi
    • Safety
    • Abuse, Misuse, pelanggaran kebijakan. 
    • Desain keamanan berupa kendali (control)
Desain Kendali
  • Software Security Design Considerations
    • Confidentiality Design (Menggunakan kriptografi)
    • Integrity Design (Menggunakan hash functions)
    • Availability Design (Data replication)
    • Authentication Design(SSO)
    • Authorization Design (Roles, separation of duty, least priviledge)
    • Auditing/Logging Design
  • Secure Design Principles
    • Least privilege
    • Separation of duties
    • Defense in Depth
    • Fail Secure
    • Economy of Mechanism
    • Complete Mediation
    • Open Design
    • Least Common Mechanism
    • Psychological Acceptability
    • Leveraging Existing Components
  • Least Privilage
    • Gunakan access rights (privilage) se-minimal mungkin
    • Terkait dengan konfigurasi bukan softwarenya
    • Modular programming
  • Separation of Duty
    • Memisahkan kunci kriptografi (splitting keys)
  • Defense in Depth
    • Layered defense (berlapis-lapis)
    • Masalah (vulnerability) di satu tempat tidak menjadikan total compromise
  • Fail Secure
    • Bila gagal, masuk ke zona secure
    • Hati-hati untuk tidak menjadi DoS
  • Economy of Mechanism
    • Fungsi dan pengamanan yang tidak dibutuhkan (berlebihan) harus dihindari
  • Complete Mediation
    • Access request harus diuji setiap saat
  • Open Design
    • Pisahkan kerahasiaan dengan desain
    • Lawannya adalah security through obscurity
  • Least Common Mechanism
    • Mekanisme yang sama (common) untuk pengguna / proses dengan tingkat otoritas yang berbeda tidak boleh digunakan bersama (shared)
    • Potensi terjadinya kebocoran informasi
    • Harus dikotak-kotakkan
  • Psychological Acceptability
    • Penerapan pengamanan diusahakan tidak menyulitkan pengguna. Jika tidak, akan terjadi masalah keamanan di tempat lain
  • Psychological Acceptability (cont.)
    • Penerapan Keamanan  harus :  mudah digunakan, tidak mengubah accessibility, transparan terhadap pengguna
  • Leveraging Existing Components
    • Menggunakan komponen / layanan yang sudah tersedia
    • Menggunakan algoritma kriptografi yang sudah terbukti aman
    • Menggunakan library yang banyak digunakan
Design Consideration
  • Confidentiality Design => Menggunakan kriptografi
  • Integrity Design => Penggunaan hash function
  • Availability Design => Menghindari Denial of Service (DoS)

2. Buat contoh untuk menghitecture risk analysis.







Sunday, November 27, 2022

Pertemuan 11 : Modul 9 - Multirecipient (Socket Programming)

Posted by Amelia Rahmadhini on November 27, 2022 with No comments

 Multirecipient

1. Dasar Teori

    Konsep client-server merupakan dasar dari setiap transaksi yang terjadi pada setiap aplikasi jaringan. Socket merupakan antarmuka antara application process dan transport layer. Setelah sebelumnya kita mempelajari beberapa metode untuk penanganan request dari banyak client ke server, maka muncul pertanyaan Bagaimana Jika kita akan mengirimkan data ke banyak penerima? Ada beberapa solusi yang dapat diterapkan diantaranya adalah menggunakan fasilitas yang disediakan oleh jaringan yaitu broadcast dan multicast. Dalam penerapannya metode broadcast dan multicast sendiri memiliki keterbatasan, yaitu:

■ Hanya UDP socket yang dapat melakukan broadcast dan multicast

■ Broadcast hanya mencakup lingkup lokal, biasanya jaringan area local (LAN).

■ Multicast di seluruh Internet saat ini tidak didukung oleh sebagian besar penyedia layanan Internet.

    Broadcast merupakan pengiriman data dengan tujuan semua alamat yang berada dalam 1 jaringan. Aplikasi akan mengirimkan data ke alamat broadcast, apabila data dikirim ke alamat ini maka semua host yang berada dalam jaringan tersebut akan menerima data. Sebelum mengirimkan data ke alamat broadcast, maka kita harus meminta “izin” kepada sistem untuk melakukan broadcast dengan men-set opsi SO_BROADCAST harus pada sisi pengirim.

    Berbeda dengan broadcast, multicast merupakan pengiriman data dengan tujuan alamat group dalam 1 jaringan. Pada prakteknya dalam pemrograman tidak perlu set permission untuk multicast. Multicast sender dapat men set nilai TTL untuk mengirimkan datagram. Langkah-langkah yang harus dilakukan dalam pemrograman untuk melakukan broadcast maupun multicast pada dasarnya sama dengan pemrograman menggunakan UDP, namun pada broadcast perlu penambahan socket option SO_BROADCAST, sehingga sistem mengizinkan untuk melakukan broadcast.

2. Percobaan

Program 1: program multicast

- Server

- Client

- Output

Tugas 1: Amatilah dan analisa pogram datas, kemudian jelaskan cara kerjanya

Jawab: Pada percobaan multicast ini di bagian servernya terdapat import socket, import struct dan juga imports sys, lalu terdapat message = "HALLO SAYA AMELIA" yang mana pada bagian message ini adalah suatu pesan yang nantinya akan dikirimkan dari server sehingga nantinya akan muncul pada bagian client. Setiap dijalankannya perintah multicast server maka pesan tersebut akan muncul pada bagian client.  Kemudian terdapat multicast_group() yang mana bagian multicast_group() ini adalah suatu grup yang mana nantinya dapat menghubungkan 2 client yang mempunyai server atau ip yang berbeda atau di pc yang berbeda. Saat dilakukan nya run pada servernya maka dari client yang berbeda dapat terkirim pesan yang mana terdapat ip dari server masing-masing. Lalu terdapat server_address dan sock.settimeout yang mana  waktu nya disetting 0.2 dan juga digunakan struct. Pada programnya juga terdapat try yang dimana nantinya akan terdapat pesan sending berisi ip dari clientnya dan juga digunakan while dimana jika true aka terdapat pesan "waiting to receive" lalu terdapat juga except socket.tmeout yang mana jika tidak ada respon dalam waktu 0.2 maka akan muncul pesan "timed out, no more responses dan terdapat break, jika terdapat respon lagi dari client maka akan terdapat pesan "reeive "ack" form..." dan jika memang tidak ada lagi respon maka akan muncul pesan "Closing socket". 

Pada bagian client nya digunakan juga import socket, import struck, dan import sys yang mana juga terdapat multicast_group yang sama pada bagian server sebelumnya dan juga terdapat server address. Kemudian pada bagian client ini juga digunakan sock.bind yang mana mengarah pada bagaian server address dan juga terdapat group yang mana group ini adalah client yang terdapat pada multicast_group. Lalu terdapat while true yang mana saat dilakukannya run pada program maka akan muncul pesan "waiting to receive message" dan juga terdapat "received...bytes from..." kemudian juga terdapat print yang mana nantinya akan memunculkan pesan yang sebelumnya kita buat di bagian server lalu setelah itu terdaoat pesan "sending acknowledement to...". 

Pada bagian outputnya terlihat bahwasanya pada bagian servernya terdapat 2 ip address yang berbeda yang mana ip tersebut berasal dari client yang berdeba. Pada bagian client nya dapat dilihat bahwasanya terdapat pesan antar client yang mana saat client1 menjalankan servernya maka akan muncul pada bagian client1 dan client2 dan begitu juga dengan client2 jika menjalankan servernya makan akan muncul pada bagian client1 dan client2. Hal tersebut terjadi karena client1 dan client2 sudah berada didalam group yang sama sehingga memungkinkan saling berbagi data


Program 2: Program Broadcast

- Server

- Client

- Output

Tugas 2:Amatilah dan analisa pogram datas, kemudian jelaskan cara kerjanya

Jawab: Pada bagian servernya digunakan library import socket dan juga import time  yang man terdapat server.setsocket yang mana pada programnya terdapat SO_REUSEPORT dan juga SO_BROADCAST lalu terdapat server.settimeout yang mana disini waktu untuk broadcast nya disetting 0,2. Kemudin pada programnya juga terdapat message "your very important message" yang mana nantinya pesan ini akan dikirimkan melalui broadcast ke dalam jaringan yang sama. Selanjutnya terdapat while true dimana server nya akan saling terhubung pada lalu lintas yang sama dimana nantinya pada bagian server akan muncul pesan "message sent!". 

Pada bagian client nya terdap import socket yang mana pada program nya juga terdapat client=socket.socket dan juga client.setsockopt yang mana ini untuk menyetel opsi yang terkait dengan socket lalu juga terdapat client.bind yang nantinya akan terhubung ke server. Kemudian terdaoat while true yang mana nantinya jika menerima pesan dari client lain maka akan muncul pesan "received message...".

Pada bagian outputnya dapat dilihat bahwasanya terdapat 1 Server dan 2 client yang mana setiap client mendaoatkan received message dan isi received message nya bermacam-macam namun antara client1 dan client2 isinya sama. Pesan yang di dapatkaj pada client tersebut berasa dari server-server yang berbeda namun masih dalam lalu lintas jaringan yang sama dimana terlebih dahulu kita harus mengubah tipe jaringan nya menjadi bridge agar pesan dari server lain dapat muncul pada bagian client nya. 


Tuesday, November 22, 2022

TUGAS 5 - SOCKET PROGRAMMING

Posted by Amelia Rahmadhini on November 22, 2022 with No comments

 Tugas 5


1. Multirecipient

Konsep client-server merupakan dasar dari setiap transaksi yang terjadi pada setiap aplikasi jaringan. Socket dapat menangani pesan dari banyak client sekaligus (multiple recipient). Pada saat socket client, informasi alamat socket server dilewatkan sebagai argumen dan socket client akan otomatis mencoba meminta koneksi ke socket server. Pada saat permintaan koneksi client sampai pada server, maka server akan membuat suatu socket biasa. Socket ini yang nantinya akan berkomunikasi dengan socket pada sisi client. Setelah itu socket server dapat kembali melakukan listen untuk menunggu permintaan koneksi dari client lainnya.

·         Bagaimana Jika kita akan mengirimkan data ke banyak penerima?

·         Solusi:

1.       Unicast salinan data kesetiap penerima menggunakan single connection.

Permasalahan? Tidak efisien, karena:

-          terjadi duplikasi

-          boros bandwith

2.       Menggunakan dukungan jaringan, dengan:

-          Broadcast

-          Multicast

·         Keterbatasan:

-          Hanya UDP socket yang dapat melakukan broadcast dan multicast

-          Broadcast hanya mencakup lingkup lokal, biasanya jaringan area local (LAN).

-          Multicast di seluruh Internet saat ini tidak didukung oleh sebagian besar penyedia layanan Internet.


2. Unicast 

Unicast adalah transmisi data pada sebuah jaringan yang pling sederhana secara one-to-one.  Sesuai dengan namanya, aliran data unicast hanya menghubungkan komputer tunggal dengan sistem yang dijadikan sebagai host dan perangkat sistem komputer lainnya sebagai tujuan.
Ketika digunakan, perangkat komputer tunggal asal hanya akan mencoba berkomunikasi dengan satu perangkat komputer tujuan saja.

Unicast adalah metode pengiriman paket data hanya ke satu perangkat, jika suatu perangkat ingin mengirim paket data ke beberapa perangkat sekaligus, maka perangkat tersebut harus mengirimkan beberapa paket data dengan alamat spesifikasi yang ada pada paket untuk masing-masing perangkat, setiap paket data perangkat berisi alamat tertentu. Untuk mengirim paket melalui unicast, sumber harus mengetahui alamat IP perangkat tujuan. Seperti yang ditunjukkan pada gambar di bawah ini, dengan unicast, pengirim sumber mengirimkan paket hanya ke satu perangkat target, jika ada lebih dari satu perangkat target, pengirim harus mengirim paket satu per satu, dan setiap paket berisi alamat yang tepat dari target perangkat.

Transmisi jaringan dengan sistem unicast dapat dianalogikan seperti seseorang yang ingin memberikan sebuah undangan kepada satu orang lain secara langsung dengan mengantarkan undangan tersebut ke rumahnya. Diantara pemberi dan penerima undangan akan terjadi komunikasi sehingga pemberi undangan sebagai perangkat asal akan mengetahui bahwa informasi atau undangan yang dikirimnya telah sampai kepada si penerima.


3. Broadcast

Broadcast adalah suatu metode pengiriman data, yang dimana data tersebut dikirim ke banyak titik sekaligus tanpa melakukan pemeriksaan atau pengecekan apakah titik tersebut siap atau tidak ataupun tanpa memperhatikan pakah data tersebut sampai atau tidak.

Broadcast merupakan metode pengiriman paket yang ditujukan untuk semua perangkat pada jaringan. Broadcast juga disebut metode transmisi One to all(satu untuk semua). Address tujuan adalah alamat spesial yang ditentukan untuk pesan broadcast. Pada jaringan ethernet, Broadcast dikrim ke alamat khusus menggunakan format FF-FF-FF-FF-FF-FF-FF. Jika pasket dikirim dengan menggunakan broadcast, maka semua perangkat yang terhubung ke jaringan akan menerima paket yang sama tersebut. Contoh penerapan broadcast adalah DHCP, VTP, dan cara switch mengisi mac tablenya.

Broadcasting mengirimkan data ke banyak perangkat sekaligus atau PTMP (Point to MultiPoint). Saat menggunakan metode ini untuk mengirim ke banyak titik, tidak perlu peduli apakah data sampai ke penerima. Juga jangan melihat apakah perangkat penerima di setiap titik siap menerima paket secara aktif. Cara komunikasi ini biasanya dilakukan pada setiap perangkat yang tergabung dalam jaringan yang sama atau dengan kata lain alamat broadcast yang sama. Jika kita mempelajari subnetting, alamat broadcast adalah alamat terakhir dari subnet. Misalnya, jika Anda memiliki jaringan dengan subnet 192.168.1.0/24, alamat siarannya adalah 192.168.1.255. Ini sering disebut penyiaran subnet. Ada juga broadcast terbatas yang mentransmisikan data menggunakan alamat 255.255.255.255.

Transmisi jaringan broadcast memiliki analogi seperti seorang pemberi undangan yang ingin mengirimkan informasi kepada orang lain. Pemberi undangan sebagai host membagikan undangan dengan menyebarnya di jalan-jalan. Oleh karena itu, perangkat host tidak akan mengetahui bahwa informasi yang dikirimkannya telah sampai dan respon penerima pun tidak akan diketahui oleh perangkat sistem yang menjadi host. 

Broadcast:

- Pengiriman data dengan tujuan semua alamat yang berada dalam 1 jaringan

- Aplikasi akan mengirimkan data ke alamat broadcast, apabila data dikirim ke alamat ini maka semua host yang berada dalam jaringan tersebut akan menerima data

- Sebelum mengirimkan data ke alamat broadcast, maka opsi SO_BROADCAST harus di set pada sisi pengirim meminta “izin” kepada sistem untuk melakukan broadcast.

- Broadcast berfungsi dengan baik jika persentase host jaringan ingin menerima pesan besar; Namun, jika beberapa host perlu menerima paket, broadcast "memaksakan" semua host dalam jaringan untuk keuntungan beberapa orang.

- Pengetahuan tentang alamat tidak diperlukan untuk broadcast. Dalam beberapa konteks (lokal), ini membuat mekanisme broadcast yang lebih baik untuk discovery

  • Alamat Broadcast: 

- Broadcast address pada perangkat, dapat dilihat dengan menggunakan perintah ifconfig.

Contoh: ifconfig eth0

Output yang mungkin ditampilkan :

Pada contoh diatas, broadcast address dapat dilihat pada baris ke 2 yaitu : 192.168.0.255

Broadcast address yang lain adalah 255.255.255.255->merupakan broadcast address umum -> penggunaannya tidak disarankan

4. Multicast

Multicast adalah transmisi data dari satu sumber ke beberapa penerima. Multicasting mirip dengan penyiaran, tetapi hanya mengirimkan informasi ke pengguna tertentu. Ini digunakan untuk mengirimkan streaming dan jenis data lainnya secara efisien ke banyak pengguna secara bersamaan. Cara mudah untuk mengirim data ke beberapa pengguna sekaligus adalah dengan mengirimkan salinan data yang terpisah kepada setiap pengguna. Namun, ini sangat tidak efisien karena banyak salinan dari data yang sama dikirim dari sumber melalui satu atau lebih jaringan.

Multicast memungkinkan satu transmisi untuk dibagikan di antara banyak pengguna, secara signifikan mengurangi bandwidth yang diperlukan. Multicast yang terjadi di Internet disebut IP multicast karena menggunakan Internet Protocol (IP) untuk mengirimkan data.

Multicast IP membuat "pohon multicast" yang memungkinkan satu transmisi bercabang ke pengguna individu. Cabang-cabang ini dibuat di router internet jika diperlukan. Misalnya, jika lima pengguna dari lima negara berbeda meminta akses ke aliran yang sama, percabangan yang mirip dengan aslinya akan dibuat. Jika lima pengguna dari kota yang sama meminta akses ke aliran yang sama, cabang dibuat di dekat pengguna. IP Multicast bekerja dengan menggabungkan dua protokol lainnya dengan Internet Protocol. Multicast juga dapat digunakan untuk mengirim jenis data lain melalui Internet, seperti berita, harga saham, atau bahkan salinan digital perangkat lunak.

Terlepas dari apapun aplikasinya, multicast membantu mengurangi penggunaan bandwidth Internet dengan menyediakan cara yang efisien untuk mengirim data ke banyak pengguna.Apakah metode pengiriman paket identik dengan broadcasting, kecuali bahwa paket dikirim ke beberapa tujuan sekaligus berdasarkan grup tertentu melalui alamat grup. Menggunakan protokol IGMP (Internet Group Management Protocol) untuk mengidentifikasi multicast grup. Tampilan multicast dari alamat IP pribadi antara 24.0.0.0 dan 239.255.255.255. Misalnya saat kita melakukan streaming audio atau video. Tentu saja, banyak komputer ingin mengaksesnya secara bersamaan. Data multicast dikirim hanya sekali tetapi dapat diterima oleh banyak perangkat.

Multicast:

  • Pengiriman data dengan tujuan alamat group dalam 1 jaringan
  • Menggunakan kelas D, sehingga beberapa host akan didaftarkan dengan menggunakan alamat kelas D ini
  • Tidak perlu set permission untuk multicast.
  • Multicast sender dapat men set nilai TTL untuk mengirimkan datagram
  • Untuk mengontrol multicast dapat kita lakukan dengan menggunakan fungsi setsockopt(). Fungsi setsocktopt () menerima flag dari IPPROTO_IP berikut: 
    • IP_ADD_MEMBERSHIP: Join dengan multicast group yang ditentukan.
    • IP_DROP_MEMBERSHIP: keluar dari multicast group yang ditentun
    • IP_MULTICAST_IF: Mengatur interface yang digunakan untuk pengiriman multicast datagram ke luar (outgoing multicast datagrams)
    • IP_MULTICAST_TTL: Mengatur Time To Live (TTL) pada IP header untuk outgoing multicast datagrams.
    • IP_MULTICAST_LOOP: Menentukan apakah salinan outgoing multicast datagrams dikirim ke host pengirim selama ia adalah anggota grup multicast
Mengirimkan Multicast Datagram
  • socket () mengembalikan deskriptor socket yang mewakili end point. Pernyataan itu juga mengidentifikasi bahwa INET address family (Internet Protocol) dengan transport UDP (SOCK_DGRAM) digunakan untuk soket ini. Soket ini mengirimkan datagram ke aplikasi lain.
  • Struktur sockaddr_in menentukan alamat IP tujuan dan nomor port. Contoh, alamatnya adalah 225.1.1.1 dan nomor port adalah 5555.
  • setsockopt () menetapkan opsi soket IP_MULTICAST_LOOP sehingga sistem pengirim tidak menerima salinan datagram multicast yang ditransmisikan.
  • setsockopt () menggunakan opsi socket IP_MULTICAST_IF, yang mendefinisikan interface lokal di mana datagram multicast dikirim.
  • sendto () mengirim datagram multicast ke alamat IP grup yang ditentukan.
  • close () menutup semua deskriptor soket yang terbuka.
Menerima Multicast Datagram
  • socket () mengembalikan deskriptor socket yang mewakili end point. Pernyataan itu juga mengidentifikasi bahwa INET address family (Internet Protocol) dengan transport UDP (SOCK_DGRAM) digunakan untuk soket ini. Soket ini mengirimkan datagram ke aplikasi lain.
  • setsockopt () menetapkan opsi soket SO_REUSEADDR untuk memungkinkan beberapa aplikasi menerima datagram yang diperuntukkan bagi nomor port lokal yang sama.
  • bind () menentukan nomor port lokal. Dalam contoh ini, alamat IP ditetapkan sebagai INADDR_ANY untuk menerima datagram yang ditujukan ke grup multicast.
  • setsockopt () menggunakan opsi soket IP_ADD_MEMBERSHIP, yang bergabung dengan grup multicast yang menerima datagram. Saat bergabung dengan grup, tentukan alamat grup D kelas bersama dengan alamat IP dari antarmuka lokal. Sistem harus memanggil opsi soket IP_ADD_MEMBERSHIP untuk setiap antarmuka lokal yang menerima datagram multicast. Contoh grup multicast (225.1.1.1) bergabung pada antarmuka lokal 9.5.1.1.
  • read () membaca datagram multicast yang sedang dikirim.
  • close () menutup semua deskriptor soket yang terbuka.