Skip to content
This repository has been archived by the owner on May 16, 2023. It is now read-only.

Commit

Permalink
Alstiefel patch archi doc (#38)
Browse files Browse the repository at this point in the history
Rename Lab Server to Test Result Server
  • Loading branch information
alstiefel authored May 29, 2020
1 parent 6caac27 commit 5904c68
Showing 1 changed file with 10 additions and 46 deletions.
56 changes: 10 additions & 46 deletions docs/architecture-overview.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
# Software Design Testresult Server
# Software Design Test Result Server

by Andreas Scheibal ([email protected])

## Introduction

This document describes the component Test Result Server for the System “Corona Warn App”. In the world of the Corona Warn App the Verification Server helps validating whether upload requests from the mobile App are valid or not.
This document describes the component Test Result Server for the System “Corona Warn App”. In the world of the Corona Warn App the Test Result Server holds results of medical tests for SARS-CoV-2.

This component was named Lab Server in earlier iterations.

This document links the overall system architecture.
Please keep in mind, that this document is still **work-in-progress**.

Expand All @@ -19,14 +22,11 @@ The primary scope of the component is to provide the verification server with in
The Test Result Server provides test results of SARS-CoV-2 tests in a pseudonymized form to only the verification server as it requests such information.

![Overview Architecture](cwa-testresult-server.png)
Figure 1: Components Testresult Server

- The Corona-Warn-App is a system which requests test result status and obtains proofs.
- The Corona-Warn-App Server is a system which needs to verify proof.
- The Portal Server is a system which creates and obtains proof and therefore acts as source for proof.
- The Lab Server/Laboratory Information System (LIS) is a system which acts as trusted source for proof.
Figure 1: Components Test Result Server

Proof is represented by a Transaction Authorization Number (TAN), which is not bound to a specific transaction.
- Lab Server Gateway: System which aggregates the test results from different labs
- Lab: is the medical facility which executes the test for SARS-CoV-2 and produces the test result
- Verification Server: The instance which creates proof certificates (TAN) for positive tested users to allow them to upload their diagnostic keys


## Core Entities
Expand Down Expand Up @@ -67,7 +67,7 @@ Logfiles are kept for 30 days.
- **Test Center**: Facility where the user can donate a probe to be tested for SARS-CoV-2, such as hospitals or practicing doctors
- **Lab**: Facility which tests the probe of the user and produces a trusted test result on SARS-CoV-2.
- **Verification Server**: Software service which proves that a user, who is taking part in the Corona Warn App and who is willing to file his Diagnosis Keys, has been really tested positive by an established authority
- **Testresult Server**: Software service, that imports the test results provided by the Labs and stores them for further use.
- **Test Result Server**: Software service, that imports the test results provided by the Labs and stores them for further use.


## Supported User Stories
Expand Down Expand Up @@ -158,50 +158,14 @@ All data is deleted after 14 days.
**_This chapter is still in work._**

### Threats
Based on STRIDE threat modelling, the threats below are anticipated:

|ID| Category| Name| Definition|
| ------------- |:-------------:| -----:| -----:|
|T1| Brute Force | Brute Force teleTAN| Try to guess a teleTAN via brute force attack.|
|T2| DDoS Attack| The API is attacked by a high number of requests, leading to an outage of the service|
|T3| Code injection| The payload and/or header contain code which is executed|
|T4|
|T5| Brute force attack| By a brute force attack a client wants to guess a valid GUID to create a valid TAN|
|T6| Steal secrets from logs |
Categories follow STRIDE:
- Spoofing
- Tampering
- Repudiation
- Information disclosure (privacy breach or data leak)
- Denial of service
- Elevation of privilege

### Measures

|ID| Threat| Name| Definition|
| ------------- |:-------------:| -----:| -----:|
|MT1|||OTC DDoD Protection Infrastructure Level|
|MT2|||Strong input parameter verification, with 100% code coverage and very high amount of testing |
|MT3|||Enforcing TLS 1.2 and above |
|MT6|T2|| Use Open Telekom Cloud Anti-DDoS |
|MT7|T3|| Strict validation of http headers, body content |
|MT9|T5|| Use Throttling @ Code Level in API implementation to reduce the possible frequency of guessing attempts |
|MT10|T5|| Detect unusual load scenario and trigger warning for operation |
|MT11|T6|| Use only POST requests to avoid logging of secrets at infrastructure components|
|MT12||| Strict input validation, all REST input parameter are validated in a strict manner|

## Used cryptographic algorithms
- Hashing of GUID: SHA-256, no salt, no pepper

## Complexity of secrets

- hashed GUID: 128 bits

## Used Timeframes

hashed GUID
- Lifespan of TAN is 14 days

0 comments on commit 5904c68

Please sign in to comment.