【问题标题】:How to protect/encrypt R objects in RData files due to EU-GDPR由于 EU-GDPR,如何保护/加密 RData 文件中的 R 对象
【发布时间】:2019-03-21 22:43:25
【问题描述】:

我想用强大的加密算法保护我的RData 文件的内容 因为它们可能包含敏感的个人数据,这些数据不得 由于(法律)EU-GDPR 要求而披露。

如何在 R 中做到这一点?

我想避免在创建 RData 文件后进行第二步手动加密,以最大程度地降低忘记或忽略任何 RData 文件的风险。

在这种情况下,我正在使用 Windows...

【问题讨论】:

  • 也许您应该先与律师交谈,以确保您确实必须这样做,然后再询问如何做。
  • GDPR 不关心加密。它关心您是否存储数据,用于什么目的和多长时间。如果你能解密数据,就说明你有数据。
  • 我不应该提到 GDPR,因为在我的案例中阐明了法律和合规方面。顺便说一句:第 32 条(“处理的安全性”)规定“处理者……应实施适当的技术……措施以确保一定程度的安全……除其他外……个人数据的加密…… 。”
  • 这并不意味着你认为的意思。

标签: r encryption rdata


【解决方案1】:

我知道已经很晚了,但请查看这个包加密

安装:

devtools::install_github("RevanthNemani\endecrypt")

使用以下函数进行列加密:

airquality <- EncryptDf(x = airquality, pub.key = pubkey, encryption.type = "aes256")

对于列解密:

airquality <- DecryptDf(x = airquality, prv.key = prvkey, encryption.type = "aes256")

查看此Github page

请记住生成您的密钥并保存以供首次使用。在需要时加载密钥并将密钥对象提供给函数。

例如

SaveGenKey(bits = 2048,
              private.key.path = "Encription/private.pem",
              public.key.path = "Encription/public.pem")

# Load keys already stored using this function 
prvkey <- LoadKey(key.path = "Encription/private.pem", Private = T)

它非常易于使用,您的数据框可以存储在数据库或 Rdata 文件中。

【讨论】:

    【解决方案2】:
    library(openssl)
    
    x <- serialize(list(1,2,3), NULL)
    
    passphrase <- charToRaw("This is super secret")
    key <- sha256(passphrase)
    
    encrypted_x <- aes_cbc_encrypt(x, key = key)
    
    saveRDS(encrypted_x, "secret-x.rds")
    
    encrypted_y <- readRDS("secret-x.rds")
    
    y <- unserialize(aes_cbc_decrypt(encrypted_y, key = key))
    

    您需要处理机密管理(即密钥),但这个通用习惯用法应该可以工作(更防弹)。

    【讨论】:

    • 好代码sn-p!我想避免在保存对象之前加密我的对象,但 R 没有在基础中提供此功能,我仍然没有找到为此提供单一功能的包。我敢肯定,您的解决方案正在运行(尤其是与包 secret 一起存储密码:cran.r-project.org/package=secret)。
    • 是的。没有基本序列化,但您可以为 saveRDS() 编写一个包装器,您可以将其放入本地来源的包中。
    猜你喜欢
    • 2016-10-19
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 2016-06-21
    相关资源
    最近更新 更多