| Type: | Package | 
| Title: | An Implementation of Process-Aware Stealthy Attack Detection(PASAD) | 
| Version: | 1.0 | 
| Date: | 2021-06-22 | 
| Author: | Donghwan Kim | 
| Maintainer: | Donghwan Kim <donhkim9714@korea.ac.kr> | 
| Description: | Anomaly detection method based on the paper "Truth will out: Departure-based process-level detection of stealthy attacks on control systems" from Wissam Aoudi, Mikel Iturbe, and Magnus Almgren (2018) <doi:10.1145/3243734.3243781>. Also referred to the following implementation: https://github.com/rahulrajpl/PyPASAD. | 
| License: | GPL-3 | 
| Encoding: | UTF-8 | 
| LazyData: | no | 
| Repository: | CRAN | 
| URL: | https://github.com/ainsuotain/pasadr | 
| Depends: | R (≥ 3.5.0), pracma, scales | 
| NeedsCompilation: | no | 
| Packaged: | 2021-06-29 15:55:10 UTC; BISTel | 
| Date/Publication: | 2021-06-30 10:40:02 UTC | 
A test function of Process-Aware Stealthy Attack Detection(PASAD)
Description
Singular value decomposition of log covariance matrix (Trajectory matrix). This is a test phase of pasad
Usage
pasad_test(obj, test_idx, newdata, r = 3, calib = 1, thres = NULL, movn = 10, plot = TRUE)
Arguments
obj | 
 A pasad model object result from   | 
test_idx | 
 A test index for pasad. For example,   | 
newdata | 
 A test data for pasad.  | 
r | 
 A cardinal number of eigen value. Generally, r is same by the training phase.  | 
calib | 
 A threshold multiplier. since the threshold calculated during the training phase is a rather small, so the calib can be multiplied to the threshold. (default is 1, should be biggner than 0).  | 
thres | 
 If user already know the threshold, user can input the threshold.  | 
movn | 
 A moving average window value to see the trend of the score.  | 
plot | 
 Whether to draw a anomaly score or not. (default : TRUE).  | 
Value
An object of class pasad_test.
total_scores | 
 Anomaly score results from the pasad.  | 
tr_score | 
 A pasad score of the training index.  | 
te_score | 
 A pasad score of the test index.  | 
extraced | 
 A noise-reduced signal.  | 
threshold | 
 A (calculated) threshold.  | 
outidx | 
 An index of a anomaly score greater than the threshold.  | 
Author(s)
Donghwan Kim
donhkim9714@korea.ac.kr
dhkim2@bistel.com
References
Wissam Aoudi, Mikel Iturbe, and Magnus Almgren (2018) <DOI:10.1145/3243734.3243781>. In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security, pp. 817-831.
https://github.com/mikeliturbe/pasad
https://github.com/rahulrajpl/PyPASAD
See Also
Examples
# data input
fpath = system.file("extdata", "sa.csv", package="pasadr")
sa = read.csv(fpath)
# check data
sig = sa$V5
plot(sig)
# training using pasad and check the scree plot
train_idx = c(1:500)  
obj = pasad_train(x = sig, 
                  train_idx = train_idx,
                  r = 1, 
                  ws = length(train_idx)/2,
                  scree_plot = TRUE)
                  
# test whole data and check the anomaly score of test data
pred = pasad_test(obj = obj, 
                  test_idx = 1:4801,
                  newdata = sig, 
                  r = 1, 
                  calib = 1,  
                  plot = TRUE)
                  
# check the structure of test results
str(pred)
A training function of Process-Aware Stealthy Attack Detection(PASAD)
Description
Singular value decomposition of log covariance matrix (Trajectory matrix). This is a training phase of pasad
Usage
pasad_train(x, train_idx, r = 3, ws, scree_plot = FALSE)
Arguments
x | 
 A signal data for inspectation.  | 
train_idx | 
 A training index fot pasad. For example,   | 
r | 
 A cardinal number of eigen value. Generally r is smaller than 3. (default : 3).  | 
ws | 
 A length of lag for creating covariance matrix. (default is a half of training length).  | 
scree_plot | 
 Whether to draw a scree_plot or not. (default : TRUE).  | 
Value
An object of class pasad_train.
N | 
 A length of signal data.  | 
L | 
 A length of lag for creating covariance matrix.  | 
U | 
 The r leading eigenvectors.  | 
X | 
 A trajectory matrix.  | 
x | 
 An original signal.  | 
ws | 
 A length of lag for creating covariance matrix.  | 
train_idx | 
 A training index fot pasad.  | 
x_train | 
 A data used for training.  | 
singulars | 
 A transpose of singular matrix  | 
Author(s)
Donghwan Kim
donhkim9714@korea.ac.kr
dhkim2@bistel.com
References
Wissam Aoudi, Mikel Iturbe, and Magnus Almgren (2018) <DOI:10.1145/3243734.3243781>. In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security, pp. 817-831.
https://github.com/mikeliturbe/pasad
https://github.com/rahulrajpl/PyPASAD
See Also
Examples
# data input
fpath = system.file("extdata", "sa.csv", package="pasadr")
sa = read.csv(fpath)
## NOT RUN:
## data(package = "pasadr")
# check data
sig = sa$V5
plot(sig)
# training using pasad and check the scree plot
train_idx = c(1:500)  
obj = pasad_train(x = sig, 
                  train_idx = train_idx,
                  r = 1, 
                  ws = length(train_idx)/2,
                  scree_plot = TRUE)
                  
# check the pasad model objects
str(obj)