Skip to content

Commit 3e25e91

Browse files
author
Valentin Schneider-Lunitz
committed
docs(guides): update Crypt4GH integration guide and fix navigation links
1 parent 95e25c0 commit 3e25e91

3 files changed

Lines changed: 20 additions & 24 deletions

File tree

docs/guides/guide-admin/crypt4gh_to_protes.md

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
1-
# Setting up Crypt4GH encryption/decryption in Funnel
1+
# Crypt4GH Integration with proTES: A Guide to Secure Genomic Analysis
22

3-
This guide explains how to configure and deploy an environment that enables collaborative research on sensitive genomic data. Data holders can securely provide encrypted data for analysis while researchers process it through TES/[Funnel](https://github.com/ohsu-comp-bio/funnel) and [proTES](https://github.com/elixir-cloud-aai/proTES), where automatic decryption occurs within secure containers without granting researchers direct access to the sensitive data. This setup leverages [GA4GH TES](https://github.com/ga4gh/task-execution-schemas) standards for scalable and secure task execution.
3+
This guide explains how to configure and deploy an environment that enables collaborative research on sensitive genomic data. Data holders can securely provide encrypted data for analysis while researchers process it through [Funnel](https://github.com/ohsu-comp-bio/funnel) and [proTES](https://github.com/elixir-cloud-aai/proTES), where automatic decryption occurs within secure containers without granting researchers direct access to the sensitive data. This setup leverages [GA4GH TES](https://github.com/ga4gh/task-execution-schemas) standard for scalable and secure task execution.
44

55
## Use Case
66

7-
A data holder needs to provide sensitive genomic data for analysis to researchers in a cloud environment. The data must remain encrypted during storage and transfer, with decryption occurring only within a secure computational environment (container), without granting direct data access to the researcher.
7+
A data holder needs to provide sensitive genomic data for analysis to a researcher in a cloud environment. The data must remain encrypted during storage and transfer, with decryption occurring only within a secure computational environment (container), without granting direct data access to the researcher.
88

99
1. The data holder encrypts sensitive data using Crypt4GH and stores them at a secure storage (e.g. S3 buckets).
1010
2. The researcher submits a GA4GH TES task to `proTES` for analysis of the encrypted data.
1111
3. The installed `proTES middleware` automatically detects the encrypted data and decrypts them using Crypt4GH keys that are managed by `proTES`.
1212
4. The researcher's task command is executed on the decrypted data.
1313
5. The analysis results are stored at a dedicated storage accessible to the researcher
1414

15-
`Note` all computational steps are done in a secure containerized environment.
15+
`Note:` all computational steps are done in a secure containerized environment.
1616

1717
This approach allows collaborative research where sensitive data can be processed in cloud environments without provisioning data access to the researcher but instead utilizing a combination of `Crypt4GH` and `proTES` for data encryption, decryption, and analysis.
1818
Additionally, the researcher can repeat the analysis with adjusted parameters anytime without further action of the data holder.
1919

2020

2121
## Overview
2222

23-
[Crypt4GH](https://crypt4gh.readthedocs.io/) is a standard for encrypting sensitive genomic data. This setup demonstrates:
23+
[Crypt4GH](https://crypt4gh.readthedocs.io/) is a standard for encrypting sensitive data. This setup demonstrates:
2424

2525
- Generating cryptographic key pairs for data exchange between parties (data holder and researcher)
2626
- Encrypting files using the data holder's private key and researcher's public key
@@ -29,7 +29,7 @@ Additionally, the researcher can repeat the analysis with adjusted parameters an
2929

3030
**Security Note:** Private keys should be stored in secure locations and used only for encryption/decryption. Consider using signed URLs for transferring private keys to the TES instance.
3131

32-
**Goal of this tutorial:** You'll have a setup which encrypts sensitive data, stores them in a secure storage, automatic detection of encrypted data triggers decryption followed by processing, ensuring that sensitive data remains protected.
32+
**Goal of this tutorial:** You'll have a setup which encrypts sensitive data, stores them in a secure storage, automatic detection of encrypted data, decryption followed by processing, and ensuring that sensitive data remains protected.
3333

3434
## Setup
3535

@@ -70,7 +70,7 @@ Run the following commands on both the Funnel server and worker VMs:
7070
sudo apt update
7171
sudo apt install -y make golang-go protobuf-compiler
7272

73-
# Install Go protocol buffer plugins
73+
# Install Go protocol buffer plugins (use pinned versions for reproducibility)
7474
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
7575
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
7676
export PATH=$PATH:$(go env GOPATH)/bin
@@ -176,7 +176,9 @@ Verify that both services are running by checking the logs or accessing the Funn
176176

177177
### Step 5: Configure ProTES
178178

179-
ProTES acts as a gateway and provides middleware for automatic Crypt4GH decryption. Follow the [proTES](https://github.com/elixir-cloud-aai/proTES) installation guide to deploy proTES on your third VM.
179+
ProTES acts as a gateway and provides middleware for automatic Crypt4GH decryption. Follow the [proTES](https://github.com/elixir-cloud-aai/proTES) installation guide to deploy proTES on your third VM.
180+
181+
For detailed middleware installation, refer to the [protes-middleware-crypt4gh](https://github.com/elixir-cloud-aai/protes-middleware-crypt4gh).
180182

181183
Once installed, configure the Crypt4GH middleware by editing the `pro_tes/config.yaml` file:
182184

@@ -186,12 +188,6 @@ middlewares:
186188
- "pro_tes.plugins.middlewares.task_distribution.random.TaskDistributionRandom"
187189
```
188190

189-
**Middleware Configuration:**
190-
191-
- `CryptMiddleware`: Automatically detects and decrypts `.c4gh` files during task execution
192-
193-
For detailed middleware installation, refer to the [protes-middleware-crypt4gh](https://github.com/elixir-cloud-aai/protes-middleware-crypt4gh).
194-
195191
## Usage Examples
196192

197193
The following examples demonstrate the complete encryption/decryption workflow using three sequential tasks.
@@ -267,16 +263,16 @@ Create a file named `task1_keygen.json`:
267263

268264
- Generates two key pairs: one for the data holder and one for the researcher
269265
- Keys are generated without encryption (`--nocrypt`) for demonstration purposes
270-
- The researcher's public key is copied to the data holder's directory for use in encryption
266+
- The researcher's public key is copied to the data holder's directory for use during encryption
271267
- All keys are exported to local storage via TES outputs
272268

273269
### Task 2: Encrypt a File
274270

275-
This task retrieves a file, encrypts it using Crypt4GH, and stores both the encrypted file and metadata. Create a file named `task2_encrypt_file.json`:
271+
This task retrieves a file, encrypts it using Crypt4GH keya, and stores both the encrypted file in a distinct location. Create a file named `task2_encrypt_file.json`:
276272

277273
```json
278274
{
279-
"name": "Encrypt file with crypt4gh",
275+
"name": "Encrypt stat file with crypt4gh",
280276
"description": "Retrieve a file, record its size, and encrypt it using data holder and researcher keys",
281277
"inputs": [
282278
{
@@ -331,11 +327,11 @@ This task retrieves a file, encrypts it using Crypt4GH, and stores both the encr
331327

332328
**Key Details:**
333329

334-
- Takes the data holder's private key and researcher's public key as inputs
335330
- Downloads a sample file from a URL
336-
- Records the original file size for verification
331+
- Records the original file size
332+
- Takes the data holder's private key and researcher's public key as inputs
337333
- Encrypts the file using Crypt4GH, producing a `.c4gh` encrypted file
338-
- Stores both the encrypted file and size metadata
334+
- Stores the encrypted file
339335

340336
### Task 3: Decrypt and Process File
341337

@@ -369,7 +365,7 @@ Create a file named `task3_decrypt_and_write_size.json`:
369365
"outputs": [
370366
{
371367
"name": "decrypted_file",
372-
"description": "Decrypted size text file",
368+
"description": "MD5 checksum of automatically decrypted file",
373369
"url": "file:///tmp/funnel-storage/decrypted/united_kingdom_logo_md5sum.txt",
374370
"path": "/outputs/decrypted/united_kingdom_logo_md5sum.txt",
375371
"type": "FILE"

docs/guides/guide-admin/sensitive_data_analysis.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ In this tutorial, we assume a single LS-Login service for all the deployed tools
107107

108108
### LS-Login in MinIO
109109

110-
LS-Login can be activated in MinIO either by using the MinIO console using the OIDC configuration or by setting environmental variables, as described in the MinIO [OIDC Documentation](https://min.io/docs/minio/linux/operations/external-iam/configure-openid-external-identity-management.html). There are detailed instruction in the [ELIXIR-Cloud-AAI documentation](https://elixir-cloud-aai.github.io/guides/guide-admin/services_to_ls_aai/) for using MinIO with LS-Login.
110+
LS-Login can be activated in MinIO either by using the MinIO console using the OIDC configuration or by setting environmental variables, as described in the MinIO [OIDC Documentation](https://min.io/docs/minio/linux/operations/external-iam/configure-openid-external-identity-management.html). There are detailed instructions in the [ELIXIR-Cloud-AAI documentation](https://elixir-cloud-aai.github.io/guides/guide-admin/services_to_ls_aai/) for using MinIO with LS-Login.
111111

112112
### LS-Login in WESkit
113113

mkdocs.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ nav:
9090
- Administrators:
9191
- "guides/guide-admin/index.md"
9292
- "LS Login configuration": "guides/guide-admin/services_to_ls_aai.md"
93-
- "Sensitive Data analysis in Secure Processing Environments (SPE)": "guides/guide-admin/sensitive_data_analysis_spe.md"
94-
- "Crypt4GH Middleware with proTES and Funnel": "guides/guide-admin/crypt4gh_funnel.md"
93+
- "Sensitive Data analysis in Secure Processing Environments (SPE)": "guides/guide-admin/sensitive_data_analysis.md"
94+
- "Crypt4GH Middleware with proTES and Funnel": "guides/guide-admin/crypt4gh_to_protes.md"
9595
- Contributors:
9696
- "guides/guide-contributor/index.md"
9797
- "Workflow": "guides/guide-contributor/workflow.md"

0 commit comments

Comments
 (0)