摘 要:機(jī)會網(wǎng)絡(luò)由于具有間歇式連接、多跳轉(zhuǎn)發(fā)等特點,很容易遭受惡意攻擊。文章提出一種基于區(qū)塊鏈技術(shù)的節(jié)點身份識別方案,可以檢測出破壞網(wǎng)絡(luò)的惡意節(jié)點,在此基礎(chǔ)上改進(jìn)了Epidemic路由,在提高消息投遞率的同時,降低了網(wǎng)絡(luò)開銷和平均延遲。通過仿真實驗,證實了該方案可以有效地防范各種惡意攻擊,在消息投遞率、平均延遲、網(wǎng)絡(luò)開銷以及惡意節(jié)點檢測率等方面均優(yōu)于傳統(tǒng)方案。
關(guān)鍵詞:機(jī)會網(wǎng)絡(luò);區(qū)塊鏈;惡意攻擊;身份識別;路由優(yōu)化
1 區(qū)塊鏈技術(shù)的優(yōu)勢分析
機(jī)會網(wǎng)絡(luò)是一種不需要源節(jié)點和目的節(jié)點之間存在完整鏈路,利用節(jié)點移動帶來相遇機(jī)會的自組織網(wǎng)絡(luò)[1]。機(jī)會網(wǎng)絡(luò)不要求網(wǎng)絡(luò)的全連通,更適合實際的自組網(wǎng)需求,對于未來普適計算具有重大影響[2]。
機(jī)會網(wǎng)絡(luò)具有網(wǎng)絡(luò)稀疏性、間歇式連接的特點,沒有安全的認(rèn)證中心,節(jié)點可以隨意加入和退出網(wǎng)絡(luò),使得惡意節(jié)點很容易潛伏進(jìn)網(wǎng)絡(luò)進(jìn)行破壞式攻擊。信任管理是解決該問題的有效途徑,現(xiàn)有的信任管理系統(tǒng)按分布方式可以分為兩類:集中式和分布式。
集中式信任管理通過設(shè)立權(quán)威的中心機(jī)構(gòu)集中管理每個用戶的信任值,但是存在極大的安全威脅。倘若中心機(jī)構(gòu)被惡意用戶攻破,不僅會造成用戶信息的泄露,還會面臨數(shù)據(jù)被篡改的風(fēng)險[3]。相較于中心化信任管理,分布式信任管理將信任值的計算交由每個節(jié)點來維護(hù),節(jié)點在網(wǎng)絡(luò)中既承擔(dān)消息轉(zhuǎn)發(fā)的任務(wù),又承擔(dān)著信任值計算和維護(hù)的任務(wù),對于自身存儲資源和計算能力均有限的節(jié)點,大大加重了節(jié)點的負(fù)擔(dān),容易導(dǎo)致節(jié)點因節(jié)能而出現(xiàn)自私的行為[4]。
區(qū)塊鏈?zhǔn)且环N按照時間順序?qū)?shù)據(jù)區(qū)塊以鏈條方式組成的數(shù)據(jù)結(jié)構(gòu),并以密碼學(xué)方式保證不可篡改和不可偽造的分布式去中心化賬本,能夠安全存儲簡單的、有先后關(guān)系的、能在系統(tǒng)內(nèi)進(jìn)行驗證的數(shù)據(jù)[5]。區(qū)塊鏈可以解決集中式和分布式信任管理系統(tǒng)的核心缺陷,基于此,本文提出一種基于區(qū)塊鏈技術(shù)的機(jī)會網(wǎng)絡(luò)信任管理系統(tǒng),選擇計算能力和存儲能力強(qiáng)大的節(jié)點(以下稱之為控制器)作為挖礦節(jié)點,負(fù)責(zé)維護(hù)網(wǎng)絡(luò)中所有節(jié)點的信任值。該系統(tǒng)兼顧了傳統(tǒng)集中式信任管理系統(tǒng)的數(shù)據(jù)交互優(yōu)點以及傳統(tǒng)分布式信任管理系統(tǒng)覆蓋面廣的特點,能建立一個覆蓋范圍更大、數(shù)據(jù)交互能力更強(qiáng)和數(shù)據(jù)安全性更高的機(jī)會網(wǎng)絡(luò)身份驗證體系。
2 3種惡意節(jié)點的攻擊方式
(1)消息篡改攻擊:惡意節(jié)點接收到真消息,會將消息篡改,然后將篡改后的假消息進(jìn)行播報。
(2)丟包攻擊:惡意節(jié)點先向消息發(fā)送節(jié)點承諾愿意轉(zhuǎn)發(fā)消息,其在接收到消息后,一旦脫離與消息發(fā)送節(jié)點的通信范圍,便立即將接收到的消息丟棄。
(3)誹謗攻擊:惡意節(jié)點會上傳不公平的行為評級,比如,消息篡改攻擊中,惡意節(jié)點會將所有播報真消息的節(jié)點生成負(fù)評級,而將所有播報假消息的節(jié)點生成正評級。丟包攻擊中,當(dāng)正常節(jié)點將消息轉(zhuǎn)發(fā)給惡意節(jié)點,惡意節(jié)點不會為其生成消息反饋,相當(dāng)于誹謗其沒有轉(zhuǎn)發(fā)消息。
3 技術(shù)路線
3.1 消息篡改攻擊防范模型
(1)消息鑒別。節(jié)點在接收到某消息時,需要計算消息可信度,計算公式如下:
(1)
是節(jié)點k發(fā)送的消息j的可信度,tk是節(jié)點k的當(dāng)前信任值,節(jié)點可通過向鄰近控制器發(fā)送查詢請求獲得特定節(jié)點的信任值,α控制消息可信度的變化率。
在一段時間內(nèi),節(jié)點會將所有接收到的消息分組{,,...,},其中,Mj代表報告事件ej的消息組,由于惡意節(jié)點的干擾,消息組會摻雜虛假的消息,因此,節(jié)點需要對每個消息組進(jìn)行消息判別,本文采用的是樸素貝葉斯公式:
(2)
是事件ej的對立事件,。。是事件ej的先驗概率。是事件ej的聚合可信度,且。
(2)評級生成。一旦超過閾值MSG_THR,接收節(jié)點則認(rèn)為事件ej可信。對正確報告事件ej的節(jié)點生成正評級(+1),錯誤報告事件ej的節(jié)點生成負(fù)評級(﹣1)。評級格式:(sender, receiver, mk, rating),其中,sender和receiver分別是消息發(fā)送者和接收者,mk是消息的種類,rating是接收者為發(fā)送者播報消息mk生成的行為評級。
(3)信任值偏移量的計算。信任值偏移量是節(jié)點基于某個特定行為所獲得的評價值,計算公式如下:
(3)
是節(jié)點k基于播報消息j行為的信任值偏移量,并且。m和n分別是正評級和負(fù)評級的個數(shù),θ1和θ2分別控制正負(fù)評級的權(quán)重,為了得到更加可靠的結(jié)果,需要削弱少數(shù)評級組的影響,其中,θ1和θ2分別控制正負(fù)評級的權(quán)重,權(quán)重計算公式如下:
(4)
F(·)控制少數(shù)評級組的敏感度。例如:相較于,使得少數(shù)評級組對信任值偏移量的計算結(jié)果影響更小。
(4)選舉礦工。本文采用POF機(jī)制來選舉具有上傳區(qū)塊資格的礦工。每次區(qū)塊鏈的更新為了使節(jié)點的信任值發(fā)生較大的變化,應(yīng)當(dāng)盡可能選擇信任值偏移量絕對值總和最大的區(qū)塊上傳。故將控制器當(dāng)前區(qū)塊中所有節(jié)點的信任值偏移量的絕對值總和作為股權(quán),股權(quán)越大,控制器越容易被選舉為礦工。選舉礦工的方法如下:
(5)
其中,IDCT是控制器的標(biāo)識號,time是該區(qū)塊的創(chuàng)建時間戳,PreHash是前一區(qū)塊的哈希值,nonce是隨機(jī)數(shù),Si是哈希閾值。除了nonce值可以改變外,剩余值都是固定不可變的,控制器需要通過不斷改變隨機(jī)數(shù),直到找到滿足上述條件的隨機(jī)數(shù)則挖礦成功。挖礦的難度取決于Si,Si是一串固定長度的二級制序列,其長度由使用的哈希算法確定。Si的高位有連續(xù)的0,0的個數(shù)決定了挖礦的難度。公式如下:
(6)
其中,Pi是CTi中信任值偏移量的絕對值總和,Pmax是Pi的上限值,是為了避免具有過大Pi的控制器連續(xù)贏得選舉權(quán)的情況。Oi是控制器計算的移動節(jié)點信任值偏移量集合,每當(dāng)控制器成功上傳區(qū)塊,將清除Oi中的元素。
Si的取值依賴于Pi,關(guān)系如下:
(7)
Int(x)返回x的整數(shù)部分,Nz是Si高位中連續(xù)0的個數(shù),Nm是Si的總位數(shù),取決于使用的哈希算法。本文采用的是SHA-256算法,Si的長度就是256位。
區(qū)塊結(jié)構(gòu)如圖1所示,區(qū)塊由區(qū)塊頭和區(qū)塊體組成,區(qū)塊頭儲存信息如下:第一,區(qū)塊的基本信息,如區(qū)塊的編號、上傳的控制器編號、區(qū)塊創(chuàng)建時間戳。第二,前一個區(qū)塊的哈希值,用于將區(qū)塊鏈接到現(xiàn)有的區(qū)塊鏈上。第三,隨機(jī)數(shù)和區(qū)塊的哈希閾值,用于驗證該區(qū)塊的有效性。區(qū)塊體存儲信任值偏移量列表。
圖1 區(qū)塊結(jié)構(gòu)
(5)分布式共識??刂破髅可梢粋€區(qū)塊,便向全網(wǎng)其他控制器廣播該區(qū)塊,其他控制器依據(jù)公式重新計算區(qū)塊的hash值,根據(jù)公式(5)判斷區(qū)塊的有效性。若區(qū)塊有效,則將其添加到自己的區(qū)塊鏈上,否則丟棄該塊。有時,控制器可能會同時接收到多個有效的區(qū)塊,這時區(qū)塊鏈便開始分叉。每個控制器選擇一個分支并繼續(xù)在其后添加新的區(qū)塊,隨著時間的推移,最長的分支成為網(wǎng)絡(luò)的分布式共識,其他分支被丟棄。最長鏈原則保證了區(qū)塊鏈的唯一性,同時也體現(xiàn)了大多數(shù)人的認(rèn)可。
(6)黑名單更新??刂破髅拷邮盏揭粋€新的區(qū)塊,便會統(tǒng)計所有節(jié)點的信任值,若節(jié)點信任值低于預(yù)設(shè)閾值BAD_THR,便會將其加入黑名單列表,然后向周圍節(jié)點廣播,節(jié)點根據(jù)廣播信息更新本地黑名單列表。對于處在黑名單列表中的節(jié)點,控制器會認(rèn)為其是惡意節(jié)點而拒絕接收其上傳的評級包;其他節(jié)點不會向其發(fā)送消息,也不會接收其發(fā)送的消息。通過黑名單,控制器和節(jié)點可以隔離惡意節(jié)點,達(dá)到將其從網(wǎng)絡(luò)中剔除的目的。
3.2 丟包攻擊防范模型
3.2.1 消息反饋機(jī)制
發(fā)送節(jié)點將消息轉(zhuǎn)發(fā)給下一跳節(jié)點,為了檢驗中繼節(jié)點是否如實地轉(zhuǎn)發(fā)了消息,需要相應(yīng)的機(jī)制來監(jiān)測其行為。本文采用“L-ACK”消息反饋機(jī)制[6],節(jié)點Ni將消息轉(zhuǎn)發(fā)給中繼節(jié)點Ni+1,便會在本地驗證列表VerifyList添加一條待驗證記錄,格式如下:(receiver, mk, time, define)。其中,receiver是中繼節(jié)點標(biāo)識,mk是消息的種類,time是Ni將mk發(fā)送給Ni+1的時間,define是Ni+1轉(zhuǎn)發(fā)mk的確認(rèn)標(biāo)記。
圖2為mk的傳播路徑,Ni節(jié)點將mk轉(zhuǎn)發(fā)給Ni+1節(jié)點,為了確認(rèn)Ni+1是否轉(zhuǎn)發(fā)了mk,(Ni+2, Ni+3,..., NL-1)節(jié)點均可為Ni+1節(jié)點生成中繼消息反饋,格式如下:(Witness, receiver, mk)。其中,Witness是證人節(jié)點,receiver是中繼節(jié)點標(biāo)識,mk是消息的種類。證人節(jié)點會將中繼消息反饋存放到本地數(shù)據(jù)區(qū),在將來的移動過程中與Ni相遇時便會向其發(fā)送中繼消息反饋,證實中繼節(jié)點Ni+1確實轉(zhuǎn)發(fā)了消息mk。
圖2 消息反饋
3.2.2 評級生成
消息反饋具有時效性,所以需要添加有效反饋時間上限ValidTime。若發(fā)送節(jié)點在ValidTime時間段內(nèi)收到有關(guān)中繼節(jié)點的中繼消息反饋,則認(rèn)為其確實轉(zhuǎn)發(fā)了消息,為其生成正評級,否則生成負(fù)評級。
節(jié)點信任值偏移量的計算、區(qū)塊上傳以及黑名單的更新和上面提到的相同,此處不再贅述。
3.3 路由優(yōu)化
為了實現(xiàn)消息的聚合判斷,以鑒別惡意消息,同時最大化消息投遞率,本文節(jié)點均采用Epidemic路由機(jī)制。Epidemic本質(zhì)上是一種泛洪算法,期望通過多副本帶來更多的相遇機(jī)會提高消息傳輸成功率、降低傳輸延遲,但是最大的缺點是增加了網(wǎng)絡(luò)開銷,且擠出效應(yīng)使其在節(jié)點緩存資源有限、網(wǎng)絡(luò)中節(jié)點分布密集的情況下性能急劇下降[7]。本文改進(jìn)了Epidemic路由,具體方案是在Epidemic路由的基礎(chǔ)上增加下面的機(jī)制,本文稱其為Delivered-ACK機(jī)制。
(1)每個節(jié)點增加一張消息成功抵達(dá)的反饋列表MList = {m1, m2 , ..., mk}。
(2)若消息成功轉(zhuǎn)發(fā)到目的節(jié)點,目的節(jié)點將消息標(biāo)識添加到MList中,在之后節(jié)點相遇時,首先,交換各自的MList,遍歷對方的MList中的每條消息,若本地MList中沒有該消息便將其加入到本地MList;其次,檢查本地消息緩沖區(qū)中是否存在該消息,若存在則將消息丟棄(因為消息已經(jīng)傳輸?shù)侥康墓?jié)點),否則遍歷下一條消息。
4 實驗配置及結(jié)果分析
4.1 仿真環(huán)境
本文使用ONE模擬器進(jìn)行仿真,選用的移動模型為RWP,地圖大小為1 000 m×1 000 m,仿真時間6 000 s,節(jié)點的通信半徑為10 m,移動速度3~4 m/s,節(jié)點緩存空間大小為5 M。節(jié)點分為正常節(jié)點和惡意節(jié)點兩組,總數(shù)為100。參數(shù)取值:α=0.015,β=0.01,γ=﹣3,MSG_THR=0.5,ValidTime =2 000 s,BAD_THR=﹣30。根據(jù)節(jié)點的攻擊模式不同,將實驗場景分為兩組:
場景一,節(jié)點總數(shù)為100,惡意節(jié)點的攻擊模式為消息篡改攻擊和誹謗攻擊。
場景二,節(jié)點總數(shù)為100,惡意節(jié)點的攻擊模式為丟包攻擊和誹謗攻擊。
4.2 評價指標(biāo)
本文將區(qū)塊鏈機(jī)制和S-TRSS機(jī)制和Epidemic機(jī)制進(jìn)行比較。TRSS機(jī)制利用節(jié)點社會相似性作為初始信任值、采用消息反饋機(jī)制來更新直接信任值,借助信任值信息共享機(jī)制來計算間接信任值,最后通過綜合直接信任值和間接信任值得到節(jié)點的綜合信任值。由于本文中并未考慮節(jié)點的社會相似性,考慮的是一個完全陌生的環(huán)境,故視所有節(jié)點的社會特征相似值均相同,但保留了消息反饋機(jī)制和信任值信息共享機(jī)制作為對比模型,故以下稱之為“S-TRSS機(jī)制”。本文使用以下6個指標(biāo)來比較上述方案的性能:
(1)真消息投遞率,成功遞交給目的節(jié)點且為真的消息數(shù)和源節(jié)點創(chuàng)建的消息數(shù)的比值。
(2)消息投遞率,成功遞交給目的節(jié)點的消息數(shù)與源節(jié)點創(chuàng)建的消息數(shù)的比值。
(3)網(wǎng)絡(luò)開銷率,所有消息的副本數(shù)與成功遞交給目的節(jié)點的消息數(shù)的比值
(4)平均延遲,所有成功交付的消息從源節(jié)點產(chǎn)生到目的節(jié)點所花費(fèi)的平均時間。
(5)惡意丟包數(shù),惡意節(jié)點在整個仿真時間內(nèi)丟棄的消息副本總數(shù)。
(6)惡意節(jié)點檢測率,實際檢測出的惡意節(jié)點與網(wǎng)絡(luò)中所有惡意節(jié)點以及誤判節(jié)點和的比值。
4.3 結(jié)果分析
4.3.1 模型一,消息篡改攻擊和誹謗攻擊
圖3—5為區(qū)塊鏈機(jī)制和Epidemic機(jī)制在消息傳輸各個方面的比較結(jié)果。區(qū)塊鏈機(jī)制中消息接收節(jié)點可通過樸素貝葉斯算法鑒別消息,因此,區(qū)塊鏈機(jī)制采用Delivered-ACK機(jī)制。對于已經(jīng)抵達(dá)目的節(jié)點的消息,通過目的節(jié)點的反饋可以刪除網(wǎng)絡(luò)中冗余的副本,大大降低其網(wǎng)絡(luò)開銷。此外,區(qū)塊鏈機(jī)制中控制器一旦檢測出節(jié)點的信任值過低,便將其加入黑名單并廣播給周圍節(jié)點,節(jié)點不會與黑名單中的節(jié)點進(jìn)行交互,故在消息轉(zhuǎn)發(fā)時可以省去將消息轉(zhuǎn)發(fā)給惡意節(jié)點的時間。Epidemic機(jī)制無惡意攻擊防范措施,且是采用多副本傳輸?shù)姆绞?,因此,區(qū)塊鏈機(jī)制在真消息投遞率、網(wǎng)絡(luò)開銷以及平均延遲方面的效果均好于Epidemic機(jī)制。
圖3 真消息投遞率
圖4 網(wǎng)絡(luò)開銷
圖5 平均延遲
4.3.2 模型二,丟包攻擊和誹謗攻擊
Epidemic機(jī)制由于采用多副本傳輸?shù)姆绞?,沒有路由優(yōu)化和惡意攻擊防范機(jī)制,故在消息傳輸各個方面的性能均表現(xiàn)最差。
在惡意節(jié)點占比較少時,憑借著消息反饋機(jī)制,S-TRSS機(jī)制能夠發(fā)揮較為出色的性能,但是隨著惡意節(jié)點占比的增加,正常節(jié)點在網(wǎng)絡(luò)初期受惡意節(jié)點誹謗攻擊的影響較大,因為初態(tài)時所有節(jié)點的信任值均為0.5左右,節(jié)點很難鑒別出虛假的信任值推薦信息,致使產(chǎn)生誤判較為嚴(yán)重,其性能也急劇下降。此外,節(jié)點黑名單的更新依賴于節(jié)點之間的相遇,導(dǎo)致黑名單的更新出現(xiàn)較長延遲,處于網(wǎng)絡(luò)邊緣的節(jié)點很難接收到黑名單的更新信息。相較于無惡意節(jié)點防范機(jī)制的Epidemic機(jī)制,S-TRSS在消息傳輸各個方面的性能有所改善。
區(qū)塊鏈機(jī)制去除了節(jié)點之間信任值推薦的功能,將對節(jié)點的信任值管理轉(zhuǎn)移到控制器上,節(jié)點只需要向控制器發(fā)送查詢請求就能獲得特定節(jié)點的信任值,規(guī)避了惡意節(jié)點誹謗攻擊的影響。黑名單由控制器廣播可以更為及時地更新網(wǎng)絡(luò)中其他節(jié)點的黑名單列表,從而減小了時間延遲帶來的影響。通過改進(jìn)路由,可顯著降低網(wǎng)絡(luò)開銷和平均延遲,因此,區(qū)塊鏈機(jī)制無論是在惡意節(jié)點檢測率還是在消息投遞率、網(wǎng)絡(luò)開銷和傳輸延遲上均優(yōu)于S-TRSS機(jī)制以及Epidemic機(jī)制,具體數(shù)據(jù)如圖6—10所示。
圖6 消息投遞率
圖7 網(wǎng)絡(luò)開銷
圖8 平均延遲
5 結(jié)語
本文提出了一種基于區(qū)塊鏈技術(shù)的機(jī)會網(wǎng)絡(luò)節(jié)點身份認(rèn)證機(jī)制,通過該機(jī)制,節(jié)點可以高效、準(zhǔn)確地識別出網(wǎng)絡(luò)中的惡意節(jié)點。相較于傳統(tǒng)只能識別單一攻擊的信譽(yù)方案,區(qū)塊鏈機(jī)制可以防范多重攻擊甚至是組合式攻擊。但是使用區(qū)塊鏈機(jī)制需要網(wǎng)絡(luò)中的節(jié)點以廣播的形式傳遞消息,會極大地消耗節(jié)點資源而影響網(wǎng)絡(luò)性能。本文通過對Epidemic路由進(jìn)行改進(jìn),可以有效克服區(qū)塊鏈機(jī)制對節(jié)點資源高消耗的缺點,既保證了惡意節(jié)點能被準(zhǔn)確檢測到,又提高了消息傳輸?shù)某晒β剩档途W(wǎng)絡(luò)開銷和平均延遲,因此,可以構(gòu)建一個輕量、高效的安全網(wǎng)絡(luò)。
該方案依然存在不足之處,例如:如何將信任管理和隱私保護(hù)結(jié)合起來是一個有待深入研究的開放式問題;隨機(jī)移動模型與現(xiàn)實網(wǎng)絡(luò)環(huán)境差別較大。今后,筆者將精化區(qū)塊鏈模型,擴(kuò)大其適用范圍,將節(jié)點隱私保護(hù)納入到模型中。
基金項目:國家級大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計劃資助項目;項目編號:201910497147。
作者簡介:馬維剛(1999— ),男,湖北廣水人,本科生;研究方向:通信網(wǎng)絡(luò)安全。
圖9 丟包數(shù) 圖10 惡意節(jié)點檢測率
[參考文獻(xiàn)]
[1]熊永平,孫利民,牛建偉,等.機(jī)會網(wǎng)絡(luò)[J].軟件學(xué)報,2009(1):124-137.
[2]CONTI M,GIORDANO S.Multihop Ad Hoc networking: the reality[J].Communications Magazine IEEE,2007(4):88-95.
[3]王紅凱,王志強(qiáng),龔小剛.移動互聯(lián)網(wǎng)安全問題及防護(hù)措施探討[J].信息網(wǎng)絡(luò)安全,2014(9):207-210.
[4]ASUQUO P M,CRUICKSHANK H S,SUN Z,et al.Analysis of DoS attacks in delay tolerant networks for emergency evacuation.[C].Xian:International Conference on Next Generation Mobile Applications.IEEE,2016.
[5]袁勇,王飛躍.區(qū)塊鏈技術(shù)發(fā)展現(xiàn)狀與展望[J].自動化學(xué)報,2016(4):481-494.
[6]YAO L,MAN Y,HUANG Z J,et al.Secure routing based on social similarity in opportunistic networks[J].IEEE Transactions on Wireless Communications,2016(1):594-605.
[7]孫踐知,張迎新,陳丹,等.具有自適應(yīng)能力的Epidemic路由算法[J].計算機(jī)科學(xué),2012(7):104-107.
Research on opportunity network security based on block-chain technology
Ma Weigang
(School of Computer Science and Technology, Wuhan University of Technology, Wuhan 430063, China)
Abstract:Opportunity network is vulnerable to malicious attack because of its intermittent connection, multi-hop forwarding and so on. In this paper, a node identification scheme based on block chain technology is proposed, which can detect malicious nodes in broken ring networks. On this basis, the Epidemic routing is improved, which not only improves the message delivery rate, but also reduces the network overhead and average delay. The simulation results show that the scheme can effectively prevent all kinds of malicious attacks, and it is superior to the traditional scheme in message delivery rate, average delay, network overhead and malicious node detection rate.
Key words:opportunistic networks; block-chain; malicious attacks; identity; routing optimization