資料加密
From LimeSurvey Manual
簡介
資料加密功能旨在協助問卷管理員更妥善地因應世界各地所採行的新資料保護法規(例如 GDPR)。
此功能可對位於公用參與者資料庫及/或問卷參與者表格中的個人資料進行加密。此外,若啟用加密問題屬性,您也可以對從受訪者收集的資料進行加密。
請注意,您的資料在 LimeSurvey 介面中永遠都是可見的。只有資料庫中的項目會被加密,任何能存取 LimeSurvey 主機伺服器的人都無法檢視相關資料。因此,請謹慎決定要將全域權限與問卷權限授予哪些人。
何時應加密您的資料?
這個問題沒有唯一正確的答案,主要取決於:
- 您所收集的資料類型
- 您的問卷所在的地區
- 國家或聯邦法規
在大多數情況下,加密可識別個人身分的資料非常重要(例如《一般資料保護規則》所建議的)。因此,名、姓、電子郵件地址、電話號碼、地址等欄位,都可用來識別某個人所提交的回應。
在其他情況下,應加密的資料不一定僅限於上述範例。在某些情境中(例如醫學研究),如果可以追溯回應是由哪個人提交的,您可能需要加密大部分的資料。
因此,請依照當地法規調整您的問卷與資料收集方式!
設定
LimeSurvey 中有三個地方可以設定資料加密:
問題屬性
問題屬性「已加密」用於對相應的回應啟用資料加密。此屬性預設為關閉。問卷一旦啟用,就無法再變更此屬性。

參與者屬性
三個核心屬性(名、姓和電子郵件)一律顯示在問卷參與者表格中,且加密預設為開啟。
每個新增的參與者屬性,加密預設為關閉。
加密可隨時開啟或關閉。
公用參與者資料庫屬性管理
三個核心屬性(名、姓和電子郵件)一律顯示在公用參與者資料庫中,且加密預設為開啟。
每個新增的參與者屬性,加密預設為關閉。
加密可隨時開啟或關閉。
進階
LimeSurvey 使用 Sodium 函式庫來提供資料加密與解密功能。
Sodium 是一個現代化且易於使用的軟體函式庫,可用於加密、解密、簽章、密碼雜湊等用途。它是 NaCl 的一個可移植、可跨平台編譯、可安裝、可封裝的分支,具備相容的 API,並擴充了 API 以進一步提升易用性。其目標是提供建構高階密碼學工具所需的所有核心運算。
Sodium 支援跨平台與跨語言。它可在多種編譯器與作業系統上執行,包括 Windows(使用 MinGW 或 Visual Studio,x86 與 x86_64)、iOS 和 Android。同時也提供 Javascript 與 WebAssembly 版本,並獲得完整支援。所有常見程式語言的繫結皆已提供,且支援良好。
PHP 程式語言 7.2.0 及更新版本內建 Sodium 擴充功能(稱為 ext/sodium)作為核心密碼學函式庫。PECL 中 PHP 擴充功能的第 2 版與 PHP 7.2 中的 ext/sodium 相容。
LimeSurvey 使用 Sodium Compat 函式庫來銜接不同的 PHP 版本。
此函式庫暫時支援 PHP 5.2.4 至 7.x(最新版),但官方僅支援尚未終止支援的 PHP 版本。
LimeSurvey 使用的資料加密/解密方法是基於公開金鑰簽章。公開金鑰和私密金鑰可在 /application/config/security.php 檔案中找到。金鑰會在首次使用加密功能時自動產生。
對於含有加密資料的資料庫欄位,無法進行部分字串搜尋,僅能進行完全符合的搜尋。
錯誤
使用資料加密時可能出現的錯誤:
- library doesn't exists:必須安裝 PHP Sodium 函式庫才能使用資料加密功能。以下是安裝該函式庫的指南:Sodium 安裝。如果您不想使用資料加密,則必須在屬性設定中停用加密。
- wrong decryption key:自上次儲存資料以來解密金鑰已變更,因此無法解密資料。解密資料的唯一方法是從備份中取得原始金鑰,並以原始金鑰取代目前的解密金鑰。
注意:如果「wrong decryption key」錯誤僅在 LimeSurvey 發送電子郵件時發生(例如在您完成問卷時),請前往「設定」>「全域設定」>「電子郵件設定」,重新輸入您的 SMTP 密碼並按一下「儲存」。[1]
否則,您仍可嘗試比對並從備份中復原您的解密金鑰(您有做備份吧?對吧?)。