iOS和macOS應用程式本地資料庫金鑰處理設計
對於使用者隱私資料需要儲存到資料庫中,並要對資料庫進行加密,那麼如何設定金鑰保證資料庫加密是一個至關重要的問題。
在不考慮相關黑客或白客通過逆向的情況下,我的主要策略如下: 金鑰長度足夠的長 如果一個資料庫的金鑰特別的長,就會增加破解的難度,如果長度保持在一二百位的話,暴力破解的時間會大大加長。 不同裝置間金鑰各不相同 雖然其他人可能破解到了一個裝置的金鑰,但是如果不同裝置之間的金鑰各不相同,那麼破解了其中一個裝置的金鑰後,再去破解另外一個裝置金鑰的難度不會減少,由於iOS和macOS之間系統開發程度的不同,採取不一樣的策略
系統名稱| keychain說明 | 裝置唯一標識說明 - | :-: | -: iOS | 可以直接進行keychain的儲存,在不越獄的情況下不可以通過其他程式獲取 | 涉及使用者隱私,無法讀取 macOS | 如果使用,彈出對話方塊詢問使用者是否允許使用,體驗性差 | 可以獲取到裝置的UDID、裝置號、Mac地址
實現
通過對以上情況進行分析,可以針對iOS設計出來隨機字串和固定字串相結合、不同裝置之間金鑰各不相同、金鑰長度長到難以破解的程度,針對Mac設計出來*不同裝置之間金鑰各不相同、金鑰長度難以破解的程度,具體實現方案如下:
iOS
1、生成一個由200個拼音和數字拼接而成的隨機字串,作為temp1,儲存到keychain裡面 2、程式中寫死一個固定字串,作為key 3、以key為金鑰將temp1進行RC4加密,生成一個新的200位的字串temp2作為資料庫金鑰 在使用過程中,針對第一步先要檢視本地keychain中是否存在temp1,如果存在直接進入第二步,如果不存在則重新生成。
Mac
1、將Mac裝置的UDID作為key 2、程式中寫死一個200位的固定字串,作為temp1 3、按照iOS的加密策略,生成一個長度比較長的字串,作為資料庫的金鑰
開啟資料庫後,可以通過SQL語句"SELECT name FROM sqlite_master WHERE type='table' "來判斷資料庫查詢語句是夠能夠得到有效查詢,如果查詢有效,則表示金鑰正確,繼續後續的相關處理,否則金鑰錯誤,刪除當前檔案,重新建立資料庫進行後續的操作。
相關文章
- SQL Server 和資料庫加密金鑰SQLServer資料庫加密
- 建立SQL Server 和資料庫加密金鑰SQLServer資料庫加密
- Go Web 程式設計--應用資料庫GoWeb程式設計資料庫
- java程式設計之:生成rsa金鑰Java程式設計
- Go Web 程式設計入門--應用資料庫GoWeb程式設計資料庫
- 資料分析計算工具:Stata 15金鑰啟用版
- 獲取安卓中加密資料庫的金鑰安卓加密資料庫
- iOS空資料處理iOS
- 處理XML資料應用實踐XML
- win10金鑰過期怎麼辦_windows10金鑰過期如何處理Win10Windows
- 資料庫響應慢問題處理資料庫
- 區塊鏈應用的金鑰管理區塊鏈
- 非Access資料庫在VB的程式設計及應用 (轉)資料庫程式設計
- 明確應用程式型別與資料庫結構設計型別資料庫
- 構建RAG應用-day01: 詞向量和向量資料庫 文件預處理資料庫
- 【轉】設計一個iOS應用的本地快取機制iOS快取
- 應用:資料預處理-缺失值填充
- 譯:原生iOS應用程式和原生Android應用程式設計之間的差異iOSAndroid程式設計
- 用SQL Server資料庫處理資料層錯誤SQLServer資料庫
- 資料庫無響應問題的緊急處理和分析資料庫
- 適用於iOS的應用程式程式設計指南(七)iOS程式設計
- 大型Electron應用本地資料庫技術選型資料庫
- 金鑰和證書,純理論介紹篇
- C語言程式設計練習 GPS資料處理C語言程式設計
- Excel高階應用教程:資料處理與資料分析Excel
- 理一下 iOS 本地持久化儲存(側重資料庫SQLite)iOS持久化資料庫SQLite
- 簡析J2EE應用程式資料庫類設計模式 (轉)資料庫設計模式
- 資料清洗和資料處理
- 資料庫實驗八 資料庫程式設計資料庫程式設計
- 資料庫實驗五:資料庫程式設計資料庫程式設計
- Beyond Compare 4金鑰啟用Mac版最新4.4.7「相容macos14」Mac
- 用Python實現資料庫程式設計 (轉)Python資料庫程式設計
- 比特幣學習筆記————附錄3 pycoin庫、實用金鑰程式ku和交易程式tx比特幣筆記
- Blazor WebAssembly 漸進式 Web 應用程式 (PWA) 離線處理資料BlazorWeb
- 資料庫壞塊處理資料庫
- zabbix資料庫日常處理資料庫
- 用python處理文字,本地檔案系統以及使用資料庫的知識基礎Python資料庫
- 用PowerDesigner設計資料庫資料庫