{"id":19260647,"url":"https://github.com/mitre/cpsa","last_synced_at":"2025-06-30T08:08:18.205Z","repository":{"id":146198423,"uuid":"240516587","full_name":"mitre/cpsa","owner":"mitre","description":"Experimental CPSA -- the Cryptographic Protocol Shapes Analyzer experimental version","archived":false,"fork":false,"pushed_at":"2024-03-19T14:56:00.000Z","size":43471,"stargazers_count":10,"open_issues_count":0,"forks_count":2,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-04-14T19:41:15.589Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Scilab","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mitre.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-14T13:40:16.000Z","updated_at":"2024-05-29T22:19:22.221Z","dependencies_parsed_at":null,"dependency_job_id":"53c27ccc-57f8-46ad-88ef-790af1ffb555","html_url":"https://github.com/mitre/cpsa","commit_stats":null,"previous_names":["mitre/cpsa"],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitre%2Fcpsa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitre%2Fcpsa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitre%2Fcpsa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitre%2Fcpsa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mitre","download_url":"https://codeload.github.com/mitre/cpsa/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240357446,"owners_count":19788720,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T19:22:15.454Z","updated_at":"2025-02-23T18:24:31.620Z","avatar_url":"https://github.com/mitre.png","language":"Scilab","funding_links":[],"categories":[],"sub_categories":[],"readme":"CPSA4: Cryptographic Protocol Shapes Analyzer Version 4\n\nThe Cryptographic Protocol Shapes Analyzer (CPSA) attempts to\nenumerate all essentially different executions possible for a\ncryptographic protocol.  We call them the shapes of the protocol.\nNaturally occurring protocols have only finitely many, indeed very few\nshapes.  Authentication and secrecy properties are easy to determine\nfrom them, as are attacks and anomalies.\n\nFor each input problem, the CPSA program is given some initial\nbehavior, and it discovers what shapes are compatible with it.\nNormally, the initial behavior is from the point of view of one\nparticipant.  The analysis reveals what the other participants must\nhave done, given the participant's view.  The search is complete,\ni.e. we proved every shape can in fact be found in a finite number of\nsteps, relative to a procedural semantics of protocol roles.\n\nCPSA4 is based on a refactoring of CPSA2.  It is distinct from CPSA3.\nIt is used to experiment with new features.  It is where a different\nsecurity goal language, the strand-oriented language described in\n\"Deducing Security Goals From Shape Analysis Sentences\"\n\u003chttps://arxiv.org/abs/1204.0480\u003e, was first implemented.  The size of\nthe formulas expressed in the strand-oriented language is typically\nsmaller than the ones produced using the previous node-oriented\nlanguage, an important property when the formulas are used to interact\nwith theorem provers and proof assistants.\n\nCPSA4 provides rules and facts.  Rules are associated with protocols,\nand facts are associated with skeletons.  A rule is a geometric\nformula that is used as a rewrite rule, and a fact is a named relation\nbetween values.\n\nCPSA4 provides channels.  Channels are designed to model confidential\nand authenticated communication channels.\n\nThis program has been built and tested using the Haskell miminal\ninstaller and Haskell Platform.  These are available from\n\u003chttp://haskell.org\u003e or from an operating system specific source.  The\nname of the Linux package is usually haskell-platform.  If you have\nproblems installing Haskell, try using Haskell Stack, and issue the\ncommands \"stack init; stack build, stack install\".\n\nINSTALLING FROM A TARBALL\n\nBuild and install with:\n\n$ cabal build\n$ cabal install --overwrite-policy=always\n\nDOCUMENTATION LOCATION\n\nTo find the directory containing documentation and samples, type:\n\n$ cpsa4 -h\n\nQUICK START (Linux)\n\n: To analyze a protocol you have put in prob.scm type:\n$ cpsa4 -o prob.txt prob.scm\n$ cpsa4graph -o prob.xhtml prob.txt\n$ firefox -remote \"openFile(`pwd`/prob.xhtml)\"\n\nQUICK START (Mac)\n\n: To analyze a protocol you have put in prob.scm type:\n$ cpsa4 -o prob.txt prob.scm\n$ cpsa4graph -o prob.xhtml prob.txt\n$ open prob.xhtml\n\nQUICK START (Windows)\n\nWith Cygwin or MinGW, the installation is similar to the Linux\ninstall.  The software has been tested on a Windows system on which\nneither MinGW or Cygwin has been installed.  Install Haskell Platform\nCore and then run:\n\nC:\\...\u003e cabal update\nC:\\...\u003e cabal install parallel\nC:\\...\u003e cabal build\nC:\\...\u003e cabal install --overwrite-policy=always\n\nDocumentation and samples are in the directory given by\nC:\\...\u003e cpsa4 -h\n\nThe installed programs can be run from the command prompt or via a\nbatch file.  Alternatively, copy doc/Make4.hs into the directory\ncontaining your CPSA problem statements, and load it into a Haskell\ninterpreter.  Read the source for usage instructions.\n\nMAKEFILE\n\nTo start your own project, create a fresh directory and then type:\n\n$ cpsa4init\n\nThis will create a Makefile that automates the analysis process.  For\nWindows, it will also create Make4.hs, a cpsa build script written in\nHaskell.\n\nPARALLELISM\n\nCPSA is built so it can make use of multiple processors.  To make use\nof more than one processor, start CPSA with the -N runtime flag, as in\n\"+RTS -N -RTS\".  The GHC documentation describes the -N option in\ndetail.\n\nDOCUMENTATION\n\nThe starting point for CPSA documentation doc/index.html.  Most users\nshould read it and skip the rest of this section.  The documentation\nincludes a user guide as an XHTML document, and three LaTeX documents.\nThe CPSA Primer provides the background required to make effective use\nof the CPSA tool collection.  For those interested in the\nimplementation, The CPSA Theory contains a high-level description of\nthe algorithm and the current state of the effort to show that when\nprogram terminates, it produces a description of every possible\nexecution of the protocol consistent with the initial point-of-view\nskeleton.  The CPSA Specification formally describes the implemented\nalgorithm as a term reduction system.  The CPSA Design describes\nimplementation details and assumes The CPSA Specification has been\nread.  The CPSA Design should be read if one is interested in reading\nthe Haskell source for the tool collection.\n\nTEST SUITE\n\nCabal currently fails to preserve permissions correctly.  To fix this\nproblem, type:\n\n$ /bin/sh fixperms\n\n: To run the test suite type:\n$ ./cpsatst\n\nTests with the .scm extension are expected to complete without error,\ntests with the .lsp extension are expected to fail, and tests with the\n.lisp extension are not run.  New users should read tst/README, and\nthen browse the files it suggests while reading CPSA documentation.\n\nADDITIONAL PROGRAMS\n\nThe src directory of the source distributions includes programs\nwritten in Scheme, Prolog, Elisp, and OCaml for performing tasks.  Use\nthem as templates for your special purpose CPSA analysis and\ntransformation needs.  Also, when given the --json option, the CPSA\npretty printer cpsapp will transform CPSA S-expressions into\nJavaScript Object Notation (JSON).\n\nOn Linux, the GHC runtime can request so much memory that thrashing\nresults.  The script in src/ghcmemlimit sets an environment variable\nthat limits memory to the amount of free and reclaimable memory on\nyour machine.\n\nKNOWN BUGS\n\nVariable separation in generalization fails to separate variables in\nterms of the form (ltk a a).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmitre%2Fcpsa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmitre%2Fcpsa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmitre%2Fcpsa/lists"}