iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0
Security

醫療數據的資安挑戰與創新解決方案系列 第 24

勒索病毒對醫療機構的威脅

  • 分享至 

  • xImage
  •  

今天的學習目標是理解勒索病毒對醫療體系的威脅,認識其運作方式(檔案加密 + 要求贖金),並學習常見防護措施如備份、漏洞修補與員工教育。同時透過簡單 Python 加密/解密模擬,體會病歷被鎖定後無法存取的危險性,加深資安意識。

一、理論重點

  1. 勒索病毒(Ransomware) 是一種惡意程式,會加密醫院伺服器或電腦檔案,阻止使用者存取,並要求支付比特幣或其他加密貨幣贖金。

  2. 醫療機構特別脆弱,因為醫療紀錄和臨床系統必須即時可用,一旦被鎖定會導致手術延誤、救護系統癱瘓。

  3. 防禦重點:

  • 定期備份 → 必須離線備份,避免也被加密。
  • 漏洞修補 → 勒索病毒常利用未更新的系統漏洞入侵。
  • 員工教育 → 防止點擊釣魚郵件。
  • 事件應變 → 建立 SOP,包含隔離受感染設備與快速還原。

二、案例分享

2017 年的 WannaCry 勒索病毒 迅速感染全球 150 多個國家,利用 Windows SMB 漏洞(EternalBlue)在網路間自動擴散,導致英國國民保健署(NHS)大規模醫療系統當機,醫院病人手術被迫取消,凸顯了資安漏洞與醫療關鍵基礎設施保護的重要性。

三、簡單程式示範

# day24_ransomware_demo.py
from cryptography.fernet import Fernet
import os

# 產生金鑰 (實際勒索病毒會把金鑰送到駭客伺服器)
key = Fernet.generate_key()
cipher = Fernet(key)

# 測試資料夾路徑 (改成你自己的)
folder = "C:/Users/a0907/Desktop/test_files"

# 確保資料夾存在
if not os.path.exists(folder):
    os.makedirs(folder)

# 遍歷資料夾中的檔案,只加密 txt
for file in os.listdir(folder):
    filepath = os.path.join(folder, file)
    if os.path.isfile(filepath) and file.endswith(".txt"):
        try:
            with open(filepath, "rb") as f:
                data = f.read()
            encrypted = cipher.encrypt(data)
            with open(filepath, "wb") as f:
                f.write(encrypted)
            print(f"已加密:{filepath}")
        except Exception as e:
            print(f"跳過檔案:{filepath},原因:{e}")

print("\n模擬完成!金鑰 (若要解密需要此金鑰):")
print(key.decode())

這段程式碼會在指定的測試資料夾中尋找 .txt 檔案並將其內容以對稱加密方式轉為不可讀的位元資料,同時產生並顯示一組解密用的金鑰;此類模擬可用於教學或演練,讓學生或團隊觀察「檔案被鎖住」的視覺效果並討論偵測、備援與還原流程,但應僅在受控的測試環境(且保留原始備份)中執行以避免真實資料損失或法律風險。執行結果如下
https://ithelp.ithome.com.tw/upload/images/20250926/20169331I5r3nqvSj5.png


上一篇
醫師登入後查詢病歷(Authorization)
系列文
醫療數據的資安挑戰與創新解決方案24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言