㈠ linux下的軟體都是開源的是吧如果是的話,是不是加密了都可以被破解的
Linux 下面的軟體不全是開源的,很多商業公司的產品都是不開源的。
很多基礎系統軟體都是 LGPL 的,只要不直接包含他們的代碼。就不需要開源。
這點對於商業軟體公司是很友好的設計。
至於加密,我可以明確告訴你,開源的加密技術,都是非常有保障的。不過加密技術主要是演算法,演算法的介紹直接去查論文就能知道。
一個保證真正安全的加密軟體,必須是開放源代碼的。因為這樣可以明確的告訴你這個軟體的演算法裡面不存在特殊設計的漏洞,不會偷偷放下什麼東西來讓「某些」人「某些」國家能輕易的拿到你的數據。
一個好的加密演算法是告訴你怎麼算,但就是沒密碼,你鐵定算不出來。
RSA 加密就是一個例子。告訴你怎麼算了,你想暴力破解?可以,去算吧。
十幾億年以後應該沒問題,把世界所有的計算機全都拉過來幹活,也要幾千年到上萬年。
㈡ 如何加密lua代碼
lua是開源軟體,所以可以自己定製。加密的簡單的方式是將lua翻譯的位元組碼加密,在執行位元組碼之前將其解密後執行即可。
㈢ java程序加密,怎麼做才安全
程序加密?你說的是代碼加密還是數據加密。我都說一下吧。
Java代碼加密:
這點因為Java是開源的,想達到完全加密,基本是不可能的,因為在反編譯的時候,雖然反編譯回來的時候可能不是您原來的代碼,但是意思是接近的,所以是不行的。
那麼怎麼增加反編譯的難度(閱讀難度),那麼可以採用多層繼承(實現)方式來解決,這樣即使反編譯出來的代碼,可讀性太差,復用性太差了。
Java數據加密:
我們一般用校驗性加密,常用的是MD5,優點是速度快,數據佔用空間小。缺點是不可逆,所以我們一般用來校驗數據有沒有被改動等。
需要可逆,可以選用base64,Unicode,缺點是沒有密鑰,安全性不高。
而我們需要可逆而且採用安全的方式是:對稱加密和非堆成加密,我們常用的有AES、DES等單密鑰和雙密鑰的方式。而且是各種語言通用的。
全部手動敲字,望採納,下面是我用Javascript方式做的一系列在線加密/解密工具:
http://www.sojson.com/encrypt.html
㈣ java代碼想加密怎麼處理
如果你說的是文本加密,有很多方法,自己也可以寫個字元變換程序
如果是代碼加密,沒用的,java就是開源。
你藏再厲害,編譯+反編譯,干凈的源碼就出來了
㈤ iOS代碼加密的幾種方式
眾所周知的是大部分iOS代碼一般不會做加密加固,因為iOS
APP一般是通過AppStore發布的,而且蘋果的系統難以攻破,所以在iOS里做代碼加固一般是一件出力不討好的事情。萬事皆有例外,不管iOS、adr還是js,加密的目的是為了代碼的安全性,雖然現在開源暢行,但是不管個人開發者還是大廠皆有保護代碼安全的需求,所以iOS代碼加固有了生存的土壤。下面簡單介紹下iOS代碼加密的幾種方式。
iOS代碼加密的幾種方式
1.字元串加密
字元串會暴露APP的很多關鍵信息,攻擊者可以根據從界面獲取的字元串,快速找到相關邏輯的處理函數,從而進行分析破解。加密字元串可以增加攻擊者閱讀代碼的難度以及根據字元串靜態搜索的難度。
一般的處理方式是對需要加密的字元串加密,並保存加密後的數據,再在使用字元串的地方插入解密演算法。簡單的加密演算法可以把NSString轉為byte或者NSData的方式,還可以把字元串放到後端來返回,盡量少的暴露頁面信息。下面舉個簡單例子,把NSString轉為16進制的字元串:
2.符號混淆
符號混淆的中心思想是將類名、方法名、變數名替換為無意義符號,提高應用安全性;防止敏感符號被class-mp工具提取,防止IDA Pro等工具反編譯後分析業務代碼。目前市面上的IOS應用基本上是沒有使用類名方法名混淆的。
別名
在編寫代碼的時候直接用別名可能是最簡單的一種方式,也是比較管用的一種方式。因為你的app被破解後,假如很容易就能從你的類名中尋找到蛛絲馬跡,那離hook只是一步之遙,之前微信搶紅包的插件應該就是用hook的方式執行的。
b.C重寫
編寫別名的方式不是很易讀,而且也不利於後續維護,這時你可能需要升級一下你的保護方式,用C來重寫你的代碼吧。這樣把函數名隱藏在結構體中,用函數指針成員的形式存儲,編譯後,只留下了地址,去掉了名字和參數表,讓他們無從下手( from 念茜)。如下例子:
c.腳本處理
稍微高級一點的是腳本掃描處理替換代碼,因為要用到linux命令來編寫腳本,可能會有一點門檻,不過學了之後你就可以出去吹噓你全棧工程師的名頭啦。。。
linux腳本比較常用的幾個命令如下:
腳本混淆替換是用上述幾個命令掃描出來需要替換的字元串,比如方法名,類名,變數名,並做替換,如果你能熟練應用上述幾個命令,恭喜你,已經了解了腳本的一點皮毛了。
如以下腳本搜索遍歷了代碼目錄下的需要混淆的關鍵字:
替換的方式可以直接掃描文件並對文件中的所有內容替換,也可以採用define的方式定義別名。例如:
d.開源項目ios-class-guard
該項目是基於class-mp的擴展,和腳本處理類似,是用class-mp掃描出編譯後的類名、方法名、屬性名等並做替換,只是不支持隱式C方法的替換,有興趣的同學可以使用下。
3.代碼邏輯混淆
代碼邏輯混淆有以下幾個方面的含義:
對方法體進行混淆,保證源碼被逆向後該部分的代碼有很大的迷惑性,因為有一些垃圾代碼的存在;
對應用程序邏輯結構進行打亂混排,保證源碼可讀性降到最低,這很容易把破解者帶到溝里去;
它擁有和原始的代碼一樣的功能,這是最最關鍵的。
一般使用obfuscator-llvm來做代碼邏輯混淆,或許會對該開源工具做個簡單介紹。
4.加固SDK
adr中一般比較常見的加固等操作,iOS也有一些第三方提供這樣的服務,但是沒有真正使用過,不知道效果如何。
當然還有一些第三方服務的加固產品,基本上都是採用了以上一種或幾種混淆方式做的封裝,如果想要直接可以拿來使用的服務,可以採用下,常用的一些服務如下:
幾維安全
iOS加密可能市場很小,但是存在必有道理,在越獄/開源/極客的眼中,你的APP並沒有你想像的那麼安全,如果希望你的代碼更加安全,就應給iOS代碼加密。
㈥ 源代碼防泄密,有哪種技術手段
可以看下源代碼防泄密系統NGCLP,下一代代碼防泄密技術
㈦ 使用python語言如何保密源代碼以防止逆向工程
大家都很忙,誰有時間看你的的爛代碼!
如果真的怕泄露,別用python.
我以前做過這類事情,而且當時更嚴格,需要打包部署到客戶的服務只在有效期內有效,超過有效期必須更新證書才行。
Python代碼用任何方法都沒法保證保密性,這個時候你可以考慮用一個工具「nuitka」,這個工具會把你的python源代碼映射為c++然後編譯為二進制,因此對方是無論如何得不到你的源代碼的。
代價就是nuitka這個工具並不完美,有一些限制並不能100%完美的轉換所有python代碼。
1.用Cython編譯python成 Windows的pyd文件或Linux的so文件,二進制文件相對安全性較高。
2.用源碼混淆器把代碼搞的又臭又長。。。混淆完了再用Cython編譯為二進制。。。這樣靜態反編譯逆向難度也不小。
3.同其他語言程序一樣,可以對調試狀態進行檢測,當處於調試狀態時退出程序或進入混亂代碼耗費逆向工程人員心神。
4.分享一個跨平台反調試手段,檢測函數運行時間,加斷點會導致函數運行時間變長,也可感知正在被調試。
Python是提倡開源的,既然選擇Python還是擁抱開源才好~ 都開源還擔心逆向工程嘛
沒有不能逆的軟體。
只要匯編語言過關,逆向工程都是可以實現的,不要有其它想法。
你唯一可以做的,就是不讓別人用python讀取源代碼而已。那樣實現起來比較簡單。
python 適合開發伺服器程序,或者自己科研使用的程序,如果是 作為用戶程序,安裝到 pc 或手機上,還是 其它 c++ 或java 比較合適
1)可以把需要保護的部分用c語言實現,從而編譯成so等文件,這樣逆向的成本會比較高,可以防止直接打開python文件看到代碼邏輯。
2)so文件通過ida等工具也是可以反匯編的,可以通過對c語言進行代碼混淆,花指令等操作,提高通過ida等反匯編工具的分析難度。
3)不存在絕對無法逆向的技術手段,因此只能是看具體需求,選擇具體的防逆向的技術手段。
有工具類似py2exe轉成可執行程序,隱藏全部源代碼,雖然bytecode還是可以反編譯,但是難度大多了
1. 最穩的就是你改cpython載入代碼的過程,改zip包讀取最穩。
2. 藉助一些加密工具在編譯pyc之前進行一定的混淆,可以防君子,自我安慰一下。
商用一般都是用第一種辦法,小打小鬧用第二種。
可以考慮使用pymod工具,使用pymod pack 將模塊加密打包,發布的時候一個模塊就一個文件。
先睹為快,看看一個項目發布的時候,只有幾個文件,
main.py 項目程序入口
setting.py 項目配置
apps 項目模塊
plusins 項目插件目錄
創建項目 pymod create demo1
cd demo1
創建模塊 pymod add mod1
啟動pycharm 開始編寫功能模塊
一個模塊默認由三個文件組成
__init__.py 、 handlers.py 、param_schemas.py
業務邏輯主要在handlers.py中編寫
__init__.py
from pymod.blueprint import Blueprint api = Blueprint("/mod1") from .handlers import *
param_schemas.py
schema_sfz = { "type": "object", "required": ["sfz", "nl"], "properties": { "sfz": { "type": "string", "minLength": 18, "maxLength": 18, "description": "身份證明號碼" }, "nl": { "type": "integer", "minimum": 0, "maximum": 150, "description": "年齡" } } }
handlers.py
from . import api from pymod.ext import RequestHandler, params_validate,TrueResponse,FalseResponse from .param_schemas import schema_sfz from pymod.plugins import sfz_check @api.add_route('/hello') class Hello(RequestHandler): def get(self): self.write('Hello World') @params_validate(schema_sfz) def post(self): sfz = self.get_json_arg("sfz") nl =self.get_json_arg("nl") # self.write(TrueResponse(sfz=sfz, nl=nl)) if sfz_check.check_sfzmhm(sfz): self.write(TrueResponse(hint="身份證明號碼驗證通過")) else: self.write(FalseResponse(hint="身份證明號碼驗證失敗"))
三、項目部署
程序調試 修改setting.py
# 開發模式下 運行的模塊名稱必須填寫
moles = ["mod1"] moles_config ={ "mod1": { "deny_ip": "", "allow_ip": "*" } }
啟動程序 python main.py
調試沒有問題,進入發布模式
在項目目錄下
pymod pack mod1
在target目錄下生成mod1.mod文件,將其復制到apps目錄中
修改setting.py
# 開發模式下 運行的模塊名稱必須填寫
moles = []
再次運行 python main.py 測試
一切OK,系統就可以發布了。
說不能保密的,是沒有研究過python的機制的。我做個一個項目,所有源代碼自定義加密,運行時解密。
㈧ 公司如何保護源代碼不被員工泄漏
您好。感謝您給我這次回答的機會。
首先,我認為這個有兩種方法,看你怎麼選。
第一種:
限制代碼庫只能在公司內網訪問,公司之外懷能下載代碼;
限制只能用公司的電腦下載代碼、編寫代碼、提交代碼;
限制訪問代碼庫的許可權,發人員不授予訪問和自己不相關代碼庫的許可權;
能訪問代碼的電腦上安裝監控軟體,號稱可以監控所有員工活動;
設置公司網路防火牆,禁止訪問github這樣的開源網站;
把上面所有的規矩記錄下來,教育員工知道,讓他們簽字畫押必須遵守,鈑者開除而且報警。
第二種:
招募受過良好教育、品行良好、專業團隊工作經驗的開發者;
對開發者友善,讓他們不會對公司心懷怨恨;
把開發者的利益和公司利益關聯起來,讓他們不想為了蠅頭小利犧牲公司利益。
其次,你可能不知道的東西。
1.絕大部分的公司(bat另說) 手中的源代碼商業價值根本不高。
2.絕大部分的公司的源碼質量都比不過github的哪些開源類庫。
3.絕大部分的公司的源碼都屬於高度定製化的開發(就是換個公司,這個軟體幾乎就沒有什麼價值了)。
4.絕大部分的公司都不是靠「軟體技術」賺錢的。
5.絕大部分的人都不會傻到直接把偷來的源碼用於「商業活動」(非但不一定賺錢還可能吃官司,還不如去github上扒開源代碼)
6."防禦"的成本數倍於"重新開發一套"軟體.
所以看淡一點源碼,它在絕大多數公司中其實並不值」幾個錢「雖然它的創造成本可能」很貴「。
所以說,這些東西掌握以後,就基本上不用擔心代碼被泄露了。
理論上做到公司電腦無法和外界連通,進出人員不得攜帶任何外設就可以徹底解決代碼泄漏的問題。但是商業公司比較難做到。下面我們來的分析一下員工有沒必要竊取代碼,有沒能力竊取到下完整的代碼。
現在有一定規模的公司應用都是服務化的,不同的小組負責不同的服務,有各自的代碼查看許可權。所以一個或者幾個程序員無法拿到全部代碼。
超大規模的應用就更復雜了,有前台,中台,後台,APP等,架構也極其復雜,就算某個程序員獲得到了全部代碼,也沒有能力搭建並運行起來。
小規模公司的代碼基本都是業務邏輯代碼,泄不泄漏可能也沒有太大關系。
防止別人偷拿代碼是很難的,倒不如加強企業文化,提高員工的職業素養。尊重是互相的,做到用人不疑,我想大部分人也不會以怨報德。
說說我們公司是怎麼做的吧:
1. 封了網路文庫、網路網盤、CSDN等網站凡是能上傳文件的網站,我們公司都封了,這樣就防止員工把內部文件上傳到這些網站被泄密。但是這樣做的一個後果就是員工想查一些資料,在這些網站都打不開,只能用自己的手機去查了,造成了一些工作的不便。
2. 封了USB、藍牙介面,以及光碟機凡是能從電腦上拷貝文件到外部的介面,我們公司都封了,這樣員工就無法把公司的文件拷到外面了,避免了泄密。這樣做的後果也給我們帶來了一些工作上的不便。比如以前我們做藍牙測試的時候,需要把測試的App拷貝到手機上舊非常困難。後來公司了解了我們的困難,允許我們提申請,經過上級領導的批准後,可以給電腦開通USB許可權,但是拷貝的內容也是被公司監控,所以也只能拷貝需要的內容。申請的時候有選擇開通的時間,到期後,USB許可權自動關閉了。
3. 禁止將公司電腦帶出公司為了防止員工私下裡想辦法把公司電腦的文件拷走,公司禁止把電腦帶出辦公室。如果需要帶電腦去客戶那裡,則需要向公司提出申請,申請的時候也要選擇帶出和帶回的時間,這樣基本上就杜絕了員工泄密的可能。如果員工在外出途中丟失了電腦,這就會成為一個大事件,會匯報到公司最高層,對員工個人的影響也很大。公司有一套流程專門應對這類事件。曾經我們公司有人帶電腦去客戶那裡,跟客戶吃飯喝醉了,打車回家把電腦弄丟了,引起了很大的後果,這個事經常會作為事例來教育全體員工。
4. 電腦里安裝監控軟體公司的電腦里都安裝有監控軟體,網管可以監控到每一台電腦。員工在電腦上列印,發傳真、發郵件這些活動都受到監控。列印機也能看到每個人列印、傳真的內容。員工如果有泄密的行為都可以及時監控到。至於員工對著電腦拍照,公司應該也能檢測到。所以公司的電腦不要做一些私人的事情,很容易被監控到。
5. 封了QQ、微信等可以傳輸文件的社交軟體QQ、微信這類可以傳遞文件的社交軟體在公司的電腦上是不能安裝的,也防止了員工通過這些軟體把文件傳輸到外面。公司內部只能使用微軟自帶的聊天工具Lync,這個軟體也不能傳輸文件,只能聊天。如果公司內部需要傳輸文件,只能用公司的伺服器或者郵件。有些大的文件,只能盡量壓縮,否則傳輸會非常不方便。
6. 禁止員工安裝公司允許之外的軟體嚴格監控員工的軟體安裝列表。公司給出了允許安裝的軟體列表,超出范圍的安裝軟體會被監控到,讓員工刪除掉。這樣員工無法安裝一些上傳文件的軟體了,防止泄密了。員工也不能隨意從網路上下載安裝文件,防止一些木馬病毒藏在軟體里,盜取公司文件。
公司防止員工泄密的手段是很多的,每年還要對員工進行安全教育,規范員工的行為。
虛擬化桌面伺服器,使用虛擬桌面和瘦客戶機,瘦客戶機禁止usb存儲。瘦客戶機不能聯網但可以連虛擬化伺服器,伺服器不能連外網。單獨設立一台機器可以聯網,也可以連接一台ftp虛擬機(虛擬化伺服器中的FTP用於內外網共享文件),聯網機器下載的東西了上傳到ftp供其他桌面虛擬機使用。桌面虛擬機上傳的文件需要管理員通過才能被這台外網機器看到下載。
1,不允許攜帶電子設備進入工作區域,進門經過金屬探測。
2,公司電腦不允許連接外網。
3,封死USB等外設介面。
4,機箱鎖死,防止拆硬碟。
5,安裝攝像頭對准每一個工位,一旦發現使用拍照設備等,進行相應處罰。
這幾個只有一起用才能完全防止泄露,否則都有辦法。
你去看看某研究院的一些規章。禁止筆記本等帶入,不小心帶入了,對不起,設備留置24小時,徹底格式化。手機,存儲設備也一樣禁止帶入。開發機全部內網。沒有WIFI,滑鼠鍵盤全部有線,粘死。機箱上鎖。USB等介面全部封掉。人員許可權限制,絕大部分人員不能下載全部代碼。
首先管理層面,領導要重視信息安全,然後按照iso27000系列信息安全標准去做。信息安全和物理安全是要互相配合的。辦公區要根據安全級別設置不同的管理措施,信息資產要根據價值設置不同的標簽,區分關鍵資產和非關鍵資產,另外信息資產只能有一個出口要經過審批後才能出去。技術層面的措施也可以用,但是不能亂用。另外開發環境安全可以參考15408的站點審查部分。
防止不了,有合作公司管理嚴格,我們都用手機拍照溝通,所以除非禁用手機和一切拍照設備,否則都給你拍出來。
我覺吧吧,關鍵是人。而不是制度。
這么說吧,光有源代碼屁也不是。要是沒人build都困難。別說上線和運行了。
所以,你要是選信任的人,而不是選信任的方法。那麼就算別人真偷了,拿一堆源代碼回去,都沒辦法build,有什麼用?
反之,就算沒有源代碼。人家拍拍屁股走人。然後還他媽實現,你有什麼辦法?