簡體   English   中英

加密密鑰:可以使用混淆嗎?

[英]Encryption key: Can I use obfuscation?

我正在為某人構建一個iOS應用。 該應用程序將用於進行模擬考試以獲得專業許可。 問題數據存儲在Core Data中,但是問題和答案字符串需要加密,因為客戶花費大量時間編寫它們,並且不希望其他人竊取他的作品以在競爭產品中使用。

因此,我要做的是將核心數據中的屬性設置為可轉換,使用自定義NSValueTransformer將字符串轉換為NSData,然后在轉換字符串時使用RNEncrypt進行加密和解密。

到現在為止還挺好。

這是我的困境:我需要使用密鑰來加密和解密數據,但是如何獲取/創建數據呢?

我的選擇:

  • 硬編碼==不好!
  • 生成密鑰並將其存儲在鑰匙串中==不是正確的安全性類型。 即。 不能保護設備所有者。
  • 從用戶密碼生成密鑰==沒有其他原因讓用戶必須登錄。
  • 該應用程序連接到服務器並獲取帶有一些身份驗證內容的密鑰(我不知道確切涉及的內容)==我不想依靠網絡連接來使該應用程序正常工作。
  • 混淆,我覺得如果我從其他字符串和方法sig的某個位創建一個字符串,然后對其進行哈希處理,那就足夠了==可能不會。

我的問題是:-迷惑,足夠了嗎,其他人成功了嗎? -從我的研究中,我了解到擁有ipa的黑客可以看到所有硬編碼的字符串,類名和方法信號,但是他們看不到方法內部的代碼(是正確的嗎?),所以有人怎么讀關鍵,如果它是建立在方法內部/生成的? -作為標題,我可以使用混淆嗎? -我有錯過的任何選擇嗎?

作為記錄,如果需要的話,我將讓人們注冊和登錄。

不能在本地安全地存儲數據 一旦您能夠解密它,攻擊者也可以。 這適用於每種加密技術。 無論您嘗試什么。

您必須為服務器上的每個數據點存儲數據或不同的解密密鑰,並每次都一次一個地檢索它。 您還必須確保用戶不僅發送100個請求,而且手工檢索所有數據。

請注意,僅將一個密鑰存儲在服務器上將導致與在應用程序中進行硬編碼完全相同的操作。 不限制請求只會導致攻擊者比查看已解密的本地數據庫需要更多的時間。

當然,你可以混淆它,使其看起來像它有它背后的一些好的加密-但如果有人想要得到的數據,他就可以。

關於IPA中的代碼:您將無法看到原始代碼,但是將能夠看到一些與原始代碼產生相同輸出的代碼。 只要設備可以產生有效密鑰,攻擊者也可以。

我不知道是否有一個龐大的社區正在尋找隨機應用程序來竊取其一些內部問題/答案/數據,我對此表示懷疑。

您只需要使產品好極了,就不會有任何具有相同數據的競爭產品都反對它。 數據本身總是可以被“竊取”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM