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.