Sicurezza

Che cos'è la sicurezza del software??

Che cos'è la sicurezza del software??
La sicurezza del software è la creazione di software sicuro con una difesa intrinseca in modo che continui a funzionare sotto attacchi dannosi, con soddisfazione degli utenti e dei proprietari del software. Questo articolo spiega le minacce e le soluzioni, da un punto di vista generale. Viene inoltre spiegato il vocabolario standard nella sicurezza delle informazioni. Dovresti essere esperto di computer e Internet per capire questo articolo; dovresti aver studiato anche un linguaggio informatico, e.g., Perl, C, C++, PHP, ecc.

Ciò che è protetto sono le informazioni e i pacchetti software (applicazioni e documenti). L'informazione è qualsiasi messaggio utile a chiunque. “Informazione” è una parola vaga. Il contesto in cui viene utilizzato dà il suo significato. Può significare notizie, lezione, tutorial (o lezione) o soluzione. Un pacchetto software è solitamente una soluzione ad alcuni problemi o problemi correlati. In passato, tutte le informazioni non pronunciate erano scritte su carta. Oggi il software può essere considerato come un sottoinsieme di informazioni.

Il software può risiedere in un computer o essere in transito da un computer all'altro. File, dati, e-mail, voce registrata, video registrati, programmi e applicazioni risiedono su un computer. Mentre risiede in un computer, può essere danneggiato. Durante il trasporto, può ancora essere danneggiato.

Qualsiasi dispositivo con un processore e una memoria è un computer. Quindi, in questo articolo, una calcolatrice, uno smartphone o un tablet (e.g., iPad) è un computer. Ciascuno di questi dispositivi e dei relativi supporti di trasmissione di rete dispone di software o software in transito che dovrebbe essere protetto.

Privilegi

A un utente può essere concesso il privilegio di eseguire un file su un computer. Un utente può avere il privilegio di leggere il codice di un file in un computer. Un utente può avere il privilegio di modificare (scrivere) il codice di un file in un computer. A un Utente possono essere concessi uno, due o tutti e tre questi privilegi. Esistono altri privilegi per un sistema operativo o un database. Gli utenti hanno diversi importi o livelli di privilegi in un sistema.

minacce

Basi delle minacce software

Per proteggere il software, devi conoscerne le minacce. Il software deve essere protetto da persone non autorizzate che accedono ai suoi dati. Deve essere protetto contro l'uso illecito (per causare danni, ad esempio). Il software dovrebbe essere protetto contro la divulgazione ai rivali. Il software non deve essere danneggiato. Il software non deve essere cancellato involontariamente. Il software non deve essere interrotto. Il software non dovrebbe avere alcuna modifica non richiesta. I dati (software) non dovrebbero essere ispezionati senza una buona ragione, specialmente da persone non autorizzate. Il software non deve essere copiato (piratato).

Una o più di queste basi, risultanti in un particolare tipo di minaccia classica.

Classi di minaccia software

Attacco di spoofing

Questa è la situazione in cui una persona (o programma) rappresenta con successo un'altra persona (o programma) in alcune attività software. Questo viene fatto utilizzando dati falsi per ottenere un vantaggio illegale.

ripudio

Questa è la situazione in cui qualcuno fa qualcosa di sbagliato e rifiuta di non essere lui/lei a farlo. La persona può usare la firma di un'altra persona per fare la cosa sbagliata.

Violazione dei dati

Una violazione dei dati si verifica quando informazioni sicure o private vengono rilasciate intenzionalmente o meno in un ambiente non affidabile.

Attacco Denial of Service

Una rete di computer software ha software in esecuzione nei computer della rete. Ogni utente di solito usa il suo computer davanti a sé e di solito richiede servizi da altri computer nella rete. Un utente criminale può decidere di inondare un server con richieste superflue. Un server ha un numero limitato di richieste che può gestire in una durata. In questo schema di allagamento, gli utenti legittimi non possono utilizzare il server tutte le volte che dovrebbero, poiché il server è occupato a rispondere alle richieste del criminale. Ciò sovraccarica il server, interrompendo temporaneamente o indefinitamente i servizi del server. Nel corso di questo, l'host (server) rallenta nel funzionamento per gli utenti legittimi, mentre l'autore compie il suo danno, che passa inosservato, perché gli utenti legittimi in attesa, in attesa del servizio, non potevano sapere cosa stava succedendo a il server. Ai buoni utenti viene negato il servizio, mentre l'attacco è in corso.

Aumento dei privilegi

Utenti diversi di un sistema operativo o di un'applicazione hanno privilegi diversi. Quindi, alcuni utenti finiscono per avere più valore di altri, dal sistema. Lo sfruttamento di un bug del software o di una supervisione della configurazione per ottenere un accesso elevato a risorse o informazioni non autorizzate è un'escalation di privilegi.

Gli schemi di classificazione di cui sopra possono essere utilizzati per causare un virus informatico e worm.

Uno o più degli schemi di classificazione di cui sopra possono essere utilizzati per gli attacchi software, che includono: furto di proprietà intellettuale, danneggiamento del database, furto di identità, sabotaggio ed estorsione di informazioni. Se una persona utilizza uno o più schemi per modificare in modo distruttivo un sito web in modo che i clienti del sito perdano fiducia, questo è sabotaggio. L'estorsione di informazioni è il furto del computer di un'azienda o l'ottenimento falso di informazioni segrete sull'azienda. Il computer rubato potrebbe avere informazioni segrete. Questo può portare a ransomware, dove il ladro chiederebbe un pagamento, in cambio della proprietà o delle informazioni rubate.

Privacy

Quando qualcosa è sensibile o intrinsecamente speciale per te, allora quella cosa è privata per te. Questo vale anche per un gruppo di persone. Un individuo ha bisogno di esprimersi in modo selettivo. Per ottenere tale selettività, l'individuo deve programmare se stesso o programmare informazioni su di sé; questa è privacy. Un gruppo di persone ha bisogno di esprimersi in modo selettivo. Per raggiungere tale selettività, il gruppo deve programmare se stesso o programmare informazioni su se stesso; questa è privacy. Un individuo ha bisogno di proteggersi in modo selettivo. Per ottenere tale protezione selettiva, l'individuo deve proteggersi o proteggere le informazioni su se stesso in modo selettivo; cioè la privacy. Un gruppo di persone ha bisogno di proteggersi selettivamente. Per ottenere tale protezione selettiva, il gruppo deve proteggersi o proteggere le informazioni che lo riguardano in modo selettivo; cioè la privacy.

Identificazione e autenticazione

Quando viaggi in un paese straniero, raggiungerai un porto di quel paese. Al porto, un agente di polizia ti chiederà di identificarti. Presenterai il tuo passaporto. L'ufficiale di polizia conoscerà la tua età (dalla data di nascita), il tuo sesso e la tua professione dal passaporto e ti guarderà (la tua faccia); questa è identificazione. L'ufficiale di polizia confronterà il tuo vero volto e la foto sul passaporto. Stimerà anche la tua età con ciò che è nel passaporto per sapere se sei tu.

Guardarti e associare la tua età, sesso e professione a te è identificazione. Verificare se il tuo vero volto e la tua foto sono uguali e stimare se la tua presentazione corrisponde alla tua età, è l'autenticazione. L'identificazione è associare una persona o qualcosa a determinati attributi. Indicare un'identità è anche identificazione. L'autenticazione è l'atto di provare che l'identità (identificazione) è vera. In altre parole, l'autenticazione è l'atto di provare un'asserzione.

In informatica, il modo più comune di autenticazione è l'uso di una password. Un server, ad esempio, ha molti utenti. Al login, indichi la tua identità (identificati) con il tuo nome utente. Dimostri la tua identità con la tua password. La tua password dovrebbe essere conosciuta solo da te. L'autenticazione può andare oltre; facendoti una domanda, come “In quale paese o città sei nato?"

Obiettivi di sicurezza

Gli obiettivi di sicurezza nelle informazioni sono Riservatezza, Integrità e Disponibilità. Queste tre caratteristiche sono conosciute come la triade CIA: C per Riservatezza, I per Integrità e A per Disponibilità.

Riservatezza

Le informazioni non devono essere divulgate a persone non autorizzate, o entità non autorizzate o processi non autorizzati; questa è la riservatezza delle informazioni nella sicurezza delle informazioni (così come la sicurezza del software). Il furto di password o l'invio di e-mail sensibili a una persona sbagliata rappresenta una violazione della riservatezza confidentiality. La riservatezza è una componente della privacy che protegge le informazioni da individui non autorizzati, entità o processi non autorizzati.

Integrità

Le informazioni o i dati hanno un ciclo di vita. In altre parole, le informazioni oi dati hanno un'ora di inizio e un'ora di fine.  In alcuni casi, dopo la fine del ciclo di vita, le informazioni (o i dati) devono essere cancellati (legalmente). L'integrità consiste in due caratteristiche, che sono: 1) il mantenimento e la garanzia dell'accuratezza delle informazioni (o dei dati) durante l'intero ciclo di vita e 2) la completezza delle informazioni (o dei dati) durante l'intero ciclo di vita. Quindi, le informazioni (oi dati) non devono essere ridotte o modificate in modo non autorizzato o non rilevato.

Disponibilità

Affinché qualsiasi sistema informatico serva al suo scopo, le informazioni (oi dati) devono essere disponibili quando necessario. Ciò significa che il sistema informatico e i suoi mezzi di trasmissione devono funzionare correttamente. La disponibilità può essere compromessa da aggiornamenti di sistema, guasti hardware e interruzioni di corrente. La disponibilità può essere compromessa anche da attacchi denial-of-service.

Non ripudio

Quando qualcuno usa la tua identità e la tua firma per firmare un contratto che non ha mai rispettato, il non ripudio è quando non puoi negare con successo in tribunale che non sei stato l'autore del contratto.

Al termine di un contratto, la parte che offre il servizio deve aver offerto il servizio; la parte pagante deve aver effettuato il pagamento.

Per comprendere come il non ripudio sia applicabile alla comunicazione digitale, bisogna prima conoscere il significato di chiave e il significato di firma digitale. Una chiave è un pezzo di codice. Una firma digitale è un algoritmo che utilizza una chiave per produrre un altro codice che è paragonato a una firma scritta del mittente.

Nella sicurezza digitale, il non ripudio è fornito (non necessariamente garantito) da una firma digitale. Nella sicurezza del software (o sicurezza delle informazioni), il non ripudio ha a che fare con l'integrità dei dati. Anche la crittografia dei dati (che potresti aver sentito) combinata con la firma digitale contribuisce alla riservatezza.

Gli obiettivi di sicurezza nelle informazioni sono Riservatezza, Integrità e Disponibilità. Tuttavia, il non ripudio è un'altra caratteristica da tenere in considerazione quando si ha a che fare con la sicurezza delle informazioni (o la sicurezza del software).

Risposte alle minacce

È possibile rispondere alle minacce in uno o più dei tre modi seguenti:

- Riduzione/mitigazione: si tratta dell'implementazione di salvaguardie e contromisure per eliminare le vulnerabilità o bloccare le minacce.

- Assegnazione/trasferimento: questo pone l'onere della minaccia su un'altra entità, come una compagnia di assicurazioni o una società di outsourcing.

- Accettazione: valuta se il costo della contromisura supera il possibile costo della perdita dovuta alla minaccia.

Controllo di accesso

Nella sicurezza delle informazioni di cui fa parte la sicurezza del software, il controllo degli accessi è un meccanismo che garantisce che solo gli utenti idonei siano in grado di accedere alle risorse protette in un dato sistema, con i loro diversi privilegi meritati.

Soluzione attuale per la sicurezza delle informazioni

Il modo attuale e popolare per fare la sicurezza delle informazioni è quello di imporre il controllo degli accessi. Ciò include misure come la convalida dell'input a un'applicazione, l'installazione di antivirus, l'utilizzo di un firewall su una rete locale e l'utilizzo di Transport Layer Security.

Quando si prevede una data come input per un'applicazione, ma l'utente inserisce un numero, tale input deve essere rifiutato. Questa è la convalida dell'input.

Un antivirus installato nel computer impedisce ai virus di danneggiare i file sul computer. Questo aiuta nella disponibilità del software.

È possibile stabilire regole per monitorare e controllare il traffico in entrata e in uscita di una rete locale, al fine di proteggere la rete. Quando tali regole sono implementate come software, nella rete locale, questo è un firewall.

Transport Layer Security (TLS) è un protocollo di sicurezza progettato per facilitare la privacy e la sicurezza dei dati per le trasmissioni su Internet. Ciò comporta la crittografia della comunicazione tra l'host di invio e l'host di ricezione.

La sicurezza delle informazioni applicando il controllo degli accessi è denominata Security Software, che è diversa dalla Software Security, come spiegato di seguito. Entrambi gli approcci hanno lo stesso obiettivo, ma sono diversi.

Sicurezza del software corretta

Le applicazioni, così come vengono scritte oggi, hanno molte vulnerabilità software che i programmatori hanno realizzato sempre di più negli ultimi 20 anni. La maggior parte degli attacchi viene effettuata sfruttando queste vulnerabilità piuttosto che superando o aggirando il controllo degli accessi.

Un buffer è come un array ma senza una lunghezza imposta. Quando un programmatore scrive in un buffer, è possibile sovrascrivere inconsciamente oltre la sua lunghezza. Questa vulnerabilità è un overflow del buffer.

Il software oggi ha disertato con conseguenze sulla sicurezza, inclusi bug di implementazione come buffer overflow e difetti di progettazione come la gestione degli errori incoerente. Queste sono vulnerabilità.

Potresti aver sentito parlare di trucchi del linguaggio informatico come trucchi PHP, trucchi Perl e trucchi C++++. Queste sono vulnerabilità.

La sicurezza del software, al contrario del software di sicurezza, sta superando queste vulnerabilità scrivendo codice difensivo in cui le vulnerabilità sarebbero prevenute. Mentre l'applicazione viene utilizzata, man mano che vengono scoperte più vulnerabilità, gli sviluppatori (programmatori) dovrebbero cercare modi per ricodificare le vulnerabilità, in modo difensivo.

La minaccia, attacco denial-of-service, non può essere fermata dal controllo degli accessi, perché per farlo, l'autore deve già avere accesso all'host (server). Può essere interrotto includendo alcuni software interni che monitorano ciò che gli utenti stanno facendo nell'host.

La sicurezza del software è un design robusto dall'interno, che rende difficili gli attacchi al software. Il software dovrebbe essere autoprotettivo e, al limite, non presentare vulnerabilità. In questo modo, la gestione di una rete sicura diventa più semplice ed economica.

La sicurezza del software sta progettando il codice difensivo dall'interno dell'applicazione mentre il software di sicurezza sta applicando (progettando) il controllo degli accessi. A volte questi due problemi si sovrappongono, ma spesso no.

La sicurezza del software è già abbastanza sviluppata, sebbene sia ancora in fase di sviluppo, non è sviluppata come il software di sicurezza. I cattivi hacker raggiungono i loro obiettivi più sfruttando le vulnerabilità del software che superando o aggirando il software di sicurezza. Si spera che in futuro la sicurezza delle informazioni sarà più una sicurezza del software che un software di sicurezza. Per ora, sia la sicurezza del software che il software di sicurezza devono andare avanti.

La sicurezza del software non sarà realmente efficace se non vengono eseguiti test rigorosi alla fine dello sviluppo del software.

I programmatori devono essere istruiti nell'esecuzione della programmazione di codici difensivi. Gli utenti devono anche essere istruiti su come utilizzare le applicazioni in modo difensivo.

Nella sicurezza del software, lo sviluppatore deve garantire che l'utente non ottenga più privilegi di quelli che merita.

Conclusione

La sicurezza del software è la progettazione di applicazioni con codifica difensiva contro le vulnerabilità per rendere difficili gli attacchi al software software. Il software di sicurezza, d'altra parte, è la produzione di software che impone il controllo degli accessi. La sicurezza del software è ancora in fase di sviluppo, ma è più promettente per la sicurezza delle informazioni rispetto al software di sicurezza. È già in uso e sta crescendo in popolarità. In futuro, saranno necessari entrambi, ma con il software la sicurezza sarà più necessaria.

Porte open source di motori di gioco commerciali
Ricreazioni del motore di gioco gratuite, open source e multipiattaforma possono essere utilizzate per riprodurre titoli di giochi vecchi e abbastanza...
I migliori giochi da riga di comando per Linux
La riga di comando non è solo il tuo più grande alleato quando usi Linux, ma può anche essere una fonte di intrattenimento perché puoi usarla per gioc...
Le migliori app di mappatura del gamepad per Linux
Se ti piace giocare su Linux con un gamepad invece di un tipico sistema di input di tastiera e mouse, ci sono alcune app utili per te. Molti giochi pe...