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' "來判斷資料庫查詢語句是夠能夠得到有效查詢,如果查詢有效,則表示金鑰正確,繼續後續的相關處理,否則金鑰錯誤,刪除當前檔案,重新建立資料庫進行後續的操作。
相關文章
- Go Web 程式設計--應用資料庫GoWeb程式設計資料庫
- Go Web 程式設計入門--應用資料庫GoWeb程式設計資料庫
- 本地金鑰的安全
- 資料分析計算工具:Stata 15金鑰啟用版
- 譯:原生iOS應用程式和原生Android應用程式設計之間的差異iOSAndroid程式設計
- 處理XML資料應用實踐XML
- 明確應用程式型別與資料庫結構設計型別資料庫
- 構建RAG應用-day01: 詞向量和向量資料庫 文件預處理資料庫
- C語言程式設計練習 GPS資料處理C語言程式設計
- 小窺TeslaCrypt金鑰設計
- 獲取安卓中加密資料庫的金鑰安卓加密資料庫
- win10金鑰過期怎麼辦_windows10金鑰過期如何處理Win10Windows
- 大型Electron應用本地資料庫技術選型資料庫
- 區塊鏈應用的金鑰管理區塊鏈
- 資料庫實驗五:資料庫程式設計資料庫程式設計
- 資料庫實驗八 資料庫程式設計資料庫程式設計
- 好程式設計師大資料培訓分享Hadoop怎樣處理資料?程式設計師大資料Hadoop
- 比特幣學習筆記————附錄3 pycoin庫、實用金鑰程式ku和交易程式tx比特幣筆記
- Excel高階應用教程:資料處理與資料分析Excel
- 資料清洗和資料處理
- Blazor WebAssembly 漸進式 Web 應用程式 (PWA) 離線處理資料BlazorWeb
- 【資料庫設計】資料庫的設計資料庫
- Python SQLite資料庫程式設計PythonSQLite資料庫程式設計
- 42. 資料庫程式設計資料庫程式設計
- 金鑰和證書,純理論介紹篇
- 谷歌新功能上線:Android手機可作為iOS應用的安全金鑰谷歌AndroidiOS
- Beyond Compare 4金鑰啟用Mac版最新4.4.7「相容macos14」Mac
- pandas 處理資料和crc16計算
- 【web】資料庫應用系統設計體系結構Web資料庫
- 處理Maven本地倉庫.lastUpdated檔案MavenAST
- Python(簡單圖形和檔案處理)程式設計Python程式設計
- Go Web 程式設計之 資料庫GoWeb程式設計資料庫
- 抽獎小程式資料庫設計資料庫
- 好程式設計師大資料培訓分享大資料的應用程式設計師大資料
- Python 黑帽程式設計 4.2 Sniffer 之資料本地儲存和載入Python程式設計
- 大資料處理的關鍵技術及應用大資料
- Python資料庫程式設計全指南SQLite和MySQL實踐Python資料庫程式設計SQLiteMySql
- Spring 學習筆記(6)Spring和資料庫程式設計Spring筆記資料庫程式設計