當前位置:首頁 » 密碼管理 » 白盒加密解密

白盒加密解密

發布時間: 2023-02-11 01:47:24

Ⅰ 軟體加密與解密的目錄

《軟體加密與解密》
第1章 什麼是隱蔽軟體 1
1.1 概述 1
1.2 攻擊和防禦 5
1.3 程序分析的方法 6
1.4 代碼混淆 11
1.4.1 代碼混淆的應用 13
1.4.2 混淆技術概述 17
1.4.3 被黑客們使用的代碼混淆技術 21
1.5 防篡改技術 27
1.5.1 防篡改技術的應用 27
1.5.2 防篡改技術的例子 29
1.6 軟體水印 30
1.6.1 軟體水印的例子 32
1.6.2 攻擊水印系統 34
1.7 軟體相似性比對 36
1.7.1 代碼剽竊 36
1.7.2 軟體作者鑒別 37
1.7.3 軟體「胎記」 38
1.7.4 軟體「胎記」的案例 40
.1.8 基於硬體的保護技術 41
1.8.1 把硬體加密鎖和軟體一起發售 42
1.8.2 把程序和cpu綁定在一起 43
1.8.3 確保軟體在安全的環境中執行 43
1.8.4 加密可執行文件 44
1.8.5 增添物理防護 45
1.9 小結 46
1.9.1 使用軟體保護技術的理由 46
1.9.2 不使用軟體保護技術的理由 47
1.9.3 那我該怎麼辦呢 47
1.10 一些說明 48
第2章 攻擊與防禦的方法 49
2.1 攻擊的策略 50
2.1.1 被破解對象的原型 50
2.1.2 破解者的動機 52
2.1.3 破解是如何進行的 54
2.1.4 破解者會用到的破解方法 55
2.1.5 破解者都使用哪些工具 58
2.1.6 破解者都會使用哪些技術 59
2.1.7 小結 69
2.2 防禦方法 70
2.2.1 一點說明 71
2.2.2 遮掩 73
2.2.3 復制 75
2.2.4 分散與合並 78
2.2.5 重新排序 80
2.2.6 映射 81
2.2.7 指引 84
2.2.8 模仿 85
2.2.9 示形 87
2.2.10 條件—觸發 88
2.2.11 運動 90
2.2.12 小結 91
2.3 結論 92
2.3.1 對攻擊/防禦模型有什麼要求 92
2.3.2 該如何使用上述模型設計演算法 93
第3章 分析程序的方法 94
3.1 靜態分析 95
3.1.1 控制流分析 95
3.1.2 數據流分析 103
3.1.3 數據依賴分析 107
3.1.4 別名分析 109
3.1.5 切片 115
3.1.6 抽象解析 116
3.2 動態分析 118
3.2.1 調試 118
3.2.2 剖分 129
3.2.3 trace 132
3.2.4 模擬器 135
3.3 重構源碼 137
3.3.1 反匯編 139
3.3.2 反編譯 146
3.4 實用性分析 155
3.4.1 編程風格度量 156
3.4.2 軟體復雜性度量 158
3.4.3 軟體可視化 159
3.5 小結 162
第4章 代碼混淆 163
4.1 保留語義的混淆轉換 164
4.1.1 演算法obfcf:多樣化轉換 164
4.1.2 演算法obftp:標識符重命名 170
4.1.3 混淆的管理層 173
4.2 定義 177
4.2.1 可以實用的混淆轉換 178
4.2.2 混淆引發的開銷 181
4.2.3 隱蔽性 181
4.2.4 其他定義 182
4.3 復雜化控制流 183
4.3.1 不透明表達式 183
4.3.2 演算法obfwhkd:壓扁控制流 184
4.3.3 使用別名 186
4.3.4 演算法obfctjbogus:插入多餘的控制流 191
4.3.5 演算法obfldk:通過跳轉函數執行無條件轉移指令 195
4.3.6 攻擊 198
4.4 不透明謂詞 201
4.4.1 演算法obfctjpointer:從指針別名中產生不透明謂詞 202
4.4.2 演算法obfwhkdopaque:數組別名分析中的不透明值 204
4.4.3 演算法obfctjthread:從並發中產生的不透明謂詞 205
4.4.4 攻擊不透明謂詞 207
4.5 數據編碼 211
4.5.1 編碼整型數 213
4.5.2 混淆布爾型變數 217
4.5.3 混淆常量數據 220
4.5.4 混淆數組 222
4.6 結構混淆 226
4.6.1 演算法obfwcsig:合並函數簽名 226
4.6.2 演算法obfctjclass:分解和合並類 229
4.6.3 演算法obfdmrvsl:摧毀高級結構 232
4.6.4 演算法obfajv:修改指令編碼方式 239
4.7 小結 243
第5章 混淆理論 245
5.1 定義 248
5.2 可被證明是安全的混淆:我們能做到嗎 249
5.2.1 圖靈停機問題 250
5.2.2 演算法reaa:對程序進行反混淆 252
5.3 可被證明是安全的混淆:有時我們能做到 254
5.3.1 演算法obflbs:混淆點函數 254
5.3.2 演算法obfns:對資料庫進行混淆 261
5.3.3 演算法obfpp:同態加密 263
5.3.4 演算法obfcejo:白盒des加密 267
5.4 可被證明是安全的混淆:(有時是)不可能完成的任務 272
5.4.1 通用混淆器 273
5.4.2 混淆最簡單的程序 276
5.4.3 對混淆所有程序的不可能性的證明 277
5.4.4 小結 278
5.5 可被證明為安全的混淆:這玩兒還能成嗎 279
5.5.1 跳出不可能性的陰霾 280
5.5.2 重新審視定義:構造互動式的混淆方法 281
5.5.3 重新審視定義:如果混淆不保留語義又當如何 283
5.6 小結 286
第6章 動態混淆 288
6.1 定義 290
6.2 代碼遷徙 292
6.2.1 演算法obfkmnm:替換指令 293
6.2.2 演算法obfagswap:自修改狀態機 296
6.2.3 演算法obfmamdsb:動態代碼合並 307
6.3 加密技術 311
6.3.1 演算法obfcksp:把代碼作為產生密鑰的源泉 312
6.3.2 演算法obfagcrypt:結合自修改代碼和加密 318
6.4 小結 324
第7章 軟體防篡改 325
7.1 定義 327
7.1.1 對篡改的監測 328
7.1.2 對篡改的響應 331
7.1.3 系統設計 332
7.2 自監測 333
7.2.1 演算法tpca:防護代碼之網 335
7.2.2 生成hash函數 338
7.2.3 演算法tphmst:隱藏hash值 342
7.2.4 skype中使用的軟體保護技術 349
7.2.5 演算法rewos:攻擊自hash演算法 352
7.2.6 講評 356
7.3 演算法retcj:響應機制 357
7.4 狀態自檢 360
7.4.1 演算法tpcvcpsj:易遭忽視的hash函數 362
7.4.2 演算法tpjjv:重疊的指令 365
7.5 遠程防篡改 368
7.5.1 分布式監測和響應機制 368
7.5.2 解決方案 369
7.5.3 演算法tpzg:拆分函數 369
7.5.4 演算法tpslspdk:通過確保遠程機器硬體配置來防篡改 372
7.5.5 演算法tpcns:對代碼進行持續的改變 375
7.6 小結 376
第8章 軟體水印 378
8.1 歷史和應用 378
8.1.1 應用 379
8.1.2 在音頻中嵌入水印 382
8.1.3 在圖片中嵌入水印 383
8.1.4 在自然語言文本中嵌入水印 384
8.2 軟體水印 387
8.3 定義 388
8.3.1 水印的可靠性 389
8.3.2 攻擊 391
8.3.3 水印與指紋 392
8.4 使用重新排序的方法嵌入水印 392
8.4.1 演算法wmdm:重新排列基本塊 394
8.4.2 重新分配資源 396
8.4.3 演算法wmqp:提高可靠性 397
8.5 防篡改水印 400
8.6 提高水印的抗干擾能力 403
8.7 提高隱蔽性 408
8.7.1 演算法wmmimit:替換指令 409
8.7.2 演算法wmvvs:在控制流圖中嵌入水印 409
8.7.3 演算法wmcc:抽象解析 416
8.8 用於隱寫術的水印 421
8.9 把水印值分成幾個片段 425
8.9.1 把大水印分解成幾個小片段 426
8.9.2 相互冗餘的水印片段 427
8.9.3 使用稀疏編碼提高水印的可靠性 432
8.10 圖的編/解碼器 432
8.10.1 父指針導向樹 433
8.10.2 底數圖 433
8.10.3 排序圖 434
8.10.4 根延伸的平面三叉樹枚舉編碼 434
8.10.5 可歸約排序圖 435
8.11 講評 436
8.11.1 嵌入技術 437
8.11.2 攻擊模型 438
第9章 動態水印 439
9.1 演算法wmct:利用別名 443
9.1.1 一個簡單的例子 443
9.1.2 水印識別中的問題 445
9.1.3 增加數據嵌入率 447
9.1.4 增加抵禦攻擊的抗干擾性能 452
9.1.5 增加隱蔽性 455
9.1.6 講評 458
9.2 演算法wmnt:利用並發 459
9.2.1 嵌入水印的基礎構件 462
9.2.2 嵌入示例 467
9.2.3 識別 469
9.2.4 避免模式匹配攻擊 470
9.2.5 對構件進行防篡改處理 471
9.2.6 講評 473
9.3 演算法wmccdkhlspaths:擴展執行路徑 474
9.3.1 水印的表示和嵌入 474
9.3.2 識別 479
9.3.3 講評 480
9.4 演算法wmccdkhlsbf:防篡改的執行路徑 481
9.4.1 嵌入 481
9.4.2 識別 484
9.4.3 對跳轉函數進行防篡改加固 484
9.4.4 講評 485
9.5 小結 486
第10章 軟體相似性分析 489
10.1 應用 490
10.1.1 重復代碼篩選 490
10.1.2 軟體作者鑒別 492
10.1.3 剽竊檢測 495
10.1.4 胎記檢測 496
10.2 定義 497
10.3 基於k-gram的分析 501
10.3.1 演算法ssswawinnow:有選擇地記錄k-gram hash 501
10.3.2 演算法ssswamoss:軟體剽竊檢測 504
10.3.3 演算法ssmckgram:java 位元組碼的k-gram「胎記」 507
10.4 基於api的分析 509
10.4.1 演算法sstnmm:面向對象的「胎記」 510
10.4.2 演算法sstonmm:動態函數調用「胎記」 512
10.4.3 演算法sssdl:動態k-gram api「胎記」 513
10.5 基於樹的分析 514
10.6 基於圖的分析 518
10.6.1 演算法sskh:基於pdg的重復代碼篩選 518
10.6.2 演算法sslchy:基於pdg的剽竊檢測 521
10.6.3 演算法ssmcwpp:整個程序的動態「胎記」 522
10.7 基於軟體度量的分析方法 525
10.7.1 演算法sskk:基於軟體度量的重復代碼篩選 525
10.7.2 演算法sslm:基於度量的軟體作者鑒別 527
10.8 小結 532
第11章 用硬體保護軟體 534
11.1 使用發行的物理設備反盜版 535
11.1.1 對發行碟片的保護 536
11.1.2 軟體狗和加密鎖 541
11.2 通過可信平台模塊完成認證啟動 545
11.2.1 可信啟動 546
11.2.2 產生評估結果 548
11.2.3 tpm 550
11.2.4 盤問式驗證過程 551
11.2.5 社會可信性和隱私問題 553
11.2.6 應用和爭議 555
11.3 加密的可執行文件 556
11.3.1 xom體系結構 557
11.3.2 阻止重放攻擊 560
11.3.3 修補有漏洞的地址匯流排 561
11.3.4 修補有漏洞的數據匯流排 564
11.3.5 講評 565
11.4 攻擊防篡改設備 565
11.4.1 監聽匯流排——破解微軟的xbox 566
11.4.2 猜測指令——破解達拉斯半導體公司的ds5002fp微處理器 567
11.4.3 破解智能卡 570
11.4.4 非侵入式攻擊 573
11.4.5 主板級的保護 574
11.5 小結 576
參考文獻 578

Ⅱ 成為一名軟體工程師要學哪些課程

中國計算機軟體設計師考試大綱

一、考試說明
1.考試要求:
(1) 掌握數據表示、算術和邏輯運算;
(2) 掌握相關的應用數學、離散數學的基礎知識;
(3) 掌握計算機體系結構以及各主要部件的性能和基本工作原理;
(4) 掌握操作系統、程序設計語言的基礎知識,了解編譯程序的基本知識;
(5) 熟練掌握常用數據結構和常用演算法;
(6) 熟悉資料庫、網路和多媒體的基礎知識;
(7) 掌握C程序設計語言,以及C++、Java、Visual、Basic、Visual C++中的一種程序設計語言;
(8) 熟悉軟體工程、軟體過程改進和軟體開發項目管理的基礎知識;
(9) 熟悉掌握軟體設計的方法和技術;
(10) 掌握常用信息技術標准、安全性,以及有關法律、法規的基本知識;
(11) 了解信息化、計算機應用的基礎知識;
(12) 正確閱讀和理解計算機領域的英文資料。

2.通過本考試的合格人員能根據軟體開發項目管理和軟體工程的要求,按照系統總體設計規格說明書進行軟體設計,編寫程序設計規格說明書等相應的文檔,組織和指導程序員編寫、調試程序,並對軟體進行優化和集成測試,開發出符合系統總體設計要求的高質量軟體;具有工程的實際工作能力和業務水平。

3.本考試設置的科目包括:
(1) 計算機與軟體工程知識,考試時間為150分鍾,筆試;
(2) 軟體設計,考試時間為150分鍾,筆試。

二、考試范圍
考試科目1:計算機與軟體工程知識
1.計算機科學基礎
1.1 數制及其轉換
· 二進制、十進制和十六進制等常用制數制及其相互轉換

1.2 數據的表示
· 數的表示(原碼、反碼、補碼、移碼表示,整數和實數的機內表示,精度和溢出)
· 非數值表示(字元和漢字表示、聲音表示、圖像表示)
· 校驗方法和校驗碼(奇偶校驗碼、海明校驗碼、循環冗餘校驗碼)

1.3 算術運算和邏輯運算
· 計算機中的二進制數運算方法
· 邏輯代數的基本運算和邏輯表達式的化簡

1.4 數學基礎知識
· 命題邏輯、謂詞邏輯、形式邏輯的基礎知識
· 常用數值計算(誤差、矩陣和行列式、近似求解方程、插值、數值積分)
· 排列組合、概率論應用、應用統計(數據的統計分析)
· 運算基本方法(預測與決策、線性規劃、網路圖、模擬)

1.5 常用數據結構
· 數組(靜態數組、動態數組)、線性表、鏈表(單向鏈表、雙向鏈表、循環鏈表)、隊列、棧、樹(二叉樹、查找樹、平衡樹、線索樹、線索樹、堆)、圖等的定義、存儲和操作
· Hash(存儲地址計算,沖突處理)

1.6 常用演算法
· 排序演算法、查找演算法、數值計算方法、字元串處理方法、數據壓縮演算法、遞歸演算法、圖的相關演算法
· 演算法與數據結構的關系、演算法效率、演算法設計、演算法描述(流程圖、偽代碼、決策表)、演算法的復雜性

2.計算機系統知識
2.1 硬體知識
2.1.1 計算機系統的組成、體系結構分類及特性
· CPU和存儲器的組成、性能和基本工作原理
· 常用I/O設備、通信設備的性能,以及基本工作原理
· I/O介面的功能、類型和特性
· I/O控制方式(中斷系統、DMA、I/O處理機方式)
· CISC/RISC,流水線操作,多處理機,並行處理

2.1.2 存儲系統
· 主存-Cache存儲系統的工作原理
· 虛擬存儲器基本工作原理,多級存儲體系的性能價格
· RAID類型和特性

2.1.3 安全性、可靠性與系統性能評測基礎知識
· 診斷與容錯
· 系統可靠性分析評價
· 計算機系統性能評測方式

2.2 軟體知識
2.2.1 操作系統知識
· 操作系統的內核(中斷控制)、進程、線程概念
· 處理機管理(狀態轉換、共享與互斥、分時輪轉、搶占、死鎖)
· 存儲管理(主存保護、動態連接分配、分段、分頁、虛存)
· 設備管理(I/O控制、假離線)
· 文件管理(文件目錄、文件組織、存取方法、存取控制、恢復處理)
· 作業管理(作業調度、作業控制語言(JCL)、多道程序設計)
· 漢字處理,多媒體處理,人機界面
· 網路操作系統和嵌入式操作系統基礎知識
· 操作系統的配置

2.2.2 程序設計語言和語言處理程序的知識
· 匯編、編譯、解釋系統的基礎知識和基本工作原理
· 程序設計語言的基本成分:數據、運算、控制和傳輸,過程(函數)調用
· 各類程序設計語言主要特點和適用情況

2.3 計算機網路知識
· 網路體系結構(網路拓撲、OSI/RM、基本的網路協議)
· 傳輸介質、傳輸技術、傳輸方法、傳輸控制
· 常用網路設備和各類通信設備
· Client/Server結構、Browser/Server結構
· LAN拓撲,存取控制,LAN的組網,LAN間連接,LAN-WAN連接
· 網際網路基礎知識以及應用
· 網路軟體
· 網路管理
· 網路性能分析

2.4 資料庫知識
· 資料庫管理系統的功能和特徵
· 資料庫模型(概念模式、外模式、內模式)
· 數據模型,ER圖,第一範式、第二範式、第三範式
· 數據操作(集合運算和關系運算)
· 資料庫語言(SQL)
· 資料庫的控制功能(並發控制、恢復、安全性、完整性)
· 數據倉庫和分布式資料庫基礎知識

2.5 多媒體知識
· 多媒體系統基礎知識,多媒體設備的性能特性,常用多媒體文件格式
· 簡單圖形的繪制,圖像文件的處理方法
· 音頻和視頻信息的應用
· 多媒體應用開發過程

2.6 系統性能知識
· 性能指標(響應時間、吞吐量、周轉時間)和性能設計
· 性能測試和性能評估
· 可靠性指標及計算、可靠性設計
· 可靠性測試和可靠性評估

2.7 計算機應用基礎知識
·信息管理、數據處理、輔助設計、自動控制、科學計算、人工智慧等基礎知識
· 遠程通信服務基礎知識
· 常用應用系統

3.系統開發和運行知識
3.1 軟體工程、軟體過程改進和軟體開發項目管理知識
· 軟體工程知識
· 軟體開發生命周期各階段的目標和任務
· 軟體開發項目管理基礎知識(時間管理、成本管理、質量管理、人力資源管理、風險管理等)及其常用管理工具
· 主要的軟體開發方法(生命周期法、原型法、面向對象法、CASE)
· 軟體開發工具與環境知識
· 軟體過程改進知識
· 軟體質量管理知識
· 軟體開發過程評估、軟體能力成熟評估基礎知識

3.2 系統分析基礎知識
· 系統分析的目的和任務
·結構化分析方法(數據流圖(DFD)、數據字典(DD)、實體關系圖(ERD)、描述加工處理的結構化語言)
· 統一建模語言(UML)
· 系統規格說明書

3.3 系統設計知識
· 系統設計的目的和任務
· 結構化設計方法和工具(系統流程圖、HIPO圖、控制流程圖)
· 系統總體結構設計(總體布局、設計原則、模塊結構設計、數據存儲設計、系統配置方案)
· 系統詳細設計(代碼設計、資料庫設計、用戶界面設計、處理過程設計)
· 系統設計說明書

3.4 系統實施知識
· 系統實施的主要任務
· 結構化程序設計、面向對象程序設計、可視化程序設計
· 程序設計風格
· 程序設計語言的選擇
· 系統測試的目的、類型,系統測試方法(黑盒測試、白盒測試、灰盒測試)
· 測試設計和管理(錯誤曲線、錯誤排除、收斂、注入故障、測試用例設計、系統測試報告)
· 系統轉換基礎知識

3.5 系統運行和維護知識
· 系統運行管理基礎知識
· 系統維護基礎知識
· 系統評價基礎知識

3.6 面向對象開發方法
· 面向對象開發概念(類、對象、屬性、封裝性、繼承性、多態性、對象之間的引用)
· 面向對象開發方法的優越性以及有效領域
· 面向對象設計方法(體系結構、類的設計、用戶介面設計)
· 面向對象實現方法(選擇程序設計語言、類的實現、方法的實現、用戶介面的實現、准備測試數據)
· 面向對象程序設計語言(如C++、Java、Visual、Bsasic、Visual C++)的基本機制
· 面向對象資料庫、分布式對象的概念

4.安全性知識
· 安全性基本概念
· 防治計算機病毒、防範計算機犯罪
· 存取控制、防闖入、安全管理措施
· 加密與解密機制
·風險分析、風險類型、抗風險措施和內部控制

5.標准化知識
· 標准化意識、標准化的發展、標准制訂過程
· 國際標准、國家標准、行業標准、企業標准基本知識
· 代碼標准、文件格式標准、安全標准、軟體開發規范和文檔標准知識
· 標准化機構

6.信息化基礎知識
· 信息化意識
· 全球信息化趨勢、國家信息化戰略、企業信息化戰略和策略
· 有關的法律、法規
· 遠程教育、電子商務、電子政務等基礎知識
· 企業信息資源管理基礎知識

7.計算機專業英語
· 掌握計算機技術的基本詞彙
· 能正確閱讀和理解計算機領域的英文資料

考試科目2:軟體設計
1.外部設計
1.1 理解系統需求說明
1.2 系統開發的准備
· 選擇開發方法、准備開發環境、制訂開發計劃
1.3 設計系統功能
· 選擇系統結構,設計各子系統的功能和介面,設計安全性策略、需求和實現方法,制訂詳細的工作流和數據流
1.4 設計數據模型
· 設計ER模型、數據模型
1.5 編寫外部設計文檔
· 系統配置圖、各子系統關系圖、系統流程圖、系統功能說明書、輸入輸出規格說明、數據規格說明、用戶手冊框架
· 設計系統測試要求
1.6 設計評審

2.內部設計
2.1 設計軟體結構
·按構件分解,確定構件功能規格以及構件之間的介面
· 採用中間件和工具
2.2 設計輸入輸出
· 屏幕界面設計、設計輸入輸出檢查方法和檢查信息
> 2.3 設計物理數據
· 分析數據特性,確定邏輯數據組織方式、存儲介質,設計記錄格式和處理方式
· 將邏輯數據結構換成物理數據結構,計算容量,進行優化
2.4 構件的創建和重用
· 創建、重用構件的概念
· 使用子程序庫或類庫
2.5 編寫內部設計文檔
· 構件劃分圖、構件間的介面、構件處理說明、屏幕設計文檔、報表設計文檔、文件設計文檔、資料庫設計文檔
2.6 設計評審

3.程序設計
3.1 模塊劃分(原則、方法、標准)
3.2 編寫程序設計文檔
· 模塊規格說明書(功能和介面說明、程序處理邏輯的描述、輸入輸出數據格式的描述)
· 測試要求說明書(測試類型和目標、測試用例、測試方法)
3.3 程序設計評審

4.系統實施
4.1 配置計算機系統及其環境
4.2 選擇合適的程序設計語言
4.3 掌握C程序設計語言,以及C++、Java、Visual、Basic、Visual C++中任一種程序設計語言,以便能指導程序員進行編程和測試,並進行必要的優化
4.4 系統測試
· 指導程序員進行模塊測試,並進行驗收
· 准備系統集成測試環境和測試工具
· 准備測試數據
· 寫出測試報告

5.軟體工程
· 軟體生存期模型(瀑布模型、螺旋模型、噴泉模型)和軟體成本模型
· 定義軟體需求(系統化的目標、配置、功能、性能和約束)

· 描述軟體需求的方法(功能層次模型、數據流模型、控制流模型、面向數據的模型、面向對象的模型等)
· 定義軟體需求的方法(結構化分析方法、面向對象分析方法)
· 軟體設計(分析與集成、逐步求精、抽象、信息隱蔽)
· 軟體設計方法(結構化設計方法、Jackson方法、Warnier方法、面向對象設計方法)
· 程序設計(結構化程序設計、面向對象程序設計)
· 軟體測試的原則與方法
· 軟體質量(軟體質量特性、軟體質量控制)
· 軟體過程評估基本方法、軟體能力成熟度評估基本方法
· 軟體開發環境和開發工具(分析工具、設計工具、編程工具、測試工具、維護工具、CASE)
· 軟體工程發展趨勢(面向構件,統一建模語言(UML))
· 軟體過程改進模型和方法

Ⅲ 安卓app開發,與服務端傳輸數據,有什麼好的加密方案

如果要自己開發建議使用對稱加密演算法AES的CBC加密模式加密,像DES和AES的ECB加密演算法都不是安全的加密演算法。數據的傳輸使用socket相對於http傳輸安全且速度更快,對稱加密密鑰的存儲可以使用阿里組件的白盒加密存儲密鑰來達到密鑰的安全保密。
故如果想要自己先實現RSA非對稱加密再用AES對稱加密傳輸估計時間上也不會太快,且https就是實現的非對稱加密+對稱加密演算法的傳輸協議。
供你參考

Ⅳ 軟體測試工程師要考那幾個科目

軟體測試工程師考試內容:
一、軟體測試的基本概念
1.軟體質量的概念。
2.軟體測試的目標和原則。
3.軟體測試的心理學。
4.軟體測試的經濟學。
5.軟體質量保證。
二、軟體測試的類型及其在軟體開發過程中的地位
1.軟體開發階段。
2.規劃階段的測試。
3.設計階段的測試。
4.編碼階段的測試。
5.驗收和維護階段的測試。
三、代碼檢查、走查與評審
1.桌面檢查。
2.代碼走查。
3.代碼檢查。
4.同行評審。
四、覆蓋率(白盒)測試
1.覆蓋率測試。
2.邏輯結構的覆蓋率測試。
3.路徑覆蓋率測試。
4.數據流測試。
5.程序變異測試。
6.基於覆蓋的測試用例選擇。
五、功能(黑盒)測試
1.邊界值測試。
2.等價類測試。
3.基於因果圖的測試。
4.基於決策表的測試。
5.基於狀態圖的測試。
6.基於場景的測試。
7.比較測試。
六、單元測試和集成測試
1.單元測試的目標和模型。
2.單元測試策略。
3.單元測試分析。
4.單元測試的測試用例設計原則。
5.集成測試基本概念。
6.集成測試策略。
7.集成測試分析。
8.集成測試用例設計原則。
七、系統測試
1.系統測試概念。
2.系統測試方法。
3.系統測試的實施。
八、軟體性能測試和可靠性測試
1.軟體性能的概念。
2.性能測試的執行。
3.軟體可靠性的概念。
4.可靠性預計。
5.可靠性分析方法。
6.軟體可靠性測試的執行。
九、面向對象軟體的測試
1.面向對象軟體測試的問題。
2.面向對象軟體測試模型。
3.面向對象軟體的測試策略。
4.面向對象軟體的單元測試。
5.面向對象軟體的集成測試。
6.面向對象軟體的系統測試。
十、Web應用測試
1.應用伺服器的分類和特徵。
2.Web應用系統的特點。
3.Web應用系統的測試策略。
4.Web應用系統測試技術。
5.Web應用系統安全測試。
十一、其他測試
1.兼容性測試。
2.易用性測試。
3.GUI測試。
4.構件測試。
5.極限測試。
6.文檔測試。
十二、軟體測試過程和管理
1.軟體測試過程概念。
2.測試組織管理。
3.測試計劃的制定。
4.測試步驟的確定。
5.測試環境管理。
6.軟體測試風險分析和成本管理。
7.測試文檔管理。
8.測試的復用與維護。
十三、軟體測試自動化
1.測試自動化的原理、方法。
2.測試用例自動生成。
3.測試執行自動化。
4.測試結果比較自動化。
5.測試工具的分類和選擇。
6.測試工具的主流產品介紹。
十四、軟體測試的標准和文檔
1.軟體測試的標准。
2.軟體測試的文檔。
十五、軟體測試實踐
1.軟體測試過程管理。
(1)軟體測試過程管理概念。
(2)測試的設計。
(3)測試的准備。
(4)測試的執行。
(5)軟體問題報告和軟體問題生命周期。
(6)測試的總結。
(7)QESuite軟體測試過程管理平台。
2.白盒測試實踐。
(1)被測程序說明。
(2)靜態分析。
(3)被測程序的插裝和動態測試。
(4)QESAT/C++白盒測試工具

Ⅳ 互聯網安全術語

36條網路安全術語盤點

網路安全

以下的網路安全常用術語,你都清楚嗎?

01肉雞

被黑客入侵並被長期駐扎的計算機或伺服器。

02抓雞

利用使用量大的程序的漏洞,使用自動化方式獲取肉雞的行為。

03webshell

通過web入侵的一種腳本工具,可以據此對網站服務進行一定程度的控制。

04一句話木馬

通過向伺服器提交一句簡短的代碼,配合本地客戶端實現webshell功能的木馬。

05提權

操作系統低許可權的賬戶將自己提升為管理員許可權使用的方法。

06後門

黑客為了對主機進行長期的控制,在機器上種植的一段程序或留下的一個入口。

07跳板

使用肉雞IP來實施攻擊其他目標,以便更好的隱藏自己的身份信息。

08旁站入侵

即同伺服器下的網站入侵。

090day 漏洞 和 0day 攻擊

0day 漏洞,又稱零日漏洞 「zero-day」。是已經被發現 (有可能未被公開),而官方還沒有相關補丁的漏洞。 利用0day漏洞的攻擊行為即為0day攻擊。

10CVE

CVE 的英文全稱是 「Common Vulnerabilities & Exposures」 公共漏洞和暴露,例如 CVE-2015-0057、CVE-1999-0001 等等。CVE 就好像是一個字典表,為廣泛認同的信息安全漏洞或者已經暴露出來的弱點給出一個公共的名稱。

11PoC

你可以理解成為漏洞驗證程序。和一些應用程序相比,PoC 是一段不完整的程序,僅僅是為了證明提出者的觀點的一段代碼。

12Exp

漏洞利用程序。簡單講就是一段可以發揮漏洞價值的程序,可以用過漏洞拿到目標機器的許可權。

13SSL

安全套接字層(SSL, Secure Sockets Layer)是一種協議,支持服務通過網路進行通信而不損害安全性。

14APT攻擊

高級持續性攻擊,也稱為定向威脅攻擊,指某組織對特定對象展開的持續有效的攻擊活動。這種攻擊活動具有極強的隱蔽性和針對性,通常會運用受感染的各種介質、供應鏈和社會工程學等多種手段實施先進的、持久的且有效的威脅和攻擊。

15旁註

旁註是一種入侵方法,利用同一主機上面不同網站的漏洞得到webshell,從而利用主機上的程序或者是服務所暴露的用戶所在的物理路徑進行入侵。

16免殺

就是通過加殼、加密、修改特徵碼、加花指令等等技術來修改程序,使其逃過殺毒軟體的查殺。

17紅藍對抗

網路安全中,紅藍對抗是一方扮演黑客(藍軍),一方扮演防禦者(紅軍),進行網路安全的攻防對抗。

18Payload

Payload即有效載荷,被隱藏並且秘密發送的信息。

19DDOS攻擊

分布式拒絕服務攻擊(英文意思是Distributed Denial of Service,簡稱DDoS)是指處於不同位置的多個攻擊者同時向一個或數個目標發動攻擊,或者一個攻擊者控制了位於不同位置的多台機器並利用這些機器對受害者同時實施攻擊。由於攻擊的發出點是分布在不同地方的,這類攻擊稱為分布式拒絕服務攻擊,其中的攻擊者可以有多個。

20IDS

入侵檢測系統(IDS是英文「Intrusion Detection Systems」的縮寫)。專業上講就是依照一定的安全策略,通過軟、硬體,對網路、系統的運行狀況進行監視,盡可能發現各種攻擊企圖、攻擊行為或者攻擊結果,以保證網路系統資源的機密性、完整性和可用性。

21IPS

入侵防禦系統(IPS),有過濾攻擊功能的特種安全設備。一般布於防火牆和外來網路的設備之間,依靠對數據包的檢測進行防禦(檢查入網的數據包,確定數據包的真正用途,然後決定是否允許其進入內網)。

22WAF防護

WAF英文全稱為Web Application Firewall,中文含義為網站應用級入侵防禦系統,是一項網路安全技術,主要用於加強網站伺服器安全。

23MD5演算法

信息摘要演算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數,可以產生出一個128位的散列值(hash value),用於確保信息傳輸完整一致。

24黑盒測試

在未授權的情況下,模擬黑客的攻擊方法和思維方式,來評估計算機網路系統可能存在的安全風險。

25白盒測試

白盒測試就偏向於代碼審計。

26灰盒測試

基於白盒與黑盒測試之間的一種產物。

27僵屍網路(Botnet)

僵屍網路 Botnet是指採用一種或多種傳播手段,將大量主機感染bot程序(僵屍程序)病毒,從而在控制者和被感染主機之間所形成的一個可一對多控制的網路。

28魚叉攻擊

「魚叉攻擊」通常是指利用木馬程序作為電子郵件的附件,發送到目標電腦上,誘導受害者去打開附件來感染木馬。

29釣魚式攻擊

釣魚式攻擊是一種企圖從電子通訊中,通過偽裝成信譽卓著的法人媒體以獲得如用戶名、密碼和信用卡明細等個人敏感信息的犯罪詐騙過程。

30水坑攻擊

水坑攻擊」,黑客攻擊方式之一,顧名思義,是在受害者必經之路設置了一個「水坑(陷阱)」。最常見的做法是,黑客分析攻擊目標的上網活動規律,尋找攻擊目標經常訪問的網站的弱點,先將此網站「攻破」並植入攻擊代碼,一旦攻擊目標訪問該網站就會「中招」。

31社會工程學攻擊

社會工程學(Social Engineering),是一種通過人際交流的方式獲得信息的非技術滲透手段。

32TOP500姓名

中國常用姓名前500個,可以設置為攻擊字典碰撞用戶密碼。

33DLL注入

將一個DLL放進某個進程的地址空間里,讓它成為那個進程的一部分。

34SQL注入

SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字元串,最終達到欺騙伺服器執行惡意的SQL命令。具體來說,它是利用現有應用程序,將(惡意的)SQL命令注入到後台資料庫引擎執行的能力,它可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的網站上的資料庫,而不是按照設計者意圖去執行SQL語句。

35sys驅動

驅動程序一般指的是設備驅動程序(Device Driver),是一種可以使計算機和設備通信的特殊程序。相當於硬體的介面,操作系統只有通過這個介面,才能控制硬體設備的工作。

36加殼

對可執行程序進行資源壓縮的手段. 另一種形式是在二進制的程序中植入一段代碼,在運行的時候優先取得程序的控制權,之後再把控制權交還給原始代碼,這樣做的目的是隱藏程序真正的OEP(入口點,防止被破解)。大多數病毒就是基於此原理。

如有幫助,敬請採納,謝謝!

Ⅵ 軟考程序員基礎知識考什麼

程序員屬於軟考初級資格考試,軟考初級程序員基礎知識科目在上午考試,考試題型為客觀選擇題,滿分為75分,考試時間是安排在9:00-11:30。
軟考初級程序員上午考試科目為基礎知識,滿分為75分,題型為客觀選擇題。根據程序員考試大綱,基礎知識科目考試范圍如下:
1.計算機科學基礎
1.1數制及其轉換
二進制、十進制和十六進制等常用數制及其相互轉換
1.2數據的表示
數的表示
非數值數據的表示
1.3算術運算和邏輯運算
計算機中二進制數的運算方法
邏輯代數的基本運算
1.4數學應用
常用數值計算(矩陣、近似求解、插值)
排列組合、應用統計
編碼基礎
1.5常用數據結構
數組
線性表及鏈表
隊列、棧


1.6常用演算法
演算法與數據結構的關系
演算法設計和演算法描述
常用的排序演算法
查找演算法
常用的數值計算方法
字元串處理演算法
遞歸演算法
最小生成樹、拓撲排序和單源點最短路徑求解演算法
2.計算機系統基礎知識
2.1硬體基礎知識
2.1.1計算機的類型和特點
微機(PC機)、工作站、伺服器、主機、大型計算機、巨型計算機、並行機
2.1.2中央處理器CPU
CPU的組成
常用的寄存器
指令系統,定址方式
令執行控制、中斷控制、處理機性能
2.1.3主存和輔存
存儲介質
高速緩存(Cache)、主存
輔存設備
2.1.4I/O介面、I/O設備和通信設備
I/O介面
I/O設備(類型、特性)
通信設備(類型、特性)
I/O設備、通信設備的連接方法和連接介質類型
2.2軟體基礎知識
2.2.1操作系統基礎知識
操作系統的類型和功能
處理機管理
存儲管理
設備管理
文件管理
作業管理(作業調度演算法)
圖形用戶界面和操作方法
2.2.2程序設計語言和語言處理程序的基礎知識
語言翻譯基礎知識(匯編、編譯、解釋)
程序設計語言的基本成分:數據、運算、控制和傳輸
程序語言類型和特點
2.3網路基礎知識
網路的功能、分類、組成和拓撲結構
基本的網路協議與標准
常用網路設備與網路通信設備,網路操作系統基礎知識
Client/Server結構、Browser/Server結構
區域網(LAN)基礎知識
Internet基礎知識
2.4資料庫基礎知識
資料庫管理系統的主要功能和特徵
資料庫模式(概念模式、外模式、內模式)
數據模型、ER圖
數據操作(關系運算)
資料庫語言(SQL)
資料庫的主要控制功能(並發控制、安全控制)
2.5多媒體基礎知識
多媒體基本知識
常用多媒體設備性能特徵,常用多媒體文件格式類型
2.6系統性能指標
響應時間、吞吐量、周轉時間
可靠性、可維護性、可擴充性、可移植性、可用性、可重用性、安全性
2.7計算機應用基礎知識
計算機常用辦公軟體操作方法
計算機信息管理、數據處理、輔助設計、自動控制、科學計算、人工智慧等領域的應用
遠程通信服務
3.系統開發和運行知識
3.1軟體工程和項目管理基礎知識
軟體工程基礎知識
軟體開發生命周期各階段的目標和任務
軟體過程基本知識
軟體開發項目管理基本知識
軟體開發方法(原型法、面向對象方法)基礎知識
軟體開發工具與環境基礎知識(CASE)
軟體質量管理基礎知識
3.2系統分析設計基礎知識
數據流圖(DFD)、實體聯系圖(ER圖)基本知識
面向對象設計、以過程為中心設計、以數據為中心設計基礎知識
結構化分析和設計方法
模塊設計、代碼設計、人機界面設計基礎知識
3.3程序設計基礎知識
結構化程序設計、流程圖、NS圖、PAD圖
程序設計風格
3.4程序測試基礎知識
程序測試的目的、原則、對象、過程與工具
黑盒測試、白盒測試方法
測試設計和管理
3.5程序設計文檔基礎知識
演算法的描述、程度邏輯的描述、程度規格說明書
模塊測試計劃、模塊測試用例、模塊測試報告
3.6系統運行和維護基礎知識
系統運行管理基礎知識
系統維護基礎知識
4.信息安全基礎知識
信息系統安全基礎知識
信息系統安全管理
加密與解密基礎知識
5.標准化基礎知識
標准化基本概念
標準的層次(國際標准、標准、行業標准、企業標准)
相關標准(代碼標准、文件格式標准、安全標准、軟體開發規范和文檔標准、互聯網相關標准)
6.信息化基礎知識
信息、信息資源、信息化、信息工程、信息產業、信息技術的含義
全球信息化趨勢、信息化戰略、企業信息化戰略和策略常識
有關的法律、法規要點
7.計算機專業英語
具有助理工程師(或技術員)英語閱讀水平
掌握本領域的英語基本術語

溫馨提示:因考試政策、內容不斷變化與調整,獵考網提供的以上信息僅供參考,如有異議,請考生以權威部門公布的內容為准!
下方免費復習資料內容介紹:2022年網路規劃設計師下午真題
格式:DO大小:2346.31KB 2022下半年系統集成項目管理工程師(廣東卷)上午真題
格式:DO大小:7765.09KB
資格考試有疑問、不知道如何總結考點內容、不清楚報考考試當地政策,點擊底部咨詢獵考網,免費領取復習資料

Ⅶ 軟體加密與解密的前言

隱蔽軟體(surreptitious software)是近十年來計算機安全研究領域新興的一個分支。在隱蔽軟體的研究過程中不僅需要借鑒計算機安全方面的技術,還會用到計算科學其他領域的大量技術,如密碼學、隱寫術、數字水印、軟體量度(software metric)、逆向工程以及編譯器優化等。我們使用這些技術來滿足在計算機程序中安全存儲秘密信息的需求,盡管這些需求的表現形式千差萬別、各不相同。本書中「秘密」一詞的意思比較廣,書中所介紹技術(代碼混淆、軟體水印和指紋、防篡改技術以及軟體「胎記」等)的使用目的是防止他人剽竊軟體中的智力成果。比如,軟體中使用指紋技術可以用來跟蹤軟體是否被盜版,代碼混淆技術能夠加大攻擊者逆向分析軟體的難度,而防篡改技術則可以使別人很難製作軟體的破解版,等等。
好了,現在我們來講講為什麼需要閱讀本書,誰使用隱蔽軟體以及本書將會涵蓋哪些內容。
為什麼閱讀本書
與傳統的安全研究不同,隱蔽軟體不關心如何使計算機免於計算機病毒入侵,它關心的是計算機病毒的作者是如何防止他人分析病毒的!同樣,我們也不關心軟體到底有沒有安全漏洞,我們關心的是如何隱蔽地在程序中加入一些只有在程序被篡改時才會執行的代碼。密碼學研究領域中,被加密數據的安全性依賴於加密密鑰的隱秘性,而我們現在研究的恰恰是如何隱藏密鑰。軟體工程中有大量的軟體量度技術,以確保程序結構良好,本書中將使用同樣的技術使程序復雜難讀。本書中描述的很多技術都是基於編譯器優化技術研究開發的演算法的,但是編譯優化的目的是使編譯器生成個頭盡量小、運行速度盡量快的程序,而使用本書中介紹的一些技術卻會使生成的程序個頭又大,執行起來又慢。最後,傳統的數字水印和隱寫術是想辦法把要隱藏的信息藏到圖像、音頻、視頻甚至純文本文件中,而隱蔽軟體則是把需要隱藏的信息藏到計算機代碼中。
那麼,為什麼要閱讀本書呢?為什麼要了解一種不能防止計算機被病毒或者蠕蟲攻擊的安全技術?為什麼要學習一種只會讓代碼體積變大而執行速度變慢的編譯優化技術?為什麼要把精力花在一種違反了密碼學基本前提(即密鑰是不可能被攻擊者獲得的)的密碼學分支上呢?
回答是,傳統的計算機安全和密碼學研究成果有時並不能解決實際工作中遇到的且亟待解決的安全問題。比如,在本書中將展示如何使用軟體水印技術防止軟體盜版。軟體水印是在程序中嵌入的唯一標識(類似信用卡的卡號或者版權聲明),通過這個標識,程序的某個副本就和你(程序的作者)或者客戶聯系在了一起。要是你發現市場上在賣自己軟體的盜版光碟,就可以通過在盜版軟體中提取的水印追查製作這個盜版軟體的母版 當初是哪個傢伙從你這里買走的。當給合作商提供新開發的游戲的測試版時,你也可以在測試版中加上數字水印。要是你感覺有人泄露了你的代碼,就能(從眾多的合作商中)找出肇事者,並把他送上法庭。
又比如,在程序的新版本中加上了某個新的演算法,你當然不希望競爭對手也得到這個演算法,並把它加到他們的軟體中。這時,你就可以去混淆程序,使之盡可能變得復雜難懂,使競爭對手逆向分析軟體時效率很低。而如果確實懷疑某人剽竊了你的代碼,本書也會教你如何使用軟體「胎記」證實你的懷疑。
再比如,你的程序中包含有某段不能為人所知的代碼,並且你想確保沒有這段代碼程序就不能正常運行。例如,你肯定不希望黑客修改程序中的軟體使用許可驗證代碼,或者可用於解密數字版權管理系統中mp3文件的密鑰。第7章將討論多種防篡改技術,確保受到篡改的程序停止正常運行。
聽說你把密鑰放在可執行文件里了?這主意實在太糟糕了!以往的經驗告訴我們,任何類似「不公開,即安全」 的做法最終都將以失敗告終,而且不管在程序中怎樣隱藏密鑰,最終它都逃不出一個足夠頑強的逆向分析人員的手心。當然,必須承認你的做法也還是對的。本書中介紹的所有技巧都不能保證軟體能永遠免於黑客的毒手。不必保證某個東西永遠處於保密的狀態,也不必保證程序永遠處於不可能被篡改的狀態,更不需要保證代碼永遠不會被剽竊。除非這個研究領域有什麼重大的突破,否則能指望的只是延緩對方的攻擊。我們的目標就是把攻擊者的攻擊速度減緩到足夠低,使他感到攻擊你的軟體十分痛苦或要付出過高的代價,從而放棄攻擊。也可能攻擊者很有耐心地花了很長時間攻破了你的防禦,但這時你已經從這個軟體中賺夠了錢,或者已經用上了更新版本的代碼(這時他得到的東西也就一錢不值了)。
比方說,你是一個付費頻道的運營商,用戶通過機頂盒來觀看你提供的電視節目。每個機頂盒都是帶有標簽的——在代碼的某個位置上存放了分配給每個用戶的唯一標識(ID),這樣你就可以根據用戶的繳費情況決定是允許還是拒絕某個特定用戶觀看頻道里的節目。可是現在有一個黑客團伙找到並且反匯編了這段代碼,發現了計算用戶ID的演算法,並且在網上以低廉的價格把修改用戶ID的方法賣給了網民。這時你該怎麼辦呢?你也許想到了使用防篡改的智能卡,不過這玩意兒並不像看上去那麼難破解,這將在第11章中講解。或者你可能想到要混淆代碼,使之更難以被分析。或者你也可以使用防篡改技術使程序一被修改就自動停止運行。更有可能,你會混合使用上述各種技巧來保護代碼。但是盡管使用了所有技術,你還必須要知道並且必須接受,你的代碼仍然可能被破解,秘密仍會泄露(在這個案例里就是機頂盒裡的用戶ID仍然會被篡改)這一事實。怎麼會這樣呢?這只是因為「不公開,既安全」這個想法在根本上就存在漏洞。不過既然本書中介紹的所有技術都不能給你一個「完美並且長期的安全保證」,那麼為什麼還要使用這些技術,為什麼還要買這樣一本書呢?答案很簡單,代碼能頂住黑客攻擊的時間越長,訂閱頻道的客戶就越多,同時升級機頂盒的周期也就越長,這樣你賺到的錢和省下的錢也就越多。
就這么簡單。
誰使用隱蔽軟體
很多知名的公司都對隱蔽軟體有濃厚的興趣。事實上很難真正掌握有關技術在實踐中具體被使用的程度(因為大多數公司在如何保護自己的代碼一事上絕對是守口如瓶的),但是我們還是可以根據他們專利的申請和擁有情況把他們對隱蔽軟體的感興趣程度猜個八九不離十。微軟公司擁有多個關於軟體水印[104,354]、代碼混淆[62,62,69,69,70,70,180,378]和軟體「胎記」[364]技術的專利。Intertrust公司擁有大量與數字版權管理技術相關的組合式專利,包括代碼混淆和代碼防篡改專利。2004年,在微軟與Intertrust之間的馬拉松式官司落下了帷幕之後,微軟向Intertrust支付了高達4.4億美元的專利使用費,才獲得了後者所有的專利使用許可。同年,微軟也開始與PreEmptive Solution公司開展商業合作[250],從而把PreEmptive Solution開發的identifier obfuscator(PreEmptive solution公司在該工具中擁有專利[351])加到了Visual Studio的工具集里。而普渡大學科研成果的副產品Arxan,因其獨創的防篡改演算法專利[24,305]而成功地開辦了一家公司。蘋果公司擁有一個代碼混淆方面的專利,估計是用於保護其iTune軟體的。Convera,一家從英特爾公司獨立出來的企業,則著力研究應用於數字版權管理的代碼防篡改技術[27,268-270]。從加拿大北方電信公司中分離出來的Cloakware公司也是這個領域里最成功的企業之一。該公司擁有他們稱為「白盒加密」的專利[67,68,182],即把加密演算法和密鑰藏到程序代碼中。2007年12月,Cloakware公司被一家主營付費電視業務的荷蘭公司Irdeto以7250萬美元的價格收購。即使是相對的後來者Sun Microsystem也已經提交了一些代碼混淆領域的專利申請。
Skype的VoIP客戶端也使用了類似Arxan[24]、英特爾[27]及本書中將要提到的[89]代碼混淆和防篡改技術進行了防逆向工程加固。對於Skype公司來說,保護其客戶端的完整性無疑是極其重要的,因為一旦有人成功逆向分析了其客戶端軟體,解析出Skype所使用的網路協議,黑客們就能寫出廉價的能與Skype軟體進行正常通信的程序(這樣的話,人們就沒有必要一定用Skype)。所以保持網路協議不公開則有助於Skype擁有一個龐大的用戶群,這大概也是2005年易貝公司以26億美元收購Skype的原因吧。實際上,使用隱蔽軟體技術還使Skype公司贏得了足夠多的時間,進而成為了VoIP技術的領軍企業。即使這時Skype的協議被分析出來了(這一點黑客們確實也做到了,詳見7.2.4節),黑客們也拿不出一個能夠撼動Skype市場地位的類似軟體了。
學術研究者從多種角度對隱蔽軟體技術進行了研究。一些擁有編譯器和程序語言研究背景的研究者,比如我們,會很自然地加入這一領域的研究,因為涉及代碼轉換的絕大多數演算法都會涉及靜態分析的問題,而這一問題則是編譯優化技術的研究者再熟悉不過的了。盡管以前,密碼學研究者大多不屑於研究「不公開,即安全」的問題,但最近一些密碼學研究人員已經開始把密碼學的相關技術應用於軟體水印以及發現代碼混淆技術的局限性上了。來自多媒體水印、計算機安全和軟體工程方面的研究人員也已經發表了很多關於隱蔽軟體的文章。遺憾的是,由於沒有專門的刊物、學術會議(供研究人員相互之間進行交流),這一領域的研究進展被大大延緩了。事實上,為了使這些研究成果能被傳統的學術會議和期刊接受,研究人員在不停地努力著,現在仍在努力。目前已經發表過隱蔽軟體研究成果的學術會議有POPL(Principles of Programming Languages,程序設計原理)上的ACM專題研討會、信息隱藏研討會、IEEE的軟體工程研討會、高級密碼學會議(CRYPTO)、ISC(Information Security Conference,信息安全大會)以及其他一些關於數字版權管理的學術會議。隨著隱蔽軟體這一領域的研究越來越成為學術研究的主流,我們有望擁有專門針對於隱蔽軟體的期刊、專題討論會甚至是研討會,只是可惜目前為止這一切都還沒有實現。
軍方也在隱蔽軟體上花了很多精力(和納稅人的錢)。比如,Cousot公司擁有的軟體水印演算法[95]專利就歸屬於世界上第九大國防工程承包商法國Thales集團。下面是一段引自最新的(2006)美軍招標文件[303]中有關AT(anti-tamper)技術 研究的文字。
現在,所有的美軍項目執行部門(PEO)和項目管理方(PM)在設計和實現有關系統時,必須在系統中使用軍隊和國防部制定的AT策略。嵌入式軟體現代武器系統的核心,是被保護的最重要技術之一。AT技術能夠有效地保證這些技術不被他國(人)逆向工程分析利用。僅僅由標准編譯器編譯生成而不加AT技術防護的代碼是很容易被逆向分析的。在分析軟體時,逆向工程分析人員會綜合使用諸如調試器、反編譯器、反匯編器等很多工具,也會使用各種靜態和動態分析技巧。而使用AT技術的目的就是使逆向工程變得更為困難,進而防止美國在技術領域的優勢被他國竊取。今後還有必要向部隊的PEO和PM提供更有用、更有效並且多樣化的AT工具集……研發AT技術的目的在於提供一個能夠抗逆向工程分析的高強度殼 ,從而最大限度地遲滯敵方對被保護軟體的攻擊。這樣美國就有機會維持其在高科技領域的優勢或者減緩其武器技術泄密的速度。最終,美軍就能繼續保持其技術優勢,進而保證其軍備的絕對優勢。
這份招標文件來自於美軍導彈和空間程序(設計部門),專注於實時嵌入式系統的保護。我們有理由相信產生這份招標文件的原因是,美軍擔心射向敵方的導彈由於種種原因落地後未能爆炸,使敵方有機會接觸到嵌入在導彈中負責引導導彈飛臨目標上空的控制軟體。
下面是另一段引自美國國防部[115]的文字。
進行主動式軟體保護 (SPI)是國防部的職責之一,它必須開發和部署相關的保護技術,以保證含有國防武器系統關鍵信息的計算機程序的安全。SPI提供的是一種全新的安全防護方法,它並不(像傳統的安全技術那樣)保護計算機或者網路的安全,而只是加強計算機程序自身的安全。這種新方法能顯著提升國防部的信息安全情況。SPI的適用范圍很廣,從台式機到超級計算機上面所有的程序都能使用SPI技術予以保護。它是(軟體保護技術中)完整的一層,是「縱深防禦」的一個範例。SPI技術是對網路防火牆、物理安全等傳統安全技術的一個補充,但是其實現並不依賴於這些傳統的安全設備。現在SPI技術被部署在選定的HPC中心和150多家國防部機關以及其他由商業公司參與建設和維護的軍事基地。廣泛地部署SPI技術將會有效地增強美國和美國國防部對關鍵應用技術的保護。
.上面這段話說明了什麼?它說明美國國防部不僅關心導彈會不會掉到敵方領土上去,還關心在自己的安全系數和性能都很高的計算機中心運行的軟體的安全。事實上,竊密和反竊密是防間諜機關和情報部門之間永恆的主題。比方說,一架戰斗機上的某個程序需要更新一下,這時我們很可能就是用一台筆記本電腦連接到這架戰斗機上進行更新操作。但是萬一這台筆記本電腦不慎遺失了,或者乾脆就被其他國家政府使用某種方法控制了,就像電影里常演的那樣,這時會有什麼情況發生呢?對方會馬上把相關的代碼拿去做逆向工程分析,並把分析的結果用於改進其戰斗機中所使用的軟體。更有甚者,對方會悄悄地在你的軟體中加上一個特洛伊木馬,並讓飛機在特定的時間里從天上掉下來。如果我們不能絕對保證上述這一幕100%不可能發生的話,隱蔽軟體至少可以作為安全防禦的最後一道防線(至少還能做到事後的責任追究)。例如,飛機中的軟體可以用有權訪問相關軟體的人的ID做一個指紋簽名。要是哪天,在其他國家的戰斗機上發現了這些代碼,就可以立即對這些代碼進行逆向分析,並進一步推算出誰是泄密事件的元兇。
什麼?我聽見你說,為什麼我要對政府之間和商業巨頭之間如何保護它們各自的秘密感興趣呢?如果黑客破解了這些軟體,他們也不過是通過自己的勞動換取一些微薄的利益而已啊。話雖如此,但是這些保護技術給你 帶來的好處最終還是大於它給商業巨頭帶來的好處。理由是,對你來說,法律形式的保護措施(如專利、商標和版權)只有當你擁有足夠的財力,能在法庭上把對方告倒的時候才會管用。換而言之,即使你認為某家大公司通過破解你的代碼,剽竊了一個極有「錢途」的主意,你也無力通過那種馬拉松式的官司在法庭上告倒微軟,除非你有足夠的經濟實力能在這種財力的比拼中熬出頭 。而在本書中討論的保護技術(比如代碼混淆和防篡改技術)則既廉價又好用,中小型企業和商業巨頭均可使用。而且如果這時你去告這家大公司的話,也可以用水印或者軟體「胎記」等技術,在法庭上當場拿出代碼被剽竊的真憑實據來。
最後不得不簡單地提一下另一類極其擅長使用隱蔽軟體的人——壞蛋們。病毒的作者已經能非常成功地利用代碼混淆的技術偽裝病毒的代碼,使之逃避殺毒軟體的檢測了。值得一提的是,人們使用這些技術(如保護DVD、游戲和有線電視)時經常被黑客破解,而黑客使用這些技術(如構建惡意軟體)時,人們卻很難抗擊。
本書內容
隱蔽軟體研究的目的是發明能夠盡可能遲滯對手(逆向工程分析)進度,同時又盡可能地減少因為使用該技術,而在程序執行時增加的計算開銷的演算法。同時也需要發明一種評估技術,使我們可以說「在程序中使用了演算法A之後,相對於原先的程序,黑客攻破新程序需要多花T個單位的時間,而新程序增加的性能開銷是0」,或者最低限度我們也應該可以說「相對於演算法B,使用演算法A保護的代碼更難被攻破」。特別要強調一下,隱蔽軟體研究尚處於嬰兒期,雖然我們在書中會把相關的保護演算法和評估演算法全都介紹給大家,但是這門藝術的現狀卻還並不理想(到時候你可不能太失望啊)。
在本書中,我們試圖把當前所有有關隱蔽軟體的研究成果組織起來系統化地介紹給讀者。我們力爭每章內容涵蓋一種技術,並描述這一技術的應用領域以及目前可用的演算法。第1章將給出隱蔽軟體這個領域的一些基本概念;第2章用對抗性演示的模式介紹黑客逆向分析軟體時常用的工具和技巧,然後針對這些工具和技巧介紹如何防範黑客的攻擊;第3章詳細講述黑客和軟體保護方用於分析計算機程序的技術;第4章、第5章和第6章分別介紹與代碼混淆有關的演算法;第7章介紹與防篡改技術相關的演算法;第8章和第9章分別介紹與水印相關的演算法;第10章介紹與軟體「胎記」相關的演算法;第11章講述基於硬體設備的軟體保護技術。
如果你是位企業管理人員,只是對隱蔽軟體的研究現狀和這些技術怎麼應用到你的項目中感興趣,那麼只要閱讀第1章和第2章就夠了。如果你是位擁有編譯器設計背景的研究人員,那麼建議直接跳到第3章開始閱讀。但是之後的章節還是最好順序閱讀。這是因為……呃,還是舉個例子吧,介紹水印技術的章節中會用到在代碼混淆章節中介紹的知識。當然在本書撰寫過程中,我們還是盡量使各章內容都能獨立成章的,所以(如果你擁有一些背景知識)偶爾跳過那麼一兩章也未嘗不可。如果你是一位工程師,想要使用有關技術加固你的軟體,那麼強烈建議你仔仔細細地閱讀第3章的所有內容,如果有條件的話,還應該再搞幾本編譯原理方面的教材惡補一下「程序靜態分析」的知識。然後你就可以隨意跳到感興趣的章節去閱讀了。如果你是名大學生,把本書作為一門課程的教材來閱讀,那麼就應該一頁一頁地完整閱讀本書,期末別忘了做好復習。
希望本書能夠做到兩件事情。首先,希望能向你,親愛的讀者,證明代碼混淆、軟體水印、軟體「胎記」和防篡改等技術里有大量妙不可言的想法,值得你花點時間去學習,而且這些技術也可以用來保護軟體。其次,希望本書能把本領域內當前所有有用的信息匯集在一起,從而為隱蔽軟體的深入研究提供一個良好的起點。
Christian Collberg和Jasvir Nagra
2009年2月2日(土撥鼠日)
P.S.實際上寫作這本書還有第三個目的。要是在閱讀本書時,你突然靈光閃現,冒出一個絕妙的主意,進而激發了你投身於隱蔽軟體研究的雄心壯志,那麼,親愛的讀者,我這第三個目的就算是達到了。請把你的新演算法告訴我們,我們將把它加到本書的下一版里!

Ⅷ 小白盒能造成泄密嗎

不會。
因為白盒密鑰傳入相匹配的白盒庫可以進行正常的加密或解密功能。所以白盒密鑰是安全的。
小白盒子用處為:提供無線列印功能。小白盒相當於網路列印機適配器,安裝以後,可以通過無線,手機電腦筆記本都可以列印到這個列印機上,不過需要看說明,是否適配列印機的型號。小白盒列印適配器插在列印機上之後,通過微信小程序將列印機連入廣域網實現網路功能,而小白智慧列印機最大的吸引點是小程序內提供了大量教育學科的資料,文檔和照片模板、學習資料。

Ⅸ C#(加密)Des很容易被破解嗎

加密演算法跟 C#、或者說跟語言無關。

DES 是通過16輪迭代函數,使得原文混淆+擴散;而 AES 是通過線性混合層(行移位SR以及列混合MC)使得原文擴散,位元組代替變換使得原文混淆。

說 DES 不如 AES 原因有幾點:1、DES 密鑰長度短,只有 56bit,而 AES 密鑰長度可以達到 256bit;2、DES 不能對抗差分和線性密碼分析;3、DES 支持可變分組長度。

綜上三點,導致破解 AES 的難度幾何倍數增加(其實光第一條就已經秒殺 DES 了)。但要注意的是,DES 的容易破解是相對的,用窮舉法來破解(不考慮彩虹表),就憑你家用機的速度,馬力全開的得算個幾年的。當然了,計算機也在不斷發展,未來要是能出現個1微秒能窮舉幾萬個密鑰的晶元了,那 AES 也會被迅速淘汰掉。

Ⅹ 幾道計算機題目、、、請不要亂做、、 謝謝、、、

1. 在下面關於Access資料庫的說法中,錯誤的是____C___________。
A. 資料庫文件的擴展名是mdb
B. 所有的對象都存放在同一個資料庫文件中
C. 一個資料庫可以包含多個表體
D. 表示資料庫中最基本的對象,沒有表也就沒有其他對象
2. 目前常用的保護計算機網路安全的技術指標是__A_____________。
A. 防火牆
B. 防風牆
C. KV300殺毒軟體
D. 使用Java程序
3. 以下有關加密的說法,不正確的是____C___________。
A. 破壞信息,損壞CPU
B. 干擾電網,破壞信息
C. 佔用資源,破壞信息
D. 更改Cache晶元中的內容
4. 以下有關加密的說法,不正確的是_____D__________。
A. 密鑰密碼體系的加密密鑰和解密密鑰使用相同的演算法
B. 公鑰密碼體系的加密密鑰和解密密鑰使用不同的密鑰
C. 公鑰密碼體系又稱對稱密鑰體系
D. 公鑰密碼體系又稱為不對稱密鑰體系
5. 下面的敘述正確的是______C_________。
A. 程序測試的目的是要找出程序中的錯誤
B. 程序測試的目的是要證明程序沒有錯誤
C. 黑盒測試一般由計算機專業人員來完成
D. 軟體開發商推出的軟體β版,即為測試版,免費提供給用戶使用,屬於白盒測試

僅供參考

熱點內容
編譯正確運行後沒有輸出就結束了 發布:2025-08-23 03:12:26 瀏覽:889
fanuc存儲卡 發布:2025-08-23 03:12:19 瀏覽:384
俠盜飛車安卓哪裡下 發布:2025-08-23 03:02:24 瀏覽:753
沈陽java培訓 發布:2025-08-23 02:56:03 瀏覽:972
安卓2千以下買什麼備用機好 發布:2025-08-23 02:54:38 瀏覽:144
ftp文件共享軟體 發布:2025-08-23 02:34:13 瀏覽:583
php圖片等比縮放 發布:2025-08-23 02:32:40 瀏覽:646
資料庫配置文件jsp 發布:2025-08-23 02:21:22 瀏覽:454
介面地址和伺服器地址是一個么 發布:2025-08-23 02:21:21 瀏覽:767
iphone的證書在哪個文件夾 發布:2025-08-23 02:21:13 瀏覽:540