Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .github/deploy-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Deploy docs

on:
workflow_dispatch: # Use this to dispatch from the Actions Tab
push:
branches:
- main

jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎️
uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: "20"

- name: Install and Build 🔧
working-directory: ./docs/
run: |
npm install
npm run build

- name: Deploy 🚀
uses: JamesIves/github-pages-deploy-action@v4.5.0
with:
branch: gh-pages
folder: docs/.vitepress/dist
3 changes: 3 additions & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
.vitepress/dist
.vitepress/cache
node_modules/
84 changes: 84 additions & 0 deletions docs/.vitepress/config.mts
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import { defineConfig } from 'vitepress'

// https://vitepress.dev/reference/site-config
export default defineConfig({
title: "DFA – The Karlsruhe Data Flow Diagram Analysis",
head: [['link', { rel: 'icon', href: '/favicon.ico' }]],
description: "An extensible framework for data flow analysis",
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
nav: [
{ text: 'Home', link: '/' },
{ text: 'Download', link: '/download/' },
{ text: 'Publications', link: '/publications/'},
{ text: 'Documentation', link: '/wiki/'},
{ text: 'Examples', link: '/examples/'},
],

sidebar: [
{
text: 'Quick Links',
items: [
{
text: 'Download',
link: '/download/'
},
{
text: 'Publications',
link: '/publications/'
},
{
text: 'Online Editor',
link: 'https://editor.dataflowanalysis.org'
},
{
text: 'GitHub Organization',
link: 'https://github.com/DataFlowAnalysis'
},
{
text: 'Eclipse Updatesite',
link: 'https://dataflowanalysis.github.io/updatesite/'
},
{
text: 'Helmholtz RSD',
link: 'http://helmholtz.software/software/dfa'
}
]
},
{
text: 'Documentation',
items: [
{
text: 'Overview',
link: '/wiki/'
},
{
text: 'Getting Started',
link: '/wiki/gettingstarted.md'
}
]
},
{
text: 'Examples',
items: [
{
text: 'Overview',
link: '/examples/'
}
]
}
],

socialLinks: [
{ icon: 'github', link: 'https://github.com/vuejs/vitepress' }
],

notFound: {
quote: "This flow has no sink. Let's go back to the source and try again."
},

footer: {
message: 'DFA – The Karlsruhe Data Flow Diagram Analysis, <a href="https://www.kit.edu/impressum.php">Imprint</a>, <a href="https://www.kit.edu/legals.php">Legals</a>, <a href="https://www.kit.edu/privacypolicy.php">Privacy Policy</a>',
}
}
})
4 changes: 4 additions & 0 deletions docs/.vitepress/theme/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import DefaultTheme from 'vitepress/theme'
import '../../index.css'

export default DefaultTheme
43 changes: 43 additions & 0 deletions docs/PaperHighlight.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<template>
<div
style="
border-radius: 12px;
background-color: var(--vp-c-bg-soft);
display: flex;
padding: 10px;
padding-left: 20px;
margin-bottom:10px;
"
>
<img
style="height: 60px; margin-right: 15px; margin-top: 10px"
src="/img/paper-dark.svg"
v-if="isDark"
/>
<img
style="height: 60px; margin-right: 15px; margin-top: 10px"
src="/img/paper-light.svg"
v-if="!isDark"
/>
<p>
{{ props.authors }}, "<a :href="paperURL" style="font-weight: bold">{{
props.title
}}</a
>", <span v-if="props.linebreak"><br /></span>{{ props.reference
}}<span v-if="doi"
>, doi: <a :href="doiURL">{{ props.doi }}</a></span
>.
</p>
</div>
</template>

<script setup>
import { useData } from "vitepress";
import { ref } from "vue";

const isDark = useData().isDark;
const props = defineProps(["authors", "title", "reference", "url", "doi", "linebreak"]);

const doiURL = ref("https://doi.org/" + props.doi);
const paperURL = props.url ? props.url : doiURL;
</script>
74 changes: 74 additions & 0 deletions docs/download/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
---
prev: false
next: false
aside: false
---

# Download

We provide multiple ways to download and use the data flow analysis framework.
The easiest way to get started is downloading our ready-to-use [Eclipse Product](#eclipse-product-recommended).
Alternatively, all major artifacts are available on our [Eclipse Updatesite](#eclipse-updatesite) to be directly installed into the [Eclipse Modeling Framework](https://eclipse.dev/emf/).
Last, if you only want to model and analyze simple data flow diagrams, you can use our [online editor](#online-editor) without any installation required.
Afterwards, visit [Getting Started](/wiki/gettingstarted.md) to learn more about using the analysis.

::: info Current Release
{{releaseInfo}}
:::

## Eclipse Product <Badge type="info">Recommended</Badge>

Our [Eclipse Product](https://updatesite.palladio-simulator.com/DataFlowAnalysis/product/releases/) is a pre-configured Eclipse desktop application with all required dependencies installed to quickly get started.
We provide the Eclipse Product for all major operation systems.

<VPButton text='Windows 10 & 11' href="https://updatesite.palladio-simulator.com/DataFlowAnalysis/product/releases/latest/DataFlowAnalysis.win32.win32.x86_64.zip" />
<VPButton text='Linux (GTK)' href="https://updatesite.palladio-simulator.com/DataFlowAnalysis/product/releases/latest/DataFlowAnalysis.linux.gtk.x86_64.zip" />
<VPButton text='macOS (ARM)' href="https://updatesite.palladio-simulator.com/DataFlowAnalysis/product/releases/latest/DataFlowAnalysis.macosx.cocoa.aarch64.tar.gz" />
<VPButton text='macOS (Intel)' href="https://updatesite.palladio-simulator.com/DataFlowAnalysis/product/releases/latest/DataFlowAnalysis.macosx.cocoa.x86_64.zip" />

## Eclipse Updatesite

We provide an Eclipse Updatesite with all major artifacts ready to be installed in the [Eclipse Modeling Framework](https://eclipse.dev/emf/). The updatesite comprises both the latest release artifacts and a nightly build.

[Release](https://dataflowanalysis.github.io//updatesite/release) (add this URL to your Updatesites in Eclipse):

```
https://dataflowanalysis.github.io//updatesite/release
```

[Nightly](https://dataflowanalysis.github.io//updatesite/nightly) (add this URL to your Updatesites in Eclipse):

```
https://dataflowanalysis.github.io//updatesite/nightly
```

## Online Editor

If you only want to edit and analyze data flow diagrams without further tool support or analysis extensions, just use our online editor, available at https://editor.dataflowanalysis.org/.

<script setup>
import { ref } from 'vue'
import { VPButton } from 'vitepress/theme'

const releaseInfo = ref('The latest released version is available on GitHub.')
const url = 'https://api.github.com/repos/DataFlowAnalysis/DataFlowAnalysis/releases/latest';

fetch(url).then(response => {
response.json().then(data => {
const latestReleaseVersion = data.tag_name;

const rawDate = new Date(data.published_at);
const latestReleaseDate = rawDate.toLocaleDateString('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric'});

releaseInfo.value = `The latest released version ${latestReleaseVersion} was released on ${latestReleaseDate}.`
})});
</script>

<style module>
a[class*="VPButton"] {
text-decoration: none !important;
}
</style>
4 changes: 4 additions & 0 deletions docs/examples/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Examples

The wiki is currently under construction.
Until it is ready, please visit [the project page](https://github.com/DataFlowAnalysis/DataFlowAnalysis).
21 changes: 21 additions & 0 deletions docs/index.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/* see: https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css */

:root {
--vp-c-brand-1: var(--vp-c-yellow-1);
--vp-c-brand-2: var(--vp-c-yellow-2);
--vp-c-brand-3: var(--vp-c-yellow-3);
--vp-c-brand-soft: var(--vp-c-yellow-soft);
}

.VPHomeHero .name.clip {
font-size: 47px;
}

.VPHomeHero .text {
font-size: 34px;
line-height: 50px;
}

.VPHomeHero .image-container {
transform: none;
}
95 changes: 95 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
---
# https://vitepress.dev/reference/default-theme-home-page
layout: home
title: DFA – The Karlsruhe Data Flow Diagram Analysis

hero:
name: "DFA – The Karlsruhe Data Flow Diagram Analysis"
text: "An extensible data flow analysis framework for information security"
image:
src: /img/dfa-artwork.png
alt: DFA – The Karlsruhe Data Flow Diagram Analysis
actions:
- theme: brand
text: Download
link: /download/
- theme: brand
text: Online Editor
link: https://editor.dataflowanalysis.org
- theme: alt
text: Getting Started
link: /wiki/
- theme: alt
text: Examples
link: /examples/

features:
- icon:
dark: img/diagram-dark.svg
light: img/diagram-light.svg
alt: Easy-to-Learn Notation
title: Easy-to-Learn Notation
details: Based on the proven data flow diagram syntax, learn the basics in minutes and start modeling immediately.
- icon:
dark: img/architecture-dark.svg
light: img/architecture-light.svg
alt: Architecture-Based Analysis
title: Architecture-Based Analysis
details: Integrates with the Palladio Software Architecture Simulator to support system-level design-time security analysis.
- icon:
dark: img/puzzle-dark.svg
light: img/puzzle-light.svg
alt: Built for Extensibility
title: Built for Extensibility
details: An open-source framework with a simple analysis mechanism and stable interfaces to integrate third-party diagram notations.
- icon:
dark: img/security-dark.svg
light: img/security-light.svg
alt: Identify Security Flaws
title: Identify Security Flaws
details: Analyze confidentiality, integrity, and other information security properties by reusing simple yet versatile security annotations.
---

<div style="margin-bottom:30px;">&nbsp;</div>

# A Unified Model for Data Flow Diagrams
Our approach to data flow diagrams unifies previous modeling approaches and provides and concise syntax to express the information security of software systems.
We build on the [1979 DeMarco notation](https://en.wikipedia.org/wiki/Data-flow_diagram) comprising data sources, sinks, flows, and files.
To enable security-related analysis, we extend the notation by input and output pins, behaviors, and means to characterize data and nodes using labels.
See the [wiki](/wiki/) for more information.

<img src="/img/bigpicture-dark.png" v-if="isDark" style="margin-bottom:30px;" />
<img src="/img/bigpicture-light.png" v-if="!isDark" style="margin-bottom:30px;" />

# Expressing and Analyzing Information Security Requirements

Our analysis utilizes [label propagation](/wiki/) to analyze the characteristics of data flows.
First, we extract all possible flows from data flow diagrams or other model representations such as [Palladio software architecture](https://www.palladio-simulator.com/) models.
Afterwards, we query these so-called [Transpose Flow Graphs (TFGs)](/wiki/) to identify violations of information security requirements that were denoted as [data flow constraints](/wiki/).
Exemplary questions are:

* Does personal data flow to unauthorized locations violating the GDPR?
* Does data leave an internal server without being encrypted first?
* Does the access to sensitive data follow Role-based Access Control (RBAC)?
* Are there any data flows that merge two distinct types of data that would void anonymity?

<img src="/img/analysis-dark.png" v-if="isDark" style="margin-bottom:30px;" />
<img src="/img/analysis-light.png" v-if="!isDark" style="margin-bottom:30px;" />

All aspects of the Karlsruhe Data Flow Diagram Analysis have been [scientifically published](/publications/) at multiple conferences and journals, e.g., the [data flow diagram notation](https://doi.org/10.5220/0010515300260037), or the [core analysis algorithms](https://doi.org/10.1016/j.jss.2021.111138). For a quick overview of the analysis framework, please see this key publication:

<PaperHighlight
authors="N. Boltz and S. Hahner, et al."
title="An Extensible Framework for Architecture-Based Data Flow Analysis
for Information Security"
reference="European Conference on Software Architecture (ECSA), Springer,
2024"
url="https://sebastianhahner.de/publications/2024/BoltzHahner2024_AnExtensibleFrameworkForArchitectureBasedDataFlowAnalysisForInformationSecurity.pdf"
doi="10.1007/978-3-031-66326-0_21"
linebreak="yes,please" />

<script setup>
import PaperHighlight from './PaperHighlight.vue'
import { useData } from 'vitepress';
const isDark = useData().isDark;
</script>
Loading