taler-www

Main taler.net website
Log | Files | Refs | Submodules | README | LICENSE

commit 8d330f6a61406f71c5d526377a80d7b647fcdb47
parent fb0cd0a48942d1210bfc4ed351b78eb94828f6e7
Author: Nic Eigel <nic@eigel.ch>
Date:   Thu, 13 Jun 2024 15:01:40 +0200

adding 2024-12: real-time auditor

Diffstat:
A.idea/shelf/Uncommitted_changes_before_Update_at_6_13_24,_2_56_PM_[Changes]/shelved.patch | 0
A.idea/shelf/Uncommitted_changes_before_Update_at_6_13_24,_2_56_PM_[Changes]/zwahc4-riesn1.pdf | 0
A.idea/shelf/Uncommitted_changes_before_Update_at_6_13_24,_2_56_PM_[Changes]/zwahc4-riesn1_poster.pdf | 0
A.idea/shelf/Uncommitted_changes_before_Update_at_6_13_24__2_56_PM__Changes_.xml | 15+++++++++++++++
A.idea/workspace.xml | 94+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Astatic/papers/zwahc4-riesn1.pdf | 0
Astatic/presentations/zwahc4-riesn1_poster.pdf | 0
Atemplate/news/2024-12.html.j2 | 30++++++++++++++++++++++++++++++
8 files changed, 139 insertions(+), 0 deletions(-)

diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_6_13_24,_2_56_PM_[Changes]/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Update_at_6_13_24,_2_56_PM_[Changes]/shelved.patch diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_6_13_24,_2_56_PM_[Changes]/zwahc4-riesn1.pdf b/.idea/shelf/Uncommitted_changes_before_Update_at_6_13_24,_2_56_PM_[Changes]/zwahc4-riesn1.pdf Binary files differ. diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_6_13_24,_2_56_PM_[Changes]/zwahc4-riesn1_poster.pdf b/.idea/shelf/Uncommitted_changes_before_Update_at_6_13_24,_2_56_PM_[Changes]/zwahc4-riesn1_poster.pdf Binary files differ. diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_6_13_24__2_56_PM__Changes_.xml b/.idea/shelf/Uncommitted_changes_before_Update_at_6_13_24__2_56_PM__Changes_.xml @@ -0,0 +1,14 @@ +<changelist name="Uncommitted_changes_before_Update_at_6_13_24,_2_56_PM_[Changes]" date="1718283393873" recycled="true" deleted="true"> + <option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_6_13_24,_2_56_PM_[Changes]/shelved.patch" /> + <option name="DESCRIPTION" value="Uncommitted changes before Update at 6/13/24, 2:56 PM [Changes]" /> + <binary> + <option name="BEFORE_PATH" /> + <option name="AFTER_PATH" value="static/presentations/zwahc4-riesn1_poster.pdf" /> + <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_6_13_24,_2_56_PM_[Changes]/zwahc4-riesn1_poster.pdf" /> + </binary> + <binary> + <option name="BEFORE_PATH" /> + <option name="AFTER_PATH" value="static/papers/zwahc4-riesn1.pdf" /> + <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_6_13_24,_2_56_PM_[Changes]/zwahc4-riesn1.pdf" /> + </binary> +</changelist> +\ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="AutoImportSettings"> + <option name="autoReloadType" value="SELECTIVE" /> + </component> + <component name="ChangeListManager"> + <list default="true" id="291fb6c7-c1d9-47a4-99c1-2db89247be4d" name="Changes" comment="adding 2024-12 real-time auditor media" /> + <option name="SHOW_DIALOG" value="false" /> + <option name="HIGHLIGHT_CONFLICTS" value="true" /> + <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> + <option name="LAST_RESOLUTION" value="IGNORE" /> + </component> + <component name="ComposerSettings"> + <execution /> + </component> + <component name="Git.Settings"> + <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> + </component> + <component name="PhpWorkspaceProjectConfiguration" interpreter_name="/bin/php" /> + <component name="ProjectColorInfo"><![CDATA[{ + "associatedIndex": 6 +}]]></component> + <component name="ProjectId" id="2hpDLZwCirAMTZn7yD2BqnEilOe" /> + <component name="ProjectViewState"> + <option name="hideEmptyMiddlePackages" value="true" /> + <option name="showLibraryContents" value="true" /> + </component> + <component name="PropertiesComponent"><![CDATA[{ + "keyToString": { + "RunOnceActivity.ShowReadmeOnStart": "true", + "last_opened_file_path": "/home/nic/www/template/news", + "node.js.detected.package.eslint": "true", + "node.js.detected.package.tslint": "true", + "node.js.selected.package.eslint": "(autodetect)", + "node.js.selected.package.tslint": "(autodetect)", + "nodejs_package_manager_path": "npm", + "settings.editor.selected.configurable": "vcs.Git", + "vue.rearranger.settings.migration": "true" + } +}]]></component> + <component name="RecentsManager"> + <key name="CopyFile.RECENT_KEYS"> + <recent name="$PROJECT_DIR$/template/news" /> + </key> + </component> + <component name="SharedIndexes"> + <attachedChunks> + <set> + <option value="bundled-js-predefined-1d06a55b98c1-91d5c284f522-JavaScript-PS-241.15989.102" /> + <option value="bundled-php-predefined-ba97393d7c68-c76157a7178b-com.jetbrains.php.sharedIndexes-PS-241.15989.102" /> + </set> + </attachedChunks> + </component> + <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" /> + <component name="TaskManager"> + <task active="true" id="Default" summary="Default task"> + <changelist id="291fb6c7-c1d9-47a4-99c1-2db89247be4d" name="Changes" comment="" /> + <created>1718282069804</created> + <option name="number" value="Default" /> + <option name="presentableId" value="Default" /> + <updated>1718282069804</updated> + <workItem from="1718282070828" duration="1613000" /> + </task> + <task id="LOCAL-00001" summary="adding 2024-12 real-time auditor"> + <option name="closed" value="true" /> + <created>1718283379183</created> + <option name="number" value="00001" /> + <option name="presentableId" value="LOCAL-00001" /> + <option name="project" value="LOCAL" /> + <updated>1718283379183</updated> + </task> + <option name="localTasksCounter" value="2" /> + <servers /> + </component> + <component name="TypeScriptGeneratedFilesManager"> + <option name="version" value="3" /> + </component> + <component name="Vcs.Log.Tabs.Properties"> + <option name="TAB_STATES"> + <map> + <entry key="MAIN"> + <value> + <State /> + </value> + </entry> + </map> + </option> + </component> + <component name="VcsManagerConfiguration"> + <MESSAGE value="adding 2024-12 real-time auditor" /> + <option name="LAST_COMMIT_MESSAGE" value="adding 2024-12 real-time auditor" /> + </component> +</project> +\ No newline at end of file diff --git a/static/papers/zwahc4-riesn1.pdf b/static/papers/zwahc4-riesn1.pdf Binary files differ. diff --git a/static/presentations/zwahc4-riesn1_poster.pdf b/static/presentations/zwahc4-riesn1_poster.pdf Binary files differ. diff --git a/template/news/2024-12.html.j2 b/template/news/2024-12.html.j2 @@ -0,0 +1,30 @@ +{% extends "common/news.j2" %} +{% block body_content %} + +<h1>2024-12: &quot;Real-time GNU Taler auditor&quot;</h1> +<h2>Introduction video</h2> +<p> +<video id="video" poster="/images/logo-2021.svg" autobuffer="" height="360" width="640" controls="controls"> + <source src="/videos/zwahc1-riesn1_real-time-auditor.mp4" type="video/mp4" /> +</video> +</p> +<h2>Abstract</h2> +<p> +One of the key components of the GNU Taler payment system is the auditor, which is used to ensure that a payment service provider operating the payment system is operating correctly. The primary goal, is to provide assurances against insider threats, compromised systems or data corruption due to technical failures. + +In the context of this thesis, the GNU Taler auditor was improved, and now works in real-time, thus providing operators and regulators with more timely insights into the payment system. This was achieved by changing the existing logic, which would previously generate periodic JSON reports, to a database-centric approach. By implementing a REST API service for the newly generated database tables, the newly created single page application is able to visualize audit data in real-time on its dashboards. + +To achieve those changes, the six GNU Taler auditor helper programs, each responsible for analyzing different parts of a GNU Taler exchange, were adapted. The existing report generating logic was analyzed and the database was extended with tables to store the various findings generated by the auditor. This replaces the existing periodic report generating logic. + +The new tables contain distinct aspects of GNU Taler that are relevant to the auditing process, such as failures, delays in processing, active operations, or simply the system state with the amounts of currency in circulation or the total amount of the various payment fees earned by the exchange. For each of the new tables, new REST API endpoints were designed, documented and implemented. + +This enabled the development of a new auditor frontend, the single page application for displaying the data in an easy, understandable and digestable manner. Necessary access control precautions were taken into consideration and implemented. + +To foster sustainable development practices, the auditors unit tests were also adapted and changed. Due to the database-centric approach, the unit tests now not only need tests for the main auditing logic, but also tests for the functionality of the REST API. Each test case begins by running the auditor helpers, which insert various reports into the database. After a fault injection, the tests then query the database via the REST API and then check that the correct findings are returned by the REST API. +</p> +<h2>Download links</h2> +<ul> +<li><a href="/presentations/zwahc4-riesn1_poster.pdf">Poster PDF</a></li> +<li><a href="/papers/zwahc4-riesn1.pdf">Thesis PDF</a></li> +</ul> +{% endblock body_content %}