diff --git a/ISO27001effectiveness/NAMESPACE b/ISO27001effectiveness/NAMESPACE index ad59655..920b5e6 100644 --- a/ISO27001effectiveness/NAMESPACE +++ b/ISO27001effectiveness/NAMESPACE @@ -1,10 +1,23 @@ # Generated by roxygen2: do not edit by hand +export(GetAttackTypeEvolution) +export(GetAttackTypePie) +export(GetAttackTypeSigleEvolution) +export(GetAttacksEvolution) +export(GetAttacksMonthEvolution) +export(GetCertsEvolution) +export(GetContinentAttackCol) +export(GetContinentAttacksEvolution) +export(GetContinentAttacksSigleEvolution) +export(GetContinentCertsEvolution) +export(GetContinentCertsSingleEvolution) +export(GetContinentPie) +export(GetCountriesAttacksSingleEvolution) +export(GetCountriesCertsSingleEvolution) export(GetDefaultAttacksData) export(GetISOSurveyCertsPerCountry) export(GetISOSurveyCertsPerSector) export(GetISOSurveySitesPerCountry) -export(GetReportGraphs) export(ParseHMExcel) export(ParseHMFolder) export(ProccesISOSurveyByCountryRaw) diff --git a/ISO27001effectiveness/R/ReportGraphs.R b/ISO27001effectiveness/R/ReportGraphs.R index 785c12e..513867d 100644 --- a/ISO27001effectiveness/R/ReportGraphs.R +++ b/ISO27001effectiveness/R/ReportGraphs.R @@ -301,6 +301,17 @@ GetAttackTypeSigleEvolution <- function(Attacks, #-------------------------Geolocal evolution--------- #---------------------------------------------------------------- +#' Return pie graph to show % of attacks and certifications for each continent +#' +#' @param Attacks data.frame with procesed source data of attacks +#' @param Attacks.label.vjust Vector of vertical just to each portion label +#' @param Attacks.label.hjust Vector of horizontal just to each portion label +#' @param Cert_PerCountry data.frame with procesed source data of certifications +#' @param Certs.label.vjust Vector of vertical just to each portion label +#' @param Certs.label.hjust Vector of horizontal just to each portion label +#' +#' @return list(AttacksGraph, CertsGraph, ContinentListToStudy) +#' @export GetContinentPie <- function (Attacks, Attacks.label.vjust = 0, Attacks.label.hjust = 0, @@ -362,19 +373,33 @@ GetContinentPie <- function (Attacks, axis.title.y=element_blank()) + ggtitle("ISO 27001") - list(graph1, unique(attack.pie[attack.pie$perc > 5,]$Continent), - graph2, unique(cert.pie[cert.pie$perc > 5,]$Continent)) + #Return graphs and union of continent to study + list(graph1, graph2, + union(unique(attack.pie[attack.pie$perc > 5,]$Continent), + unique(cert.pie[cert.pie$perc > 5,]$Continent))) } -GetContinentAttacksEvolution <- function(Attacks){ - attacks.evol <- mutate(Attacks, Year = format(Attacks$Date, "%Y")) %>% group_by(Continent, Year) +#' Return graph to show the evolution of a attack types list +#' +#' @param Attacks data.frame with procesed source data +#' @param ContinentList List with continents to show +#' +#' @return list(graph, data.frame with ContinentList attacks data by year) +#' @export +GetContinentAttacksEvolution <- function(Attacks, + ContinentList){ + + #Extract year from date + attacks.evol <- mutate(Attacks, Year = format(Attacks$Date, "%Y")) %>% + group_by(Continent, Year) #Grouping atacks by continent and year + #Counting attacks for each continent and year attacks.evol <- as.data.frame(table(attacks.evol$Continent, attacks.evol$Year)) colnames(attacks.evol) <- c("Continent", "Year","Attacks") + #Filtering by the ContinentList especified + attacks.evol <- attacks.evol[attacks.evol$Continent %in% ContinentList,] - attacks.evol <- attacks.evol[attacks.evol$Continent != "Oceania",] - attacks.evol <- attacks.evol[attacks.evol$Continent != "Africa",] - + #Graph graph1 <- ggplot2::qplot(main = "Cyberattacks evolution", x = attacks.evol$Year, y = attacks.evol$Attacks, @@ -384,26 +409,34 @@ GetContinentAttacksEvolution <- function(Attacks){ data = attacks.evol, geom = "point", color = Continent) + - geom_line() + - theme(plot.title = element_text(hjust = 0.5)) + geom_line() + + theme(plot.title = element_text(hjust = 0.5)) - graph1 + #Return graph and data to represent 1b1 + list(graph1, attacks.evol) } -GetContinentCertsEvolution <- function(Cert_PerCountry){ - - certs.evol <- gather(Cert_PerCountry, "Year", "Certs", 2:6) %>% group_by(Continent, Year) - - certs.evol <- summarise(certs.evol, - #Continent = Continent, - #Year = Year, - Certs = sum(Certs)) +#' Return graph to show the evolution of certifications in a continent list +#' +#' @param Cert_PerCountry data.frame with procesed source data +#' @param ContinentList List with continents to show +#' +#' @return list(graph, data.frame with ContinentList certifications data by year) +#' @export +GetContinentCertsEvolution <- function(Cert_PerCountry, + ContinentList){ + #Collapsing year columns to 1 column with year value + certs.evol <- gather(Cert_PerCountry, "Year", "Certs", 2:6) %>% + group_by(Continent, Year) #Grouping by continent and year + #Sum of certifications for echa continent and year + certs.evol <- summarise(certs.evol, Certs = sum(Certs)) + #Removing the X from year values certs.evol$Year <- substr(certs.evol$Year,2,5) + #Filtering for the specified continents + certs.evol <- certs.evol[certs.evol$Continent %in% ContinentList,] - certs.evol <- certs.evol[certs.evol$Continent != "Oceania",] - certs.evol <- certs.evol[certs.evol$Continent != "Africa",] - + #graph graph1 <- ggplot2::qplot(main = "ISO 27001 evolution", x = certs.evol$Year, y = certs.evol$Certs, @@ -413,268 +446,261 @@ GetContinentCertsEvolution <- function(Cert_PerCountry){ data = certs.evol, geom = "point", color = Continent) + - geom_line() + - theme(plot.title = element_text(hjust = 0.5)) + geom_line() + + theme(plot.title = element_text(hjust = 0.5)) - graph1 + #Return the graph and data to represent continents 1b1 + list(graph1, certs.evol) } +#' Return graph to show the evolution of attacks in a single continent and his smooth +#' +#' @param Attacks data.frame with procesed source data +#' @param Continent Continent to represent +#' @param smooth.x Horizontal position to smooth slope label +#' @param smooth.y Vertical position to smooth slope label +#' @param smooth.label.hjust Horizontal just to smooth slope label +#' +#' @return list(graph, slope) +#' @export +GetContinentAttacksSigleEvolution <- function(Attacks, + Continent, + smooth.x = 0, + smooth.y = 0, + smooth.label.hjust = 0){ -GetContinentAttacksTopEvolution <- function(Attacks){ - attacks.evol <- mutate(Attacks, Year = format(Attacks$Date, "%Y")) %>% group_by(Year, Continent) - attacks.evol <- as.data.frame(table(attacks.evol$Year, attacks.evol$Continent)) - attacks.evol <- setNames(attacks.evol, c("Year", "Continent", "Count")) - attacks.evol <- attacks.evol[attacks.evol$Continent != "",] - - attacks.evol <- spread(attacks.evol, "Continent", "Count") + #Filtering for the continent specified + attacks.evol <- Attacks[Attacks$Continent == Continent,] + #Calc slope + slope1 <- lm(formula = Attacks ~ as.numeric(Year), data = attacks.evol)$coef[[2]] + #Graph graph1 <- ggplot(data = attacks.evol, - aes(x = Year, y = Americas, group = 1)) + - - geom_line() + - geom_point() + - - theme(plot.title = element_text(hjust = 0.5)) + - ggtitle("Americas") + - xlab("Years") + ylab("Attacks")+ - stat_smooth(method = "lm", se = FALSE, aes(outfit=fit<<-..y..)) - - graph2 <- ggplot(data = attacks.evol, - aes(x = Year, y = Asia, group = 1)) + - - geom_line() + - geom_point() + - - theme(plot.title = element_text(hjust = 0.5)) + - ggtitle("Asia") + - xlab("Years") + ylab("Attacks")+ - stat_smooth(method = "lm", se = FALSE, aes(outfit=fit<<-..y..)) - - graph3 <- ggplot(data = attacks.evol, - aes(x = Year, y = Europe, group = 1)) + - - geom_line() + - geom_point() + - - theme(plot.title = element_text(hjust = 0.5)) + - ggtitle("Europe") + - xlab("Years") + ylab("Attacks")+ - stat_smooth(method = "lm", se = FALSE, aes(outfit=fit<<-..y..)) - - - list(graph1, graph2, graph3) + aes(x = Year, y = Attacks, group = 1)) + + geom_line() + + geom_point() + + theme(plot.title = element_text(hjust = 0.5)) + + ggtitle(Continent) + + xlab("Years") + ylab("Attacks")+ + geom_smooth(method = "lm", + se = FALSE) + + geom_label(aes(x = smooth.x, y = smooth.y, + label = paste("Slope =", signif(slope1, 5))), + color = "blue", + hjust = smooth.label.hjust) + #Returning list(graph, slope) + list(graph1, slope1) } +#' Return graph to show the evolution of certifications in a single continent and his smooth +#' +#' @param Certs_byContinent data.frame with procesed source data +#' @param Continent Continent to represent +#' @param smooth.x Horizontal position to smooth slope label +#' @param smooth.y Vertical position to smooth slope label +#' @param smooth.label.hjust Horizontal just to smooth slope label +#' +#' @return list(graph, slope) +#' @export +GetContinentCertsSingleEvolution <- function(Certs_byContinent, + Continent, + smooth.x = 0, + smooth.y = 0, + smooth.label.hjust = 0){ -GetContinentCertsTopEvolution <- function(Attacks){ - - certs.evol <- gather(Cert_PerCountry, "Year", "Certs", 2:6) %>% group_by(Continent, Year) - - certs.evol <- summarise(certs.evol, - #Continent = Continent, - #Year = Year, - Certs = sum(Certs)) - certs.evol$Year <- substr(certs.evol$Year,2,5) - - certs.evol <- spread(certs.evol, "Continent", "Certs") + #Filtering for the continent specified + certs.evol <- Certs_byContinent[Certs_byContinent$Continent == Continent,] + #Calc slope + slope1 <- lm(formula = Certs ~ as.numeric(Year), data = certs.evol)$coef[[2]] + #Graph graph1 <- ggplot(data = certs.evol, - aes(x = Year, y = Americas, group = 1)) + - - geom_line() + - geom_point() + - - theme(plot.title = element_text(hjust = 0.5)) + - ggtitle("Americas") + - xlab("Years") + ylab("Certifications")+ - stat_smooth(method = "lm", se = FALSE, aes(outfit=fit<<-..y..)) - - graph2 <- ggplot(data = certs.evol, - aes(x = Year, y = Asia, group = 1)) + - - geom_line() + - geom_point() + - - theme(plot.title = element_text(hjust = 0.5)) + - ggtitle("Asia") + - xlab("Years") + ylab("Certifications")+ - stat_smooth(method = "lm", se = FALSE, aes(outfit=fit<<-..y..)) - - graph3 <- ggplot(data = certs.evol, - aes(x = Year, y = Europe, group = 1)) + - - geom_line() + - geom_point() + - - theme(plot.title = element_text(hjust = 0.5)) + - ggtitle("Europe") + - xlab("Years") + ylab("Certifications")+ - stat_smooth(method = "lm", se = FALSE, aes(outfit=fit<<-..y..)) - - - list(graph1, graph2, graph3) + aes(x = Year, y = Certs, group = 1)) + + geom_line() + + geom_point() + + theme(plot.title = element_text(hjust = 0.5)) + + ggtitle(Continent) + + xlab("Years") + ylab("Certifications")+ + geom_smooth(method = "lm", + se = FALSE) + + geom_label(aes(x = smooth.x, y = smooth.y, + label = paste("Slope =", signif(slope1, 5))), + color = "blue", + hjust = smooth.label.hjust) + #Returning list(graph, slope) + list(graph1, slope1) } -GetCountriesCol <- function(Attacks, Cert_PerCountry){ - - certs.evol <- gather(Cert_PerCountry, "Year", "Certs", 2:6) %>% group_by(Continent, country_short) - - certs.evol <- summarise(certs.evol, - Certs = sum(Certs)) - - graph1 <- ggplot2::ggplot(aes(x = reorder(country_short, Certs), - y = Certs), - data = certs.evol[certs.evol$Certs > (sum(certs.evol$Certs) * 0.02),]) + - geom_col(aes(fill = Continent)) + - theme(plot.title = element_text(hjust = 0.5)) + - ggtitle("ISO 27001") + - xlab("Country") + ylab("Certifications") +#' Return graph to show the attacks by country +#' +#' @param Attacks data.frame with procesed source data of attacks +#' @param Attacks.label.vjust Vector of vertical just to each portion label +#' @param Attacks.label.hjust Vector of horizontal just to each portion label +#' @param Cert_PerCountry data.frame with procesed source certifications +#' @param Certs.label.vjust Vector of vertical just to each portion label +#' @param Certs.label.hjust Vector of horizontal just to each portion label +#' +#' @return list(AttacksGraph, CertsGraph, CountryListToStudy) +GetCountriesCol <- function(Attacks, + Attacks.label.vjust = 0, + Attacks.label.hjust = 0, + Cert_PerCountry, + Certs.label.vjust = 0, + Certs.label.hjust = 0){ + + #Group attacks by continent and country + attacks.col <- group_by(Attacks, Continent, Country) + #Count attacks for each country + attacks.col <- as.data.frame(table(attacks.col$Continent, attacks.col$Country)) + attacks.col <- setNames(attacks.col, c("Continent", "Country", "Count")) + #Remove rows without Continent/Country specified + attacks.col <- attacks.col[attacks.col$Country != "",] + attacks.col <- attacks.col[attacks.col$Country != "AU",] #Abnormal behaivour, corrupt?? + attacks.col <- attacks.col[attacks.col$Continent != "",] + #Only the countries with more than 2% of total attacks + attacks.col <- attacks.col[attacks.col$Count > (sum(attacks.col$Count) * 0.015), ] + #Sort by attacks + attacks.col <- arrange(attacks.col, desc(Count)) - attacks.evol <- mutate(Attacks, Year = format(Attacks$Date, "%Y")) %>% group_by(Year, Continent, Country) - attacks.evol <- as.data.frame(table(attacks.evol$Year, attacks.evol$Continent, attacks.evol$Country)) - attacks.evol <- setNames(attacks.evol, c("Year", "Continent", "Country", "Count")) - attacks.evol <- attacks.evol[attacks.evol$Continent != "",] - attacks.evol <- attacks.evol[attacks.evol$Country != "",] - attacks.evol <- attacks.evol[attacks.evol$Country != "AU",] + #Attacks graph + graph1 <- ggplot2::ggplot(aes(x = reorder(Country, Count), + y = Count), + data = attacks.col) + + geom_col(aes(fill = Continent)) + + geom_text(aes(label = attacks.col$Count), + vjust = Attacks.label.vjust, + hjust = Attacks.label.hjust, + size = 3) + + theme(plot.title = element_text(hjust = 0.5)) + + ggtitle("Attacks") + + xlab("Country") + ylab("Attacks") - attacks.evol <- attacks.evol[attacks.evol$Count > (sum((attacks.evol[attacks.evol$Country != "US",])$Count) * 0.01),] - attacks.evol <- arrange(attacks.evol, Count) + #Grouping certifications by continent + certs.col <- group_by(Cert_PerCountry, Continent, country_short) + #Counting certificates for each continent + certs.col <- dplyr::summarise(certs.col, Count = sum(X2011 + X2012 + X2013 + X2014 + X2015)) + #Remove rows without Continent specified + certs.col <- certs.col[certs.col$Continent != "",] + certs.col <- certs.col[certs.col$country_short != "",] + #Only the countries with more than 2% of total certs + certs.col <- certs.col[certs.col$Count > (sum(certs.col$Count) * 0.02), ] + #Sort by certifications + certs.col <- arrange(certs.col, desc(Count)) - graph2 <- ggplot2::ggplot(aes(x = reorder(Country, Count), + #Certifications graph + graph2 <- ggplot2::ggplot(aes(x = reorder(country_short, Count), y = Count), - data = attacks.evol) + - geom_col(aes(fill = Continent)) + - theme(plot.title = element_text(hjust = 0.5)) + - ggtitle("Attacks") + - xlab("Country") + ylab("Attacks") + data = certs.col) + + geom_col(aes(fill = Continent)) + + geom_text(aes(label = certs.col$Count), + vjust = Certs.label.vjust, + hjust = Certs.label.hjust, + size = 3) + + theme(plot.title = element_text(hjust = 0.5)) + + ggtitle("ISO 27001") + + xlab("Country") + ylab("Certifications") - list(graph1, graph2) + #Return graphs and union of countries to study + list(graph1, graph2, + union(unique(head(attacks.col$Country, 3)), + unique(head(certs.col$country_short, 3)))) } -GetCountriesAttacksTopEvolution <- function(Attacks){ - attacks.evol <- mutate(Attacks, Year = format(Attacks$Date, "%Y")) %>% group_by(Year, Country) +#' Return graph to show the evolution of attacks in a single continent and his smooth +#' +#' @param Attacks data.frame with procesed source data +#' @param Country Country to represent +#' @param smooth.x Horizontal position to smooth slope label +#' @param smooth.y Vertical position to smooth slope label +#' @param smooth.label.hjust Horizontal just to smooth slope label +#' +#' @return list(graph, slope) +#' @export +GetCountriesAttacksSingleEvolution <- function(Attacks, + Country, + smooth.x = 0, + smooth.y = 0, + smooth.label.hjust = 0){ + #Extract year from date + attacks.evol <- mutate(Attacks, Year = format(Attacks$Date, "%Y")) %>% + group_by(Year, Country) #Group by country + #Count attacks for each year and 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") + #Filter by the specified country + attacks.evol <- attacks.evol[attacks.evol$Country == Country,] - slope1 <- lm(formula = US ~ as.numeric(Year), data = attacks.evol) + #Calc slope + slope1 <- lm(formula = Count ~ as.numeric(Year), data = attacks.evol)$coef[[2]] + #Graph 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..)) + - geom_label(aes(x = "2014", y = 700, label = signif(slope1$coef[[2]])), color = "blue") - - 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..)) - + aes(x = Year, y = Count, group = 1)) + + geom_line() + + geom_point() + + theme(plot.title = element_text(hjust = 0.5)) + + ggtitle(Country) + + xlab("Years") + ylab("Attacks")+ + geom_smooth(method = "lm", + se = FALSE) + + geom_label(aes(x = smooth.x, y = smooth.y, + label = paste("Slope =", signif(slope1, 5))), + color = "blue", + hjust = smooth.label.hjust) - list(graph1, graph2, graph3, graph4) + #Return list(graph, slope) + list(graph1, slope1) } -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",]) - +#' Return graph to show the evolution of certifications in a single continent and his smooth +#' +#' @param Attacks data.frame with procesed source data +#' @param Country Country to represent +#' @param smooth.x Horizontal position to smooth slope label +#' @param smooth.y Vertical position to smooth slope label +#' @param smooth.label.hjust Horizontal just to smooth slope label +#' +#' @return list(graph, slope) +#' @export +GetCountriesCertsSingleEvolution <- function(Cert_PerCountry, + Country, + smooth.x = 0, + smooth.y = 0, + smooth.label.hjust = 0){ + + #Collapsing year columns to only one with the year value + certs.evol <- gather(Cert_PerCountry, "Year", "Certs", 2:6) %>% + group_by(country_short, Year) #Group by country and year + #sum certificates for each country and year certs.evol <- summarise(certs.evol, Certs = sum(Certs)) + #Removing the X of the year values certs.evol$Year <- substr(certs.evol$Year,2,5) + #Filter by the specified Country + certs.evol <- certs.evol[certs.evol$country_short == Country,] - certs.evol <- spread(certs.evol, "country_short", "Certs") - + #Calc slope + slope1 <- lm(formula = Certs ~ as.numeric(Year), data = certs.evol)$coef[[2]] + #Graph graph1 <- ggplot(data = certs.evol, - aes(x = Year, y = US, group = 1)) + - + aes(x = Year, y = Certs, group = 1)) + geom_line() + geom_point() + - theme(plot.title = element_text(hjust = 0.5)) + - ggtitle("US") + + ggtitle(Country) + 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) + geom_smooth(method = "lm", + se = FALSE) + + geom_label(aes(x = smooth.x, y = smooth.y, + label = paste("Slope =", signif(slope1, 5))), + color = "blue", + hjust = smooth.label.hjust) + + #Return graph and slope + list(graph1, slope1) } @@ -683,300 +709,134 @@ GetCountriesCertsTopEvolution <- function(Attacks){ #-------------------------gelocal/type--------------------------- #---------------------------------------------------------------- -GetContinentAttackPie <- function (Attacks){ +#' Return graph representing % of attacks type by continent +#' +#' @param Attacks data.frame with procesed source data +#' @param Country Country to represent on the left side +#' @param Country2 Country to represent on the right side +#' +#' @return Graph +#' @export +GetContinentAttackCol <- function (Attacks, + Country, + Country2){ + #Grouping attacks by attack type and country attack.pie <- group_by(Attacks, Attack.standar, Country) + #Counting attacks for each attack type and country attack.pie <- as.data.frame(table(attack.pie$Country, attack.pie$Attack.standar)) attack.pie <- setNames(attack.pie, c("Country", "Attack", "Count")) - + #Remove rows withouth a country specified attack.pie <- attack.pie[attack.pie$Country != "",] + #Remove rows withouth attack type specified attack.pie <- attack.pie[attack.pie$Attack != "",] - + #grouping non 'important' attack types in 'Otros' 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) - + #Grouping atatcks by attacky type and country attack.pie <- group_by(attack.pie, Attack, Country) + #sum attacks for each attack type and 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",] + #Filtering by the desired countries + attack.pie.C1 <- attack.pie[attack.pie$Country == Country,] + attack.pie.C2 <- attack.pie[attack.pie$Country == Country2,] + #Calc % of each attack type + attack.pie.C1$perc <- round(100 * attack.pie.C1$Count / sum(attack.pie.C1$Count), 2) + attack.pie.C2$perc <- round(100 * attack.pie.C2$Count / sum(attack.pie.C2$Count), 2) + + #Calc max % to draw gray background + attack.pie.max <- data.frame(Attack = attack.pie.C1$Attack) + percs <- c() + for (AT in attack.pie.max$Attack){ + percs <- c(percs, max(attack.pie.C1[attack.pie.C1$Attack == AT,]$perc, + attack.pie.C2[attack.pie.C2$Attack == AT,]$perc)) + } + attack.pie.max$perc <- percs + + graph1 <- ggplot() + + geom_col(aes(x=Attack, + y=perc), + width = 1, + data = attack.pie.max, + color = "Black", + fill = "Grey") + + geom_col(aes(x=1.25:4.25, + y=perc, + fill = Country), + width = 0.4, + data = attack.pie.C1) + + geom_text(aes(x=1.25:4.25, + y=perc + 1, + label = paste(perc, "%")), + data = attack.pie.C1) + + geom_col(aes(x=0.75:3.75, + y=perc, + fill = Country2), + width = 0.4, + data = attack.pie.C2) + + geom_text(aes(x=0.75:3.75, + y=perc + 1, + label = paste(perc, "%")), + data = attack.pie.C2) + + scale_x_discrete("Attack", attack.pie.C1$Attack) + + ylab("% of total attacks") + + theme(plot.title = element_text(hjust = 0.5)) + + ggtitle(paste(Country, Country2, sep = " - ")) - 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) + graph1 } -GetContinentAttackEvolution <- function(Attacks){ +#' Return graph representing the evolution of attack types in a country +#' +#' @param Attacks data.frame with procesed source data +#' @param Country Country to represent +#' +#' @return list(Graph, data to represent attacktypes of the country 1b1) +GetContinentAttackEvolution <- function(Attacks, Country){ + + #Extract Year from date attack.evol <-mutate(Attacks, Year = format(Attacks$Date, "%Y")) %>% - group_by(Attack.standar, Country, Year) + group_by(Attack.standar, Country, Year) #Group by attack type, country and year + #Counting the attacks for each attack type, country and year attack.evol <- as.data.frame(table(attack.evol$Country, attack.evol$Attack.standar, attack.evol$Year)) attack.evol <- setNames(attack.evol, c("Country", "Attack", "Year", "Count")) - + #Removing rows without country or attack type attack.evol <- attack.evol[attack.evol$Country != "",] attack.evol <- attack.evol[attack.evol$Attack != "",] - + #grouping non 'important' attack types in 'Otros' attack.evol$Attack <- as.character(attack.evol$Attack) attack.evol[attack.evol$Attack != "DDoS" & attack.evol$Attack != "Defacement" & attack.evol$Attack != "Injection",]$Attack <- "Otros" attack.evol$Attack <- as.factor(attack.evol$Attack) - + #Counting attacks of new tyoe attack.evol <- group_by(attack.evol, Attack, Country, Year) attack.evol <- summarise(attack.evol, Count = sum(Count)) + #Filtering by specified country + attack.evol <- attack.evol[attack.evol$Country == Country,] - attack.evol.US <- attack.evol[attack.evol$Country == "US",] - attack.evol.JP <- attack.evol[attack.evol$Country == "JP",] - - attack.evol.US.Otros <- attack.evol.US[attack.evol.US$Attack == "Otros",] - attack.evol.JP.Otros <- attack.evol.JP[attack.evol.JP$Attack == "Otros",] - - - graph1 <- ggplot2::qplot(main = "US", - x = attack.evol.US$Year, - y = attack.evol.US$Count, - group = Attack, - xlab = "Years", - ylab = "Certifications", - data = attack.evol.US, - geom = "point", - color = Attack) + - geom_line() + - theme(plot.title = element_text(hjust = 0.5)) - - graph2 <- ggplot2::qplot(main = "JP", - x = attack.evol.JP$Year, - y = attack.evol.JP$Count, - group = Attack, + #Graph + graph1 <- ggplot2::qplot(main = Country, + x = attack.evol$Year, + y = attack.evol$Count, + group = attack.evol$Attack, xlab = "Years", - ylab = "Certifications", - data = attack.evol.JP, + ylab = "Attacks", + data = attack.evol, geom = "point", color = Attack) + geom_line() + theme(plot.title = element_text(hjust = 0.5)) - graph3 <- ggplot2::qplot(main = "US", - x = attack.evol.US.Otros$Year, - y = attack.evol.US.Otros$Count, - group = 1, - xlab = "Years", - ylab = "Certifications", - data = attack.evol.US.Otros, - geom = "point") + - geom_line() + - stat_smooth(method = "lm", se = FALSE, aes(outfit=fit<<-..y..)) + - theme(plot.title = element_text(hjust = 0.5)) - - graph4 <- ggplot2::qplot(main = "JP", - x = attack.evol.JP.Otros$Year, - y = attack.evol.JP.Otros$Count, - group = 1, - xlab = "Years", - ylab = "Certifications", - data = attack.evol.JP.Otros, - geom = "point") + - geom_line() + - stat_smooth(method = "lm", se = FALSE, aes(outfit=fit<<-..y..)) + - theme(plot.title = element_text(hjust = 0.5)) - - list(graph1, graph2, graph3, graph4) + #list with graph and processed data to represent 1b1 + list(graph1, attack.evol) } -#---------------------------------------------------------------- -#---------------------------------------------------------------- -#---------------------------------------------------------------- - -GetBaseCertsGraph <- function(Cert_PerCountry, year){ - graph1 <- ggplot2::qplot(main = "Countries with above average number of companies certified with 27001 (2012)", - x = reorder(country_short,X2012), - y = X2012, - xlab = "Country", - ylab = "Number of certifications", - data = Cert_PerCountry[Cert_PerCountry$X2012 > mean(Cert_PerCountry$X2012),], - geom = "col", - fill = Continent) - graph1 -} - - - - -#' Return every graph used in the report file -#' -#' @param Cert_PerCountry data.frame with the processed data of ISO 27001 certifications -#' @param Attacks data.frame with the processed data of cyberattacks -#' -#' @return data.frame -#' @export -GetReportGraphs <- function(Cert_PerCountry,Attacks) { - #2012 - graph1 <- ggplot2::qplot(main = "Countries with above average number of companies certified with 27001 (2012)", - x = reorder(country_short,X2012), - y = X2012, - xlab = "Country", - ylab = "Number of certifications", - data = Cert_PerCountry[Cert_PerCountry$X2012 > mean(Cert_PerCountry$X2012),], - geom = "col", - fill = Continent) - - attacks2k12 <- Attacks[Attacks$Date < "2013-01-01" & Attacks$Date >= "2012-01-01",] - frameAttacks2k12 <- as.data.frame(table(attacks2k12$Country)) - colnames(frameAttacks2k12) <- c("Country","Attacks") - graph2 <- ggplot2::qplot(main = "Countries with above average number of cyberattacks (2012)", - x = reorder(Country,Attacks), - y = Attacks, - xlab = "Country", - ylab = "Number of attacks", - data = frameAttacks2k12[frameAttacks2k12$Attacks > mean(frameAttacks2k12$Attacks),], - geom = "col", - fill = Continent) - - Attacks2012ByMonth <- mutate(attacks2k12, month = format(attacks2k12$Date, "%m")) %>% group_by(month) - Attack2012FreqByMonth <- as.data.frame(table(Attacks2012ByMonth$month)) - colnames(Attack2012FreqByMonth) <- c("Month", "Attacks") - graph3 <- ggplot2::qplot(x = as.numeric(Month), - y = Attacks, - main = "Global cyberattack progression by month (2012)", - data = Attack2012FreqByMonth, - geom = c("point", "smooth"), - xlim = c(1,12), - xlab = "Month") + ggplot2::scale_x_continuous(breaks = 1:12) - - #2013 - graph4 <- ggplot2::qplot(main = "Countries with above average number of companies certified with 27001 (2013)", - x = reorder(country_short,X2013), - y = X2013, - xlab = "Country", - ylab = "Number of certifications", - data = Cert_PerCountry[Cert_PerCountry$X2013 > mean(Cert_PerCountry$X2013),] - , geom = "col", - fill = Continent) - attacks2k13 <- Attacks[Attacks$Date < "2014-01-01" & Attacks$Date >= "2013-01-01",] - frameAttacks2k13 <- as.data.frame(table(attacks2k13$Country)) - colnames(frameAttacks2k13) <- c("Country","Attacks") - graph5 <- ggplot2::qplot(main = "Countries with above average number of cyberattacks (2013)", - x = reorder(Country,Attacks), - y = Attacks, - xlab = "Country", - ylab = "Number of attacks", - data = frameAttacks2k13[frameAttacks2k13$Attacks > mean(frameAttacks2k13$Attacks),] - , geom = "col", - fill = Continent) - - Attacks2013ByMonth <- mutate(attacks2k13, month = format(attacks2k13$Date, "%m")) %>% group_by(month) - Attack2013FreqByMonth <- as.data.frame(table(Attacks2013ByMonth$month)) - colnames(Attack2013FreqByMonth) <- c("Month", "Attacks") - graph6 <- ggplot2::qplot(x = as.numeric(Month), - y = Attacks, - main = "Global cyberattack progression by month (2013)", - data = Attack2013FreqByMonth, - geom = c("point", "smooth"), - xlim = c(1,12), - xlab = "Month") + ggplot2::scale_x_continuous(breaks = 1:12) - - #2014 - graph7 <- ggplot2::qplot(main = "Countries with above average number of companies certified with 27001 (2014)", - x = reorder(country_short,X2014), - y = X2014, - xlab = "Country", - ylab = "Number of certifications", - data = Cert_PerCountry[Cert_PerCountry$X2014 > mean(Cert_PerCountry$X2014),] - , geom = "col", - fill = Continent) - attacks2k14 <- Attacks[Attacks$Date < "2015-01-01" & Attacks$Date >= "2014-01-01",] - frameAttacks2k14 <- as.data.frame(table(attacks2k14$Country)) - colnames(frameAttacks2k14) <- c("Country","Attacks") - graph8 <- ggplot2::qplot(main = "Countries with above average number of cyberattacks (2014)", - x = reorder(Country,Attacks), - y = Attacks, - xlab = "Country", - ylab = "Number of attacks", - data = frameAttacks2k14[frameAttacks2k14$Attacks > mean(frameAttacks2k14$Attacks),] - , geom = "col", - fill = Continent) - - Attacks2014ByMonth <- mutate(attacks2k14, month = format(attacks2k14$Date, "%m")) %>% group_by(month) - Attack2014FreqByMonth <- as.data.frame(table(Attacks2014ByMonth$month)) - colnames(Attack2014FreqByMonth) <- c("Month", "Attacks") - graph9 <- ggplot2::qplot(x = as.numeric(Month), - y = Attacks, - main = "Global cyberattack progression by month (2014)", - data = Attack2014FreqByMonth, - geom = c("point", "smooth"), - xlim = c(1,12), - xlab = "Month") + ggplot2::scale_x_continuous(breaks = 1:12) - - #2015 - graph10 <- ggplot2::qplot(main = "Countries with above average number of companies certified with 27001 (2015)", - x = reorder(country_short,X2015), - y = X2015, - xlab = "Country", - ylab = "Number of certifications", - data = Cert_PerCountry[Cert_PerCountry$X2015 > mean(Cert_PerCountry$X2015),] - , geom = "col", - fill = Continent) - attacks2k15 <- Attacks[Attacks$Date < "2016-01-01" & Attacks$Date >= "2015-01-01",] - frameAttacks2k15 <- as.data.frame(table(attacks2k15$Country)) - colnames(frameAttacks2k15) <- c("Country","Attacks") - graph11 <- ggplot2::qplot(main = "Countries with above average number of cyberattacks (2015)", - x = reorder(Country,Attacks), - y = Attacks, - xlab = "Country", - ylab = "Number of attacks", - data = frameAttacks2k15[frameAttacks2k15$Attacks > mean(frameAttacks2k15$Attacks),] - , geom = "col", - fill = Continent) - - Attacks2015ByMonth <- mutate(attacks2k15, month = format(attacks2k15$Date, "%m")) %>% group_by(month) - Attack2015FreqByMonth <- as.data.frame(table(Attacks2015ByMonth$month)) - colnames(Attack2015FreqByMonth) <- c("Month", "Attacks") - graph12 <- ggplot2::qplot(x = as.numeric(Month), - y = Attacks, - main = "Global cyberattack progression by month (2015)", - data = Attack2015FreqByMonth, - geom = c("point", "smooth"), - xlim = c(1,12), - xlab = "Month") + ggplot2::scale_x_continuous(breaks = 1:12) - - - - - list(graph1,graph2,graph3,graph4,graph5,graph6,graph7,graph8,graph9,graph10,graph11,graph12) -} diff --git a/ISO27001effectiveness/Report.Rmd b/ISO27001effectiveness/Report.Rmd index 115a6db..e39b417 100644 --- a/ISO27001effectiveness/Report.Rmd +++ b/ISO27001effectiveness/Report.Rmd @@ -1,5 +1,5 @@ --- -title: "Estudio sobre la efectividad de la certificación ISO 27001" +title: "Estudio sobre la efectividad de la certificación ISO 27001" output: html_document: default pdf_document: default @@ -199,193 +199,279 @@ Por otro lado tenemos _DNS_, cuya tendencia también tiene una pendiente negativ ### Evolución geográfica -Este apartado estudiará la relación entre la certificación ISO 27001 y los ataques producidos, pero teniendo en cuenta la variable geográfica, ya que es posible que la certificación, aunque sea internacional, se implemente de una mejor o peor forma según la región. En primer lugar se generalizará por continente. +Este apartado estudiará la relación entre la certificación ISO 27001 y los ataques producidos, pero teniendo en cuenta la variable geográfica, ya que es posible que la certificación, aunque sea internacional, se implemente o funcione de una mejor o peor forma según la región. En primer lugar se generalizará por continente. ```{r fig.width=4.5, fig.height=3,out.extra='style="float:left"'} ContinentPies <- ISO27001effectiveness::GetContinentPie(Attacks, c(-2.5, 0, 2, 0, -2.5), c(1.4, 1, 0.5, 0.5, 0), Cert_PerCountry, -c(0, -1.5, -2.5, -2.5, -2.5), -c(0.5, 0.2, 0.5, 1.8, -0.5)) +c(-2.5, -2.5, 0, -1.5, -2.5), +c(-0.5, 1.9, 1, 0.25, 0.6)) -ContinentPies[[1]] +ContinentPies[[2]] ``` ```{r fig.width=4.5, fig.height=3} -ContinentPies[[3]] +ContinentPies[[1]] ``` -Se puede observar a simple vista que los continentes que reciben más ataques, por una cuestión lógica de superficie e intereses, son por orden América, Asia y Europa. En cambio los continentes que mas certificaciones ISO 27001 obtienen son por orden Asia, Europa y América. Tanto África como Oceania podemos descartarlos en este estudio ya que sus porcentajes no son relevantes. Observemos ahora cómo influye esto en el tiempo. +Se puede observar a simple vista que los continentes que reciben más ataques, por lo que podría ser una cuestión lógica de superficie y/o intereses, son por orden: América, Asia y Europa. En cambio, los continentes que mas certificaciones ISO 27001 obtienen son los mismos, pero en distinto orden: Asia, Europa y América. + +Tanto África como Oceania serán descartados en el resto del estudio ya que sus porcentajes no parecen relevantes. ```{r fig.width=4.5, fig.height=4,out.extra='style="float:left"'} -ISO27001effectiveness::GetContinentCertsEvolution(Cert_PerCountry) +ContinentCertEvolution <- ISO27001effectiveness::GetContinentCertsEvolution(Cert_PerCountry, ContinentPies[[3]]) + +ContinentCertEvolution[[1]] ``` ```{r fig.width=4.5, fig.height=4} -ISO27001effectiveness::GetContinentAttacksEvolution(Attacks) +ContinentAttacksEvolution <- ISO27001effectiveness::GetContinentAttacksEvolution(Attacks, ContinentPies[[3]]) + +ContinentAttacksEvolution[[1]] ``` -Se puede observar que la tendencia de las certificaciones es creciente mientras que la de los ataques es decreciente, pero procederemos a comparar cada una individualmente para poder demostrarlo numéricamente y no solo aparentemente. +Se puede observar que en conjunto la pendiente de la tendencia de las certificaciones es creciente, mientras que la de los ataques es decreciente. No obstante, se procederá a comparar cada continente individualmente para poder observarlo con más precisión. ```{r fig.width=4.5, fig.height=3,out.extra='style="float:left"'} -topAttacks <- ISO27001effectiveness::GetContinentAttacksTopEvolution(Attacks) -topCerts <- ISO27001effectiveness::GetContinentCertsTopEvolution(Cert_PerCountry) -topCerts[[1]] -slope_Ame_Cert <- (fit[5] - fit[1]) / 4 +Ame_Cert <- GetContinentCertsSingleEvolution(ContinentCertEvolution[[2]], "Americas", "2013", 1400, 0.5) +Ame_Cert[[1]] +slope_Ame_Cert <- Ame_Cert[[2]] ``` ```{r fig.width=4.5, fig.height=3} -topAttacks[[1]] -slope_Ame_Att <- (fit[5] - fit[1]) / 4 +Ame_Att <- GetContinentAttacksSigleEvolution(ContinentAttacksEvolution[[2]], "Americas", "2014", 850, 0) +Ame_Att[[1]] +slope_Ame_Att <- Ame_Att[[2]] ``` -La pendiente de los ataques para _América_ es `r slope_Ame_Att` mientras que la pendiente de las certificaciones es `r slope_Ame_Cert`. +Para _América_, la pendiente de la tendencia en las certificaciones es `r slope_Ame_Cert`, mientras que la pendiente de los ataques es `r slope_Ame_Att`. ```{r fig.width=4.5, fig.height=3,out.extra='style="float:left"'} -topCerts[[2]] -slope_Asi_Cert <- (fit[5] - fit[1]) / 4 +Asi_Cert <- GetContinentCertsSingleEvolution(ContinentCertEvolution[[2]], "Asia", "2013", 13500, 0.5) +Asi_Cert[[1]] +slope_Asi_Cert <- Asi_Cert[[2]] ``` ```{r fig.width=4.5, fig.height=3} -topAttacks[[2]] -slope_Asi_Att <- (fit[5] - fit[1]) / 4 +Asi_Att <- GetContinentAttacksSigleEvolution(ContinentAttacksEvolution[[2]], "Asia", "2014", 400, 0) +Asi_Att[[1]] +slope_Asi_Att <- Asi_Att[[2]] ``` -La pendiente de los ataques para _Asia_ es `r slope_Asi_Att` mientras que la pendiente de las certificaciones es `r slope_Asi_Cert`. +Para _Asia_, la pendiente de la tendencia en las certificaciones es `r slope_Asi_Cert`, mientras que la pendiente de los ataques es `r slope_Asi_Att`. ```{r fig.width=4.5, fig.height=3,out.extra='style="float:left"'} -topCerts[[3]] -slope_Eu_Cert <- (fit[5] - fit[1]) / 4 +Eu_Cert <- GetContinentCertsSingleEvolution(ContinentCertEvolution[[2]], "Europe", "2013", 9500, 0.5) +Eu_Cert[[1]] +slope_Eu_Cert <- Eu_Cert[[2]] ``` ```{r fig.width=4.5, fig.height=3} -topAttacks[[3]] -slope_Eu_Att <- (fit[5] - fit[1]) / 4 +Eu_Att <- GetContinentAttacksSigleEvolution(ContinentAttacksEvolution[[2]], "Europe", "2014", 375, 0) +Eu_Att[[1]] +slope_Eu_Att <- Eu_Att[[2]] ``` -La pendiente de los ataques para _Europa_ es `r slope_Eu_Att` mientras que la pendiente de las certificaciones es `r slope_Eu_Cert`. - -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. +Para _Europa_, la pendiente de la tendencia en las certificaciones es `r slope_Eu_Cert`, mientras que la pendiente de los ataques es `r slope_Eu_Att`. -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. +El análisis continuará estableciendo superficies geográficas más pequeñas, aumentando así la precisión, para poder observar lo que ocurre a nivel de paises. Se mostrarán a continuación los que superan aproximádamente un 2% de las certificaciones totales y el 1,5% para los ataques (porque _Estados Unidos_ recibe la gran mayoría y si no saldría solo), ya que la lista completa es demasiado extensa. Los nombres serán representados con los dos caracteres correspondientes al estándar ISO. ```{r fig.width=4.5, fig.height=3,out.extra='style="float:left"'} -top <- GetCountriesCol(Attacks, Cert_PerCountry) -top[[1]] +CountryCol <- GetCountriesCol(Attacks,0, 0.5, + Cert_PerCountry, 0, 0.5) +CountryCol[[2]] ``` ```{r fig.width=4.5, fig.height=3} -top[[2]] +CountryCol[[1]] ``` -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_. +Como se puede observar, en la parte de certificaciones destaca de largo _Japón_ sobre los demás, que a su vez se encuentra bastante bajo en la lista de ataques. Y, de un modo totalmente contrario, en los ataques destaca _Estados Unidos_ por mucho, mientras que este mismo está muy bajo en certificaciones. + +El estudio continuará en profundidad con el top 3 de paises en número de certificaciones y en número de ataques recibidos, aunque algunos de ellos coincidan. ```{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 +US_Cert <- GetCountriesCertsSingleEvolution(Cert_PerCountry, + CountryCol[[3]][1], + "2013", 875, 0.5) + +US_Cert[[1]] +slope_US_Cert <- US_Cert[[2]] ``` ```{r fig.width=4.5, fig.height=3} -topAttacks[[1]] -slope_US_Att <- (fit[5] - fit[1]) / 4 +US_Att <- GetCountriesAttacksSingleEvolution(Attacks, + CountryCol[[3]][1], + "2014", 725, 0) + +US_Att[[1]] +slope_US_Att <- US_Att[[2]] ``` -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`. +La pendiente de la tendencia en los ataques para _`r CountryCol[[3]][1]`_ 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 +GB_Cert <- GetCountriesCertsSingleEvolution(Cert_PerCountry, + CountryCol[[3]][2], + "2013", 2400, 0.5) + +GB_Cert[[1]] +slope_GB_Cert <- GB_Cert[[2]] ``` ```{r fig.width=4.5, fig.height=3} -topAttacks[[2]] -slope_GB_Att <- (fit[5] - fit[1]) / 4 +GB_Att <- GetCountriesAttacksSingleEvolution(Attacks, + CountryCol[[3]][2], + "2014", 125, 0.5) + +GB_Att[[1]] +slope_GB_Att <- GB_Att[[2]] ``` -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`. +La pendiente de los ataques para _`r CountryCol[[3]][2]`_ 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 +IN_Cert <- GetCountriesCertsSingleEvolution(Cert_PerCountry, + CountryCol[[3]][3], + "2013", 1875, -0.2) + +IN_Cert[[1]] +slope_IN_Cert <- IN_Cert[[2]] ``` ```{r fig.width=4.5, fig.height=3} -topAttacks[[3]] -slope_IN_Att <- (fit[5] - fit[1]) / 4 +IN_Att <- GetCountriesAttacksSingleEvolution(Attacks, + CountryCol[[3]][3], + "2014", 60, -0.3) + +IN_Att[[1]] +slope_IN_Att <- IN_Att[[2]] ``` -La pendiente de los ataques para _India_ es `r slope_IN_Att` mientras que la pendiente de las certificaciones es `r slope_IN_Cert`. +La pendiente de los ataques para _`r CountryCol[[3]][3]`_ 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 +JP_Cert <- GetCountriesCertsSingleEvolution(Cert_PerCountry, + CountryCol[[3]][4], + "2013", 7600, 1) + +JP_Cert[[1]] +slope_JP_Cert <- JP_Cert[[2]] ``` ```{r fig.width=4.5, fig.height=3} -topAttacks[[4]] -slope_JP_Att <- (fit[5] - fit[1]) / 4 +JP_Att <- GetCountriesAttacksSingleEvolution(Attacks, + CountryCol[[3]][4], + "2014", 30, -0.5) + +JP_Att[[1]] +slope_JP_Att <- JP_Att[[2]] ``` -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`. +La pendiente de los ataques para _`r CountryCol[[3]][4]`_ 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_. +Hasta ahora se han analizado por separado el tipo de ataque y la localización geofráfica, pero la respuesta podría encontrarse en una combinación de las mismas. Para ello se analizarán los tipos de ataque reportados en el país con más certificaciones, _Japón_, y en el que más ataques recibe, _Estados Unidos_. + +```{r fig.width=9, fig.height=4} +ISO27001effectiveness::GetContinentAttackCol(Attacks, "US", "JP") +``` + +Como se pudo apreciar en un apartado previo, la ISO 27001 parece especialmente efectiva contra las técnicas de _Defacement_, _DDoS_ e _Injection_, en los gráficos previos se puede observar que _Estados Unidos_ tiene un menor porcentaje de este tipo de ataques con respecto a _Japón_. Para valorarlo mejor se representará a continuación cómo evolucionan con el tiempo en ambos paises. ```{r fig.width=4.5, fig.height=3,out.extra='style="float:left"'} -graphs <- ISO27001effectiveness::GetContinentAttackPie(Attacks) -graphs[[1]] +US_Att_Year <- ISO27001effectiveness::GetContinentAttackEvolution(Attacks, "US") + +US_Att_Year[[1]] ``` ```{r fig.width=4.5, fig.height=3} -graphs[[2]] +JP_Att_Year <- ISO27001effectiveness::GetContinentAttackEvolution(Attacks, "JP") +JP_Att_Year[[1]] ``` -Como vimos en el apartado previo, la ISO 27001 parece especialmente efectiva contra las técnicas de _Defacement_, _DDoS_ e _Injection_, en los gráficos previos podemos observar como para _Estados Unidos_ tiene un menor porcentaje de este tipo de ataques con respecto a _Japón_. Para valorarlo mejor se representará a continuación cómo evolucionan con el tiempo. +Como se puede observar, en _Estados Unidos_ se presenta una tendencia mayor a recibir los tipos de ataques que parecen menos afectados por la ISO 27001, mientras que en _Japón_ parecen matenerse. Se representarán las tendecias para cada técnica en ambos paises. ```{r fig.width=4.5, fig.height=3,out.extra='style="float:left"'} -graphs <- ISO27001effectiveness::GetContinentAttackEvolution(Attacks) -graphs[[1]] +US_dds_Year <- GetAttackTypeSigleEvolution(US_Att_Year[[2]], + "DDoS", + "2014", + 75, 0) +US_dds_Year[[1]] +slope_US_dds <- US_dds_Year[[2]] ``` ```{r fig.width=4.5, fig.height=3} -graphs[[2]] +JP_dds_Year <- GetAttackTypeSigleEvolution(JP_Att_Year[[2]], + "DDoS", + "2014", + 4.4, 0) +JP_dds_Year[[1]] +slope_JP_dds <- JP_dds_Year[[2]] ``` -Como se puede observar, en _Estados Unidos_ se presenta una tendencia mayor a recibir los tipos de ataques que parecen menos afectados por la ISO 27001, mientras que en _Japón_ parecen matenerse. Se representarán las tendecias en ambos paises. +Para _DDoS_, la pendiente de la tendencia es menor en _Estados Unidos_(`r slope_US_dds`) que en _Japón_(`r slope_JP_dds`). ```{r fig.width=4.5, fig.height=3,out.extra='style="float:left"'} -graphs[[3]] -slope_US_Oth <- (fit[5] - fit[1]) / 4 +US_def_Year <- GetAttackTypeSigleEvolution(US_Att_Year[[2]], + "Defacement", + "2014", + 46, 0) +US_def_Year[[1]] +slope_US_def <- US_def_Year[[2]] ``` ```{r fig.width=4.5, fig.height=3} -graphs[[4]] -slope_JP_Oth <- (fit[5] - fit[1]) / 4 +JP_def_Year <- GetAttackTypeSigleEvolution(JP_Att_Year[[2]], + "Defacement", + "2014", + 1.5, 0) +JP_def_Year[[1]] +slope_JP_def <- JP_def_Year[[2]] ``` -Efectivamente, la tendencia en _Estados Unidos_ tiene una pendiente mayor (`r slope_US_Oth`) que en Japón que es cercana al 0 (`r slope_JP_Oth`) lo que, aunque la gráfica sea irregular debido a la baja cantidad de casos, implica una constancia. - -# Viejo - -De los datos mostrados se pueden hacer diferentes observaciones: - -* De 2014 a 2015, USA pasa de tener 654 a 1247 empresas con certificación ISO 27001, sin embargo la cifra de ciberataques se mantiene constante de 383 a 386 ataques recibidos. De 2013 a 2014 por ejemplo, pasa de recibir 505 a 383 ataques pese a sólo haber pasado de 566 a 654 empresas con dicha certificación. -* Japón tiene un número inusualmente alto de empresas con la ISO 27001, no obstante sufre una cantidad de ciberataques comparativa a la de Israel, que tiene muchas menos empresas con la certificación. - -Ambas observaciones son de especial interés ya que ponen de relieve situaciones en las que de ser efectivo reformar los sistemas para cumplir la ISO 27001, debería poder apreciarse un efecto en la cantidad de ciberataques recibidos. En el caso de los USA, sólo podría explicarse mediante alguna de las siguientes hipótesis: +Para _Defacement_, la pendiente de la tendencia es menor en _Estados Unidos_(`r slope_US_def`) que en _Japón_(`r slope_JP_def`), aunque es muy parecida. -* Entre 2013 y 2014 se produjo un número especialmente alto de ciberataques a USA -* Se crean más empresas de las que logran certificarse, y además, sufren ataques antes de obtenerla +```{r fig.width=4.5, fig.height=3,out.extra='style="float:left"'} +US_inj_Year <- GetAttackTypeSigleEvolution(US_Att_Year[[2]], + "Injection", + "2014", + 155, 0) +US_inj_Year[[1]] +slope_US_inj <- US_inj_Year[[2]] +``` +```{r fig.width=4.5, fig.height=3} +JP_inj_Year <- GetAttackTypeSigleEvolution(JP_Att_Year[[2]], + "Injection", + "2014", + 9, 0) +JP_inj_Year[[1]] +slope_JP_inj <- JP_inj_Year[[2]] +``` -La primera hipótesis puede ser comprobada con los datos que disponemos. A continuación se muestra una línea temporal de ciberataques globales entre los años 2012 y 2015. +Para _Injection_, la pendiente de la tendencia es menor en _Estados Unidos_(`r slope_US_inj`) que en _Japón_(`r slope_JP_inj`). +```{r fig.width=4.5, fig.height=3,out.extra='style="float:left"'} +US_Oth_Year <- GetAttackTypeSigleEvolution(US_Att_Year[[2]], + "Otros", + "2014", + 100, 0) +US_Oth_Year[[1]] +slope_US_Oth <- US_Oth_Year[[2]] +``` +```{r fig.width=4.5, fig.height=3} +JP_Oth_Year <- GetAttackTypeSigleEvolution(JP_Att_Year[[2]], + "Otros", + 3.5, + 3.5, 0) +JP_Oth_Year[[1]] +slope_JP_Oth <- JP_Oth_Year[[2]] +``` -Observamos que se produjo lo contrario, bajó el número de ciberataques. +Para _Otros_, la pendiente de la tendencia es mayor en _Estados Unidos_(`r slope_US_inj`) que en _Japón_(`r slope_JP_inj`). ## Conclusiones -Por lo observado anteriormente, se puede concluir que: -* La cantidad de ciberataques que recibe un país no se mitiga por el número de empresas que han obtenido la certificación ISO 270001 -Esto no lleva a concluir que obtener la certificación ISO 27001 no es efectiva para reducir el número de ciberataques, sino que probablemente dependa de factores externos ajenos a este estudio ## Trabajo futuro -Como trabajo futuro querríamos poder seguir en la línea de investigación acerca de los siguientes puntos: +Como trabajo futuro, el estudio podría seguir diversas líneas de investigación, resumidas en los siguientes puntos: -* ¿Qué factores producen un aumento o recesión en la cantidad de ciberataques recibidos? -* ¿Qué sectores industriales reciben más ciberataques? -* ¿Cuáles de esos sectores son los que más certificaciones obtienen? +* Mejorar la fuente de datos de ciberataques. Una fuente cuya administración, recopilación y mantenimiento no dependiera de una sola persona y fuera más constante, homogenea y detallada. +* Conectar los datos sobre web sites certificados por pais que nos provee la fuente de datos de certificaciones. +* Homogenizar los nombres y conectar los datos sobre sectores industriales que nos proveen ambas fuentes. +* Investigación más a fondo de los cambios realizados sobre la norma 27001, como la 27001:2013, para relacionarlos con las irregularidades en las curvas de ataques. +* Incorporar nuevas variables que puedan afectar al estudio, como parches importantes u otras normas parecidas. Creemos que la investigación de estas cuestiones puede dar más robustez a las conclusiones expuestas en este estudio. diff --git a/ISO27001effectiveness/Report.html b/ISO27001effectiveness/Report.html index cdd7f20..d77a342 100644 --- a/ISO27001effectiveness/Report.html +++ b/ISO27001effectiveness/Report.html @@ -11,7 +11,7 @@ -Estudio sobre la efectividad de la certificación ISO 27001 +Estudio sobre la efectividad de la certificación ISO 27001 @@ -115,7 +115,7 @@ $(document).ready(function () { -

Estudio sobre la efectividad de la certificación ISO 27001

+

Estudio sobre la efectividad de la certificación ISO 27001

@@ -372,74 +372,63 @@ $(document).ready(function () {

Evolución geográfica

-

Este apartado estudiará la relación entre la certificación ISO 27001 y los ataques producidos, pero teniendo en cuenta la variable geográfica, ya que es posible que la certificación, aunque sea internacional, se implemente de una mejor o peor forma según la región. En primer lugar se generalizará por continente.

-

-

Se puede observar a simple vista que los continentes que reciben más ataques, por una cuestión lógica de superficie e intereses, son por orden América, Asia y Europa. En cambio los continentes que mas certificaciones ISO 27001 obtienen son por orden Asia, Europa y América. Tanto África como Oceania podemos descartarlos en este estudio ya que sus porcentajes no son relevantes. Observemos ahora cómo influye esto en el tiempo.

+

Este apartado estudiará la relación entre la certificación ISO 27001 y los ataques producidos, pero teniendo en cuenta la variable geográfica, ya que es posible que la certificación, aunque sea internacional, se implemente o funcione de una mejor o peor forma según la región. En primer lugar se generalizará por continente.

+

+

Se puede observar a simple vista que los continentes que reciben más ataques, por lo que podría ser una cuestión lógica de superficie y/o intereses, son por orden: América, Asia y Europa. En cambio, los continentes que mas certificaciones ISO 27001 obtienen son los mismos, pero en distinto orden: Asia, Europa y América.

+

Tanto África como Oceania serán descartados en el resto del estudio ya que sus porcentajes no parecen relevantes.

-

Se puede observar que la tendencia de las certificaciones es creciente mientras que la de los ataques es decreciente, pero procederemos a comparar cada una individualmente para poder demostrarlo numéricamente y no solo aparentemente.

-

-

La pendiente de los ataques para América es -100.8 mientras que la pendiente de las certificaciones es 275.2.

-

-

La pendiente de los ataques para Asia es -58.4 mientras que la pendiente de las certificaciones es 1008.4.

-

-

La pendiente de los ataques para Europa es -57.4 mientras que la pendiente de las certificaciones es 1209.4.

-

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, 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.

+

Se puede observar que en conjunto la pendiente de la tendencia de las certificaciones es creciente, mientras que la de los ataques es decreciente. No obstante, se procederá a comparar cada continente individualmente para poder observarlo con más precisión.

+

+

Para América, la pendiente de la tendencia en las certificaciones es 275.2, mientras que la pendiente de los ataques es -100.8.

+

+

Para Asia, la pendiente de la tendencia en las certificaciones es 1008.4, mientras que la pendiente de los ataques es -58.4.

+

+

Para Europa, la pendiente de la tendencia en las certificaciones es 1209.4, mientras que la pendiente de los ataques es -57.4.

+

El análisis continuará estableciendo superficies geográficas más pequeñas, aumentando así la precisión, para poder observar lo que ocurre a nivel de paises. Se mostrarán a continuación los que superan aproximádamente un 2% de las certificaciones totales y el 1,5% para los ataques (porque Estados Unidos recibe la gran mayoría y si no saldría solo), ya que la lista completa es demasiado extensa. Los nombres serán representados con los dos caracteres correspondientes al estándar ISO.

+

+

Como se puede observar, en la parte de certificaciones destaca de largo Japón sobre los demás, que a su vez se encuentra bastante bajo en la lista de ataques. Y, de un modo totalmente contrario, en los ataques destaca Estados Unidos por mucho, mientras que este mismo está muy bajo en certificaciones.

+

El estudio continuará en profundidad con el top 3 de paises en número de certificaciones y en número de ataques recibidos, aunque algunos de ellos coincidan.

+

+

La pendiente de la tendencia en los ataques para US es -59.8 mientras que la pendiente de las certificaciones es 210.3.

+

+

La pendiente de los ataques para GB es -11.8 mientras que la pendiente de las certificaciones es 320.4.

+

+

La pendiente de los ataques para IN es -8.7 mientras que la pendiente de las certificaciones es 268.3.

+

+

La pendiente de los ataques para JP es -7.4 mientras que la pendiente de las certificaciones es 262.4.

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.

-

-

Como vimos en el apartado previo, la ISO 27001 parece especialmente efectiva contra las técnicas de Defacement, DDoS e Injection, en los gráficos previos podemos observar como para Estados Unidos tiene un menor porcentaje de este tipo de ataques con respecto a Japón. Para valorarlo mejor se representará a continuación cómo evolucionan con el tiempo.

-

-

Como se puede observar, en Estados Unidos se presenta una tendencia mayor a recibir los tipos de ataques que parecen menos afectados por la ISO 27001, mientras que en Japón parecen matenerse. Se representarán las tendecias en ambos paises.

-

-

Efectivamente, la tendencia en Estados Unidos tiene una pendiente mayor (21.2) que en Japón que es cercana al 0 (-1.11022310^{-16}) lo que, aunque la gráfica sea irregular debido a la baja cantidad de casos, implica una constancia.

+

Hasta ahora se han analizado por separado el tipo de ataque y la localización geofráfica, pero la respuesta podría encontrarse en una combinación de las mismas. Para ello se analizarán los tipos de ataque reportados en el país con más certificaciones, Japón, y en el que más ataques recibe, Estados Unidos.

+

+

Como se pudo apreciar en un apartado previo, la ISO 27001 parece especialmente efectiva contra las técnicas de Defacement, DDoS e Injection, en los gráficos previos se puede observar que Estados Unidos tiene un menor porcentaje de este tipo de ataques con respecto a Japón. Para valorarlo mejor se representará a continuación cómo evolucionan con el tiempo en ambos paises.

+

+

Como se puede observar, en Estados Unidos se presenta una tendencia mayor a recibir los tipos de ataques que parecen menos afectados por la ISO 27001, mientras que en Japón parecen matenerse. Se representarán las tendecias para cada técnica en ambos paises.

+

+

Para DDoS, la pendiente de la tendencia es menor en Estados Unidos(-22.4) que en Japón(-0.2).

+

+

Para Defacement, la pendiente de la tendencia es menor en Estados Unidos(-1.8) que en Japón(-0.8), aunque es muy parecida.

+

+

Para Injection, la pendiente de la tendencia es menor en Estados Unidos(-55.1) que en Japón(-3.9).

+

+

Para Otros, la pendiente de la tendencia es mayor en Estados Unidos(-55.1) que en Japón(-3.9).

-
-

Viejo

-

De los datos mostrados se pueden hacer diferentes observaciones:

- -

Ambas observaciones son de especial interés ya que ponen de relieve situaciones en las que de ser efectivo reformar los sistemas para cumplir la ISO 27001, debería poder apreciarse un efecto en la cantidad de ciberataques recibidos. En el caso de los USA, sólo podría explicarse mediante alguna de las siguientes hipótesis:

- -

La primera hipótesis puede ser comprobada con los datos que disponemos. A continuación se muestra una línea temporal de ciberataques globales entre los años 2012 y 2015.

-

Observamos que se produjo lo contrario, bajó el número de ciberataques.

Conclusiones

-

Por lo observado anteriormente, se puede concluir que:

- -

Esto no lleva a concluir que obtener la certificación ISO 27001 no es efectiva para reducir el número de ciberataques, sino que probablemente dependa de factores externos ajenos a este estudio

Trabajo futuro

-

Como trabajo futuro querríamos poder seguir en la línea de investigación acerca de los siguientes puntos:

+

Como trabajo futuro, el estudio podría seguir diversas líneas de investigación, resumidas en los siguientes puntos:

Creemos que la investigación de estas cuestiones puede dar más robustez a las conclusiones expuestas en este estudio.

-
diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-10_17b6bd20fff5afd30e114864f634b0a1.rdb b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-10_17b6bd20fff5afd30e114864f634b0a1.rdb deleted file mode 100644 index 7bc246e..0000000 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-10_17b6bd20fff5afd30e114864f634b0a1.rdb +++ /dev/null diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-10_17b6bd20fff5afd30e114864f634b0a1.rdx b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-10_17b6bd20fff5afd30e114864f634b0a1.rdx deleted file mode 100644 index 7be648f..0000000 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-10_17b6bd20fff5afd30e114864f634b0a1.rdx +++ /dev/null diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-10_17b6bd20fff5afd30e114864f634b0a1.RData b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-10_a4aed665aff5caed61c6b06c173a37e8.RData index e462779..a008009 100644 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-10_17b6bd20fff5afd30e114864f634b0a1.RData +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-10_a4aed665aff5caed61c6b06c173a37e8.RData diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-10_a4aed665aff5caed61c6b06c173a37e8.rdb b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-10_a4aed665aff5caed61c6b06c173a37e8.rdb new file mode 100644 index 0000000..4054ad4 --- /dev/null +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-10_a4aed665aff5caed61c6b06c173a37e8.rdb diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-10_a4aed665aff5caed61c6b06c173a37e8.rdx b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-10_a4aed665aff5caed61c6b06c173a37e8.rdx new file mode 100644 index 0000000..2049389 --- /dev/null +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-10_a4aed665aff5caed61c6b06c173a37e8.rdx diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-11_35c42ea5a3589f64604aabd4751df60e.rdb b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-11_35c42ea5a3589f64604aabd4751df60e.rdb deleted file mode 100644 index 835b209..0000000 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-11_35c42ea5a3589f64604aabd4751df60e.rdb +++ /dev/null diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-11_35c42ea5a3589f64604aabd4751df60e.rdx b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-11_35c42ea5a3589f64604aabd4751df60e.rdx deleted file mode 100644 index d9ce979..0000000 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-11_35c42ea5a3589f64604aabd4751df60e.rdx +++ /dev/null diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-11_35c42ea5a3589f64604aabd4751df60e.RData b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-11_9775b78543b14832841a31d5a0691603.RData index 1c9dd26..4136084 100644 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-11_35c42ea5a3589f64604aabd4751df60e.RData +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-11_9775b78543b14832841a31d5a0691603.RData diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-11_9775b78543b14832841a31d5a0691603.rdb b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-11_9775b78543b14832841a31d5a0691603.rdb new file mode 100644 index 0000000..74ed7c6 --- /dev/null +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-11_9775b78543b14832841a31d5a0691603.rdb diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-11_9775b78543b14832841a31d5a0691603.rdx b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-11_9775b78543b14832841a31d5a0691603.rdx new file mode 100644 index 0000000..86caf17 --- /dev/null +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-11_9775b78543b14832841a31d5a0691603.rdx diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-12_119d22b1a0bc34c6e19d852c49915933.rdb b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-12_119d22b1a0bc34c6e19d852c49915933.rdb deleted file mode 100644 index 83be0a7..0000000 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-12_119d22b1a0bc34c6e19d852c49915933.rdb +++ /dev/null diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-12_119d22b1a0bc34c6e19d852c49915933.rdx b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-12_119d22b1a0bc34c6e19d852c49915933.rdx deleted file mode 100644 index 1e7f2b5..0000000 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-12_119d22b1a0bc34c6e19d852c49915933.rdx +++ /dev/null diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-12_119d22b1a0bc34c6e19d852c49915933.RData b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-12_44a55aa068c5d953c8557125f3c3a864.RData index 065c3c9..0386bd8 100644 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-12_119d22b1a0bc34c6e19d852c49915933.RData +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-12_44a55aa068c5d953c8557125f3c3a864.RData diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-12_44a55aa068c5d953c8557125f3c3a864.rdb b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-12_44a55aa068c5d953c8557125f3c3a864.rdb new file mode 100644 index 0000000..315eaef --- /dev/null +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-12_44a55aa068c5d953c8557125f3c3a864.rdb diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-12_44a55aa068c5d953c8557125f3c3a864.rdx b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-12_44a55aa068c5d953c8557125f3c3a864.rdx new file mode 100644 index 0000000..9f484f2 --- /dev/null +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-12_44a55aa068c5d953c8557125f3c3a864.rdx diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-13_06ad67a944d14cc019066879ed2240a5.rdb b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-13_06ad67a944d14cc019066879ed2240a5.rdb deleted file mode 100644 index a3a2389..0000000 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-13_06ad67a944d14cc019066879ed2240a5.rdb +++ /dev/null diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-13_06ad67a944d14cc019066879ed2240a5.rdx b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-13_06ad67a944d14cc019066879ed2240a5.rdx deleted file mode 100644 index 454038f..0000000 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-13_06ad67a944d14cc019066879ed2240a5.rdx +++ /dev/null diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-13_06ad67a944d14cc019066879ed2240a5.RData b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-13_80272adae4859f34a674174961672345.RData index 5978c3f..cb657c1 100644 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-13_06ad67a944d14cc019066879ed2240a5.RData +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-13_80272adae4859f34a674174961672345.RData diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-13_80272adae4859f34a674174961672345.rdb b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-13_80272adae4859f34a674174961672345.rdb new file mode 100644 index 0000000..1c1fad5 --- /dev/null +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-13_80272adae4859f34a674174961672345.rdb diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-13_80272adae4859f34a674174961672345.rdx b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-13_80272adae4859f34a674174961672345.rdx new file mode 100644 index 0000000..18842bd --- /dev/null +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-13_80272adae4859f34a674174961672345.rdx diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-14_550a19d3da14734bf499443fd706e7b8.rdb b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-14_550a19d3da14734bf499443fd706e7b8.rdb deleted file mode 100644 index 797f5c1..0000000 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-14_550a19d3da14734bf499443fd706e7b8.rdb +++ /dev/null diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-14_550a19d3da14734bf499443fd706e7b8.rdx b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-14_550a19d3da14734bf499443fd706e7b8.rdx deleted file mode 100644 index 76a8827..0000000 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-14_550a19d3da14734bf499443fd706e7b8.rdx +++ /dev/null diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-14_550a19d3da14734bf499443fd706e7b8.RData b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-14_de5adddd89c35656b7812586fb7789ac.RData index fedc543..c99b731 100644 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-14_550a19d3da14734bf499443fd706e7b8.RData +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-14_de5adddd89c35656b7812586fb7789ac.RData diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-14_de5adddd89c35656b7812586fb7789ac.rdb b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-14_de5adddd89c35656b7812586fb7789ac.rdb new file mode 100644 index 0000000..3fece6a --- /dev/null +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-14_de5adddd89c35656b7812586fb7789ac.rdb diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-14_de5adddd89c35656b7812586fb7789ac.rdx b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-14_de5adddd89c35656b7812586fb7789ac.rdx new file mode 100644 index 0000000..b950e7f --- /dev/null +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-14_de5adddd89c35656b7812586fb7789ac.rdx diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-15_8feab3edd324e25728a3fbcb795341ad.rdb b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-15_8feab3edd324e25728a3fbcb795341ad.rdb deleted file mode 100644 index 61ab933..0000000 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-15_8feab3edd324e25728a3fbcb795341ad.rdb +++ /dev/null diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-15_8feab3edd324e25728a3fbcb795341ad.rdx b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-15_8feab3edd324e25728a3fbcb795341ad.rdx deleted file mode 100644 index dbb6b5b..0000000 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-15_8feab3edd324e25728a3fbcb795341ad.rdx +++ /dev/null diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-15_8feab3edd324e25728a3fbcb795341ad.RData b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-15_9f94251fc79ea0abaa384edca4bdd198.RData index 964201e..8b27344 100644 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-15_8feab3edd324e25728a3fbcb795341ad.RData +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-15_9f94251fc79ea0abaa384edca4bdd198.RData diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-15_9f94251fc79ea0abaa384edca4bdd198.rdb b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-15_9f94251fc79ea0abaa384edca4bdd198.rdb new file mode 100644 index 0000000..6c3cdd3 --- /dev/null +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-15_9f94251fc79ea0abaa384edca4bdd198.rdb diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-15_9f94251fc79ea0abaa384edca4bdd198.rdx b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-15_9f94251fc79ea0abaa384edca4bdd198.rdx new file mode 100644 index 0000000..6dcfec2 --- /dev/null +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-15_9f94251fc79ea0abaa384edca4bdd198.rdx diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-8_990b7adde1fd9415c64b055559d9e5d0.RData b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-8_6e8d4f038804f1026b36bd4df9694bd3.RData index d7b8bf9..442a773 100644 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-8_990b7adde1fd9415c64b055559d9e5d0.RData +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-8_6e8d4f038804f1026b36bd4df9694bd3.RData diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-8_6e8d4f038804f1026b36bd4df9694bd3.rdb b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-8_6e8d4f038804f1026b36bd4df9694bd3.rdb new file mode 100644 index 0000000..3dd5cf1 --- /dev/null +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-8_6e8d4f038804f1026b36bd4df9694bd3.rdb diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-8_6e8d4f038804f1026b36bd4df9694bd3.rdx b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-8_6e8d4f038804f1026b36bd4df9694bd3.rdx new file mode 100644 index 0000000..b0ff55e --- /dev/null +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-8_6e8d4f038804f1026b36bd4df9694bd3.rdx diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-8_990b7adde1fd9415c64b055559d9e5d0.rdb b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-8_990b7adde1fd9415c64b055559d9e5d0.rdb deleted file mode 100644 index e69de29..0000000 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-8_990b7adde1fd9415c64b055559d9e5d0.rdb +++ /dev/null diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-8_990b7adde1fd9415c64b055559d9e5d0.rdx b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-8_990b7adde1fd9415c64b055559d9e5d0.rdx deleted file mode 100644 index e12532c..0000000 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-8_990b7adde1fd9415c64b055559d9e5d0.rdx +++ /dev/null diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-9_e7dd34e7ed073d0d7470cb651648bc39.RData b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-9_7bbb87c5e09d0533ec360ef82c2cd1d5.RData index 6c1cbfc..838c620 100644 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-9_e7dd34e7ed073d0d7470cb651648bc39.RData +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-9_7bbb87c5e09d0533ec360ef82c2cd1d5.RData diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-9_e7dd34e7ed073d0d7470cb651648bc39.rdb b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-9_7bbb87c5e09d0533ec360ef82c2cd1d5.rdb index faef0a3..572f25c 100644 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-9_e7dd34e7ed073d0d7470cb651648bc39.rdb +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-9_7bbb87c5e09d0533ec360ef82c2cd1d5.rdb diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-9_7bbb87c5e09d0533ec360ef82c2cd1d5.rdx b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-9_7bbb87c5e09d0533ec360ef82c2cd1d5.rdx new file mode 100644 index 0000000..71caa39 --- /dev/null +++ b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-9_7bbb87c5e09d0533ec360ef82c2cd1d5.rdx diff --git a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-9_e7dd34e7ed073d0d7470cb651648bc39.rdx b/ISO27001effectiveness/Report_cache/html/unnamed-chunk-9_e7dd34e7ed073d0d7470cb651648bc39.rdx deleted file mode 100644 index 9114fb5..0000000 --- a/ISO27001effectiveness/Report_cache/html/unnamed-chunk-9_e7dd34e7ed073d0d7470cb651648bc39.rdx +++ /dev/null diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-16-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-16-1.png index 82293a1..332e55c 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-16-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-16-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-17-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-17-1.png index 06974d2..82293a1 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-17-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-17-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-20-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-20-1.png index f256d3a..1c3dd3d 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-20-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-20-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-21-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-21-1.png index 5921062..16ed15b 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-21-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-21-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-22-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-22-1.png index aae1c76..cc9afea 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-22-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-22-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-23-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-23-1.png index 1a8b626..9274165 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-23-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-23-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-24-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-24-1.png index d71417a..8acc350 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-24-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-24-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-25-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-25-1.png index c830b98..2a3bf65 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-25-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-25-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-26-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-26-1.png index 95d1485..7f8e487 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-26-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-26-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-27-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-27-1.png index 3b4ae72..3e0d199 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-27-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-27-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-28-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-28-1.png index 7853323..6d1e380 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-28-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-28-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-29-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-29-1.png index b439416..394f92c 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-29-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-29-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-30-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-30-1.png index ec674be..6203813 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-30-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-30-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-31-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-31-1.png index b8e3639..449db16 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-31-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-31-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-32-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-32-1.png index 61c2915..c062d48 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-32-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-32-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-33-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-33-1.png index bea1448..478409e 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-33-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-33-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-34-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-34-1.png index 02c4ed4..f794e7e 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-34-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-34-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-35-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-35-1.png index 13cbcb1..d7eb290 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-35-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-35-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-36-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-36-1.png index 2eb6e2a..294926a 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-36-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-36-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-37-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-37-1.png index 228d6af..516bf36 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-37-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-37-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-38-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-38-1.png index cba35db..03513f2 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-38-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-38-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-39-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-39-1.png index b5432f6..f6a428b 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-39-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-39-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-40-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-40-1.png index 930759a..5100417 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-40-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-40-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-41-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-41-1.png index e2e5420..49fa2b2 100644 --- a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-41-1.png +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-41-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-42-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-42-1.png new file mode 100644 index 0000000..f54b7d5 --- /dev/null +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-42-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-43-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-43-1.png new file mode 100644 index 0000000..e07cd5d --- /dev/null +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-43-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-44-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-44-1.png new file mode 100644 index 0000000..765bf9e --- /dev/null +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-44-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-45-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-45-1.png new file mode 100644 index 0000000..a57f5c2 --- /dev/null +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-45-1.png diff --git a/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-46-1.png b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-46-1.png new file mode 100644 index 0000000..028a4a9 --- /dev/null +++ b/ISO27001effectiveness/Report_files/figure-html/unnamed-chunk-46-1.png diff --git a/ISO27001effectiveness/man/GetReportGraphs.Rd b/ISO27001effectiveness/man/FilterMultiAttack.Rd index 21ff52b..3901b58 100644 --- a/ISO27001effectiveness/man/GetReportGraphs.Rd +++ b/ISO27001effectiveness/man/FilterMultiAttack.Rd @@ -1,20 +1,18 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/ReportGraphs.R -\name{GetReportGraphs} -\alias{GetReportGraphs} -\title{Return every graph used in the report file} +% Please edit documentation in R/Hackmageddon_Parser.R +\name{FilterMultiAttack} +\alias{FilterMultiAttack} +\title{Look for rows with more than one attack and split into multiple} \usage{ -GetReportGraphs(Cert_PerCountry, Attacks) +FilterMultiAttack(dataset.pre) } \arguments{ -\item{Cert_PerCountry}{data.frame with the processed data of ISO 27001 certifications} - -\item{Attacks}{data.frame with the processed data of cyberattacks} +\item{dataset.pre}{data.frame to process} } \value{ data.frame } \description{ -Return every graph used in the report file +Look for rows with more than one attack and split into multiple } diff --git a/ISO27001effectiveness/man/GetAttackTypeEvolution.Rd b/ISO27001effectiveness/man/GetAttackTypeEvolution.Rd new file mode 100644 index 0000000..a0981d7 --- /dev/null +++ b/ISO27001effectiveness/man/GetAttackTypeEvolution.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ReportGraphs.R +\name{GetAttackTypeEvolution} +\alias{GetAttackTypeEvolution} +\title{Return graph to show the evolution of a attack types list} +\usage{ +GetAttackTypeEvolution(Attacks, TypeList) +} +\arguments{ +\item{Attacks}{data.frame with procesed source data} + +\item{TypeList}{List with attack types to show} +} +\value{ +list(graph, data.frame with TypeList attacks data by year) +} +\description{ +Return graph to show the evolution of a attack types list +} + diff --git a/ISO27001effectiveness/man/GetAttackTypePie.Rd b/ISO27001effectiveness/man/GetAttackTypePie.Rd new file mode 100644 index 0000000..e2151a4 --- /dev/null +++ b/ISO27001effectiveness/man/GetAttackTypePie.Rd @@ -0,0 +1,22 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ReportGraphs.R +\name{GetAttackTypePie} +\alias{GetAttackTypePie} +\title{Return pie graph to show % of each attack type} +\usage{ +GetAttackTypePie(Attacks, label.vjust = 0, label.hjust = 0) +} +\arguments{ +\item{Attacks}{data.frame with procesed source data} + +\item{label.vjust}{Vector of vertical just to each portion label} + +\item{label.hjust}{Vector of horizontal just to each portion label} +} +\value{ +list(graph, AttackTypeShowedList) +} +\description{ +Return pie graph to show % of each attack type +} + diff --git a/ISO27001effectiveness/man/GetAttackTypeSigleEvolution.Rd b/ISO27001effectiveness/man/GetAttackTypeSigleEvolution.Rd new file mode 100644 index 0000000..62d9acd --- /dev/null +++ b/ISO27001effectiveness/man/GetAttackTypeSigleEvolution.Rd @@ -0,0 +1,27 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ReportGraphs.R +\name{GetAttackTypeSigleEvolution} +\alias{GetAttackTypeSigleEvolution} +\title{Return graph to show the evolution of a single attack type and his smooth} +\usage{ +GetAttackTypeSigleEvolution(Attacks, AttackType, smooth.x = 0, smooth.y = 0, + smooth.label.hjust = 0) +} +\arguments{ +\item{Attacks}{data.frame with procesed source data} + +\item{AttackType}{Attack type to represent} + +\item{smooth.x}{Horizontal position to smooth slope label} + +\item{smooth.y}{Vertical position to smooth slope label} + +\item{smooth.label.hjust}{Horizontal just to smooth slope label} +} +\value{ +list(graph, slope) +} +\description{ +Return graph to show the evolution of a single attack type and his smooth +} + diff --git a/ISO27001effectiveness/man/GetAttacksEvolution.Rd b/ISO27001effectiveness/man/GetAttacksEvolution.Rd new file mode 100644 index 0000000..c2d394f --- /dev/null +++ b/ISO27001effectiveness/man/GetAttacksEvolution.Rd @@ -0,0 +1,34 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ReportGraphs.R +\name{GetAttacksEvolution} +\alias{GetAttacksEvolution} +\title{Return graph representing the general attacks evolution by year} +\usage{ +GetAttacksEvolution(Attacks, point.vjust = 0, point.hjust = 0, + iso2013.y = 0, iso2013.label.hjust = 0, smooth.x = 0, smooth.y = 0, + smooth.label.hjust = 0) +} +\arguments{ +\item{Attacks}{data.frame with procesed source data} + +\item{point.vjust}{Vector of vertical just to each point label} + +\item{point.hjust}{Vector of Horizontal just to each point label} + +\item{iso2013.y}{Vertical position to ISO27001:2013 label} + +\item{iso2013.label.hjust}{Horizontal just to ISO27001:2013 label} + +\item{smooth.x}{Horizontal position to smooth slope label} + +\item{smooth.y}{Vertical position to smooth slope label} + +\item{smooth.label.hjust}{Horizontal just to smooth slope label} +} +\value{ +list(graph, slope) +} +\description{ +Return graph representing the general attacks evolution by year +} + diff --git a/ISO27001effectiveness/man/GetAttacksMonthEvolution.Rd b/ISO27001effectiveness/man/GetAttacksMonthEvolution.Rd new file mode 100644 index 0000000..8f5ce20 --- /dev/null +++ b/ISO27001effectiveness/man/GetAttacksMonthEvolution.Rd @@ -0,0 +1,18 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ReportGraphs.R +\name{GetAttacksMonthEvolution} +\alias{GetAttacksMonthEvolution} +\title{Return graph representing the general attacks evolution by month} +\usage{ +GetAttacksMonthEvolution(Attacks) +} +\arguments{ +\item{Attacks}{data.frame with procesed source data} +} +\value{ +graph +} +\description{ +Return graph representing the general attacks evolution by month +} + diff --git a/ISO27001effectiveness/man/GetCertsEvolution.Rd b/ISO27001effectiveness/man/GetCertsEvolution.Rd new file mode 100644 index 0000000..91a6014 --- /dev/null +++ b/ISO27001effectiveness/man/GetCertsEvolution.Rd @@ -0,0 +1,34 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ReportGraphs.R +\name{GetCertsEvolution} +\alias{GetCertsEvolution} +\title{Return graph representing the general ISO27001 evolution} +\usage{ +GetCertsEvolution(Cert_PerCountry, point.vjust = 0, point.hjust = 0, + iso2013.y = 0, iso2013.label.hjust = 0, smooth.x = 0, smooth.y = 0, + smooth.label.hjust = 0) +} +\arguments{ +\item{Cert_PerCountry}{data.frame with procesed source data} + +\item{point.vjust}{Vector of vertical just to each point label} + +\item{point.hjust}{Vector of Horizontal just to each point label} + +\item{iso2013.y}{Vertical position to ISO27001:2013 label} + +\item{iso2013.label.hjust}{Horizontal just to ISO27001:2013 label} + +\item{smooth.x}{Horizontal position to smooth slope label} + +\item{smooth.y}{Vertical position to smooth slope label} + +\item{smooth.label.hjust}{Horizontal just to smooth slope label} +} +\value{ +list(graph, slope) +} +\description{ +Return graph representing the general ISO27001 evolution +} + diff --git a/ISO27001effectiveness/man/GetContinentAttackCol.Rd b/ISO27001effectiveness/man/GetContinentAttackCol.Rd new file mode 100644 index 0000000..9d98e12 --- /dev/null +++ b/ISO27001effectiveness/man/GetContinentAttackCol.Rd @@ -0,0 +1,22 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ReportGraphs.R +\name{GetContinentAttackCol} +\alias{GetContinentAttackCol} +\title{Return graph representing % of attacks type by continent} +\usage{ +GetContinentAttackCol(Attacks, Country, Country2) +} +\arguments{ +\item{Attacks}{data.frame with procesed source data} + +\item{Country}{Country to represent on the left side} + +\item{Country2}{Country to represent on the right side} +} +\value{ +Graph +} +\description{ +Return graph representing % of attacks type by continent +} + diff --git a/ISO27001effectiveness/man/GetContinentAttackEvolution.Rd b/ISO27001effectiveness/man/GetContinentAttackEvolution.Rd new file mode 100644 index 0000000..3b6871b --- /dev/null +++ b/ISO27001effectiveness/man/GetContinentAttackEvolution.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ReportGraphs.R +\name{GetContinentAttackEvolution} +\alias{GetContinentAttackEvolution} +\title{Return graph representing the evolution of attack types in a country} +\usage{ +GetContinentAttackEvolution(Attacks, Country) +} +\arguments{ +\item{Attacks}{data.frame with procesed source data} + +\item{Country}{Country to represent} +} +\value{ +list(Graph, data to represent attacktypes of the country 1b1) +} +\description{ +Return graph representing the evolution of attack types in a country +} + diff --git a/ISO27001effectiveness/man/GetContinentAttacksEvolution.Rd b/ISO27001effectiveness/man/GetContinentAttacksEvolution.Rd new file mode 100644 index 0000000..6fdb27e --- /dev/null +++ b/ISO27001effectiveness/man/GetContinentAttacksEvolution.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ReportGraphs.R +\name{GetContinentAttacksEvolution} +\alias{GetContinentAttacksEvolution} +\title{Return graph to show the evolution of a attack types list} +\usage{ +GetContinentAttacksEvolution(Attacks, ContinentList) +} +\arguments{ +\item{Attacks}{data.frame with procesed source data} + +\item{ContinentList}{List with continents to show} +} +\value{ +list(graph, data.frame with ContinentList attacks data by year) +} +\description{ +Return graph to show the evolution of a attack types list +} + diff --git a/ISO27001effectiveness/man/GetContinentAttacksSigleEvolution.Rd b/ISO27001effectiveness/man/GetContinentAttacksSigleEvolution.Rd new file mode 100644 index 0000000..fb417ce --- /dev/null +++ b/ISO27001effectiveness/man/GetContinentAttacksSigleEvolution.Rd @@ -0,0 +1,27 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ReportGraphs.R +\name{GetContinentAttacksSigleEvolution} +\alias{GetContinentAttacksSigleEvolution} +\title{Return graph to show the evolution of attacks in a single continent and his smooth} +\usage{ +GetContinentAttacksSigleEvolution(Attacks, Continent, smooth.x = 0, + smooth.y = 0, smooth.label.hjust = 0) +} +\arguments{ +\item{Attacks}{data.frame with procesed source data} + +\item{Continent}{Continent to represent} + +\item{smooth.x}{Horizontal position to smooth slope label} + +\item{smooth.y}{Vertical position to smooth slope label} + +\item{smooth.label.hjust}{Horizontal just to smooth slope label} +} +\value{ +list(graph, slope) +} +\description{ +Return graph to show the evolution of attacks in a single continent and his smooth +} + diff --git a/ISO27001effectiveness/man/GetContinentCertsEvolution.Rd b/ISO27001effectiveness/man/GetContinentCertsEvolution.Rd new file mode 100644 index 0000000..c32293c --- /dev/null +++ b/ISO27001effectiveness/man/GetContinentCertsEvolution.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ReportGraphs.R +\name{GetContinentCertsEvolution} +\alias{GetContinentCertsEvolution} +\title{Return graph to show the evolution of certifications in a continent list} +\usage{ +GetContinentCertsEvolution(Cert_PerCountry, ContinentList) +} +\arguments{ +\item{Cert_PerCountry}{data.frame with procesed source data} + +\item{ContinentList}{List with continents to show} +} +\value{ +list(graph, data.frame with ContinentList certifications data by year) +} +\description{ +Return graph to show the evolution of certifications in a continent list +} + diff --git a/ISO27001effectiveness/man/GetContinentCertsSingleEvolution.Rd b/ISO27001effectiveness/man/GetContinentCertsSingleEvolution.Rd new file mode 100644 index 0000000..b2ecb5c --- /dev/null +++ b/ISO27001effectiveness/man/GetContinentCertsSingleEvolution.Rd @@ -0,0 +1,27 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ReportGraphs.R +\name{GetContinentCertsSingleEvolution} +\alias{GetContinentCertsSingleEvolution} +\title{Return graph to show the evolution of certifications in a single continent and his smooth} +\usage{ +GetContinentCertsSingleEvolution(Certs_byContinent, Continent, smooth.x = 0, + smooth.y = 0, smooth.label.hjust = 0) +} +\arguments{ +\item{Certs_byContinent}{data.frame with procesed source data} + +\item{Continent}{Continent to represent} + +\item{smooth.x}{Horizontal position to smooth slope label} + +\item{smooth.y}{Vertical position to smooth slope label} + +\item{smooth.label.hjust}{Horizontal just to smooth slope label} +} +\value{ +list(graph, slope) +} +\description{ +Return graph to show the evolution of certifications in a single continent and his smooth +} + diff --git a/ISO27001effectiveness/man/GetContinentPie.Rd b/ISO27001effectiveness/man/GetContinentPie.Rd new file mode 100644 index 0000000..8ff0ead --- /dev/null +++ b/ISO27001effectiveness/man/GetContinentPie.Rd @@ -0,0 +1,29 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ReportGraphs.R +\name{GetContinentPie} +\alias{GetContinentPie} +\title{Return pie graph to show % of attacks and certifications for each continent} +\usage{ +GetContinentPie(Attacks, Attacks.label.vjust = 0, Attacks.label.hjust = 0, + Cert_PerCountry, Certs.label.vjust = 0, Certs.label.hjust = 0) +} +\arguments{ +\item{Attacks}{data.frame with procesed source data of attacks} + +\item{Attacks.label.vjust}{Vector of vertical just to each portion label} + +\item{Attacks.label.hjust}{Vector of horizontal just to each portion label} + +\item{Cert_PerCountry}{data.frame with procesed source data of certifications} + +\item{Certs.label.vjust}{Vector of vertical just to each portion label} + +\item{Certs.label.hjust}{Vector of horizontal just to each portion label} +} +\value{ +list(AttacksGraph, CertsGraph, ContinentListToStudy) +} +\description{ +Return pie graph to show % of attacks and certifications for each continent +} + diff --git a/ISO27001effectiveness/man/GetCountriesAttacksSingleEvolution.Rd b/ISO27001effectiveness/man/GetCountriesAttacksSingleEvolution.Rd new file mode 100644 index 0000000..26422db --- /dev/null +++ b/ISO27001effectiveness/man/GetCountriesAttacksSingleEvolution.Rd @@ -0,0 +1,27 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ReportGraphs.R +\name{GetCountriesAttacksSingleEvolution} +\alias{GetCountriesAttacksSingleEvolution} +\title{Return graph to show the evolution of attacks in a single continent and his smooth} +\usage{ +GetCountriesAttacksSingleEvolution(Attacks, Country, smooth.x = 0, + smooth.y = 0, smooth.label.hjust = 0) +} +\arguments{ +\item{Attacks}{data.frame with procesed source data} + +\item{Country}{Country to represent} + +\item{smooth.x}{Horizontal position to smooth slope label} + +\item{smooth.y}{Vertical position to smooth slope label} + +\item{smooth.label.hjust}{Horizontal just to smooth slope label} +} +\value{ +list(graph, slope) +} +\description{ +Return graph to show the evolution of attacks in a single continent and his smooth +} + diff --git a/ISO27001effectiveness/man/GetCountriesCertsSingleEvolution.Rd b/ISO27001effectiveness/man/GetCountriesCertsSingleEvolution.Rd new file mode 100644 index 0000000..5ed3b5b --- /dev/null +++ b/ISO27001effectiveness/man/GetCountriesCertsSingleEvolution.Rd @@ -0,0 +1,27 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ReportGraphs.R +\name{GetCountriesCertsSingleEvolution} +\alias{GetCountriesCertsSingleEvolution} +\title{Return graph to show the evolution of certifications in a single continent and his smooth} +\usage{ +GetCountriesCertsSingleEvolution(Cert_PerCountry, Country, smooth.x = 0, + smooth.y = 0, smooth.label.hjust = 0) +} +\arguments{ +\item{Country}{Country to represent} + +\item{smooth.x}{Horizontal position to smooth slope label} + +\item{smooth.y}{Vertical position to smooth slope label} + +\item{smooth.label.hjust}{Horizontal just to smooth slope label} + +\item{Attacks}{data.frame with procesed source data} +} +\value{ +list(graph, slope) +} +\description{ +Return graph to show the evolution of certifications in a single continent and his smooth +} + diff --git a/ISO27001effectiveness/man/GetCountriesCol.Rd b/ISO27001effectiveness/man/GetCountriesCol.Rd new file mode 100644 index 0000000..6e29ef0 --- /dev/null +++ b/ISO27001effectiveness/man/GetCountriesCol.Rd @@ -0,0 +1,29 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ReportGraphs.R +\name{GetCountriesCol} +\alias{GetCountriesCol} +\title{Return graph to show the attacks by country} +\usage{ +GetCountriesCol(Attacks, Attacks.label.vjust = 0, Attacks.label.hjust = 0, + Cert_PerCountry, Certs.label.vjust = 0, Certs.label.hjust = 0) +} +\arguments{ +\item{Attacks}{data.frame with procesed source data of attacks} + +\item{Attacks.label.vjust}{Vector of vertical just to each portion label} + +\item{Attacks.label.hjust}{Vector of horizontal just to each portion label} + +\item{Cert_PerCountry}{data.frame with procesed source certifications} + +\item{Certs.label.vjust}{Vector of vertical just to each portion label} + +\item{Certs.label.hjust}{Vector of horizontal just to each portion label} +} +\value{ +list(AttacksGraph, CertsGraph, CountryListToStudy) +} +\description{ +Return graph to show the attacks by country +} +