本發明涉及信息安全領域,尤其涉及一種報文過濾方法及系統。
背景技術:
隨著網絡通信技術的飛速發展,用于網絡通信的各種通信協議也越來越多。現有的通信協議在構建時,會存在一些安全漏洞,黑客可以利用這些漏洞,編寫相應的報文傳輸至網絡通信系統,對網絡通信系統進行攻擊,導致網絡通信系統癱瘓。目前,一般采用白名單過濾的方式對傳輸的報文進行檢測,以起到安全防護的目的。
發明人經過研究發現,現有的白名單過濾中,只針對報文中的主功能碼進行過濾,而報文功能的實現往往是由報文中主功能碼和其它功能碼相關聯實現的。因此,采用白名單過濾方式對報文的主功能碼進行過濾后,還需要人為的將報文中的其它功能碼關聯至主功能碼,導致報文過濾的時效性差。
技術實現要素:
有鑒于此,本發明提供一種報文過濾方法及系統,用以解決現有技術中需要人為將報文中的其它功能碼關聯至主功能碼,導致報文過濾的時效性差的問題,具體方案如下:
一種報文過濾方法,包括:
在當前待傳輸的報文數據中,實時確定目標報文,所述目標報文為一幀完整報文;
依據預設的確定規則,確定所述目標報文中的目標功能碼;
判斷所述目標功能碼是否存在于預設的主功能列表中,如果存在,則將所述目標功能碼確定為所述目標報文對應的主功能碼;
將所述主功能碼與已設定的白名單進行匹配,若匹配成功,則對所述目標報文進行傳輸。
上述的方法,優選的,所述在當前待傳輸的報文數據中,實時確定目標報文包括:
實時檢測當前待傳輸的報文數據中的confirm標識碼;
當檢測到confirm標識碼時,將當前檢測的confirm標識碼與下一次檢測到的confirm標識碼之間的報文數據作為所述目標報文。
上述的方法,優選的,所述依據預設的確定規則,確定所述報文中的目標功能碼包括:
查找所述目標報文中的初始標識位;
將所述初始標識位之后第一個功能碼確定為所述目標報文中的目標功能碼。
上述的方法,優選的,所述將所述主功能碼與已設定的白名單進行匹配,若匹配成功,則對所述目標報文進行傳輸包括:
將所述主功能碼與所述白名單中的各個功能碼逐一進行比對;
當所述白名單中存在于所述主功能碼相對應的功能碼時,對所述目標報文進行傳輸。
上述的方法,優選的,在確定所述報文中的目標功能碼之前,還包括:對當前待傳輸報文數據的完整性進行檢測。
上述的方法,優選的,還包括:當所述目標功能碼不存在與所述預設的主功能碼列表中時,將所述目標報文舍棄。
上述的方法,優選的,還包括:當所述主功能碼與已設定的白名單未匹配成功時,將所述目標報文舍棄。
一種報文過濾系統,包括:
第一確定單元,用于在當前待傳輸的報文數據中,實時確定目標報文,所述目標報文為一幀完整報文;
第二確定單元用于,依據預設的確定規則,確定所述目標報文中的目標功能碼;
判斷單元,用于判斷所述目標功能碼是否存在于預設的主功能列表中,如果存在,則將所述目標功能碼確定為所述目標報文對應的主功能碼;
匹配單元,用于將所述主功能碼與已設定的白名單進行匹配,若匹配成功,則對所述目標報文進行傳輸。
上述的系統,優選的,所述第二確定單元包括:
查找子單元,用于查找所述報文中的初始標識位;
確定子單元,用于將所述初始標識位之后第一個功能碼確定為所述報文中的目標功能碼。
上述的系統,優選的,還包括:檢測單元,用于對當前待傳輸報文數據的完整性進行檢測。
與現有技術相比,本發明包括以下優點:
本發明提供了一種報文過濾方法,在當前待傳輸的報文數據中,實時確定目標報文,所述目標報文為一幀完整報文;依據預設的確定規則,確定所述目標報文中的目標功能碼;判斷所述目標功能碼是否存在于預設的主功能列表中,如果存在,則將所述目標功能碼確定為所述目標報文對應的主功能碼;將所述主功能碼與已設定的白名單進行匹配,若匹配成功,則對所述目標報文進行傳輸。本發明提供的過濾方法中,對于每一幀完整報文,首先判斷所述報文中的目標功能碼是否存在于預設的主功能列表中,如果在,則確定所述目標功能碼為所述報文的主功能碼,然后,將所述報文的主功能碼與已設定的白名單進行匹配,匹配成功,則直接將所述完整的報文進行發送,不需要進行其它功能碼的關聯,提升了報文過濾的時效性。
當然,實施本發明的任一產品并不一定需要同時達到以上所述的所有優點。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本申請實施例公開的一種報文過濾方法流程圖;
圖2為本申請實施例公開的一種報文過濾方法又一方法流程圖;
圖3為本申請實施例公開的一種報文過濾方法又一方法流程圖;
圖4為本申請實施例公開的一種報文過濾方法又一方法流程圖;
圖5為本申請實施例公開的一種報文過濾系統結構框圖;
圖6為本申請實施例公開的一種報文過濾系統又一結構框圖;
圖7為本申請實施例公開的一種報文過濾系統又一結構框圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本發明。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發明的精神或范圍的情況下,在其它實施例中實現。因此,本發明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
本發明提供了一種報文過濾方法,該方法的執行主體可以為多種網絡通信系統,該方法可以應用在多方通信協議中,例如網絡通信協議DNP3.0協議,所述方法的方法流程圖如圖1所示,包括步驟:
S101、在當前待傳輸的報文數據中,實時確定目標報文,所述目標報文為一幀完整報文;
本發明實施例中,當前待傳輸的報文數據由一幀一幀的數據報文組成,在執行本發明實施例提供的報文過濾方法時,在所述報文數據中,實時確定目標報文,所述目標報文為傳輸的一幀一幀數據報文中的一幀完整報文。
S102、依據預設的確定規則,確定所述目標報文中的目標功能碼;
本發明實施例中,對于確定的目標報文,依據預先設定的確定規則,從所述目標報文中確定目標功能碼。
S103、判斷所述目標功能碼是否存在于預設的主功能列表中,如果存在,則將所述目標功能碼確定為所述目標報文對應的主功能碼;
本發明實施例中,預設有主功能碼列表,所述主功能列表中存儲有在網絡傳輸過程中,符合傳輸要求的各個報文的主功能碼;本發明實施例中,判斷已經確定的目標報文的目標功能碼是否存在與預設的主功能碼列表中,如果存在,將所述目標功能碼確定為所述目標報文對應的主功能碼。
S104、將所述主功能碼與已設定的白名單進行匹配,若匹配成功,則對所述目標報文進行傳輸。
本發明實施例中,在將所述目標功能碼確定為所述目標報文的主功能碼之后,將所述主功能碼,即所述目標功能碼與已設定的白名單進行匹配。本發明實施例中的白名單為用戶或者系統的開發人員預先設定的可信的功能碼的集合;本發明實施例中,若所述目標功能碼與已設定的白名單匹配成功,則對所述目標報文進行傳輸。
本發明實施例提供的報文過濾方法,對于每一幀完整報文,首先判斷所述報文中的目標功能碼是否存在于預設的主功能列表中,如果在,則確定所述目標功能碼為所述報文的主功能碼,然后,將所述報文的主功能碼與已設定的白名單進行匹配,匹配成功,則直接將所述完整的報文進行發送,不需要進行其它功能碼的關聯,提升了報文過濾的時效性。
本發明實施例中,所涉及的報文是指網絡中交換與傳輸的數據單元,即站點一次性要發送的數據塊。報文包含了將要發送的完整的數據信息,在符合協議要求的前提下,長度不限且可變。報文的具體組成方式為:由主功能碼和關聯功能碼按通信協議規定依次排列組成。
當前待傳輸的報文數據為一幀一幀的數據報文,在報文進行傳輸之前,本發明實施例需要對報文的完整性進行檢查,舍棄不符合協議規定的報文,報文的完整性檢查:采用判斷報文長度、偏移位和檢查特殊字段的方式進行,本發明實施例所處理的報文數據的前提就是符合協議規定的完整的報文,在確定了報文的完整性之后,首先需要確定待傳輸報文數據中的目標報文。
本發明實施例中,在當前待傳輸的報文數據中,實時確定目標報文的過程如圖2所示,包括步驟:
S201、實時檢測當前待傳輸的報文數據中的confirm標識碼;
當前待傳輸的報文數據由一幀一幀的數據報文組成,每一幀報文的確定需要通過實時檢測待傳輸報文數據中的confirm標識碼的位置,當前待傳輸的報文數中存在多個confirm標識碼,記錄每個confirm標識碼的位置信息。
S202、當檢測到confirm標識碼時,將包含當前檢測的confirm標識碼與下一次檢測到的confirm標識碼之間的報文數據作為所述目標報文。所述目標報文是指任意相鄰兩個confirm標識碼之間且包含上一confirm標識碼的報文數據,依次截取目標報文。
目標報文確定之后,本發明實施例需要繼續確定目標功能碼,目標功能碼的確定需要依據預設的確定規則,具體的確定方法如圖3所示,包括步驟:
S301、查找所述目標報文中的初始標識位;
任一目標報文中都包含初始標識位,其作用在于確定報文的起始位置,本發明實施例中,優選的,所述初始標識位即為confirm標識碼。
S302、將所述初始標識位之后第一個功能碼確定為所述目標報文中的目標功能碼。
本發明是實施例中,目標功能碼是指confirm標識碼之后第一個出現的功能碼。
工業系統中常用的DNP3.0協議可以與上述實施例相呼應,該協議的功能碼列表如下表1所示:
表1
上述功能碼列表出列出了DNP3.0協議中報文數據全部功能碼信息,本功能碼列表中的初始功能碼為confirm標識碼,confirm標識碼即為本發明實施例中的初始標識位,本發明實施例中待傳輸的報文數據為一幀一幀的完整報文,通過上述功能碼列表可以看出,每幀報文都是以confirm標識碼開始,到下一個confirm標識碼之前結束。當所述報文數據在傳輸過程中,網絡通信系統通過實時檢測報文數據中confirm標識碼的位置來確定每相鄰兩個confirm標識碼之間包含上一confirm標識碼在內的數據為目標報文,并順序依次截取待傳輸報文數據中目標報文,并將所述目標報文confirm標識碼之后的第一個功能碼為目標功能碼。
確定了目標功能碼之后,本發明實施例就需要對目標功能碼與預設的主功能碼列表進行比對,所述主功能列表是指在初始設計階段由開發人員寫入系統中的默認可信的主功能碼,它對于用戶來講是開放的,當用戶在應用過程中需要加入新的主功能碼時,可以自己進行添加,可以有效避免錯判,提高了系統的可信度,本發明實施例需要將已經確定好的目標功能碼與主功能碼列表進行比對,采用由上而下逐一對比的方式,一旦在主功能碼列表中查到該目標功能碼,則將該目標功能碼確定為主功能碼,并同時停止查找。
將主功能碼與已設定的白名單進行匹配,傳統的工業協議中白名單防護系統的執行原理是嚴格按照客戶的配置來實現過濾,只有存在于該白名單中的功能碼,才可以通過,白名單的產生方式:自學習、用戶配置或預置系統幾種方法中的一種或幾種的組合產生。若主功能碼存在于白名單中,則對所述目標報文進行傳輸,最終完成一次待傳輸報文數據的過濾。
以DNP3.0協議中時間同步為例,時間同步的主功能碼為Write Time and Date,但實際經過的報文中還包含了read Class 123功能碼,如果沒有將這些關聯功能碼進行放過,即使將Write Time and Date功能碼放過也會導致整個連接中斷,正常業務中斷。
比如客戶配置了時間同步功能碼(Write Time and Date)為白名單,那么白名單系統發現read read Class 123功能碼時就會將其丟棄,則輔助時間同步功能碼的read Class 123就被丟棄了,此時整個時鐘同步的功能就會執行不成功。
但在本發明實施例中,只需要找到時間同步功能碼(Write Time and Date),并確認其在白名單中,無需配置read read Class 123,則可將報文數據傳輸,實現時間同步,提升了報文過濾的時效性。
本發明實施例在上述報文過濾方法的基礎上,還可以參考圖4,圖4中的S401和S402與圖1中S101和S102執行方式相同,在此不再贅述,在執行完S401和S402的基礎上,還包括步驟:
S403、判斷所述目標功能碼是否存在于所述預設的主功能碼列表中,如果存在執行S404,否則,執行S405;
S404、所述目標功能碼存在于預設的主功能列表中,所述目標功能碼確定為所述目標報文對應的主功能碼,判斷所述主功能碼是否存在于預設的白名單中,如果存在執行S407,否則,執行S406;
S407、將所述主功能碼與所述已設定白名單中的各個功能碼逐一進行比對,若所述主功能碼存在于白名單中,則對所述目標報文進行傳輸。
S406、將所述主功能碼與所述已設定白名單中的各個功能碼逐一進行比對;當所述主功能碼與已設定的白名單未匹配成功時,將所述目標報文舍棄。
S405、當所述目標功能碼不存在與所述預設的主功能碼列表中時,將所述目標報文舍棄;
上述關于主功能碼的判斷,指出并不是所有的目標功能碼都能在所述預設的主功能碼列表中存在,在待傳輸報文數據發送過程中,需要實時進行判斷,當目標報文的主功能碼存在于預設列表中時,則將所述目標功能碼確定為所述目標報文對應的主功能碼;當目標報文的主功能不存在于預設的主功能碼列表中時,將所述的目標報文舍棄,若待傳輸的目標報文為連續的多幀數據,繼續判斷下一幀目標報文,若待傳輸目標報文數據只有一幀,則結束檢測。
上述關于主功能碼與白名單是否匹配的判斷中,指出并不是所有的主功能碼都能在所述已設定的白名單中存在,在待傳輸報文發送過程中,需要實時的判斷,當目標報文的主功能碼存在于已設定的白名單中時,具則對所述目標報文進行傳輸,當目標報文的主功能不存在已設定的白名單中時,將所述的目標報文舍棄,若待傳輸目標報文為連續的多幀數據,繼續判斷下一幀目標報文,若目標報文數據只有一幀,則結束檢測。
與圖1所述的一種報文過濾方法相對應的,本發明實施例還提供了一種報文過濾系統,其結構示意圖如圖5所示,包括:
第一確定單元501,第二確定單元502,判斷單元503,匹配單元504。
其中:
所述第一確定單元501,用于在當前待傳輸的報文數據中,實時確定目標報文,所述目標報文為一幀完整報文;
所述第二確定單元502,用于依據預設的確定規則,確定所述目標報文中的目標功能碼;
所述判斷單元503,用于判斷所述目標功能碼是否存在于預設的主功能列表中,如果存在,則將所述目標功能碼確定為所述目標報文對應的主功能碼;
所述匹配單元504,用于將所述主功能碼與已設定的白名單進行匹配,若匹配成功,則對所述目標報文進行傳輸。
本發明實施例提供的報文過濾系統,第一確定單元需要確定一幀完整的目標報文,第二確定單元需要確定所述目標報文中的目標功能碼,判斷單元判斷所述報文中的目標功能碼是否存在于預設的主功能列表中,如果在,則確定所述目標功能碼為所述報文的主功能碼,最后通過匹配單元將所述目標報文的主功能碼與已設定的白名單進行匹配,匹配成功,則直接將所述目標報文進行發送,不需要進行其它功能碼的關聯,提升了報文過濾的時效性。
需要說明的是,所述報文過濾系統,是一個完整的系統,可以單獨使用也可以與其它系統配合使用。
在圖5的基礎上,參考圖6,圖6示出了本發明實施例提供的系統的又一結構示意圖,所述第二確定單元502,包括:
查找子單元505和確定子單元506。
所述查找子單元505,用于查找所述報文中的初始標識位;
所述確定子單元506,用于將所述初始標識位之后第一個功能碼確定為所述報文中的目標功能碼;
在以上公開的報文過濾系統中,在除了圖6所示模塊之外,本發明實施例還包括檢測單元507,參考圖7所示。
所述檢測單元507,用于對當前待傳輸報文數據的完整性進行檢測。
檢測單元507是用來在報文在待傳輸之前對報文進行完整性檢測,保證所有待傳輸報文數據均是符合通信協議規定的報文。
需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于裝置類實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
最后,還需要說明的是,在本申請中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
對所公開的實施例的上述說明,使本領域技術人員能夠實現或使用本發明。對這些實施例的多種修改對本領域技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發明的精神或范圍的情況下,在其它實施例中實現。因此,本發明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
以上所述僅是本發明的優選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發明的保護范圍。