Skip to content

A DSL for asserting password composition policy effectiveness.

License

Notifications You must be signed in to change notification settings

sr-lab/skeptic-lang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Skeptic PaCPAL DSL

Skeptic Password Composition Policy Assertion Language. A DSL for asserting password composition policy effectiveness.

Logo

Overview

The Skeptic Password composition Policy Assertion Language (PaCPAL) sits on top of the output produced by Pyrrho from a Skeptic Authority and a large password dataset, to provide a facility for easy extraction of results.

At its core, its a language for creating, grouping, ranking and comparing the slopes (i.e. the uniformity) of password probability distributions interpolated as power-law equations.

Examples

A few examples are provided in the ./examples folder. These demonstrate different aspects of PaCPAL and are as follows:

Inlining (inline.sk)

Demonstrates the inlining of power-law equations in PaCPAL:

# Here we're declaring some Zipf equations inline and binding them to a name.
zipf 0.0011742221285749555 -0.6588793976685547 as 000webhostbasic8prop
zipf 0.0009680954123045289 -0.6479434369803485 as 000webhostbasic8uni

# Another assertion.
assert 000webhostbasic8prop steeper 000webhostbasic8uni between 1 and 1000

The zipf keyword allows the inline creation of a named power-law equation. Those above are of the form:

000webhostbasic8prop = [y = 0.0011742221285749555 * x^-0.6588793976685547]
000webhostbasic8uni = [y = 0.0009680954123045289 * x^-0.6479434369803485]

These are then compared with an assertion, which asserts the following:

Two x-axis points corresponding to optimal attack size:
x1 = 1
x2 = 1000

Y-coordinates at each point, for curve named '000webhostbasic8prop':
y1 = 0.0011742221285749555 * x1^-0.6588793976685547
y2 = 0.0011742221285749555 * x2^-0.6588793976685547

Y-coordinates at each point, for curve named '000webhostbasic8uni':
y1' = 0.0009680954123045289 * x1^-0.6479434369803485
y2' = 0.0009680954123045289 * x2^-0.6479434369803485

What we are asserting:
(|y1 - y2| / |x1 - x2|) > (|y1' - y2'| / |x1 - x2|)

Loading (loading.sk)

Demonstrates loading equations from files generated by Pyrrho of the form:

{
  "amp": 0.00011059984812070353,
  "alpha": -0.17896888889001078
}

This is accomplished with the load keyword:

# Loading Zipf equations from files generated by Pyrrho and binding them to a name.
load equations/yahoo-basic6_basic8_proportional.json as yb8prop
load equations/yahoo-basic6_basic12_proportional.json as yb12prop

# Another assertion.
assert yb8prop steeper yb12prop between 1 and 1000

Grouping groups.sk

Demonstrates placing equations into named groups and accessing them using group and add keywords.

# Loading Zipf equations from files generated by Pyrrho and binding them to a name.
load equations/yahoo-basic6_basic8_proportional.json as yb8prop
load equations/yahoo-basic6_basic12_proportional.json as yb12prop

# Build group.
group yahoo
add yb8prop to yahoo as b8
add yb12prop to yahoo as b12

# Assert using groups.
assert b8 yahoo steeper b12 yahoo between 1 and 100

Ranking ranking.sk

Demonstrates ranking a group using the rank keyword.

Releases

No releases published

Packages

No packages published

Languages