diff --git a/ISO27001effectiveness/R/ReportGraphs.R b/ISO27001effectiveness/R/ReportGraphs.R index c4d8152..b0e2e4d 100644 --- a/ISO27001effectiveness/R/ReportGraphs.R +++ b/ISO27001effectiveness/R/ReportGraphs.R @@ -501,6 +501,190 @@ GetCountriesCol <- function(Attacks, Cert_PerCountry){ } +GetCountriesAttacksTopEvolution <- function(Attacks){ + attacks.evol <- mutate(Attacks, Year = format(Attacks$Date, "%Y")) %>% group_by(Year, Country) + attacks.evol <- as.data.frame(table(attacks.evol$Year, attacks.evol$Country)) + attacks.evol <- setNames(attacks.evol, c("Year", "Country", "Count")) + attacks.evol <- attacks.evol[attacks.evol$Country != "",] + + attacks.evol <- spread(attacks.evol, "Country", "Count") + + graph1 <- ggplot(data = attacks.evol, + aes(x = Year, y = US, group = 1)) + + + geom_line() + + geom_point() + + + theme(plot.title = element_text(hjust = 0.5)) + + ggtitle("US") + + xlab("Years") + ylab("Attacks")+ + stat_smooth(method = "lm", se = FALSE, aes(outfit=fit<<-..y..)) + + graph2 <- ggplot(data = attacks.evol, + aes(x = Year, y = GB, group = 1)) + + + geom_line() + + geom_point() + + + theme(plot.title = element_text(hjust = 0.5)) + + ggtitle("GB") + + xlab("Years") + ylab("Attacks")+ + stat_smooth(method = "lm", se = FALSE, aes(outfit=fit<<-..y..)) + + graph3 <- ggplot(data = attacks.evol, + aes(x = Year, y = IN, group = 1)) + + + geom_line() + + geom_point() + + + theme(plot.title = element_text(hjust = 0.5)) + + ggtitle("IN") + + xlab("Years") + ylab("Attacks")+ + stat_smooth(method = "lm", se = FALSE, aes(outfit=fit<<-..y..)) + + graph4 <- ggplot(data = attacks.evol, + aes(x = Year, y = JP, group = 1)) + + + geom_line() + + geom_point() + + + theme(plot.title = element_text(hjust = 0.5)) + + ggtitle("JP") + + xlab("Years") + ylab("Attacks")+ + stat_smooth(method = "lm", se = FALSE, aes(outfit=fit<<-..y..)) + + + list(graph1, graph2, graph3, graph4) + +} + +GetCountriesCertsTopEvolution <- function(Attacks){ + + certs.evol <- gather(Cert_PerCountry, "Year", "Certs", 2:6) %>% group_by(country_short, Year) + + certs.evol <- rbind(certs.evol[certs.evol$country_short == "US",], + certs.evol[certs.evol$country_short == "GB",], + certs.evol[certs.evol$country_short == "IN",], + certs.evol[certs.evol$country_short == "JP",]) + + certs.evol <- summarise(certs.evol, + Certs = sum(Certs)) + certs.evol$Year <- substr(certs.evol$Year,2,5) + + certs.evol <- spread(certs.evol, "country_short", "Certs") + + graph1 <- ggplot(data = certs.evol, + aes(x = Year, y = US, group = 1)) + + + geom_line() + + geom_point() + + + theme(plot.title = element_text(hjust = 0.5)) + + ggtitle("US") + + xlab("Years") + ylab("Certifications")+ + stat_smooth(method = "lm", se = FALSE, aes(outfit=fit<<-..y..)) + + graph2 <- ggplot(data = certs.evol, + aes(x = Year, y = GB, group = 1)) + + + geom_line() + + geom_point() + + + theme(plot.title = element_text(hjust = 0.5)) + + ggtitle("GB") + + xlab("Years") + ylab("Certifications")+ + stat_smooth(method = "lm", se = FALSE, aes(outfit=fit<<-..y..)) + + graph3 <- ggplot(data = certs.evol, + aes(x = Year, y = IN, group = 1)) + + + geom_line() + + geom_point() + + + theme(plot.title = element_text(hjust = 0.5)) + + ggtitle("IN") + + xlab("Years") + ylab("Certifications")+ + stat_smooth(method = "lm", se = FALSE, aes(outfit=fit<<-..y..)) + + + graph4 <- ggplot(data = certs.evol, + aes(x = Year, y = JP, group = 1)) + + + geom_line() + + geom_point() + + + theme(plot.title = element_text(hjust = 0.5)) + + ggtitle("JP") + + xlab("Years") + ylab("Certifications")+ + stat_smooth(method = "lm", se = FALSE, aes(outfit=fit<<-..y..)) + + + list(graph1, graph2, graph3, graph4) + +} + + +#---------------------------------------------------------------- +#-------------------------gelocal/type--------------------------- +#---------------------------------------------------------------- + +GetContinentAttackPie <- function (Attacks){ + + attack.pie <- group_by(Attacks, Attack.standar, Country) + attack.pie <- as.data.frame(table(attack.pie$Country, attack.pie$Attack.standar)) + attack.pie <- setNames(attack.pie, c("Country", "Attack", "Count")) + + attack.pie <- attack.pie[attack.pie$Country != "",] + attack.pie <- attack.pie[attack.pie$Attack != "",] + + attack.pie$Attack <- as.character(attack.pie$Attack) + attack.pie[attack.pie$Attack != "DDoS" & + attack.pie$Attack != "Defacement" & + attack.pie$Attack != "Injection",]$Attack <- "Otros" + attack.pie$Attack <- as.factor(attack.pie$Attack) + + attack.pie <- group_by(attack.pie, Attack, Country) + attack.pie <- summarise(attack.pie, Count = sum(Count)) + + attack.pie.US <- attack.pie[attack.pie$Country == "US",] + attack.pie.JP <- attack.pie[attack.pie$Country == "JP",] + + + graph1 <- ggplot(data=attack.pie.US, + aes(x=factor(1), + y=Count, + fill=Attack)) + + geom_col(width = 1, color='black') + + geom_label(aes(label=paste(round(100 * attack.pie.US$Count / sum(attack.pie.US$Count), 2), "%")), + vjust=c(0), + hjust=c(0)) + + coord_polar(theta="y") + + scale_x_discrete(labels = c("")) + + scale_y_discrete(labels = c("")) + + theme(plot.title = element_text(hjust = 0.5), + axis.title.x=element_blank(), + axis.title.y=element_blank()) + + ggtitle("US") + + graph2 <- ggplot(data=attack.pie.JP, + aes(x=factor(1), + y=Count, + fill=Attack)) + + geom_col(width = 1, color='black') + + geom_label(aes(label=paste(round(100 * attack.pie.JP$Count / sum(attack.pie.JP$Count), 2), "%")), + vjust=c(0), + hjust=c(0)) + + coord_polar(theta="y") + + scale_x_discrete(labels = c("")) + + scale_y_discrete(labels = c("")) + + theme(plot.title = element_text(hjust = 0.5), + axis.title.x=element_blank(), + axis.title.y=element_blank()) + + ggtitle("JP") + + list(graph1, graph2) +} + #---------------------------------------------------------------- #---------------------------------------------------------------- #---------------------------------------------------------------- diff --git a/ISO27001effectiveness/Report.Rmd b/ISO27001effectiveness/Report.Rmd index f906f9f..2c1852e 100644 --- a/ISO27001effectiveness/Report.Rmd +++ b/ISO27001effectiveness/Report.Rmd @@ -234,8 +234,63 @@ top[[2]] Como se puede observar en la parte de certificaciones destaca de largo Japón sobre los demás, que se encuentra bastante bajo en la lista de ataques. Y al reves pasa algo parecido, en los ataques destaca Estados Unidos por mucho mientras que ese mismo pais está muy bajo en certificaciones. A continuación observaremos la evolución temporal del top 3 paises en ataques recibidos y en certificaciones obtenidas, varios de ellos coinciden, tenemos por la parte de las certificaciones a _Japón_, por la parte de los ataques a _Estados Unidos_, y común a ambas _Reino Unido_ e _India_. +```{r fig.width=4.5, fig.height=3,out.extra='style="float:left"'} +topAttacks <- ISO27001effectiveness::GetCountriesAttacksTopEvolution(Attacks) +topCerts <- ISO27001effectiveness::GetCountriesCertsTopEvolution(Cert_PerCountry) +topCerts[[1]] +slope_US_Cert <- (fit[5] - fit[1]) / 4 +``` +```{r fig.width=4.5, fig.height=3} +topAttacks[[1]] +slope_US_Att <- (fit[5] - fit[1]) / 4 +``` + +La pendiente de los ataques para _Estados Unidos_ es `r slope_US_Att` mientras que la pendiente de las certificaciones es `r slope_US_Cert`. + +```{r fig.width=4.5, fig.height=3,out.extra='style="float:left"'} +topCerts[[2]] +slope_GB_Cert <- (fit[5] - fit[1]) / 4 +``` +```{r fig.width=4.5, fig.height=3} +topAttacks[[2]] +slope_GB_Att <- (fit[5] - fit[1]) / 4 +``` + +La pendiente de los ataques para _Reino Unido_ es `r slope_GB_Att` mientras que la pendiente de las certificaciones es `r slope_GB_Cert`. + +```{r fig.width=4.5, fig.height=3,out.extra='style="float:left"'} +topCerts[[3]] +slope_IN_Cert <- (fit[5] - fit[1]) / 4 +``` +```{r fig.width=4.5, fig.height=3} +topAttacks[[3]] +slope_IN_Att <- (fit[5] - fit[1]) / 4 +``` + +La pendiente de los ataques para _India_ es `r slope_IN_Att` mientras que la pendiente de las certificaciones es `r slope_IN_Cert`. + +```{r fig.width=4.5, fig.height=3,out.extra='style="float:left"'} +topCerts[[4]] +slope_JP_Cert <- (fit[5] - fit[1]) / 4 +``` +```{r fig.width=4.5, fig.height=3} +topAttacks[[4]] +slope_JP_Att <- (fit[5] - fit[1]) / 4 +``` + +La pendiente de los ataques para _Japón_ es `r slope_JP_Att` mientras que la pendiente de las certificaciones es `r slope_JP_Cert`. + +### Evolución geográfica y tipo de ataque +Hasta ahora se han analizado por separado estas dos variables, pero la respuesta podria encontrarse en una combinacion de las mismas. Para ello se analizarán los tipos de ataque reportados en el pais en el que parece que la certificación es más efectiva, _Japón_, y en el que menos, _Estados Unidos_. +```{r fig.width=4.5, fig.height=3,out.extra='style="float:left"'} +graphs <- ISO27001effectiveness::GetContinentAttackPie(Attacks) +graphs[[1]] +``` +```{r fig.width=4.5, fig.height=3} +graphs[[2]] +``` # Viejo diff --git a/ISO27001effectiveness/Report.html b/ISO27001effectiveness/Report.html index 044d798..259af46 100644 --- a/ISO27001effectiveness/Report.html +++ b/ISO27001effectiveness/Report.html @@ -382,7 +382,20 @@ $(document).ready(function () {
Todas las pendientes podrÃan representar la relación que buscamos, en la que un aumento en las certificaciones produce un descenso en los ataques.
El análisis puede aumentar en profundidad estableciendo superficies geográficas más pequeñas y asi obtener más precisión, observemos lo que ocurre a nivel de paises. Se mostrarán a continuación los paises que superan aproximadamente un 2% de los ataques/certificaciones totales ya que la lista total de paises es demasiado extensa.
-
Como se puede observar en la parte de certificaciones destaca de largo Japón sobre los demás, que se encuentra bastante bajo en la lista de ataques. Y al reves pasa algo parecido, en los ataques destaca Estados Unidos por mucho mientras que ese mismo pais está muy bajo en certificaciones. A continuación observaremos la evolución temporal del top 3 paises en ataques recibidos y en certificaciones obtenidas.
+Como se puede observar en la parte de certificaciones destaca de largo Japón sobre los demás, que se encuentra bastante bajo en la lista de ataques. Y al reves pasa algo parecido, en los ataques destaca Estados Unidos por mucho mientras que ese mismo pais está muy bajo en certificaciones. A continuación observaremos la evolución temporal del top 3 paises en ataques recibidos y en certificaciones obtenidas, varios de ellos coinciden, tenemos por la parte de las certificaciones a Japón, por la parte de los ataques a Estados Unidos, y común a ambas Reino Unido e India.
++
La pendiente de los ataques para Estados Unidos es -59.8 mientras que la pendiente de las certificaciones es 210.3.
++
La pendiente de los ataques para Reino Unido es -11.8 mientras que la pendiente de las certificaciones es 320.4.
++
La pendiente de los ataques para India es -8.7 mientras que la pendiente de las certificaciones es 268.3.
++
La pendiente de los ataques para Japón es -7.4 mientras que la pendiente de las certificaciones es 262.4.
+ +Hasta ahora se han analizado por separado estas dos variables, pero la respuesta podria encontrarse en una combinacion de las mismas. Para ello se analizarán los tipos de ataque reportados en el pais en el que parece que la certificación es más efectiva, Japón, y en el que menos, Estados Unidos.
+