diff --git a/Appendices.aux b/Appendices.aux index b90c1e9..46fdf0d 100644 --- a/Appendices.aux +++ b/Appendices.aux @@ -1,18 +1,18 @@ \relax -\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }APPENDIX A:\ \ {\bf \uppercase {THE FIRST APPENDIX}} }{25}{}\protected@file@percent } -\newlabel{App:A}{{A}{25}} -\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }APPENDIX B:\ \ {\bf \uppercase {THE SECOND APPENDIX}} }{26}{}\protected@file@percent } -\newlabel{App:B}{{B}{26}} -\@writefile{toc}{\contentsline {section}{\numberline {B.1}\bf A Heading in an Appendix}{26}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {B.1.1}\it A Subheading in an Appendix}{26}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{A Sub-subsection in an Appendix}{26}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }APPENDIX A:\ \ {\bf \uppercase {THE FIRST APPENDIX}} }{28}{}\protected@file@percent } +\newlabel{App:A}{{A}{28}} +\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }APPENDIX B:\ \ {\bf \uppercase {THE SECOND APPENDIX}} }{29}{}\protected@file@percent } +\newlabel{App:B}{{B}{29}} +\@writefile{toc}{\contentsline {section}{\numberline {B.1}\bf A Heading in an Appendix}{29}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {B.1.1}\it A Subheading in an Appendix}{29}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{A Sub-subsection in an Appendix}{29}{}\protected@file@percent } \@setckpt{Appendices}{ -\setcounter{page}{27} +\setcounter{page}{30} \setcounter{equation}{0} \setcounter{enumi}{4} \setcounter{enumii}{0} \setcounter{enumiii}{0} -\setcounter{enumiv}{14} +\setcounter{enumiv}{25} \setcounter{footnote}{0} \setcounter{mpfootnote}{0} \setcounter{part}{0} diff --git a/Bibliography.bib b/Bibliography.bib index f61d816..236198a 100644 --- a/Bibliography.bib +++ b/Bibliography.bib @@ -1213,3 +1213,15 @@ @phdthesis{noauthor_notitle_nodate, } + +@INPROCEEDINGS{9150145, + author={Li, Ming and Hawrylak, Peter J. and Hale, John}, + booktitle={2020 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW)}, + title={Implementing an Attack Graph Generator in CUDA}, + year={2020}, + volume={}, + number={}, + pages={730-738}, + doi={10.1109/IPDPSW50202.2020.00128}} + +@ARTICLE{7087377, author={Kaynar, Kerem and Sivrikaya, Fikret}, journal={IEEE Transactions on Dependable and Secure Computing}, title={Distributed Attack Graph Generation}, year={2016}, volume={13}, number={5}, pages={519-532}, doi={10.1109/TDSC.2015.2423682}} diff --git a/Chapter1.tex b/Chapter1.tex index 19199b5..f27d219 100644 --- a/Chapter1.tex +++ b/Chapter1.tex @@ -56,7 +56,7 @@ The objectives of this thesis are: \end{enumerate} \item{Implement solutions to reduce state space explosion while remaining exhaustive and capturing all necessary information} \item{Extend RAGE to function for heterogeneous distributed computing environments} - \item{Utilize RAGE for compliance graph generation} + \item{Extend and utilize RAGE for compliance graph generation} \end{itemize} diff --git a/Chapter2.aux b/Chapter2.aux index 83e0d83..4ddd58b 100644 --- a/Chapter2.aux +++ b/Chapter2.aux @@ -1,12 +1,36 @@ \relax +\citation{berry_graph_2007} +\citation{berry_graph_2007} +\citation{zhang_boosting_2017} +\citation{ainsworth_graph_2016} +\citation{berry_graph_2007} +\citation{ainsworth_graph_2016} +\citation{ainsworth_graph_2016} +\citation{yao_efficient_2018} +\citation{zhang_boosting_2017} +\citation{dai_fpgp_2016} \@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 2: }{\bf \uppercase {RELATED WORKS}}}{5}{}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {2.1}\bf Introduction to Graph Generation}{5}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {2.2}\bf Improvements to Attack Graph Generation}{5}{}\protected@file@percent } -\newlabel{sec:related_works}{{2.2}{5}} -\@writefile{toc}{\contentsline {section}{\numberline {2.3}\bf Attack Dependency Graphs}{5}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {2.4}\bf Compliance Graphs}{5}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {2.2}\bf Graph Generation Improvements}{5}{}\protected@file@percent } +\newlabel{sec:gen_improv}{{2.2}{5}} +\citation{arifuzzaman_fast_2015} +\citation{yu_construction_2018} +\citation{liakos_memory-optimized_2016} +\citation{liakos_memory-optimized_2016} +\citation{liakos_memory-optimized_2016} +\citation{balaji_graph_2016} +\citation{noauthor_overview_nodate} +\citation{noauthor_boost_nodate} +\citation{ou_scalable_2006} +\citation{cook_scalable_2016} +\citation{li_concurrency_2019} +\@writefile{toc}{\contentsline {section}{\numberline {2.3}\bf Improvements Specific to Attack Graph Generation}{6}{}\protected@file@percent } +\newlabel{sec:related_works}{{2.3}{6}} +\citation{li_concurrency_2019} +\citation{9150145} +\citation{7087377} \@setckpt{Chapter2}{ -\setcounter{page}{6} +\setcounter{page}{8} \setcounter{equation}{0} \setcounter{enumi}{4} \setcounter{enumii}{0} @@ -16,7 +40,7 @@ \setcounter{mpfootnote}{0} \setcounter{part}{0} \setcounter{chapter}{2} -\setcounter{section}{4} +\setcounter{section}{3} \setcounter{subsection}{0} \setcounter{subsubsection}{0} \setcounter{paragraph}{0} diff --git a/Chapter2.tex b/Chapter2.tex index 8d94a0e..e3ea149 100644 --- a/Chapter2.tex +++ b/Chapter2.tex @@ -1,12 +1,44 @@ \TUchapter{RELATED WORKS} Many authors and researchers have developed or extended attack graphs since their beginning -as attack trees. This Chapter reviews a few of their efforts as they relate to this work. +as attack trees. This Chapter reviews a few of their efforts as they relate to this work and to graph generation. \TUsection{Introduction to Graph Generation} +Graph generation as a broad topic has many challenges that prevent full actualization of computation seen from a theoretical standpoint. +In actuality, graph generation often achieves only a very low percentage of its expected performance \cite{berry_graph_2007}. A few reasons +for this occurence lies in the underlying mechanisms of graph generation. The generation is predominantly memory based (as opposed to based on processor speed), +where performance is tied to memory access time, the complexity of data dependency, and coarseness of parallelism \cite{berry_graph_2007}, \cite{zhang_boosting_2017}, +\cite{ainsworth_graph_2016}. The graph generation process is typically quite poor, resulting in lower performance results. Graphs consume large amounts of memory through their +nodes and edges, graph data structures suffer from poor cache locality, and memory latency from the processor-memory gap all slow the generation process dramatically +\cite{berry_graph_2007}, \cite{ainsworth_graph_2016}. Section \ref{sec:gen_improv} discusses a few works that can be used to improve the graph generation process, and Section +\ref{sec:related_works} discusses a few works specific to attack graph generation improvements. -\TUsection{Improvements to Attack Graph Generation} \label{sec:related_works} +\TUsection{Graph Generation Improvements} \label{sec:gen_improv} +For architectural and hardware techinques for generation improvement, the authors of \cite{ainsworth_graph_2016} discuss the high cache miss rate, and how general prefetching +leads does not increase the prediction rate due to non-sequenial graph structures and data-dependent access patterns. However, the authors continue to discuss that the generation +algorithm is known in advance, so explicit tuning of the hardware prefetcher to follow the traversal order pattern can lead to better performance. The authors were able to achieve +over 2x performance improvement of a breadth-first search approach with this method. Another hardware approach is to make use of accelerators. The authors of \cite{yao_efficient_2018} +present an approach for minimizing the slowdown caused by the underlying graph atomic functions. By using the atomic function patterns, the authors utilized pipeline stages where vertex +updates can be processed in parallel dynamically. Other works, such as those by the authors of \cite{zhang_boosting_2017} and \cite{dai_fpgp_2016}, leverage field-programmable gate arrays +(FPGAs) for graph generation in the HPC space through various means. This includes reducing memory strain, storing repeatedly accessed lists, storing results, or other storage through the +on-chip block RAM, or even levering Hybrid Memory Cubes for optimizing parallel access. -\TUsection{Attack Dependency Graphs} +From a data structure standpoint, the authors of \cite{arifuzzaman_fast_2015} describe the infeasibility of adjacency matrices in large-scale graphs, and this work and other works such as those +by the authors of \cite{yu_construction_2018} and \cite{liakos_memory-optimized_2016} discuss the appeal of distibuting a graph representation among systems. The author of +\cite{liakos_memory-optimized_2016} disuss the usage of distributed adjacency lists for assinging vertices to workers. The authors of \cite{liakos_memory-optimized_2016} and +\cite{balaji_graph_2016} present other techniques for minimizing communication costs by achieving high compression ratios while maintaining a low compression cost. The Boost Graph Library +and the Parallel Boost Graph Library both provide appealing features for working with graps, with the latter library notably having interoperability with MPI, Graphviz, and METIS +\cite{noauthor_overview_nodate}, \cite {noauthor_boost_nodate}. -\TUsection{Compliance Graphs} +\TUsection{Improvements Specific to Attack Graph Generation} \label{sec:related_works} +As a means of improving scalability of attack graphs, the authors of \cite{ou_scalable_2006} present a new representation scheme. Traditional attack graphs encode the entire network at each state, +but this representation uses logical statements to represent a portion of the network at each node. This is called a logical attack graph. This approach led to the reduction of the generation process +to quadratic time and reduced the number of nodes in the resulting graph to $\mathcal{O}({n}^2)$. However, this approach does require more analysis for identifying attack vectors. Another approach +presented by the authors of \cite{cook_scalable_2016} represent a description of systems and their qualities and topologies as a state, with a queue of unexplored states. This work was continued by the +authors of \cite{li_concurrency_2019} by implementing a hash table among other features. Each of these works demonstrate an improvement in scalability through refining the desirable information. + +Another approach for generation improvement is through parallelization. The authors of \cite{li_concurrency_2019} leverage OpenMP to parallelize the exploration of a FIFO queue. This parallelization also +includes the utilization of OpenMP's dynamic scheduling. In this approach, each thread receives a state to explore, where a critical section is employed to handle the atomic functions of merging new state +information while avoiding collisions, race conditions, or stale data usage. The authors measured a 10x speedup over the serial algorithm. The authors of \cite{9150145} present a parallel generation +approach using CUDA, where speedup is obtained through a large number of CUDA cores. For a distributed approach, the authors of \cite{7087377} present a technique for utilizing reachability hyper-graph partitioning +and a virtual shared memory abstraction to prevent duplicate work by multiple nodes. This work had promising results in terms of limiting the state-space explosion and speedup as the number of network hosts increases. diff --git a/Chapter3.aux b/Chapter3.aux index 388bc91..a84b38c 100644 --- a/Chapter3.aux +++ b/Chapter3.aux @@ -1,12 +1,12 @@ \relax -\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 3: }{\bf \uppercase {UTILITY EXTENSIONS TO THE RAGE ATTACK GRAPH GENERATOR}}}{6}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {3.1}\bf Path Walking}{6}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {3.2}\bf Compound Operators}{6}{}\protected@file@percent } -\newlabel{sec:compops}{{3.2}{6}} +\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 3: }{\bf \uppercase {UTILITY EXTENSIONS TO THE RAGE ATTACK GRAPH GENERATOR}}}{8}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {3.1}\bf Path Walking}{8}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {3.2}\bf Compound Operators}{8}{}\protected@file@percent } +\newlabel{sec:compops}{{3.2}{8}} \citation{cook_rage_2018} -\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces Path Walking to State 14}}{7}{}\protected@file@percent } -\newlabel{fig:PW}{{3.1}{7}} -\@writefile{toc}{\contentsline {section}{\numberline {3.3}\bf Color Coding}{8}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces Path Walking to State 14}}{9}{}\protected@file@percent } +\newlabel{fig:PW}{{3.1}{9}} +\@writefile{toc}{\contentsline {section}{\numberline {3.3}\bf Color Coding}{10}{}\protected@file@percent } \citation{cook_rage_2018} \citation{li_concurrency_2019} \citation{li_combining_2019} @@ -14,17 +14,17 @@ \citation{ainsworth_graph_2016} \citation{berry_graph_2007} \citation{cook_rage_2018} -\@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces Color Coding a Small Network Based on Violations}}{9}{}\protected@file@percent } -\newlabel{fig:CC}{{3.2}{9}} -\@writefile{toc}{\contentsline {section}{\numberline {3.4}\bf Intermediate Database Storage}{9}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces Color Coding a Small Network Based on Violations}}{11}{}\protected@file@percent } +\newlabel{fig:CC}{{3.2}{11}} +\@writefile{toc}{\contentsline {section}{\numberline {3.4}\bf Intermediate Database Storage}{11}{}\protected@file@percent } \citation{zhang_boosting_2017} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.4.1}\it Memory Constraint Difficulties}{10}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {3.4.2}\it Maximizing Performance with Intermediate Database Storage}{11}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {3.4.3}\it Portability}{12}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.4.1}\it Memory Constraint Difficulties}{12}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.4.2}\it Maximizing Performance with Intermediate Database Storage}{13}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.4.3}\it Portability}{14}{}\protected@file@percent } \citation{CVE-2019-10747} -\@writefile{toc}{\contentsline {section}{\numberline {3.5}\bf Relational Operators}{13}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {3.5}\bf Relational Operators}{15}{}\protected@file@percent } \@setckpt{Chapter3}{ -\setcounter{page}{14} +\setcounter{page}{16} \setcounter{equation}{0} \setcounter{enumi}{4} \setcounter{enumii}{0} diff --git a/Chapter4.aux b/Chapter4.aux index 10ad4e8..1e5341f 100644 --- a/Chapter4.aux +++ b/Chapter4.aux @@ -1,13 +1,13 @@ \relax -\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 4: }{\bf \uppercase {SYNCHRONOUS FIRING}}}{14}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {4.1}\bf Introduction}{14}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.1}\it Synchronous Firing in Literature}{14}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {4.2}\bf Necessary Components}{14}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {4.3}\bf Example Networks and Results}{14}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.1}\it Example Networks}{14}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.2}\it Results}{14}{}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 4: }{\bf \uppercase {SYNCHRONOUS FIRING}}}{16}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4.1}\bf Introduction}{16}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.1}\it Synchronous Firing in Literature}{16}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4.2}\bf Necessary Components}{16}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4.3}\bf Example Networks and Results}{16}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.1}\it Example Networks}{16}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.2}\it Results}{16}{}\protected@file@percent } \@setckpt{Chapter4}{ -\setcounter{page}{15} +\setcounter{page}{17} \setcounter{equation}{0} \setcounter{enumi}{4} \setcounter{enumii}{0} diff --git a/Chapter5.aux b/Chapter5.aux index 0bfa56d..8a7b01f 100644 --- a/Chapter5.aux +++ b/Chapter5.aux @@ -1,36 +1,36 @@ \relax -\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 5: }{\bf \uppercase {Utilization OF MESSAGE PASSING INTERFACE}}}{15}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {5.1}\bf Introduction to MPI Utilization for Attack Graph Generation}{15}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {5.2}\bf Necessary Components}{15}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.1}\it Serialization}{15}{}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 5: }{\bf \uppercase {Utilization OF MESSAGE PASSING INTERFACE}}}{17}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.1}\bf Introduction to MPI Utilization for Attack Graph Generation}{17}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.2}\bf Necessary Components}{17}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.1}\it Serialization}{17}{}\protected@file@percent } \citation{cook_rage_2018} \citation{li_concurrency_2019} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.2}\it Data Consistency}{16}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {5.3}\bf Tasking Approach}{16}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.1}\it Introduction to the Tasking Approach}{16}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.2}\it Algorithm Design}{16}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Communication Structure}{16}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Task Zero}{16}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Task One}{16}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Task Two}{16}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Task Three}{16}{}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces Generation Flowchart of RAGE}}{17}{}\protected@file@percent } -\newlabel{fig:RAGE_chart}{{5.1}{17}} -\@writefile{lof}{\contentsline {figure}{\numberline {5.2}{\ignorespaces Task Overview of the Attack Graph Generation Process}}{18}{}\protected@file@percent } -\newlabel{fig:tasks}{{5.2}{18}} -\@writefile{toc}{\contentsline {subsubsection}{Task Four}{19}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Task Five}{19}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.3}\it Performance Expectations}{19}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {5.4}\bf Subgraphing Approach}{19}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.1}\it Introduction to the Subgraphing Approach}{19}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.2}\it Algorithm Design}{19}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Communication Structure}{19}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Worker Nodes}{19}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Root Node}{19}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Database Node}{19}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.3}\it Performance Expectations}{19}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.2}\it Data Consistency}{18}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.3}\bf Tasking Approach}{18}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.1}\it Introduction to the Tasking Approach}{18}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.2}\it Algorithm Design}{18}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Communication Structure}{18}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Task Zero}{18}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Task One}{18}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Task Two}{18}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Task Three}{18}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces Generation Flowchart of RAGE}}{19}{}\protected@file@percent } +\newlabel{fig:RAGE_chart}{{5.1}{19}} +\@writefile{lof}{\contentsline {figure}{\numberline {5.2}{\ignorespaces Task Overview of the Attack Graph Generation Process}}{20}{}\protected@file@percent } +\newlabel{fig:tasks}{{5.2}{20}} +\@writefile{toc}{\contentsline {subsubsection}{Task Four}{21}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Task Five}{21}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.3}\it Performance Expectations}{21}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.4}\bf Subgraphing Approach}{21}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.1}\it Introduction to the Subgraphing Approach}{21}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.2}\it Algorithm Design}{21}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Communication Structure}{21}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Worker Nodes}{21}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Root Node}{21}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Database Node}{21}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.3}\it Performance Expectations}{21}{}\protected@file@percent } \@setckpt{Chapter5}{ -\setcounter{page}{20} +\setcounter{page}{22} \setcounter{equation}{0} \setcounter{enumi}{4} \setcounter{enumii}{0} diff --git a/Chapter6.aux b/Chapter6.aux index e5e1521..e489a4a 100644 --- a/Chapter6.aux +++ b/Chapter6.aux @@ -1,23 +1,23 @@ \relax -\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 6: }{\bf \uppercase {PERFORMANCE ANALYSIS}}}{20}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {6.1}\bf Small Networks}{20}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.1}\it Test Information}{20}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.2}\it Results}{20}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.3}\it Analysis}{20}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {6.2}\bf Large Networks}{20}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.1}\it Test Information}{20}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.2}\it Results}{20}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.3}\it Analysis}{20}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {6.3}\bf Large Exploit Lists}{20}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.1}\it Test Information}{20}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.2}\it Results}{20}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.3}\it Analysis}{20}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {6.4}\bf Distributed Hash Tables}{20}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.1}\it Test Information}{21}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.2}\it Results}{21}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.3}\it Analysis}{21}{}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 6: }{\bf \uppercase {PERFORMANCE ANALYSIS}}}{22}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.1}\bf Small Networks}{22}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.1}\it Test Information}{22}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.2}\it Results}{22}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.3}\it Analysis}{22}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.2}\bf Large Networks}{22}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.1}\it Test Information}{22}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.2}\it Results}{22}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.3}\it Analysis}{22}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.3}\bf Large Exploit Lists}{22}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.1}\it Test Information}{22}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.2}\it Results}{22}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.3}\it Analysis}{22}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.4}\bf Distributed Hash Tables}{22}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.1}\it Test Information}{23}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.2}\it Results}{23}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.3}\it Analysis}{23}{}\protected@file@percent } \@setckpt{Chapter6}{ -\setcounter{page}{22} +\setcounter{page}{24} \setcounter{equation}{0} \setcounter{enumi}{4} \setcounter{enumii}{0} diff --git a/Chapter7.aux b/Chapter7.aux index 0226d5d..8e70ca0 100644 --- a/Chapter7.aux +++ b/Chapter7.aux @@ -1,8 +1,8 @@ \relax -\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 7: }{\bf \uppercase {CONCLUSIONS AND FUTURE WORKS}}}{22}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {7.1}\bf Future Work}{22}{}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 7: }{\bf \uppercase {CONCLUSIONS AND FUTURE WORKS}}}{24}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {7.1}\bf Future Work}{24}{}\protected@file@percent } \@setckpt{Chapter7}{ -\setcounter{page}{23} +\setcounter{page}{25} \setcounter{equation}{0} \setcounter{enumi}{4} \setcounter{enumii}{0} diff --git a/Schrick-Noah_MS-Thesis.aux b/Schrick-Noah_MS-Thesis.aux index eeb9b02..b923e1a 100644 --- a/Schrick-Noah_MS-Thesis.aux +++ b/Schrick-Noah_MS-Thesis.aux @@ -21,25 +21,36 @@ \@input{Chapter6.aux} \@input{Chapter7.aux} \bibdata{Bibliography} -\bibcite{ainsworth_graph_2016}{1} -\bibcite{allman_complying_2006}{2} -\bibcite{baloyi_guidelines_2019}{3} -\bibcite{berry_graph_2007}{4} -\bibcite{cook_rage_2018}{5} -\bibcite{CVE-2019-10747}{6} -\bibcite{j_hale_compliance_nodate}{7} -\bibcite{li_combining_2019}{8} -\bibcite{li_concurrency_2019}{9} +\bibcite{noauthor_boost_nodate}{1} +\bibcite{noauthor_overview_nodate}{2} +\bibcite{ainsworth_graph_2016}{3} +\bibcite{allman_complying_2006}{4} +\bibcite{arifuzzaman_fast_2015}{5} +\bibcite{balaji_graph_2016}{6} +\bibcite{baloyi_guidelines_2019}{7} +\bibcite{berry_graph_2007}{8} +\bibcite{cook_rage_2018}{9} +\bibcite{cook_scalable_2016}{10} \@writefile{toc}{{\hfill \ }} -\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }NOMENCLATURE}{23}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }NOMENCLATURE}{25}{}\protected@file@percent } \@writefile{toc}{\addvspace {10pt}} -\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }BIBLIOGRAPHY}{23}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }BIBLIOGRAPHY}{25}{}\protected@file@percent } \@writefile{toc}{{\hfill \ }} -\bibcite{ou_scalable_2006}{10} -\bibcite{phillips_graph-based_1998}{11} -\bibcite{schneier_modeling_1999}{12} -\bibcite{sheyner_automated_2002}{13} -\bibcite{zhang_boosting_2017}{14} +\bibcite{CVE-2019-10747}{11} +\bibcite{dai_fpgp_2016}{12} +\bibcite{j_hale_compliance_nodate}{13} +\bibcite{7087377}{14} +\bibcite{li_combining_2019}{15} +\bibcite{li_concurrency_2019}{16} +\bibcite{9150145}{17} +\bibcite{liakos_memory-optimized_2016}{18} +\bibcite{ou_scalable_2006}{19} +\bibcite{phillips_graph-based_1998}{20} +\bibcite{schneier_modeling_1999}{21} +\bibcite{sheyner_automated_2002}{22} +\bibcite{yao_efficient_2018}{23} +\bibcite{yu_construction_2018}{24} +\bibcite{zhang_boosting_2017}{25} \bibstyle{plain} \@input{Appendices.aux} -\gdef \@abspage@last{36} +\gdef \@abspage@last{39} diff --git a/Schrick-Noah_MS-Thesis.bbl b/Schrick-Noah_MS-Thesis.bbl index d9c4366..4d0e28d 100644 --- a/Schrick-Noah_MS-Thesis.bbl +++ b/Schrick-Noah_MS-Thesis.bbl @@ -1,5 +1,11 @@ \begin{thebibliography}{10} +\bibitem{noauthor_boost_nodate} +The {Boost} {Graph} {Library} - 1.75.0. + +\bibitem{noauthor_overview_nodate} +An {Overview} of the {Parallel} {Boost} {Graph} {Library} - 1.75.0. + \bibitem{ainsworth_graph_2016} Sam Ainsworth and Timothy~M. Jones. \newblock Graph prefetching using data structure knowledge. @@ -11,6 +17,19 @@ Eric Allman. \newblock Complying with {Compliance}: {Blowing} it off is not an option. \newblock {\em ACM Queue}, 4(7), 2006. +\bibitem{arifuzzaman_fast_2015} +Shaikh Arifuzzaman and Maleq Khan. +\newblock Fast parallel conversion of edge list to adjacency list for + large-scale graphs. +\newblock In {\em {HPC} '15: {Proceedings} of the {Symposium} on {High} + {Performance} {Computing}}, pages 17--24, April 2015. + +\bibitem{balaji_graph_2016} +Janani Balaji and Rajshekhar Sunderraman. +\newblock Graph {Topology} {Abstraction} for {Distributed} {Path} {Queries}. +\newblock In {\em {HPGP} '16: {Proceedings} of the {ACM} {Workshop} on {High} + {Performance} {Graph} {Processing}}, pages 27--34, May 2016. + \bibitem{baloyi_guidelines_2019} Ntsako Baloyi and Paula Kotzé. \newblock Guidelines for {Data} {Privacy} {Compliance}: {A} {Focus} on @@ -29,6 +48,12 @@ Kyle Cook. \newblock {\em {RAGE}: {The} {Rage} {Attack} {Graph} {Engine}}. \newblock PhD thesis, 2018. +\bibitem{cook_scalable_2016} +Kyle Cook, Thomas Shaw, John Hale, and Peter Hawrylak. +\newblock Scalable attack graph generation. +\newblock {\em Proceedings of the 11th Annual Cyber and Information Security + Research Conference, CISRC 2016}, 2016. + \bibitem{CVE-2019-10747} {set-value is vulnerable to Prototype Pollution in versions lower than 3.0.1. The function mixin-deep could be tricked into adding or modifying properties @@ -36,10 +61,23 @@ Kyle Cook. payloads.} \newblock National Vulnerability Database, August 2019. +\bibitem{dai_fpgp_2016} +Guohao Dai, Yuze Chi, Yu~Wang, and Huazhong Yang. +\newblock {FPGP}: {Graph} processing framework on {FPGA}: {A} case study of + breadth-first search. +\newblock {\em FPGA 2016 - Proceedings of the 2016 ACM/SIGDA International + Symposium on Field-Programmable Gate Arrays}, pages 105--110, 2016. + \bibitem{j_hale_compliance_nodate} {J. Hale}, P.~Hawrylak, and M.~Papa. \newblock Compliance {Method} for a {Cyber}-{Physical} {System}. +\bibitem{7087377} +Kerem Kaynar and Fikret Sivrikaya. +\newblock Distributed attack graph generation. +\newblock {\em IEEE Transactions on Dependable and Secure Computing}, + 13(5):519--532, 2016. + \bibitem{li_combining_2019} Ming Li, Peter Hawrylak, and John Hale. \newblock Combining {OpenCL} and {MPI} to support heterogeneous computing on a @@ -52,6 +90,20 @@ Ming Li, Peter Hawrylak, and John Hale. \newblock {\em Proceedings - 2019 2nd International Conference on Data Intelligence and Security, ICDIS 2019}, pages 174--179, 2019. +\bibitem{9150145} +Ming Li, Peter~J. Hawrylak, and John Hale. +\newblock Implementing an attack graph generator in cuda. +\newblock In {\em 2020 IEEE International Parallel and Distributed Processing + Symposium Workshops (IPDPSW)}, pages 730--738, 2020. + +\bibitem{liakos_memory-optimized_2016} +Panagiotis Liakos, Katia Papakonstantinopoulou, and Alex Delis. +\newblock Memory-{Optimized} {Distributed} {Graph} {Processing} through {Novel} + {Compression} {Techniques}. +\newblock In {\em {CIKM} '16: {Proceedings} of the 25th {ACM} {International} + {Conference} on {Information} and {Knowledge} {Management}}, pages + 2317--2322, October 2016. + \bibitem{ou_scalable_2006} Xinming Ou, Wayne~F Boyer, and Miles~A Mcqueen. \newblock A {Scalable} {Approach} to {Attack} {Graph} {Generation}. @@ -74,6 +126,22 @@ O.~Sheyner, J.~Haines, S.~Jha, R.. Lippmann, and J.~Wing. \newblock {\em Proceeding of 2002 IEEE Symposium on Security and Privacy}, pages 254--265, 2002. +\bibitem{yao_efficient_2018} +Pengcheng Yao, Long Zheng, Xiaofei Liao, Hai Jin, and Bingsheng He. +\newblock An efficient graph accelerator with parallel data conflict + management. +\newblock {\em Parallel Architectures and Compilation Techniques - Conference + Proceedings, PACT}, 2018. + +\bibitem{yu_construction_2018} +Xinjie Yu, Wentao Chen, Jiajia Miao, Jian Chen, Handong Mao, Qiong Luo, and Lin + Gu. +\newblock The {Construction} of {Large} {Graph} {Data} {Structures} in a + {Scalable} {Distributed} {Message} {System}. +\newblock In {\em {HPCCT} 2018: {Proceedings} of the 2018 2nd {High} + {Performance} {Computing} and {Cluster} {Technologies} {Conference}}, pages + 6--10, June 2018. + \bibitem{zhang_boosting_2017} Jialiang Zhang, Soroosh Khoram, and Jing Li. \newblock Boosting the performance of {FPGA}-based graph processor using hybrid diff --git a/Schrick-Noah_MS-Thesis.blg b/Schrick-Noah_MS-Thesis.blg index 33ddd18..38509a0 100644 --- a/Schrick-Noah_MS-Thesis.blg +++ b/Schrick-Noah_MS-Thesis.blg @@ -13,47 +13,49 @@ A level-1 auxiliary file: Appendices.aux Database file #1: Bibliography.bib Warning--entry type for "j_hale_compliance_nodate" isn't style-file defined --line 272 of file Bibliography.bib +Warning--to sort, need author or key in noauthor_overview_nodate +Warning--to sort, need author or key in noauthor_boost_nodate Warning--empty school in cook_rage_2018 Warning--empty journal in ou_scalable_2006 -You've used 14 entries, +You've used 25 entries, 2118 wiz_defined-function locations, - 577 strings with 6718 characters, -and the built_in function-call counts, 4298 in all, are: -= -- 430 -> -- 192 -< -- 4 -+ -- 78 -- -- 62 -* -- 250 -:= -- 708 -add.period$ -- 41 -call.type$ -- 14 -change.case$ -- 73 + 628 strings with 9040 characters, +and the built_in function-call counts, 8411 in all, are: += -- 825 +> -- 381 +< -- 10 ++ -- 157 +- -- 126 +* -- 516 +:= -- 1321 +add.period$ -- 70 +call.type$ -- 25 +change.case$ -- 138 chr.to.int$ -- 0 -cite$ -- 16 -duplicate$ -- 175 -empty$ -- 329 -format.name$ -- 62 -if$ -- 914 +cite$ -- 29 +duplicate$ -- 349 +empty$ -- 665 +format.name$ -- 126 +if$ -- 1821 int.to.chr$ -- 0 -int.to.str$ -- 14 -missing$ -- 10 -newline$ -- 71 -num.names$ -- 26 -pop$ -- 85 +int.to.str$ -- 25 +missing$ -- 19 +newline$ -- 122 +num.names$ -- 44 +pop$ -- 173 preamble$ -- 1 -purify$ -- 60 +purify$ -- 114 quote$ -- 0 -skip$ -- 152 +skip$ -- 306 stack$ -- 0 -substring$ -- 219 -swap$ -- 49 -text.length$ -- 4 +substring$ -- 466 +swap$ -- 113 +text.length$ -- 10 text.prefix$ -- 0 top$ -- 0 -type$ -- 56 -warning$ -- 2 -while$ -- 40 -width$ -- 16 -write$ -- 145 -(There were 3 warnings) +type$ -- 100 +warning$ -- 4 +while$ -- 76 +width$ -- 27 +write$ -- 252 +(There were 5 warnings) diff --git a/Schrick-Noah_MS-Thesis.lof b/Schrick-Noah_MS-Thesis.lof index 16d9b22..bb359aa 100644 --- a/Schrick-Noah_MS-Thesis.lof +++ b/Schrick-Noah_MS-Thesis.lof @@ -1,5 +1,5 @@ {\vspace {\baselineskip }} -\contentsline {figure}{\numberline {3.1}{\ignorespaces Path Walking to State 14}}{7}{}% -\contentsline {figure}{\numberline {3.2}{\ignorespaces Color Coding a Small Network Based on Violations}}{9}{}% -\contentsline {figure}{\numberline {5.1}{\ignorespaces Generation Flowchart of RAGE}}{17}{}% -\contentsline {figure}{\numberline {5.2}{\ignorespaces Task Overview of the Attack Graph Generation Process}}{18}{}% +\contentsline {figure}{\numberline {3.1}{\ignorespaces Path Walking to State 14}}{9}{}% +\contentsline {figure}{\numberline {3.2}{\ignorespaces Color Coding a Small Network Based on Violations}}{11}{}% +\contentsline {figure}{\numberline {5.1}{\ignorespaces Generation Flowchart of RAGE}}{19}{}% +\contentsline {figure}{\numberline {5.2}{\ignorespaces Task Overview of the Attack Graph Generation Process}}{20}{}% diff --git a/Schrick-Noah_MS-Thesis.log b/Schrick-Noah_MS-Thesis.log index af127a8..c88a967 100644 --- a/Schrick-Noah_MS-Thesis.log +++ b/Schrick-Noah_MS-Thesis.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.141592653-2.6-1.40.23 (TeX Live 2021/Arch Linux) (preloaded format=pdflatex 2022.2.14) 2 MAR 2022 16:20 +This is pdfTeX, Version 3.141592653-2.6-1.40.23 (TeX Live 2021/Arch Linux) (preloaded format=pdflatex 2022.2.14) 4 MAR 2022 16:42 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -170,7 +170,7 @@ LaTeX Font Info: External font `cmex10' loaded for size LaTeX Font Info: External font `cmex10' loaded for size (Font) <6> on input line 2. -Overfull \hbox (1.75291pt too wide) in paragraph at lines 25--25 +Overfull \hbox (1.75291pt too wide) in paragraph at lines 24--24 [] []\OT1/cmr/bx/n/12 UTILITY EX-TEN-SIONS TO THE RAGE AT-TACK GRAPH [] @@ -207,39 +207,39 @@ CHAPTER 1. (./Chapter2.tex CHAPTER 2. -) [5 +[5 -] +] [6]) [7] \openout2 = `Chapter3.aux'. (./Chapter3.tex CHAPTER 3. -<./Chapter3_img/PW.png, id=54, 958.58125pt x 525.965pt> +<./Chapter3_img/PW.png, id=63, 958.58125pt x 525.965pt> File: ./Chapter3_img/PW.png Graphic file (type png) Package pdftex.def Info: ./Chapter3_img/PW.png used on input line 17. (pdftex.def) Requested size: 469.75499pt x 257.74918pt. -[6 +[8 -] [7 <./Chapter3_img/PW.png>] -<./Chapter3_img/CC.png, id=63, 658.46pt x 527.9725pt> +] [9 <./Chapter3_img/PW.png>] +<./Chapter3_img/CC.png, id=71, 658.46pt x 527.9725pt> File: ./Chapter3_img/CC.png Graphic file (type png) Package pdftex.def Info: ./Chapter3_img/CC.png used on input line 55. (pdftex.def) Requested size: 469.75499pt x 376.66768pt. - [8] [9 <./Chapter3_img/CC.png>] [10] [11] -[12]) [13] + [10] [11 <./Chapter3_img/CC.png>] [12] [13] +[14]) [15] \openout2 = `Chapter4.aux'. (./Chapter4.tex CHAPTER 4. -) [14 +) [16 @@ -249,57 +249,57 @@ CHAPTER 4. (./Chapter5.tex CHAPTER 5. -[15 +[17 ] -<./Chapter5_img/RAGE_Chart.png, id=90, 495.8525pt x 557.08125pt> +<./Chapter5_img/RAGE_Chart.png, id=97, 495.8525pt x 557.08125pt> File: ./Chapter5_img/RAGE_Chart.png Graphic file (type png) Package pdftex.def Info: ./Chapter5_img/RAGE_Chart.png used on input line 43. (pdftex.def) Requested size: 469.75499pt x 527.76213pt. -<./Chapter5_img/horiz_task.drawio.png, id=91, 1125.20375pt x 738.76pt> +<./Chapter5_img/horiz_task.drawio.png, id=98, 1125.20375pt x 738.76pt> File: ./Chapter5_img/horiz_task.drawio.png Graphic file (type png) Package pdftex.def Info: ./Chapter5_img/horiz_task.drawio.png used on input li ne 49. (pdftex.def) Requested size: 469.75499pt x 308.4171pt. - [16] [17 <./Chapter5_img/RAGE_Chart.png>] [18 <./Chapter5_img/horiz_task.drawi -o.png>]) [19] + [18] [19 <./Chapter5_img/RAGE_Chart.png>] [20 <./Chapter5_img/horiz_task.drawi +o.png>]) [21] \openout2 = `Chapter6.aux'. (./Chapter6.tex CHAPTER 6. -[20 +[22 -]) [21] +]) [23] \openout2 = `Chapter7.aux'. (./Chapter7.tex CHAPTER 7. -) [22 +) [24 -] (./Schrick-Noah_MS-Thesis.bbl [23 +] (./Schrick-Noah_MS-Thesis.bbl [25 -]) +] [26]) \c@appendixno=\count269 - [24] + [27] \openout2 = `Appendices.aux'. - (./Appendices.tex [25 + (./Appendices.tex [28 ]) -[26] (./Schrick-Noah_MS-Thesis.aux (./Chapter1.aux) (./Chapter2.aux) +[29] (./Schrick-Noah_MS-Thesis.aux (./Chapter1.aux) (./Chapter2.aux) (./Chapter3.aux) (./Chapter4.aux) (./Chapter5.aux) (./Chapter6.aux) (./Chapter7.aux) (./Appendices.aux)) ) (\end occurred inside a group at level 6) @@ -312,10 +312,10 @@ CHAPTER 7. ### semi simple group (level 1) entered at line 52 (\begingroup) ### bottom level Here is how much of TeX's memory you used: - 2153 strings out of 478353 - 38062 string characters out of 5854635 - 344949 words of memory out of 5000000 - 20223 multiletter control sequences out of 15000+600000 + 2165 strings out of 478353 + 38294 string characters out of 5854635 + 345004 words of memory out of 5000000 + 20235 multiletter control sequences out of 15000+600000 407157 words of font info for 39 fonts, out of 8000000 for 9000 1141 hyphenation exceptions out of 8191 55i,7n,62p,306b,1305s stack positions out of 5000i,500n,10000p,200000b,80000s @@ -323,12 +323,13 @@ Here is how much of TeX's memory you used: c} -Output written on Schrick-Noah_MS-Thesis.pdf (36 pages, 343561 bytes). +/amsfonts/cm/cmr8.pfb> +Output written on Schrick-Noah_MS-Thesis.pdf (39 pages, 360533 bytes). PDF statistics: - 156 PDF objects out of 1000 (max. 8388607) - 100 compressed objects within 1 object stream + 174 PDF objects out of 1000 (max. 8388607) + 112 compressed objects within 2 object streams 0 named destinations out of 1000 (max. 500000) 21 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/Schrick-Noah_MS-Thesis.pdf b/Schrick-Noah_MS-Thesis.pdf index f5d5873..cf11826 100644 Binary files a/Schrick-Noah_MS-Thesis.pdf and b/Schrick-Noah_MS-Thesis.pdf differ diff --git a/Schrick-Noah_MS-Thesis.toc b/Schrick-Noah_MS-Thesis.toc index d03a2ab..2074919 100644 --- a/Schrick-Noah_MS-Thesis.toc +++ b/Schrick-Noah_MS-Thesis.toc @@ -19,75 +19,74 @@ \contentsline {section}{\numberline {1.3}\bf Objectives and Contributions}{4}{}% \contentsline {chapter}{\numberline {CHAPTER 2: }{\bf \uppercase {RELATED WORKS}}}{5}{}% \contentsline {section}{\numberline {2.1}\bf Introduction to Graph Generation}{5}{}% -\contentsline {section}{\numberline {2.2}\bf Improvements to Attack Graph Generation}{5}{}% -\contentsline {section}{\numberline {2.3}\bf Attack Dependency Graphs}{5}{}% -\contentsline {section}{\numberline {2.4}\bf Compliance Graphs}{5}{}% -\contentsline {chapter}{\numberline {CHAPTER 3: }{\bf \uppercase {UTILITY EXTENSIONS TO THE RAGE ATTACK GRAPH GENERATOR}}}{6}{}% -\contentsline {section}{\numberline {3.1}\bf Path Walking}{6}{}% -\contentsline {section}{\numberline {3.2}\bf Compound Operators}{6}{}% -\contentsline {section}{\numberline {3.3}\bf Color Coding}{8}{}% -\contentsline {section}{\numberline {3.4}\bf Intermediate Database Storage}{9}{}% -\contentsline {subsection}{\numberline {3.4.1}\it Memory Constraint Difficulties}{10}{}% -\contentsline {subsection}{\numberline {3.4.2}\it Maximizing Performance with Intermediate Database Storage}{11}{}% -\contentsline {subsection}{\numberline {3.4.3}\it Portability}{12}{}% -\contentsline {section}{\numberline {3.5}\bf Relational Operators}{13}{}% -\contentsline {chapter}{\numberline {CHAPTER 4: }{\bf \uppercase {SYNCHRONOUS FIRING}}}{14}{}% -\contentsline {section}{\numberline {4.1}\bf Introduction}{14}{}% -\contentsline {subsection}{\numberline {4.1.1}\it Synchronous Firing in Literature}{14}{}% -\contentsline {section}{\numberline {4.2}\bf Necessary Components}{14}{}% -\contentsline {section}{\numberline {4.3}\bf Example Networks and Results}{14}{}% -\contentsline {subsection}{\numberline {4.3.1}\it Example Networks}{14}{}% -\contentsline {subsection}{\numberline {4.3.2}\it Results}{14}{}% -\contentsline {chapter}{\numberline {CHAPTER 5: }{\bf \uppercase {Utilization OF MESSAGE PASSING INTERFACE}}}{15}{}% -\contentsline {section}{\numberline {5.1}\bf Introduction to MPI Utilization for Attack Graph Generation}{15}{}% -\contentsline {section}{\numberline {5.2}\bf Necessary Components}{15}{}% -\contentsline {subsection}{\numberline {5.2.1}\it Serialization}{15}{}% -\contentsline {subsection}{\numberline {5.2.2}\it Data Consistency}{16}{}% -\contentsline {section}{\numberline {5.3}\bf Tasking Approach}{16}{}% -\contentsline {subsection}{\numberline {5.3.1}\it Introduction to the Tasking Approach}{16}{}% -\contentsline {subsection}{\numberline {5.3.2}\it Algorithm Design}{16}{}% -\contentsline {subsubsection}{Communication Structure}{16}{}% -\contentsline {subsubsection}{Task Zero}{16}{}% -\contentsline {subsubsection}{Task One}{16}{}% -\contentsline {subsubsection}{Task Two}{16}{}% -\contentsline {subsubsection}{Task Three}{16}{}% -\contentsline {subsubsection}{Task Four}{19}{}% -\contentsline {subsubsection}{Task Five}{19}{}% -\contentsline {subsection}{\numberline {5.3.3}\it Performance Expectations}{19}{}% -\contentsline {section}{\numberline {5.4}\bf Subgraphing Approach}{19}{}% -\contentsline {subsection}{\numberline {5.4.1}\it Introduction to the Subgraphing Approach}{19}{}% -\contentsline {subsection}{\numberline {5.4.2}\it Algorithm Design}{19}{}% -\contentsline {subsubsection}{Communication Structure}{19}{}% -\contentsline {subsubsection}{Worker Nodes}{19}{}% -\contentsline {subsubsection}{Root Node}{19}{}% -\contentsline {subsubsection}{Database Node}{19}{}% -\contentsline {subsection}{\numberline {5.4.3}\it Performance Expectations}{19}{}% -\contentsline {chapter}{\numberline {CHAPTER 6: }{\bf \uppercase {PERFORMANCE ANALYSIS}}}{20}{}% -\contentsline {section}{\numberline {6.1}\bf Small Networks}{20}{}% -\contentsline {subsection}{\numberline {6.1.1}\it Test Information}{20}{}% -\contentsline {subsection}{\numberline {6.1.2}\it Results}{20}{}% -\contentsline {subsection}{\numberline {6.1.3}\it Analysis}{20}{}% -\contentsline {section}{\numberline {6.2}\bf Large Networks}{20}{}% -\contentsline {subsection}{\numberline {6.2.1}\it Test Information}{20}{}% -\contentsline {subsection}{\numberline {6.2.2}\it Results}{20}{}% -\contentsline {subsection}{\numberline {6.2.3}\it Analysis}{20}{}% -\contentsline {section}{\numberline {6.3}\bf Large Exploit Lists}{20}{}% -\contentsline {subsection}{\numberline {6.3.1}\it Test Information}{20}{}% -\contentsline {subsection}{\numberline {6.3.2}\it Results}{20}{}% -\contentsline {subsection}{\numberline {6.3.3}\it Analysis}{20}{}% -\contentsline {section}{\numberline {6.4}\bf Distributed Hash Tables}{20}{}% -\contentsline {subsection}{\numberline {6.4.1}\it Test Information}{21}{}% -\contentsline {subsection}{\numberline {6.4.2}\it Results}{21}{}% -\contentsline {subsection}{\numberline {6.4.3}\it Analysis}{21}{}% -\contentsline {chapter}{\numberline {CHAPTER 7: }{\bf \uppercase {CONCLUSIONS AND FUTURE WORKS}}}{22}{}% -\contentsline {section}{\numberline {7.1}\bf Future Work}{22}{}% +\contentsline {section}{\numberline {2.2}\bf Graph Generation Improvements}{5}{}% +\contentsline {section}{\numberline {2.3}\bf Improvements Specific to Attack Graph Generation}{6}{}% +\contentsline {chapter}{\numberline {CHAPTER 3: }{\bf \uppercase {UTILITY EXTENSIONS TO THE RAGE ATTACK GRAPH GENERATOR}}}{8}{}% +\contentsline {section}{\numberline {3.1}\bf Path Walking}{8}{}% +\contentsline {section}{\numberline {3.2}\bf Compound Operators}{8}{}% +\contentsline {section}{\numberline {3.3}\bf Color Coding}{10}{}% +\contentsline {section}{\numberline {3.4}\bf Intermediate Database Storage}{11}{}% +\contentsline {subsection}{\numberline {3.4.1}\it Memory Constraint Difficulties}{12}{}% +\contentsline {subsection}{\numberline {3.4.2}\it Maximizing Performance with Intermediate Database Storage}{13}{}% +\contentsline {subsection}{\numberline {3.4.3}\it Portability}{14}{}% +\contentsline {section}{\numberline {3.5}\bf Relational Operators}{15}{}% +\contentsline {chapter}{\numberline {CHAPTER 4: }{\bf \uppercase {SYNCHRONOUS FIRING}}}{16}{}% +\contentsline {section}{\numberline {4.1}\bf Introduction}{16}{}% +\contentsline {subsection}{\numberline {4.1.1}\it Synchronous Firing in Literature}{16}{}% +\contentsline {section}{\numberline {4.2}\bf Necessary Components}{16}{}% +\contentsline {section}{\numberline {4.3}\bf Example Networks and Results}{16}{}% +\contentsline {subsection}{\numberline {4.3.1}\it Example Networks}{16}{}% +\contentsline {subsection}{\numberline {4.3.2}\it Results}{16}{}% +\contentsline {chapter}{\numberline {CHAPTER 5: }{\bf \uppercase {Utilization OF MESSAGE PASSING INTERFACE}}}{17}{}% +\contentsline {section}{\numberline {5.1}\bf Introduction to MPI Utilization for Attack Graph Generation}{17}{}% +\contentsline {section}{\numberline {5.2}\bf Necessary Components}{17}{}% +\contentsline {subsection}{\numberline {5.2.1}\it Serialization}{17}{}% +\contentsline {subsection}{\numberline {5.2.2}\it Data Consistency}{18}{}% +\contentsline {section}{\numberline {5.3}\bf Tasking Approach}{18}{}% +\contentsline {subsection}{\numberline {5.3.1}\it Introduction to the Tasking Approach}{18}{}% +\contentsline {subsection}{\numberline {5.3.2}\it Algorithm Design}{18}{}% +\contentsline {subsubsection}{Communication Structure}{18}{}% +\contentsline {subsubsection}{Task Zero}{18}{}% +\contentsline {subsubsection}{Task One}{18}{}% +\contentsline {subsubsection}{Task Two}{18}{}% +\contentsline {subsubsection}{Task Three}{18}{}% +\contentsline {subsubsection}{Task Four}{21}{}% +\contentsline {subsubsection}{Task Five}{21}{}% +\contentsline {subsection}{\numberline {5.3.3}\it Performance Expectations}{21}{}% +\contentsline {section}{\numberline {5.4}\bf Subgraphing Approach}{21}{}% +\contentsline {subsection}{\numberline {5.4.1}\it Introduction to the Subgraphing Approach}{21}{}% +\contentsline {subsection}{\numberline {5.4.2}\it Algorithm Design}{21}{}% +\contentsline {subsubsection}{Communication Structure}{21}{}% +\contentsline {subsubsection}{Worker Nodes}{21}{}% +\contentsline {subsubsection}{Root Node}{21}{}% +\contentsline {subsubsection}{Database Node}{21}{}% +\contentsline {subsection}{\numberline {5.4.3}\it Performance Expectations}{21}{}% +\contentsline {chapter}{\numberline {CHAPTER 6: }{\bf \uppercase {PERFORMANCE ANALYSIS}}}{22}{}% +\contentsline {section}{\numberline {6.1}\bf Small Networks}{22}{}% +\contentsline {subsection}{\numberline {6.1.1}\it Test Information}{22}{}% +\contentsline {subsection}{\numberline {6.1.2}\it Results}{22}{}% +\contentsline {subsection}{\numberline {6.1.3}\it Analysis}{22}{}% +\contentsline {section}{\numberline {6.2}\bf Large Networks}{22}{}% +\contentsline {subsection}{\numberline {6.2.1}\it Test Information}{22}{}% +\contentsline {subsection}{\numberline {6.2.2}\it Results}{22}{}% +\contentsline {subsection}{\numberline {6.2.3}\it Analysis}{22}{}% +\contentsline {section}{\numberline {6.3}\bf Large Exploit Lists}{22}{}% +\contentsline {subsection}{\numberline {6.3.1}\it Test Information}{22}{}% +\contentsline {subsection}{\numberline {6.3.2}\it Results}{22}{}% +\contentsline {subsection}{\numberline {6.3.3}\it Analysis}{22}{}% +\contentsline {section}{\numberline {6.4}\bf Distributed Hash Tables}{22}{}% +\contentsline {subsection}{\numberline {6.4.1}\it Test Information}{23}{}% +\contentsline {subsection}{\numberline {6.4.2}\it Results}{23}{}% +\contentsline {subsection}{\numberline {6.4.3}\it Analysis}{23}{}% +\contentsline {chapter}{\numberline {CHAPTER 7: }{\bf \uppercase {CONCLUSIONS AND FUTURE WORKS}}}{24}{}% +\contentsline {section}{\numberline {7.1}\bf Future Work}{24}{}% {\hfill \ } -\contentsline {section}{\hspace {-\parindent }NOMENCLATURE}{23}{}% +\contentsline {section}{\hspace {-\parindent }NOMENCLATURE}{25}{}% \addvspace {10pt} -\contentsline {section}{\hspace {-\parindent }BIBLIOGRAPHY}{23}{}% +\contentsline {section}{\hspace {-\parindent }BIBLIOGRAPHY}{25}{}% {\hfill \ } -\contentsline {section}{\hspace {-\parindent }APPENDIX A:\ \ {\bf \uppercase {THE FIRST APPENDIX}} }{25}{}% -\contentsline {section}{\hspace {-\parindent }APPENDIX B:\ \ {\bf \uppercase {THE SECOND APPENDIX}} }{26}{}% -\contentsline {section}{\numberline {B.1}\bf A Heading in an Appendix}{26}{}% -\contentsline {subsection}{\numberline {B.1.1}\it A Subheading in an Appendix}{26}{}% -\contentsline {subsubsection}{A Sub-subsection in an Appendix}{26}{}% +\contentsline {section}{\hspace {-\parindent }APPENDIX A:\ \ {\bf \uppercase {THE FIRST APPENDIX}} }{28}{}% +\contentsline {section}{\hspace {-\parindent }APPENDIX B:\ \ {\bf \uppercase {THE SECOND APPENDIX}} }{29}{}% +\contentsline {section}{\numberline {B.1}\bf A Heading in an Appendix}{29}{}% +\contentsline {subsection}{\numberline {B.1.1}\it A Subheading in an Appendix}{29}{}% +\contentsline {subsubsection}{A Sub-subsection in an Appendix}{29}{}%