iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0
Security

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

醫療 IoT 裝置的資安風險

  • 分享至 

  • xImage
  •  

今日目標是了解醫療 IoT 裝置的資安風險,包含數據竄改、裝置控制與隱私外洩,並認識 FDA 警告案例的重要性。學習如何透過加密傳輸、端點安全與權限控管,降低 IoT 資安風險。最後透過 Python 範例模擬 IoT 資料加密傳輸,理解安全傳輸的重要性。

一、理論重點

  1. 醫療 IoT(Internet of Things)裝置 包含心律監測器、智慧血壓計、胰島素幫浦等,會自動收集並上傳病人數據。

  2. 資安風險:

  • 數據竄改 → 駭客可能竄改血糖數值,誤導醫生診斷。
  • 裝置控制 → 若是胰島素幫浦被駭,可能過量輸注導致昏迷或死亡。
  • 隱私外洩 → 病患生理數據可能被竊取販售。
  1. 防禦重點:
  • 端點安全:裝置必須定期更新韌體。
  • 加密傳輸:資料需透過 TLS/SSL 保護。
  • 存取控管:不同角色(醫師、病人、廠商)必須有限定權限。
  • 異常偵測:及早發現異常存取或數據異常模式。

二、案例分享

2017 年,美國 FDA 公布 Abbott 心律調節器安全漏洞,攻擊者可透過無線電信號遠端存取設備,竄改程式參數,可能導致心律不整甚至生命危險,迫使醫院緊急召回 46 萬台裝置進行韌體更新,突顯醫療 IoT 安全的迫切性。

三、簡單程式範例

server.py

# server.py
from cryptography.fernet import Fernet
from flask import Flask, request, jsonify
import json

app = Flask(__name__)

# 和 device.py 要用同一把金鑰
key = b'nEkD-a1CJMwTjTRbfi8VFIb9Bo6hLUwthb652hWEIKw=' 
cipher = Fernet(key)

@app.route('/submit_record', methods=['POST'])
def submit_record():
    try:
        data = request.json
        device_id = data.get("device_id")
        encrypted_payload = data.get("payload")

        if not device_id or not encrypted_payload:
            return jsonify({"status": "error", "message": "Missing fields"}), 400

        # 解密資料
        decrypted_bytes = cipher.decrypt(encrypted_payload.encode())
        record = json.loads(decrypted_bytes.decode())

        # 這裡可以進一步存資料庫,或做其他處理
        print(f"Received data from {device_id}: {record}")

        return jsonify({"status": "success", "record": record}), 200

    except Exception as e:
        return jsonify({"status": "error", "message": str(e)}), 500

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000, debug=True)

device.py

# device.py
from cryptography.fernet import Fernet
import requests
import json

# 和 server.py 要用同一把金鑰
key = b'nEkD-a1CJMwTjTRbfi8VFIb9Bo6hLUwthb652hWEIKw='
cipher = Fernet(key)

# 模擬一筆醫療紀錄
payload = {
    "device_id": "device-001",
    "heart_rate": 74,
    "systolic": 118,
    "diastolic": 76,
    "note": "正常"
}

# 加密 JSON
encrypted = cipher.encrypt(json.dumps(payload).encode())

# 傳送到伺服器
url = "http://127.0.0.1:8000/submit_record"
res = requests.post(url, json={
    "device_id": payload["device_id"],
    "payload": encrypted.decode()
})

print(res.status_code, res.json())

這兩個程式碼整合了一套加密傳輸的過程,device.py 模擬 IoT 裝置將醫療資料加密後傳送到伺服器,server.py 則建立 API 接收這些加密資料,解密後回傳或進一步處理,整個流程確保資料在傳輸過程中安全。執行結果如下
https://ithelp.ithome.com.tw/upload/images/20250926/20169331AR4cs71UL6.png


上一篇
未來趨勢 — AI 偵測資安異常與零信任架構
下一篇
醫療資安整合實作
系列文
醫療數據的資安挑戰與創新解決方案29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言