Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

Kaikkien hakemiston tiedostojen salauksen purkaminen

Graafinen Crypt4gh-käyttöliittymä tarjoaa helpon tavan yksittäisten tiedostojen salaamiseen ja salauksen purkamiseen. Salatut aineistot voivat kuitenkin sisältää suuren määrän tiedostoja, jolloin tiedostokohtainen salaus tai salauksen purkaminen voi olla liian työlästä.

Nämä ohjeet tarjoavat yksinkertaisia skriptausesimerkkejä havainnollistamaan, miten salauksen purkuprosessi voidaan automatisoida. Käytännössä automatisoitu salauksen purkuprosessi vaatii kaksi toiminnallisuutta:

  1. Silmukan muodostamisen, joka etsii salatut tiedostot ja suorittaa salauksen purkukomennon.

  2. Menetelmän, joka antaa salauksen purkusanan automaattisesti salauksen purkukomennoille.

Alla olevissa esimerkeissä oletamme, että meillä on hakemisto nimeltä data1. Hakemisto sisältää satoja tiedostoja, joista salatuilla tiedostoilla on .c4gh-pääte. Salaus on tehty siten, että salauksen purku voidaan tehdä salaisella avaimella my-key.sec, joka on suojattu salasanalla: badpasswd.

Salauksen purkaminen bash-skriptillä Macissa ja Linuxissa

Linux- ja Mac-koneissa crypt4gh-komentorivityökalu pystyy lukemaan yksityisen avaimen salasanan ympäristömuuttujasta C4GH_PASSPHRASE. Siksi ensimmäinen vaihe on asettaa tämä muuttuja. Bash-komentotulkissa tämä voidaan tässä tapauksessa tehdä komennoilla:

read C4GH_PASSPHRASE
export C4GH_PASSPHRASE

find-komentoa voidaan käyttää listaamaan kaikki tiedostot, jotka päättyvät .c4gh, annetussa hakemistossa (data1) ja sen alihakemistoissa. Tätä listaa voidaan käyttää for-silmukan syötteenä.

find data1 -name *.c4gh

Silmukan sisällä meidän täytyy määrittää nimi puretulle tiedostolle. Tässä tapauksessa käytämme komentoputkea rev | cut -c6- | rev poistamaan salatun tiedostonimen viisi viimeistä merkkiä (eli .c4gh) ja määrittämään tiedostonimen puretulle datalle.

Varsinainen salauksen purku tehdään komennolla:

crypt4gh decrypt --sk my-key.sec < encrypted-file > decrypted-file

Näillä vaiheilla koko skripti voisi näyttää seuraavalta:

#!/bin/bash

echo "Give the password of my-key.sec"
read C4GH_PASSPHRASE
export C4GH_PASSPHRASE

for f_encrypted in $(find data1 -name *.c4gh)
do
  echo "Decrypting $f_encrypted"
  #define the file name for the decrypted data
  f_decrypted=$(echo $f_encrypted | rev | cut -c6- | rev)
  crypt4gh decrypt --sk my-key.sec < "$f_encrypted" > $f_decrypted
done

Skripti voidaan suorittaa komennoilla:

  chmod u+x decryption_script
  ./decryption_script

Salauksen purkaminen Windows PowerShellillä

Cryp4gh on saatavilla myös Windows-koneille, mutta Windows-versio ei pysty lukemaan salaisen avaimen salasanaa ympäristömuuttujasta. Tämän vuoksi meidän täytyy käyttää sen sijaan komentoa sda-cli.exe. Tässä tapauksessa salasana voidaan tallentaa muuttujaan C4GH_PASSWORD.

Sda-cli.exe-komento voidaan ladata osoitteesta: https://github.com/NBISweden/sda-cli/releases

Kun komento on saatavilla, salauksen purku voidaan tehdä seuraavilla PowerShell-komennoilla. Tässä oletamme, että purettava data on hakemistossa E:\data1.

$env:C4GH_PASSWORD = "badpasswd"
$files = (Get-ChildItem -Path 'E:\data1\'*.c4gh -Recurse).fullname

foreach ($f in $files) {
.\sda-cli decrypt -key .\my-key.sec $f  }

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta