IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オーロラ ラブズ リミテッドの特許一覧

特表2022-527266コード行挙動および関係モデルの発生ならびに署名
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-06-01
(54)【発明の名称】コード行挙動および関係モデルの発生ならびに署名
(51)【国際特許分類】
   G06F 21/57 20130101AFI20220525BHJP
   G06F 11/36 20060101ALI20220525BHJP
   G06F 8/65 20180101ALI20220525BHJP
   H04L 9/32 20060101ALI20220525BHJP
   G06N 20/00 20190101ALI20220525BHJP
【FI】
G06F21/57 320
G06F21/57 370
G06F11/36 108
G06F8/65
H04L9/32 200E
G06N20/00
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021557227
(86)(22)【出願日】2020-03-24
(85)【翻訳文提出日】2021-11-17
(86)【国際出願番号】 IB2020052756
(87)【国際公開番号】W WO2020194186
(87)【国際公開日】2020-10-01
(31)【優先権主張番号】62/823,131
(32)【優先日】2019-03-25
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.SIMULINK
2.SMALLTALK
(71)【出願人】
【識別番号】520027235
【氏名又は名称】オーロラ ラブズ リミテッド
(74)【代理人】
【識別番号】100078282
【弁理士】
【氏名又は名称】山本 秀策
(74)【代理人】
【識別番号】100113413
【弁理士】
【氏名又は名称】森下 夏樹
(74)【代理人】
【識別番号】100181674
【弁理士】
【氏名又は名称】飯田 貴敏
(74)【代理人】
【識別番号】100181641
【弁理士】
【氏名又は名称】石川 大輔
(74)【代理人】
【識別番号】230113332
【弁護士】
【氏名又は名称】山本 健策
(72)【発明者】
【氏名】フォックス, ゾハール
(72)【発明者】
【氏名】サハル, カーミット
【テーマコード(参考)】
5B042
5B376
【Fターム(参考)】
5B042HH10
5B042HH23
5B042HH41
5B042KK13
5B376CA46
5B376CA61
(57)【要約】
本明細書に開示されるものは、コード行挙動および関係モデルを発生させ、それに署名するための技法である。技法は、コントローラのための実行可能コードを識別するステップと、実行可能コードの機能的分析を実施し、実行可能コードと関連付けられる複数の機能および複数の機能間の複数の関係を判定するステップと、判定された複数の機能および複数の関係に基づいて、実行可能コードのためのコード行挙動および関係モデルを発生させるステップと、署名演算を発生されたコード行挙動および関係モデル上で実施し、コード行挙動および関係モデルまたはコード行挙動および関係モデルの機能的ブロックのうちの少なくとも1つと関連付けられる、一意の署名値を生成するステップと、一意の署名値をコード行挙動および関係モデルにリンクさせるステップとを含む。
【特許請求の範囲】
【請求項1】
非一過性コンピュータ可読媒体であって、前記非一過性コンピュータ可読媒体は、命令を含み、前記命令は、少なくとも1つのプロセッサによって実行されると、コード行挙動および関係モデルを発生させて前記コード行挙動および関係モデルに署名するための動作を前記少なくとも1つのプロセッサに実施させ、前記動作は、
コントローラのための実行可能コードを識別することと、
前記実行可能コードの機能的分析を実施し、前記実行可能コードと関連付けられる複数の機能および前記複数の機能間の複数の関係を判定することと、
前記判定された複数の機能および複数の関係に基づいて、前記実行可能コードのためのコード行挙動および関係モデルを発生させることと、
署名演算を前記発生されたコード行挙動および関係モデル上で実施し、前記コード行挙動および関係モデルまたは前記コード行挙動および関係モデルの機能的ブロックのうちの少なくとも1つと関連付けられる一意の署名値を生成することと、
前記一意の署名値を前記コード行挙動および関係モデルにリンクさせることと
を含む、非一過性コンピュータ可読媒体。
【請求項2】
前記動作は、前記一意の署名値を前記実行可能コードに割り当てることをさらに含む、請求項1に記載の非一過性コンピュータ可読媒体。
【請求項3】
前記動作は、前記コード行挙動および関係モデルを前記割り当てられた署名値とともに遠隔デバイスに送信することをさらに含む、請求項2に記載の非一過性コンピュータ可読媒体。
【請求項4】
前記実行可能コードは、ソフトウェア変更デルタファイルである、請求項1に記載の非一過性コンピュータ可読媒体。
【請求項5】
前記署名値は、ハッシュ値である、請求項1に記載の非一過性コンピュータ可読媒体。
【請求項6】
前記コード行挙動および関係モデルを発生させるステップは、機械学習プロセスを通して実施される、請求項1に記載の非一過性コンピュータ可読媒体。
【請求項7】
前記機械学習プロセスは、統計的分類プロセスである、請求項6に記載の非一過性コンピュータ可読媒体。
【請求項8】
前記機械学習プロセスは、動的分析プロセスである、請求項6に記載の非一過性コンピュータ可読媒体。
【請求項9】
前記機械学習プロセスは、前記実行可能コードと関連付けられる機能のシーケンスを判定することを含む、請求項6に記載の非一過性コンピュータ可読媒体。
【請求項10】
前記機械学習プロセスは、前記シーケンスの機能のうちの少なくとも2つ間の関係を判定するステップを含む、請求項6に記載の非一過性コンピュータ可読媒体。
【請求項11】
コード行挙動および関係モデルを発生させて前記コード行挙動および関係モデルに署名するためのコンピュータ実装方法であって、前記方法は、
コントローラのための実行可能コードを識別することと、
前記実行可能コードの機能的分析を実施し、前記実行可能コードと関連付けられる複数の機能および前記複数の機能間の複数の関係を判定することと、
前記判定された複数の機能および複数の関係に基づいて、前記実行可能コードのためのコード行挙動および関係モデルを発生させることと、
署名演算を前記発生されたコード行挙動および関係モデル上で実施し、前記コード行挙動および関係モデルまたは前記コード行挙動および関係モデルの機能的ブロックのうちの少なくとも1つと関連付けられる一意の署名値を生成することと、
前記一意の署名値を前記コード行挙動および関係モデルにリンクさせることと
を含む、コンピュータ実装方法。
【請求項12】
前記一意の署名値を前記実行可能コードに割り当てることをさらに含む、請求項11に記載のコンピュータ実装方法。
【請求項13】
前記コード行挙動および関係モデルを前記割り当てられた署名値とともに遠隔デバイスに送信することをさらに含む、請求項11に記載のコンピュータ実装方法。
【請求項14】
前記実行可能コードは、ソフトウェア変更デルタファイルである、請求項11に記載のコンピュータ実装方法。
【請求項15】
前記一意の署名値は、暗号化ノンス数である、請求項11に記載のコンピュータ実装方法。
【請求項16】
前記コントローラは、仮想コントローラである、請求項11に記載のコンピュータ実装方法。
【請求項17】
前記コントローラは、車両の電子制御ユニット(ECU)である、請求項11に記載のコンピュータ実装方法。
【請求項18】
前記一意の署名値をリンクさせることは、前記関係モデルを圧縮することを含む、請求項11に記載のコンピュータ実装方法。
【請求項19】
前記署名演算は、前記実行可能コードと関連付けられる機能の数または前記機能のうちの少なくとも1つのタイプに基づく、請求項11に記載のコンピュータ実装方法。
【請求項20】
前記署名演算は、前記関係の数または少なくとも1つの関係と関連付けられる機能に基づく、請求項11に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、参照することによってその全体として本明細書に組み込まれる、2019年3月25日に出願された、米国仮特許出願第62/823,131号の優先権を主張する。
【0002】
本明細書に説明される主題は、概して、分析およびセキュリティを、車両ソフトウェアおよびシステム、ならびに電子制御ユニット(ECU)または他のコントローラ等のコントローラを利用する、種々の他のタイプのモノのインターネット(IoT)またはネットワーク接続システムに提供するための技法に関する。例えば、ある開示される実施形態は、コード行挙動および関係モデルを発生させ、それに署名するステップを対象とする。これらの技法は、コードへの変更に続いて、ソフトウェア機能性変更のステータスを提供するステップを含んでもよい。いくつかの技法は、コード行挙動および関係モデルを通して、ソフトウェア相互依存性を識別するステップ、異種コードソースの中のソフトウェア誤動作のソースを照合するステップ、および/またはコード行挙動ならびに関係モデルを通して、ソフトウェア依存性を識別するステップを伴ってもよい。他の技法は、コード行挙動および関係モデルを使用して、ハードウェア変更の影響を予期してもよい。さらに、いくつかの技法は、コード行挙動および関係モデルを通して、コントローラソフトウェア更新の完全性を照合するステップ、または動的制御フロー完全性を提供するステップに関連してもよい。さらに別の実施例として、いくつかの技法は、コード行挙動および関係モデルを通して、コード実行の動的可視化を提供してもよい。
【背景技術】
【0003】
現代の車両および他のモノのインターネット(IoT)システムは、多くの場合、多くの異なるコントローラを利用し、これは、随時、ソフトウェア変更を必要とし得る。これらのソフトウェア変更は、多くの課題を提示する。例えば、従来のシステムにおいて、無線でソフトウェア変更を承認するために、コントローラは、悪意のあるソフトウェアファイルの導入を通して等、攻撃を受けやすくあり得る、通信チャネルを有し得る。いくつかのシナリオでは、そのような脆弱性は、コントローラ等のデバイスにおけるソフトウェア変更(例えば、更新、アップグレード、パッチ、修正、再較正、構成管理等)の認証の欠如によって増幅され得る。別の実施例として、ソフトウェア開発者は、単一コンポーネントを越えて他のコンポーネントまで、さらには、システム全体に延在し得る、コード変更によって生じる機能的効果を判定することが困難であり得る。これは、システムの意図されない変更につながり得、これは、ある場合には、機能性を損なわせる、またはさらに、ユーザを危険に曝し得る(例えば、車両内の重要なコンポーネントが、危殆化される)。多くの従来の設定では、ソフトウェアの断片間の機能的効果における差異を指摘し、かつそのような差異の伝搬効果を判定することは、リソース集約的であり得る(可能である場合でも)。さらに、ソフトウェア更新が、機能的等価性を保存するかどうかを確認することは、従来の手段を通して遂行することが困難であり得、そのような確認を行うために、大量のデータおよび帯域幅を使用して、長期プロセスを要求し得る。多くの場合、現在の方法は、開発者に、機能的影響の大ざっぱな理解のみ、または重要な機能情報を強調していない、コード行が集中した表示を提供し、ユーザが、コードの変更から生じ得る、可能性として考えられる機能的変更を理解するために時間およびリソース集約的プロセスにし得る。
【0004】
従来のソフトウェア分析およびセキュリティ技法は、現在、これらの問題点に対処するように装備されていない。例えば、それらは、新しいコードによって生じる機能的変更を判定し、機能的変更の広範囲に及ぶ影響を判定し、機能的一貫性を確実にする一方、機能的に破壊的、非認可、および/または悪意のあるソフトウェア更新のインストールを防止するための適正な技法を欠いている。さらに、多くの現在の方法はまた、ソフトウェア開発者に、その破壊性の程度にかかわらず、機能的変更を知らせていない。
【0005】
現在のシステムの技術的欠点に照らして、コントローラおよびシステムのための包括的セキュリティ保護を提供するための改良されたシステムおよび方法の必要性が存在する。下記に議論される技法は、セキュリティ、効率、照合可能性、および可用性における多くの技術的改良をもたらす。例えば、いくつかの技法によると、コントローラのためのコードが、機能的に分析され得、コード行挙動および関係モデルが、発生され得る。署名演算が、コード行挙動および関係モデル上で実施され得、これは、モデル全体を精査する必要なく、コードまたは別のモデルに対するコード行挙動および関係モデルの高速査定を可能にし得る。
【0006】
関連利点は、2つのコード行挙動および関係モデルの機能的差比較を伴う、開示される方法から生じ得る。そのような比較は、ステータスおよび/または判定された機能的等価性の程度をもたらし得る。本情報は、ソフトウェア変更に関する決定を行うために、デバイス、システム、および/またはユーザによって使用されてもよい。
【0007】
本明細書に説明されるようなコード行挙動および関係モデルはまた、ソフトウェア相互依存性の検出を可能にし得る。例えば、いくつかの開示される技法によると、機能的コード行挙動および関係モデルは、可能性として考えられるソフトウェア更新等と併せて分析され、同一コントローラ上のコードの異なる部分間の相互依存性を識別してもよい。
【0008】
さらに別の利点として、開示される技法は、潜在的ソフトウェア変更ならびに関連付けられるソースによって影響される、コードまたはデバイスの識別を可能にする。本識別を使用して、通知は、関連付けられるソースに送信され、より高速のシステムまたはデバイス修復を確実にし得る。
【0009】
開示される実施形態はまた、ハードウェア変更の影響を予期するステップに関する。例えば、ハードウェアの新しい部品が、コード行挙動および関係モデルを活用して、ハードウェアの新しい部品に関する機能的等価性のステータスを判定する、分析プロセスをプロンプトしてもよい。判定されたステータスに基づいて、他の応答性アクションが、システムの中へのハードウェアのよりシームレスな実装を可能にするために使用されてもよい。
【0010】
ソフトウェア相互依存性を識別するステップと同様に、ソフトウェア依存性を識別するステップもまた、開示される技法を用いて達成されてもよい。例えば、複数のコード行挙動および関係モデルが、システム全体を通してコード変更の影響を辿り、システム内の意図されない結果の早期識別および新しいソフトウェアの安全展開を可能にするために使用されてもよい。
【0011】
開示される実施形態はまた、コントローラソフトウェア更新の完全性を照合するステップに関する。例えば、コード行挙動および関係モデルおよび/または署名値が、コントローラによって、受信された更新が実行のために合法的および適切であることを確認するために使用されてもよい。ある場合には、コントローラは、署名値のみを受信し、その独自のコード行挙動および関係モデルならびに署名値を算出し、依然として、コントローラが受信されたソフトウェア変更がその動作に干渉しないであろうことを確実にすることを可能にしながら、無線帯域幅上の歪みを低減させてもよい。
【0012】
さらに、いくつかの開示される技法は、コード行挙動および関係モデルを使用して、動的制御フロー統合を可能にする。例えば、コード行挙動および関係モデルは、コントローラのランタイム動作に基づき、また、コントローラに展開され得る、動的制御フロー完全性モデルを構築するために使用されてもよい。このように、ランタイム動作の機能的分析は、コントローラの継続したセキュアな動作を提供するために使用されてもよい。
【0013】
さらに、いくつかの開示される技法は、コード行挙動および関係モデルを構築することによって、システムまたはデバイス内の機能的変更の改良された可視化を提供する。例えば、コード行挙動および関係モデルの視覚的描写が、表示されてもよく、ユーザ相互作用、コード変更、デバイス変更、および同等物に基づいて、動的に変化してもよい。そのような描写は、そうでなければ、分析するために時間およびリソース集約的であろう、情報を簡略化し得る。
【発明の概要】
【課題を解決するための手段】
【0014】
いくつかの開示される実施形態は、コード行挙動および関係モデルを使用するための非一過性コンピュータ可読媒体、システム、および方法を説明する。例えば、例示的実施形態では、非一過性コンピュータ可読媒体は、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、コード行挙動および関係モデルを発生させ、それに署名するための動作を実施させる、命令を含んでもよい。動作は、コントローラのための実行可能コードを識別するステップと、実行可能コードの機能的分析を実施し、実行可能コードと関連付けられる複数の機能および複数の機能間の複数の関係を判定するステップと、判定された複数の機能および複数の関係に基づいて、実行可能コードのためのコード行挙動および関係モデルを発生させるステップと、署名演算を発生されたコード行挙動および関係モデル上で実施し、コード行挙動および関係モデルまたはコード行挙動および関係モデルの機能的ブロックのうちの少なくとも1つと関連付けられる、一意の署名値を生成するステップと、一意の署名値をコード行挙動および関係モデルにリンクさせるステップとを含んでもよい。
【0015】
さらなる実施形態によると、動作はさらに、一意の署名値を実行可能コードに割り当てるステップを含む。
【0016】
さらなる実施形態によると、動作はさらに、コード行挙動および関係モデルを割り当てられた署名値とともに遠隔デバイスに送信するステップを含む。
【0017】
さらなる実施形態によると、実行可能コードは、ソフトウェア変更デルタファイルである。
【0018】
さらなる実施形態によると、署名値は、ハッシュ値である。
【0019】
さらなる実施形態によると、コード行挙動および関係モデルを発生させるステップは、機械学習プロセスを通して実施される。
【0020】
さらなる実施形態によると、機械学習プロセスは、統計的分類プロセスである。
【0021】
さらなる実施形態によると、機械学習プロセスは、動的分析プロセスである。
【0022】
さらなる実施形態によると、機械学習プロセスは、実行可能コードと関連付けられる機能のシーケンスを判定するステップを含む。
【0023】
さらなる実施形態によると、機械学習プロセスは、シーケンスの機能のうちの少なくとも2つ間の関係を判定するステップを含む。
【0024】
さらに開示される実施形態は、コード行挙動および関係モデルを発生させ、それに署名するための方法を含む。本方法は、コントローラのための実行可能コードを識別するステップと、実行可能コードの機能的分析を実施し、実行可能コードと関連付けられる複数の機能および複数の機能間の複数の関係を判定するステップと、判定された複数の機能および複数の関係に基づいて、実行可能コードのためのコード行挙動および関係モデルを発生させるステップと、署名演算を発生されたコード行挙動および関係モデル上で実施し、コード行挙動および関係モデルまたはコード行挙動および関係モデルの機能的ブロックのうちの少なくとも1つと関連付けられる、一意の署名値を生成するステップと、一意の署名値をコード行挙動および関係モデルにリンクさせるステップとを含んでもよい。
【0025】
さらなる実施形態によると、本方法はさらに、一意の署名値を実行可能コードに割り当てるステップを含む。
【0026】
さらなる実施形態によると、本方法はさらに、コード行挙動および関係モデルを割り当てられた署名値とともに遠隔デバイスに送信するステップを含む。
【0027】
さらなる実施形態によると、実行可能コードは、ソフトウェア変更デルタファイルである。
【0028】
さらなる実施形態によると、一意の署名値は、暗号化ノンス数である。
【0029】
さらなる実施形態によると、コントローラは、仮想コントローラである。
【0030】
さらなる実施形態によると、コントローラは、車両の電子制御ユニット(ECU)である。
【0031】
さらなる実施形態によると、一意の署名値をリンクさせるステップは、関係モデルを圧縮するステップを含む。
【0032】
さらなる実施形態によると、署名演算は、実行可能コードと関連付けられる機能の数または機能のうちの少なくとも1つのタイプに基づく。
【0033】
さらなる実施形態によると、署名演算は、関係の数または少なくとも1つの関係と関連付けられる機能に基づく。
【0034】
別の例示的実施形態では、非一過性コンピュータ可読媒体は、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、コード行挙動および関係モデルを使用して、ソフトウェア機能性変更を判定するための動作を実施させる、命令を含んでもよい。動作は、実行可能コードの第1の部分および実行可能コードの第2の部分を識別するステップと、実行可能コードの第1の部分の機能の実行を表す、第1のコード行挙動および関係モデルにアクセスするステップと、実行可能コードの第2の部分に基づいて、実行可能コードの第2の部分の機能の実行を表す、第2のコード行挙動および関係モデルを構築するステップと、第1のコード行挙動および関係モデルと第2のコード行挙動および関係モデルの機能的差比較を実施するステップと、機能的差比較に基づいて、実行可能コードの第1の部分と実行可能コードのコード部分との間の機能的等価性のステータスを判定するステップと、判定された差異に基づいて、機能的等価性のステータスを識別する報告を発生させるステップとを含んでもよい。
【0035】
さらなる実施形態によると、機能的等価性のステータスは、等価性または非等価性のステータスを含む。
【0036】
さらなる実施形態によると、機能的等価性のステータスは、等価性の程度を含む。
【0037】
さらなる実施形態によると、動作はさらに、等価性の程度が閾値に到達しないことを判定するステップと、等価性の程度が閾値に到達しないことを判定するステップに基づいて、プロンプトを発生させるステップとを含む。
【0038】
さらなる実施形態によると、比較は、実行可能コードの第1の部分の機能性が、CPUサイクル、メモリ要件、実行の速度、または機能性関係のうちの少なくとも1つに関連する動作エンベロープ内に該当するかどうかを判定するステップを含む。
【0039】
さらなる実施形態によると、実行可能コードの第1の部分の機能の実行または実行可能コードの第2の部分の機能の実行のうちの少なくとも1つは、物理的コントローラ上での実行である。
【0040】
さらなる実施形態によると、実行可能コードの第1の部分の機能の実行または実行可能コードの第2の部分の機能の実行のうちの少なくとも1つは、仮想化されたコントローラ上での実行である。
【0041】
さらなる実施形態によると、機能的差比較は、応答時間、機能実行のシーケンス、またはメモリ漏出の差異のうちの少なくとも1つに基づく。
【0042】
さらなる実施形態によると、機能的差比較の結果が、閾値を超えると、動作はさらに、差異に基づいて、休止時間の推定される確率を判定するステップを含む。
【0043】
さらなる実施形態によると、休止時間の推定される確率は、定義された時間周期内の休止時間の確率として表される。
【0044】
さらなる実施形態によると、動作はさらに、実行可能コードの第2の部分の機能のうちの少なくとも1つを実行可能コードの第2の部分の少なくともセグメントにリンクさせるステップを含む。
【0045】
さらなる実施形態によると、アクセスされるコード行挙動および関係モデルは、機械学習プロセスに従って発生された。
【0046】
さらなる実施形態によると、動作はさらに、機能的差比較に基づいて、実行可能コードの第3の部分が休止状態であることを判定するステップを含む。
【0047】
さらなる実施形態によると、第1または第2のコード行挙動および関係モデルは、動的に発生された。
【0048】
さらなる実施形態によると、第1または第2のコード行挙動および関係モデルは、静的に発生された。
【0049】
さらなる実施形態によると、報告はさらに、機能性ドリフトの少なくとも1つのインスタンスを識別する。
【0050】
さらに開示される実施形態は、コード行挙動および関係モデルを使用して、ソフトウェア機能性変更を判定するための方法を含む。本方法は、実行可能コードの第1の部分および実行可能コードの第2の部分を識別するステップと、実行可能コードの第1の部分の機能の実行を表す、第1のコード行挙動および関係モデルにアクセスするステップと、実行可能コードの第2の部分に基づいて、実行可能コードの第2の部分の機能の実行を表す、第2のコード行挙動および関係モデルを構築するステップと、第1のコード行挙動および関係モデルと第2のコード行挙動および関係モデルの機能的差比較を実施するステップと、機能的差比較に基づいて、実行可能コードの第1の部分と実行可能コードのコード部分との間の機能的等価性のステータスを判定するステップと、判定された差異に基づいて、機能的等価性のステータスを識別する報告を発生させるステップとを含んでもよい。
【0051】
さらなる実施形態によると、機能的等価性のステータスは、等価性または非等価性のステータスを含む。
【0052】
さらなる実施形態によると、比較は、実行可能コードの第1の部分の機能性が、CPUサイクル、メモリ要件、実行の速度、または機能性関係のうちの少なくとも1つに関連する動作エンベロープ内に該当するかどうかを判定するステップを含む。
【0053】
さらなる実施形態によると、アクセスされるコード行挙動および関係モデルは、機械学習プロセスに従って発生された。
【0054】
別の例示的実施形態では、非一過性コンピュータ可読媒体は、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、機能的コード行挙動および関係モデルに基づいて、ソフトウェア相互依存性を識別するための動作を実施させる、命令を含んでもよい。動作は、第1のコントローラと関連付けられる、実行可能コードの第1の部分を識別するステップと、実行可能コードの第1の部分の機能性および実行可能コードの第2の部分を表す、機能的コード行挙動および関係モデルにアクセスするステップと、機能的コード行挙動および関係モデルに基づいて、実行可能コードの第2の部分が実行可能コードの第1の部分と相互依存することを判定するステップと、判定された相互依存性に基づいて、相互依存する実行可能コードの第1の部分および実行可能コードの第2の部分を識別する、報告を発生させるステップとを含んでもよい。
【0055】
さらなる実施形態によると、動作はさらに、実行可能コードの第1の部分を一意に識別する、第1の署名と、実行可能コードの第2の部分を一意に識別する、第2の署名とを識別するステップを含む。
【0056】
さらなる実施形態によると、実行可能コードの第1および第2の部分は、仮想化されたコントローラ上に実装される。
【0057】
さらなる実施形態によると、実行可能コードの第2の部分は、第1のコントローラと関連付けられる。
【0058】
さらなる実施形態によると、実行可能コードの第2の部分は、第2のコントローラと関連付けられる。
【0059】
さらなる実施形態によると、第1および第2のコントローラは、同一デバイスの一部である。
【0060】
さらなる実施形態によると、本デバイスは、車両の少なくとも一部である。
【0061】
さらなる実施形態によると、動作はさらに、実行可能コードの第1の部分への実行可能コードの第2の部分の機能的影響を判定するステップを含む。
【0062】
さらなる実施形態によると、第1の感度値は、実行可能コードの第1の部分と関連付けられ、第2の感度値は、実行可能コードの第2の部分と関連付けられ、機能的影響は、第1または第2の感度値に基づく。
【0063】
さらなる実施形態によると、機能的影響は、発生された報告内に含まれる。
【0064】
さらなる実施形態によると、動作はさらに、判定された相互依存性の視覚的描写を発生させるステップを含む。
【0065】
さらなる実施形態によると、動作はさらに、機能的影響が閾値を超えることを判定するステップを含み、視覚的描写は、機能的影響が閾値を超えることの判定に基づく。
【0066】
さらなる実施形態によると、視覚的描写は、判定された相互依存性の視覚的要素、実行可能コードの第1の部分の視覚的要素、実行可能コードの第2の部分の視覚的要素、および実行可能コードの他の部分の視覚的要素を含む。
【0067】
さらに開示される実施形態は、機能的コード行挙動および関係モデルに基づいて、ソフトウェア相互依存性を識別するための方法を含む。本方法は、第1のコントローラと関連付けられる、実行可能コードの第1の部分を識別するステップと、実行可能コードの第1の部分の機能性および実行可能コードの第2の部分を表す、機能的コード行挙動および関係モデルにアクセスするステップと、機能的コード行挙動および関係モデルに基づいて、実行可能コードの第2の部分が実行可能コードの第1の部分と相互依存することを判定するステップと、判定された相互依存性に基づいて、相互依存する実行可能コードの第1の部分および実行可能コードの第2の部分を識別する、報告を発生させるステップとを含んでもよい。
【0068】
さらなる実施形態によると、本方法はさらに、実行可能コードの第1の部分を一意に識別する、第1の署名と、実行可能コードの第2の部分を一意に識別する、第2の署名とを識別するステップを含む。
【0069】
さらなる実施形態によると、実行可能コードの第2の部分は、第1のコントローラと関連付けられる。
【0070】
さらなる実施形態によると、実行可能コードの第2の部分は、第2のコントローラと関連付けられる。
【0071】
さらなる実施形態によると、本方法はさらに、実行可能コードの第1の部分への実行可能コードの第2の部分の機能的影響を判定するステップを含む。
【0072】
さらなる実施形態によると、第1の感度値は、実行可能コードの第1の部分と関連付けられ、第2の感度値は、実行可能コードの第2の部分と関連付けられ、機能的影響は、第1または第2の感度値に基づく。
【0073】
さらなる実施形態によると、機能的影響は、発生された報告内に含まれる。
【0074】
別の例示的実施形態では、非一過性コンピュータ可読媒体は、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、ソフトウェアベースの誤動作のソースを識別するための動作を実施させる、命令を含んでもよい。動作は、システム内の潜在的ソフトウェア誤動作を識別するステップであって、システムは、複数の異なるソフトウェアソースと関連付けられる、複数のコードセットを有する、ステップと、コードセットの機能の実行を表す、コード行挙動および関係モデルにアクセスするステップと、コード行挙動および関係モデルに基づいて、少なくとも部分的に、潜在的ソフトウェア誤動作を引き起こす潜在性を有することが判定されるコードセットを識別するステップと、識別されたコードセットのソース識別子を判定するステップとを含んでもよい。
【0075】
さらなる実施形態によると、複数のコードセットは、システムの少なくとも1つのコントローラと関連付けられる。
【0076】
さらなる実施形態によると、アクセスされるコード行挙動および関係モデルは、少なくとも1つのコントローラのリアルタイム動作と関連付けられるデータに基づいて、動的に発生された。
【0077】
さらなる実施形態によると、コード行挙動および関係モデルは、識別されたコードセットの機能の実行を表す。
【0078】
さらなる実施形態によると、複数のコードセットは、複数の異なるソフトウェア開発者によって開発される。
【0079】
さらなる実施形態によると、複数の異なるソフトウェア開発者はそれぞれ、一意のソース識別子を有する。
【0080】
さらなる実施形態によると、動作はさらに、潜在的ソフトウェア誤動作の報告を識別されたソース識別子と関連付けられる遠隔ソースに送信するステップを含む。
【0081】
さらなる実施形態によると、システム内の潜在的ソフトウェア誤動作の識別は、システムのコンポーネントへの最近のソフトウェア変更に基づく。
【0082】
さらなる実施形態によると、ソフトウェア変更は、デルタファイルを使用して、コンポーネント上に実装された。
【0083】
さらなる実施形態によると、動作はさらに、潜在的ソフトウェア誤動作の報告を識別されたソース識別子と関連付けられる遠隔ソースに送信するステップを含み、デルタファイルは、一意の識別子と関連付けられ、一意の識別子は、報告内に含まれる。
【0084】
さらなる実施形態によると、動作はさらに、デルタファイルをコンポーネント上の現在のソフトウェアからリンク解除することによって、コンポーネント上のソフトウェアを復帰させるステップを含む。
【0085】
さらなる実施形態によると、システムは、仮想システムである。
【0086】
さらに開示される実施形態は、ソフトウェアベースの誤動作のソースを識別するための方法を含む。本方法は、システム内の潜在的ソフトウェア誤動作を識別するステップであって、システムは、複数の異なるソフトウェアソースと関連付けられる、複数のコードセットを有する、ステップと、コードセットの機能の実行を表す、コード行挙動および関係モデルにアクセスするステップと、コード行挙動および関係モデルに基づいて、少なくとも部分的に、潜在的ソフトウェア誤動作を引き起こしていることが判定されるコードセットを識別するステップと、識別されたコードセットのソース識別子を判定するステップとを含んでもよい。
【0087】
さらなる実施形態によると、複数のコードセットは、システムの少なくとも1つのコントローラと関連付けられる。
【0088】
さらなる実施形態によると、アクセスされるコード行挙動および関係モデルは、少なくとも1つのコントローラのリアルタイム動作と関連付けられるデータに基づいて、動的に発生された。
【0089】
さらなる実施形態によると、コード行挙動および関係モデルは、識別されたコードセットの機能の実行を表す。
【0090】
さらなる実施形態によると、複数のコードセットは、複数の異なるソフトウェア開発者によって開発される。
【0091】
さらなる実施形態によると、複数の異なるソフトウェア開発者はそれぞれ、一意のソース識別子を有する。
【0092】
さらなる実施形態によると、動作はさらに、潜在的ソフトウェア誤動作の報告を識別されたソース識別子と関連付けられる遠隔ソースに送信するステップを含む。
【0093】
さらなる実施形態によると、システム内の潜在的ソフトウェア誤動作の識別は、システム内で実行されるデルタファイルに基づく。
【0094】
別の例示的実施形態では、非一過性コンピュータ可読媒体は、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、少なくとも1つの機能的コード行挙動および関係モデルに基づいて、ハードウェア変更影響を分析するための動作を実施させる、命令を含んでもよい。動作は、システムと関連付けられる、新しいハードウェアコンポーネントを識別するステップと、新しいハードウェアコンポーネントを使用して、機能の実行を表す、第1のコード行挙動および関係モデルにアクセスするステップと、システムの前のハードウェアコンポーネント上の機能の実行を表す、第2のコード行挙動および関係モデルにアクセスするステップと、第1のコード行挙動および関係モデルと第2のコード行挙動および関係モデルの機能的差比較を実施するステップと、機能的差比較に基づいて、新しいハードウェアコンポーネントと前のハードウェアコンポーネントとの間の機能的等価性のステータスを判定するステップと、判定された差異に基づいて、機能的等価性のステータスを識別する報告を発生させるステップとを含んでもよい。
【0095】
さらなる実施形態によると、第2のコード行挙動および関係モデルは、前のハードウェアコンポーネントのリアルタイム動作と関連付けられるデータに基づいて動的に発生された。
【0096】
さらなる実施形態によると、第1のコード行挙動および関係モデルは、新しいハードウェアコンポーネントのシミュレートされた動作と関連付けられるデータに基づいて発生された。
【0097】
さらなる実施形態によると、新しいハードウェアコンポーネントは、コントローラである。
【0098】
さらなる実施形態によると、システムは、車両であって、コントローラは、電子制御ユニット(ECU)である。
【0099】
さらなる実施形態によると、動作はさらに、判定された差異に基づいて、新しいハードウェアコンポーネントが認可されていないことを判定するステップを含む。
【0100】
さらなる実施形態によると、動作はさらに、新しいハードウェアコンポーネントが認可されていないことを判定するステップに基づいて、新しいハードウェアコンポーネントの動作をブロックするステップを含む。
【0101】
さらなる実施形態によると、コントローラは、第1のコントローラであって、動作はさらに、少なくとも1つのハードウェアコンポーネントが第1のコントローラに依存する第2のコントローラであることを判定するステップを含む。
【0102】
さらなる実施形態によると、前のハードウェアコンポーネントは、新しいハードウェアコンポーネントによって置換されることになる。
【0103】
さらなる実施形態によると、動作はさらに、少なくとも1つのハードウェアコンポーネントが新しいハードウェアコンポーネントに相互依存することを判定するステップを含む。
【0104】
さらなる実施形態によると、動作はさらに、第3のコード行挙動および関係モデルにアクセスするステップであって、第3のモデルは、少なくとも1つの依存するハードウェアコンポーネントおよび前のハードウェアコンポーネント上の機能の実行を表す、ステップと、第4のコード行挙動および関係モデルを発生させるステップであって、第4のモデルは、少なくとも1つの依存するハードウェアコンポーネントおよび新しいハードウェアコンポーネント上の機能の実行を表す、ステップと、第3のモデルと第4のモデルの機能的差比較を実施するステップと、機能的差比較に基づいて、システム内の機能的等価性の変更を判定するステップと、判定された差異に基づいて、変更を識別する、報告を発生させるステップとを含む。
【0105】
さらに開示される実施形態は、少なくとも1つの機能的コード行挙動および関係モデルに基づいて、ハードウェア変更影響を分析するための方法を含む。本方法は、システムと関連付けられる、新しいハードウェアコンポーネントを識別するステップと、新しいハードウェアコンポーネントを使用して、機能の実行を表す、第1のコード行挙動および関係モデルにアクセスするステップと、システムの前のハードウェアコンポーネント上の機能の実行を表す、第2のコード行挙動および関係モデルにアクセスするステップと、第1のコード行挙動および関係モデルと第2のコード行挙動および関係モデルの機能的差比較を実施するステップと、機能的差比較に基づいて、新しいハードウェアコンポーネントと前のハードウェアコンポーネントとの間の機能的等価性のステータスを判定するステップと、判定された差異に基づいて、機能的等価性のステータスを識別する報告を発生させるステップとを含んでもよい。
【0106】
さらなる実施形態によると、第2のコード行挙動および関係モデルは、前のハードウェアコンポーネントのリアルタイム動作と関連付けられるデータに基づいて動的に発生された。
【0107】
さらなる実施形態によると、第1のコード行挙動および関係モデルは、新しいハードウェアコンポーネントのシミュレートされた動作と関連付けられるデータに基づいて発生された。
【0108】
さらなる実施形態によると、動作はさらに、判定された差異に基づいて、新しいハードウェアコンポーネントが認可されていないことを判定するステップを含む。
【0109】
さらなる実施形態によると、動作はさらに、新しいハードウェアコンポーネントが認可されていないことを判定するステップに基づいて、新しいハードウェアコンポーネントの動作をブロックするステップを含む。
【0110】
さらなる実施形態によると、コントローラは、第1のコントローラであって、動作はさらに、少なくとも1つのハードウェアコンポーネントが第1のコントローラに依存する第2のコントローラであることを判定するステップを含む。
【0111】
さらなる実施形態によると、前のハードウェアコンポーネントは、新しいハードウェアコンポーネントによって置換されることになる。
【0112】
さらなる実施形態によると、動作はさらに、少なくとも1つのハードウェアコンポーネントが新しいハードウェアコンポーネントに相互依存することを判定するステップを含む。
【0113】
さらなる実施形態によると、動作はさらに、第3のコード行挙動および関係モデルにアクセスするステップであって、第3のモデルは、少なくとも1つの依存するハードウェアコンポーネントおよび前のハードウェアコンポーネント上の機能の実行を表す、ステップと、第4のコード行挙動および関係モデルを発生させるステップであって、第4のモデルは、少なくとも1つの依存するハードウェアコンポーネントおよび新しいハードウェアコンポーネント上の機能の実行を表す、ステップと、第3のモデルと第4のモデルの機能的差比較を実施するステップと、機能的差比較に基づいて、システム内の機能的等価性の変更を判定するステップと、判定された差異に基づいて、変更を識別する、報告を発生させるステップとを含む。
【0114】
別の例示的実施形態では、非一過性コンピュータ可読媒体は、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、機能的コード行挙動および関係モデルに基づいて、ソフトウェア依存性を識別するための動作を実施させる、命令を含んでもよい。動作は、実行可能コードの第1の部分の機能の実行を表す、第1のコード行挙動および関係モデルにアクセスするステップであって、実行可能コードの第1の部分は、第1のシンボルと関連付けられる、ステップと、実行可能コードの第1の部分への変更を検出するステップと、実行可能コードの変更された第1の部分に基づいて、実行可能コードの変更された第1の部分の機能の実行を表す、第2のコード行挙動および関係モデルを構築するステップと、構築された第2のモデルに基づいて、(i)実行可能コードの変更された第1の部分または第1のシンボルと(ii)第2のシンボルとの間の依存性を判定するステップと、判定された差異に基づいて、依存性を識別する、報告を発生させるステップとを含んでもよい。
【0115】
さらなる実施形態によると、第2のシンボルは、変数、バッファ、関数、コール、オブジェクト、またはコードのセグメントのうちの少なくとも1つである。
【0116】
さらなる実施形態によると、動作はさらに、実行可能コードの変更された第1の部分によって生じる第2のシンボルへの影響を判定するステップを含み、報告はさらに、影響を識別する。
【0117】
さらなる実施形態によると、第1の感度値は、実行可能コードの第1の部分と関連付けられ、第2の感度値は、第2のシンボルと関連付けられ、影響は、第1または第2の感度値に基づく。
【0118】
さらなる実施形態によると、実行可能コードの第1の部分は、第1のコントローラ上で実行されるように構成され、第2のシンボルは、第2のコントローラと関連付けられる。
【0119】
さらなる実施形態によると、動作はさらに、第1および第2のコントローラから遠隔で第2のモデルを動作させることによって、依存性を判定するステップを含む。
【0120】
さらなる実施形態によると、第1および第2のコントローラは、車両内の電子制御ユニット(ECU)のグループの一部である。
【0121】
さらなる実施形態によると、依存性は、第1のシンボルと第2のシンボルとの間の関連付けの強度を含む。
【0122】
さらなる実施形態によると、関連付けの強度は、第1のシンボルが第2のシンボルと相互作用する頻度に基づく。
【0123】
さらなる実施形態によると、関連付けの強度は、実行可能コードの第1の部分が第2のシンボルをコールまたは修正するように構成されることに基づく。
【0124】
さらなる実施形態によると、動作はさらに、判定された依存性の視覚的描写を発生させるステップを含む。
【0125】
さらに開示される実施形態は、機能的コード行挙動および関係モデルに基づいて、ソフトウェア依存性を識別するための方法を含む。本方法は、実行可能コードの第1の部分の機能の実行を表す、第1のコード行挙動および関係モデルにアクセスするステップであって、実行可能コードの第1の部分は、第1のシンボルと関連付けられる、ステップと、実行可能コードの第1の部分への変更を検出するステップと、実行可能コードの変更された第1の部分に基づいて、実行可能コードの変更された第1の部分の機能の実行を表す、第2のコード行挙動および関係モデルを構築するステップと、構築された第2のモデルに基づいて、(i)実行可能コードの変更された第1の部分または第1のシンボルと(ii)第2のシンボルとの間の依存性を判定するステップと、判定された差異に基づいて、依存性を識別する、報告を発生させるステップとを含んでもよい。
【0126】
さらなる実施形態によると、第2のシンボルは、変数、バッファ、関数、コール、オブジェクト、またはコードのセグメントのうちの少なくとも1つである。
【0127】
さらなる実施形態によると、動作はさらに、実行可能コードの変更された第1の部分によって生じる第2のシンボルへの影響を判定するステップを含み、報告はさらに、影響を識別する。
【0128】
さらなる実施形態によると、第1の感度値は、実行可能コードの第1の部分と関連付けられ、第2の感度値は、第2のシンボルと関連付けられ、影響は、第1または第2の感度値に基づく。
【0129】
さらなる実施形態によると、実行可能コードの第1の部分は、第1のコントローラ上で実行されるように構成され、第2のシンボルは、第2のコントローラと関連付けられる。
【0130】
さらなる実施形態によると、第1および第2のコントローラは、車両内の電子制御ユニット(ECU)のグループの一部である。
【0131】
さらなる実施形態によると、依存性は、第1のシンボルと第2のシンボルとの間の関連付けの強度を含む。
【0132】
さらなる実施形態によると、関連付けの強度は、第1のシンボルが第2のシンボルと相互作用する頻度に基づく。
【0133】
さらなる実施形態によると、関連付けの強度は、実行可能コードの第1の部分が第2のシンボルをコールまたは修正するように構成されることに基づく。
【0134】
別の例示的実施形態では、非一過性コンピュータ可読媒体は、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、機能的コード行挙動および関係モデルに基づいて、ソフトウェアデルタ変更を分析するための動作を実施させる、命令を含んでもよい。動作は、コントローラ上のコードの第1のバージョンをコードの第2のバージョンに変更するためのプロンプトを識別するステップと、識別されたプロンプトに基づいて、コードの第2のバージョンに基づくコントローラの機能の実行を表す、コード行挙動および関係モデルを構築するステップと、署名演算を発生されたコード行挙動および関係モデル上で実施し、署名値を生成するステップと、署名値をコントローラに送信するステップとを含んでもよく、コントローラは、署名値を、コントローラがコードの第2のバージョンに基づいて算出するように構成される、算出された署名値と比較し、比較に基づいて、コードの第2のバージョンを検証すべきかどうかを判定するように構成される。
【0135】
さらなる実施形態によると、プロンプトは、デルタファイルを備える。
【0136】
さらなる実施形態によると、コントローラはさらに、検証に基づいて、コントローラ上のコードの第2のバージョンを実行するように構成される。
【0137】
さらなる実施形態によると、コントローラはさらに、検証に基づいて、コントローラ上のコードの第2のバージョンの実行を防止するように構成される。
【0138】
さらなる実施形態によると、コントローラはさらに、検証に基づいて、コードの第2のバージョンと関連付けられる遠隔ソースに通知するように構成される。
【0139】
さらなる実施形態によると、コードの第2のバージョンは、コードの第1のバージョンに続いて展開される。
【0140】
さらなる実施形態によると、コード行挙動および関係モデルは、第1のコード行挙動および関係モデルであって、算出された署名値の算出は、識別されたプロンプトに基づいて、コードの第2のバージョンに基づくコントローラの機能の実行を表す、第2のコード行挙動および関係モデルを構築するステップを含む。
【0141】
さらなる実施形態によると、算出された署名値は、署名演算を使用することによって算出される。
【0142】
さらなる実施形態によると、第1または第2のコード行挙動および関係モデルのうちの少なくとも1つは、コントローラのリアルタイム動作と関連付けられるデータに基づいて動的に発生された。
【0143】
さらなる実施形態によると、第1および第2のコード行挙動および関係モデルは、コントローラのリアルタイム動作と関連付けられるデータに基づいて動的に発生され、データは、コントローラから遠隔で設定されたパラメータのグループに基づいて限定される。
【0144】
さらなる実施形態によると、署名演算は、コントローラの識別子に基づく。
【0145】
さらなる実施形態によると、署名演算は、コントローラのタイプ、機能、ソフトウェアのバージョン、感度値、使用年数、または処理容量に基づく。
【0146】
さらに開示される実施形態は、機能的コード行挙動および関係モデルに基づいて、ソフトウェアデルタ変更を分析するための方法を含む。本方法は、コントローラ上のコードの第1のバージョンをコードの第2のバージョンに変更するためのプロンプトを識別するステップと、識別されたプロンプトに基づいて、コードの第2のバージョンに基づくコントローラの機能の実行を表す、コード行挙動および関係モデルを構築するステップと、署名演算を発生されたコード行挙動および関係モデル上で実施し、署名値を生成するステップと、署名値をコントローラに送信するステップとを含んでもよく、コントローラは、署名値を、コントローラがコードの第2のバージョンに基づいて算出するように構成される、算出された署名値と比較し、比較に基づいて、コードの第2のバージョンを検証すべきかどうかを判定するように構成される。
【0147】
さらなる実施形態によると、プロンプトは、デルタファイルを備える。
【0148】
さらなる実施形態によると、コントローラはさらに、検証に基づいて、コントローラ上のコードの第2のバージョンを実行するように構成される。
【0149】
さらなる実施形態によると、コード行挙動および関係モデルは、第1のコード行挙動および関係モデルであって、算出された署名値の算出は、識別されたプロンプトに基づいて、コードの第2のバージョンに基づくコントローラの機能の実行を表す、第2のコード行挙動および関係モデルを構築するステップを含む。
【0150】
さらなる実施形態によると、算出された署名値は、署名演算を使用することによって算出される。
【0151】
さらなる実施形態によると、第1または第2のコード行挙動および関係モデルのうちの少なくとも1つは、コントローラのリアルタイム動作と関連付けられるデータに基づいて動的に発生された。
【0152】
さらなる実施形態によると、第1および第2のコード行挙動および関係モデルは、コントローラのリアルタイム動作と関連付けられるデータに基づいて動的に発生され、データは、コントローラから遠隔で設定されたパラメータのグループに基づいて限定される。
【0153】
さらなる実施形態によると、署名演算は、コントローラのタイプ、機能、ソフトウェアのバージョン、感度値、使用年数、または処理容量に基づく。
【0154】
別の例示的実施形態では、非一過性コンピュータ可読媒体は、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、機能的コード行挙動および関係モデルに基づいて、制御フロー完全性を分析するための動作を実施させる、命令を含んでもよい。動作は、コントローラのランタイム動作に基づいて、データを受信するステップと、受信されたデータに基づいて、コントローラ上の機能の実行を表す、コード行挙動および関係モデルを構築するステップと、コード行挙動および関係モデルに基づいて、コントローラがリアルタイムで施行するために構成される、動的制御フロー完全性モデルを構築するステップと、動的制御フロー完全性モデルをコントローラに展開するステップとを含んでもよい。
【0155】
さらなる実施形態によると、コントローラは、コントローラ上のコードを実行するための要求を検出し、要求される実行を動的制御フロー完全性モデルと比較するように構成される。
【0156】
さらなる実施形態によると、コントローラは、要求される実行が動的制御フロー完全性モデルに違反する場合、コントローラ上のコードの実行を否定するように構成される。
【0157】
さらなる実施形態によると、コントローラは、要求される実行が動的制御フロー完全性モデルに違反する場合、アラートを発生させるように構成される。
【0158】
さらなる実施形態によると、動作はさらに、コントローラへのソフトウェア変更を識別するステップを含み、コード行挙動および関係モデルは、識別されたソフトウェア変更に基づいて構築される。
【0159】
さらなる実施形態によると、コントローラは、第1のコントローラであって、データはさらに、第2のコントローラのランタイム動作に基づく。
【0160】
さらなる実施形態によると、動作は、コントローラと関連付けられる感度値に基づく周期に従って、周期的に実施される。
【0161】
さらなる実施形態によると、受信されたデータは、異なるランタイム動作と関連付けられる複数のデータセットを含み、動作はさらに、機械学習プロセスを複数のデータセットに適用し、分析データを生成するステップを含み、コード行挙動および関係モデルの構造は、分析データに基づく。
【0162】
さらなる実施形態によると、動作はさらに、署名演算を構築されたコード行挙動および関係モデル上で実施し、署名値を生成するステップと、署名値を用いて、動的制御フロー完全性モデルをコントローラに展開するステップとを含む。
【0163】
さらなる実施形態によると、コントローラは、署名値を、コントローラが受信されたデータに基づいて算出するように構成される、算出された署名値と比較し、比較に基づいて、動的制御フロー完全性モデルを検証すべきかどうかを判定するように構成される。
【0164】
さらに開示される実施形態は、機能的コード行挙動および関係モデルに基づいて、制御フロー完全性を分析するための方法を含む。本方法は、コントローラのランタイム動作に基づいて、データを受信するステップと、受信されたデータに基づいて、コントローラ上の機能の実行を表す、コード行挙動および関係モデルを構築するステップと、コード行挙動および関係モデルに基づいて、コントローラがリアルタイムで施行するために構成される、動的制御フロー完全性モデルを構築するステップと、動的制御フロー完全性モデルをコントローラに展開するステップとを含んでもよい。
【0165】
さらなる実施形態によると、コントローラは、コントローラ上のコードを実行するための要求を検出し、要求される実行を動的制御フロー完全性モデルと比較するように構成される。
【0166】
さらなる実施形態によると、コントローラは、要求される実行が動的制御フロー完全性モデルに違反する場合、コントローラ上のコードの実行を否定するように構成される。
【0167】
さらなる実施形態によると、コントローラは、要求される実行が動的制御フロー完全性モデルに違反する場合、アラートを発生させるように構成される。
【0168】
さらなる実施形態によると、動作はさらに、コントローラへのソフトウェア変更を識別するステップを含み、コード行挙動および関係モデルは、識別されたソフトウェア変更に基づいて構築される。
【0169】
さらなる実施形態によると、コントローラは、第1のコントローラであって、およびデータはさらに、第2のコントローラのランタイム動作に基づく。
【0170】
さらなる実施形態によると、動作は、コントローラと関連付けられる感度値に基づく周期に従って、周期的に実施される。
【0171】
さらなる実施形態によると、受信されたデータは、異なるランタイム動作と関連付けられる複数のデータセットを含み、動作はさらに、機械学習プロセスを複数のデータセットに適用し、分析データを生成するステップを含み、コード行挙動および関係モデルの構造は、分析データに基づく。
【0172】
さらなる実施形態によると、動作はさらに、署名演算を構築されたコード行挙動および関係モデル上で実施し、署名値を生成するステップと、署名値を用いて、動的制御フロー完全性モデルをコントローラに展開するステップとを含む。
【0173】
さらなる実施形態によると、コントローラは、署名値を、コントローラが受信されたデータに基づいて算出するように構成される、算出された署名値と比較し、比較に基づいて、動的制御フロー完全性モデルを検証すべきかどうかを判定するように構成される。
【0174】
別の例示的実施形態では、非一過性コンピュータ可読媒体は、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、コントローラ機能シーケンスを可視化および構成するための動作を実施させる、命令を含んでもよい。動作は、コントローラと関連付けられる、少なくとも1つの実行可能コードセグメントを識別するステップと、少なくとも1つの実行可能コードセグメントを分析し、少なくとも1つのコードセグメントと関連付けられる少なくとも1つの機能および少なくとも1つの機能的関係を判定するステップと、判定された少なくとも1つの機能および少なくとも1つの機能的関係を視覚的に描写する、ソフトウェア機能性コード行挙動および関係モデルを構築するステップと、ソフトウェア機能性コード行挙動および関係モデルをユーザインターフェースに表示するステップと、ユーザインターフェースにおいて、第1の入力を受信するステップと、受信された第1の入力に応答して、コード行挙動および関係モデルをアニメーション化し、コントローラ上の少なくとも1つの実行可能コードセグメントの実行を視覚的に描写するステップと、ユーザインターフェースにおいて、第2の入力を受信するステップと、受信された第2の入力に応答して、コード行挙動および関係モデルへの更新をアニメーション化するステップとを含んでもよい。
【0175】
さらなる実施形態によると、動作はさらに、分析に基づいて、コントローラの予期される機能的挙動およびコントローラの実際の機能的挙動を判定するステップと、ユーザインターフェースに、予期される機能的挙動に対する少なくとも1つの実行可能コードセグメントの実行に対応する、機能的挙動の視覚的インジケータを表示するステップとを含む。
【0176】
さらなる実施形態によると、動作はさらに、予期される機能的挙動と実際の機能的挙動との間の逸脱の程度を判定するステップと、逸脱の程度に基づいて、コントローラに関する休止時間の確率を推定するステップと、休止時間の確率のインジケーションをユーザインターフェースに表示するステップとを含む。
【0177】
さらなる実施形態によると、動作はさらに、ソフトウェア変更をコントローラ上で実行するように構成される、実行可能コードにアクセスするステップを含む。
【0178】
さらなる実施形態によると、動作はさらに、アラートを遠隔デバイスに送信するステップを含む。
【0179】
さらなる実施形態によると、コード行挙動および関係モデルをアニメーション化し、少なくとも1つの実行可能コードセグメントの実行を視覚的に描写するステップは、少なくとも1つのコードセグメントと関連付けられる少なくとも1つの機能の視覚的要素を強調するステップを含む。
【0180】
さらなる実施形態によると、第2の入力は、コントローラ上のコード変更と関連付けられる。
【0181】
さらなる実施形態によると、コントローラは、車両の電子制御ユニット(ECU)である。
【0182】
さらなる実施形態によると、コントローラは、仮想コントローラである。
【0183】
さらなる実施形態によると、コード変更は、コントローラ上のコードを変更するように構成される、デルタファイルによって表される。
【0184】
さらなる実施形態によると、デルタファイルは、コントローラ上のコードをコードの第1のバージョンからコードの第2のバージョンに変更するように構成される。
【0185】
さらに開示される実施形態は、コントローラ機能シーケンスを可視化および構成するための方法を含む。本方法は、コントローラと関連付けられる、少なくとも1つの実行可能コードセグメントを識別するステップと、少なくとも1つの実行可能コードセグメントを分析し、少なくとも1つのコードセグメントと関連付けられる少なくとも1つの機能および少なくとも1つの機能的関係を判定するステップと、判定された少なくとも1つの機能および少なくとも1つの機能的関係を視覚的に描写する、ソフトウェア機能性コード行挙動および関係モデルを構築するステップと、ソフトウェア機能性コード行挙動および関係モデルをユーザインターフェースに表示するステップと、ユーザインターフェースにおいて、第1の入力を受信するステップと、受信された第1の入力に応答して、コード行挙動および関係モデルをアニメーション化し、コントローラ上の少なくとも1つの実行可能コードセグメントの実行を視覚的に描写するステップと、ユーザインターフェースにおいて、第2の入力を受信するステップと、受信された第2の入力に応答して、コード行挙動および関係モデルへの更新をアニメーション化するステップとを含んでもよい。
【0186】
さらなる実施形態によると、動作はさらに、分析に基づいて、コントローラの予期される機能的挙動およびコントローラの実際の機能的挙動を判定するステップと、ユーザインターフェースに、予期される機能的挙動に対する少なくとも1つの実行可能コードセグメントの実行に対応する、機能的挙動の視覚的インジケータを表示するステップとを含む。
【0187】
さらなる実施形態によると、動作はさらに、予期される機能的挙動と実際の機能的挙動との間の逸脱の程度を判定するステップと、逸脱の程度に基づいて、コントローラに関する休止時間の確率を推定するステップと、休止時間の確率のインジケーションをユーザインターフェースに表示するステップとを含む。
【0188】
さらなる実施形態によると、動作はさらに、ソフトウェア変更をコントローラ上で実行するように構成される、実行可能コードにアクセスするステップを含む。
【0189】
さらなる実施形態によると、動作はさらに、アラートを遠隔デバイスに送信するステップを含む。
【0190】
さらなる実施形態によると、コード行挙動および関係モデルをアニメーション化し、少なくとも1つの実行可能コードセグメントの実行を視覚的に描写するステップは、少なくとも1つのコードセグメントと関連付けられる少なくとも1つの機能の視覚的要素を強調するステップを含む。
【0191】
さらなる実施形態によると、第2の入力は、コントローラ上のコード変更と関連付けられる。
【0192】
さらなる実施形態によると、コード変更は、コントローラ上のコードを変更するように構成される、デルタファイルによって表される。
【0193】
さらなる実施形態によると、デルタファイルは、コントローラ上のコードをコードの第1のバージョンからコードの第2のバージョンに変更するように構成される。
【0194】
開示される実施形態の側面は、1つまたはそれを上回るプロセッサによって実行されると、開示される実施形態と一致する方法、動作、および同等物のうちの1つまたはそれを上回るものを実施および実行するために構成され、かつそれが可能である、ソフトウェア命令を記憶する、有形コンピュータ可読媒体を含んでもよい。また、開示される実施形態の側面は、実行されると、開示される実施形態と一致する1つまたはそれを上回る動作を実施する、論理および命令とともにプログラムされる、ソフトウェア命令に基づいて、特殊目的プロセッサとして構成される、1つまたはそれを上回るプロセッサによって実施されてもよい。
【0195】
前述の一般的説明および以下の詳細な説明は両方とも、例示的および説明的にすぎず、請求されるような開示される実施形態の制限ではないことを理解されたい。
【図面の簡単な説明】
【0196】
本明細書内に組み込まれ、その一部を構成する、付随の図面は、いくつかの実施形態を図示し、説明とともに、開示される原理を解説する役割を果たす。
【0197】
図1A図1Aは、本開示の実施形態と一致する、分析およびセキュリティをコントローラに提供するためのコントローラネットワークの例示的絵図表現を図示する。
【0198】
図1B図1Bは、本開示の実施形態と一致する、コントローラの例示的絵図表現を図示する。
【0199】
図1C図1Cは、本開示の実施形態と一致する、セキュリティプロバイダシステムの例示的絵図表現を図示する。
【0200】
図2図2は、本開示の実施形態と一致する、対応する情報テーブルを伴う、モデルのセットの例示的絵図表現を図示する。
【0201】
図3図3は、本開示の実施形態と一致する、コード行挙動および関係モデルの例示的絵図表現を図示する。
【0202】
図4図4は、本開示の実施形態と一致する、コード挙動を分析するためのインターフェースの例示的絵図表現を図示する。
【0203】
図5図5は、本開示の実施形態と一致する、コントローラ上のデルタファイルソフトウェア変更の例示的絵図表現を図示する。
【0204】
図6図6は、本開示の実施形態と一致する、コード行挙動および関係モデルを発生させ、それに署名するための例示的プロセスのフローチャートを描写する。
【0205】
図7図7は、本開示の実施形態と一致する、コード行挙動および関係モデルを使用して、ソフトウェア機能性変更を判定するための例示的プロセスのフローチャートを描写する。
【0206】
図8図8は、本開示の実施形態と一致する、機能的コード行挙動および関係モデルに基づいて、ソフトウェア相互依存性を識別するための例示的プロセスのフローチャートを描写する。
【0207】
図9図9は、本開示の実施形態と一致する、ソフトウェアベースの誤動作またはエラーのソースを識別するための例示的プロセスのフローチャートを描写する。
【0208】
図10図10は、本開示の実施形態と一致する、機能的コード行挙動および関係モデルに基づいて、ハードウェア変更影響を分析するための例示的プロセスのフローチャートを描写する。
【0209】
図11図11は、本開示の実施形態と一致する、機能的コード行挙動および関係モデルに基づいて、ソフトウェア依存性を識別するための例示的プロセスのフローチャートを描写する。
【0210】
図12A図12Aは、本開示の実施形態と一致する、機能的コード行挙動および関係モデルを使用して、ソフトウェアデルタ変更を管理するための例示的プロセスのフローチャートを描写する。
【0211】
図12B図12Bは、本開示の実施形態と一致する、機能的コード行挙動および関係モデルに基づいて、ソフトウェアデルタ変更を分析するための例示的プロセスのフローチャートを描写する。
【0212】
図13図13は、本開示の実施形態と一致する、機能的コード行挙動および関係モデルに基づいて、制御フロー完全性を分析するための例示的プロセスのフローチャートを描写する。
【0213】
図14図14は、本開示の実施形態と一致する、コントローラ機能シーケンスを可視化および構成するための例示的プロセスのフローチャートを描写する。
【発明を実施するための形態】
【0214】
ここで、その実施例が、付随の図面に図示され、本明細書に開示される、例示的実施形態が詳細に参照されるであろう。便宜的であるときは常時、同一参照番号が、図面全体を通して、同一または同様の部分を指すために使用されるであろう。開示される実施形態は、当業者が開示される実施形態を実践することを可能にするために十分に詳細に説明される。他の実施形態が、利用されてもよく、変更が、開示される実施形態の範囲から逸脱することなく行われてもよいことを理解されたい。したがって、材料、方法、および実施例は、例証にすぎず、必ずしも、限定であることを意図するものではない。
【0215】
図1Aは、システム100を含み得る、システム10の例示的絵図表現を図示する。システム100は、セキュリティプロバイダ、ソフトウェア開発者、コンピュータソフトウェアを開発または改良することと関連付けられる、エンティティ、もしくはこれらのエンティティの任意の組み合わせによって維持されてもよい。システム100は、単一デバイスまたはデバイスの組み合わせであり得、図1Cに関してさらに詳細に説明される、セキュリティプロバイダ102を含んでもよい。セキュリティプロバイダ102は、ネットワークリソース104a、104b、および/または104c等の任意の数のネットワークリソースと通信してもよい。ネットワークリソースは、データベース、スーパーコンピュータ、汎用コンピュータ、特殊目的コンピュータ、仮想コンピューティングリソース、または任意の他のデータ記憶装置もしくは処理リソースであってもよい。
【0216】
システム10はまた、コントローラシステム108a、108b、および108c等の任意の数のコントローラシステムを含んでもよい。コントローラシステムは、例えば、ホームセキュリティシステム、駐車施設センサシステム、車両、在庫監視システム、接続された家電、電話機器、ネットワークルーティングデバイス、スマート送電網システム、ドローンまたは他の無人車両、病院監視システム、もしくは任意の他のモノのインターネット(IoT)システムであってもよい。コントローラシステムは、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、または任意の他の通信ネットワーク配列内に配列される、コントローラを含んでもよい。さらに、各コントローラシステムは、任意の数のコントローラを含んでもよい。例えば、例示的コントローラシステム108aは、同一または異なる機能性または目的を有し得る、コントローラ110a、112a、および114aを含む。これらのコントローラは、図1Bに関して議論される、例示的コントローラ114aの説明を通してさらに議論される。コントローラシステム108a、108b、および108cは、それぞれ、接続106a、106b、および106cを通して、システム100に接続してもよい。システム100はまた、接続106dを通して、任意の数のコンピューティングデバイス(例えば、パーソナルデスクトップコンピュータを含む)を含み得る、遠隔システム103に接続してもよい。遠隔システム103は、コードの作成者、物理的コンポーネントおよび/またはデバイス(例えば、コントローラ)の製造業者、システム(例えば、車両)製造業者、もしくはソフトウェアを開発および/または展開することと関連付けられる、別のエンティティと関連付けられ得る。接続106は、バス、ケーブル、ワイヤレス(例えば、無線)通信チャネル、電波ベースの通信チャネル、ローカルエリアネットワーク(LAN)、インターネット、ワイヤレスローカルエリアネットワーク(WLAN)、広域ネットワーク(WAN)、セルラー通信ネットワーク、または任意のインターネットプロトコル(IP)ベースの通信ネットワークおよび同等物を含み得る、通信チャネルであってもよい。接続106a、106b、106c、および106dは、同一タイプまたは異なるタイプであってもよい。
【0217】
システム10のコンポーネントの任意の組み合わせが、開示される例示的実施形態と一致する、本明細書で議論される例示的プロセスの任意の数のステップを実施してもよい。
【0218】
図1Bは、電子制御ユニット(ECU)(例えば、BoschTM、Delphi ElectronicsTM、ContinentalTM、DensoTM等の企業によって製造される)等の自動車コントローラ、またはSkyworksTM、QorvoTM、QualcommTM、NXP SemiconductorsTM等によって製造されたIoTコントローラ等の非自動車コントローラであり得る、コントローラ114aの例示的絵図表現を図示する。コントローラ114aは、単一機能(例えば、車両内の制動機能)または複数の機能を実施するように構成されてもよい、(例えば、プログラム126を通して)。コントローラ114aは、開示される例示的実施形態と一致する、本明細書で議論される例示的プロセスの任意の数のステップを実施してもよい。
【0219】
コントローラ114aは、メモリ空間116と、プロセッサ118とを含んでもよい。メモリ空間116は、単一メモリコンポーネントまたは複数のメモリコンポーネントであってもよい。そのようなメモリコンポーネントは、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述の任意の好適な組み合わせを含んでもよい。例えば、メモリ空間116は、任意の数のハードディスク、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、消去可能プログラマブル読取専用メモリ(EPROMまたはフラッシュメモリ)、および同等物を含んでもよい。メモリ空間116は、プロセス118によって開示される実施形態に関連する機能を実施するために使用可能である命令を記憶するように構成される、1つまたはそれを上回る記憶デバイスを含んでもよい。例えば、メモリ空間116は、プロセッサ118によって実行されると、1つまたはそれを上回る動作(例えば、下記の図に関連して議論される動作)を実施する、ソフトウェアプログラム126またはコードセグメント等の1つまたはそれを上回るソフトウェア命令とともに構成されてもよい。開示される実施形態は、専用タスクを実施するように構成される、別個のプログラムまたはコンピュータに限定されない。例えば、メモリ空間116は、システム10の機能を実施する、単一プログラムまたは複数のプログラムを含んでもよい。メモリ空間116はまた、1つまたはそれを上回るソフトウェアプログラムによって使用される、データ(例えば、ECU機能に関連するデータ、車両の動作の間に取得されるデータ、または他のデータ)を記憶してもよい。
【0220】
ある実施形態では、メモリ空間116は、プロセッサ118によって下記に議論される方法等の1つまたはそれを上回る方法を実施するように実行可能なソフトウェアを記憶してもよい。ソフトウェアは、CまたはMISRA-C、ASCET、Simulink、Stateflow、および種々のその他等の種々のプログラミング技法および言語を介して、実装されてもよい。さらに、本明細書に開示される技法は、自動車実施形態に限定されないことを協調されたい。スマートホーム家電、ネットワークセキュリティまたは監視機器、スマート需給メータ、接続されるセンサデバイス、駐車施設センサ、およびより多くのもの等の種々の他のIoT環境も、開示される技法を使用してもよい。そのような実施形態では、メモリ空間116は、C、C++、PHP、Java(登録商標)、JavaScript(登録商標)、Python、および種々のその他等の種々のプログラミング技法および言語に基づいて、ソフトウェアを記憶してもよい。
【0221】
プロセッサ118は、1つまたはそれを上回る専用処理ユニット、特定用途向け集積回路(ASICs)、フィールドプログラマブルゲートアレイ(FPGA)、グラフィカル処理ユニット、またはメモリ空間116と結合される、種々の他のタイプのプロセッサもしくは処理ユニットを含んでもよい。
【0222】
コントローラ114aはまた、遠隔デバイスがコントローラ114aと相互作用することを可能にし得る、通信インターフェース120を含んでもよい。通信インターフェース120は、アンテナまたは有線接続を含み、コントローラ114aへまたはそこからの通信を可能にしてもよい。例えば、外部デバイス(コントローラ114b、コントローラ116a、セキュリティプロバイダ102、またはコントローラ114aと通信することが可能な任意の他のデバイス等)が、コードをコントローラ114aに送信し、コントローラ114aに、メモリ空間116内に記憶されるソフトウェアを変更させる等のある動作を実施するように命令してもよい。
【0223】
コントローラ114aはまた、コントローラ114aの物理的筐体の内部のAC/DCコンバータ、DC/DCコンバータ、レギュレータ、またはバッテリであり得、電力をコントローラ114aに提供し、そのコンポーネントが機能することを可能にし得る、電力供給源122を含んでもよい。いくつかの実施形態では、電力供給源122は、コントローラの物理的筐体の外部に存在してもよく(すなわち、コントローラ114a自体の一部として含まれなくてもよい)、電力を複数のコントローラ(例えば、コントローラシステム108a内の全てのコントローラ)に供給してもよい。
【0224】
コントローラ114aはまた、ユーザまたはデバイスが、コントローラ114aと相互作用することを可能にするように構成され得る、入/出力デバイス(I/O)124を含んでもよい。例えば、I/O124は、有線および/または無線ネットワークカード/チップセット(例えば、WiFiベース、セルラーベース等)、アンテナ、ディスプレイ(例えば、グラフィカルディスプレイ、テキストディスプレイ等)、LED、ルータ、タッチスクリーン、キーボード、マイクロホン、スピーカ、触知デバイス、カメラ、ボタン、ダイヤル、スイッチ、ノブ、送受信機、入力デバイス、出力デバイス、もしくは下記にさらに議論されるような開示される実施形態の方法の任意の数のステップを実施する、またはユーザがそれを実施することを可能にするように構成される、別のI/Oデバイスのうちの少なくとも1つを含んでもよい。
【0225】
図1Cは、単一デバイスまたは複数のデバイスであり得る、セキュリティプロバイダ102の例示的絵図表現を図示する。示される実施形態では、セキュリティプロバイダ102は、コンピュータ、サーバ、モバイルデバイス、特殊目的コンピュータ、またはユーザが下記にさらに議論されるような開示される実施形態の方法の任意の数のステップを実施することを可能にし得る、任意の他のコンピューティングデバイスであり得る、ユーザデバイス128を含む。例えば、ユーザデバイス128は、メモリ138に記憶される命令を実行するように構成され得る、プロセッサ136を含んでもよい。
【0226】
ユーザデバイス128はまた、ネットワークリソース104a等のネットワークリソースのインスタンスであり得る、データベース130に接続してもよい。データベース130は、下記にさらに議論されるような開示される実施形態の方法内で使用されるためのデータを記憶してもよい。例えば、データベース130は、開示される実施形態と一致する、任意の数のモデルを維持してもよい。データベース130は、任意の数のディスクドライブ、サーバ、サーバアレイ、サーバブレード、メモリ、またはデータを記憶することが可能な任意の他の媒体を含んでもよい。データベース130は、テキストデータベース、一元型データベース、分散型データベース、階層データベース、関係データベース(例えば、SQL)、オブジェクト指向データベースとして、またはデータを記憶するために好適な任意の他の構成においてを含む、いくつかの方式において構成されてもよい。データベース130は、セキュリティプロバイダ102内に示されるが、また、遠隔クラウドコンピューティングプラットフォーム等、その外部に存在してもよい。
【0227】
いくつかの実施形態では、ユーザデバイス128は、通信インターフェース120および/またはI/O124に類似し得る、通信インターフェース132に接続してもよい。例えば、通信インターフェース132は、有線および/または無線ネットワークカード/チップセット(例えば、WiFiベース、セルラーベース等)、アンテナ、ディスプレイ(例えば、グラフィカルディスプレイ、テキストディスプレイ等)、LED、ルータ、タッチスクリーン、キーボード、マウス、マイクロホン、スピーカ、触知デバイス、カメラ、ボタン、ダイヤル、スイッチ、ノブ、送受信機、入力デバイス、出力デバイス、もしくは下記にさらに議論されるような開示される実施形態の方法の任意の数のステップを実施する、またはユーザがそれを実施することを可能にするように構成される、別のデバイスのうちの少なくとも1つを含んでもよい。通信インターフェース132はまた、ユーザデバイス128が、セキュリティプロバイダ102内の他のデバイス、システム100内の他のデバイス、および/またはコントローラ114a等のシステム100の外部のデバイス等の他のデバイスに接続することを可能にし得る。いくつかの実施形態では、通信インターフェース132(例えば、アンテナ)は、データベース130と接続してもよく、これは、ユーザデバイス128以外のデバイス(例えば、システム100の外部のコントローラ)が、データベース130と通信することを可能にし得る。
【0228】
セキュリティプロバイダ102はまた、ユーザデバイス128に接続され得る、ディスプレイ134を含んでもよい。ディスプレイ134は、液晶ディスプレイ(LCD)、面内切替型液晶ディスプレイ(IPS-LCD)、発光ダイオード(LED)ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、アクティブマトリクス有機発光ダイオード(AMOLED)ディスプレイ、陰極線管(CRT)ディスプレイ、プラズマディスプレイパネル(PDP)、デジタル光処理(DLP)ディスプレイ、またはユーザデバイスに接続し、情報をユーザに描写することが可能な任意の他のディスプレイを含んでもよい。ディスプレイ134は、グラフィカルインターフェース、相互作用可能グラフィカル要素、アニメーション、動的グラフィカル要素、および、とりわけ、図14に関して議論されるもの等の任意の他の視覚的要素を表示してもよい。
【0229】
図2は、対応する情報テーブルおよびコード部分を伴う、モデルのセットの例示的絵図表現を図示する。これらの例示的モデルのいずれかは、とりわけ、図3に関して議論されるようなコード行挙動および関係モデル(例えば、コード行挙動および関係モデル30)を含んでもよい。図2における例示的実施形態は、モデル202を描写し、これは、その一部である、モデル208と、モデル214とを含む。モデル202、208、および214は、それぞれ、コード部分(例えば、コントローラ上での実行のためのコード)204、210、および216をモデル化してもよい。一例として、モデル202は、車両のラックアンドピニオンを旋回させるステップと関連付けられる、ECUの動作を協調させるように構成される、コンピュータコード(例えば、コード部分204)をモデル化してもよく、モデル208および/またはモデル214は、機能または関係を追加もしくは除去する、または別様に、モデル202によってモデル化された初期コンピュータコードの能力を変更させる(例えば、ブラインドスポットモニタとの通信の特徴を追加し、ブラインドスポットモニタが車両の経路内にオブジェクトを検出するとき、ラックアンドピニオンが旋回しないように防止する)ように構成される、コンピュータコード(例えば、コード部分210および/または216)をモデル化してもよい。これらの例示的モデルのいずれかは、とりわけ、図6に関して議論されるように発生されてもよい。
【0230】
図2はまた、それぞれ、モデル202、208、および214と関連付けられる、コード部分情報テーブル200、206、および212を図示する。コード部分情報テーブルは、各個別のモデルおよび/またはコード部分の情報を含有してもよく、モデルおよび/またはコード部分と関連付けられる、異なるブロック番号ならびに/もしくは日付(例えば、関連付けられるモデルまたはコード部分が、作成された、修正された、展開された日付等)で標識されてもよい。いくつかの実施形態では、コード部分情報テーブルは、所与のシステム内で1回のみ使用され得るように発生される、ノンスまたは任意の他の数を保持してもよい。ノンスは、コードのシーケンス、機能の組み合わせ、機能的関係の組み合わせ、モデルまたはコード部分が関連する、デバイスのタイプ、コード部分が分析された時間、もしくはモデルおよび/またはコード部分に一意であり得る、任意の他の情報等、モデルならびに/もしくはコード部分と関連付けられる情報を使用して発生されてもよい。
【0231】
いくつかの実施形態では、コード部分情報テーブルは、ハッシュ値および/または先行値ハッシュ値を保持してもよい。これらのハッシュ値のいずれかは、図6に関してさらに詳細に説明される、ハッシュ関数に従って発生されている場合がある。ハッシュ値は、モデルおよび/またはその下層コード部分を一意に識別し得る。先行値ハッシュ値は、それを用いて情報テーブルが関連付けられる、モデルおよび/またはコード部分と以前に関連付けられていた(例えば、前のバージョンの)モデルおよび/またはコード部分を識別し得る。このように、識別リンクが、変更がコード視点および機能視点から追跡され、ソフトウェア展開のより深い分析およびロールバックを可能にし得るように、ソフトウェアへの後続変更間に作成され得る。用語「ハッシュ」が、コード部分情報テーブル内の本情報を説明するために使用されるが、任意の一意の値が、ハッシュ関数によって発生される場合とそうではない場合がある、ハッシュ値および/または先行値ハッシュ値として使用されてもよいことに留意されたい。
【0232】
図3は、プロセッサ(例えば、ユーザデバイス128におけるプロセッサ)によってプロセス(例えば、プロセス600)に従って発生され得る、コード行挙動および関係モデル30の例示的絵図表現を図示する。コード行挙動および関係モデル30は、データ内に表され、データベース130またはメモリ空間116等の記憶媒体上に記憶されてもよい。コード行挙動および関係モデルは、任意の量のコード(例えば、1行のコード、複数行のコード、プログラム等)に関連してもよい。いくつかの実施形態では、コード行挙動および関係モデルは、コントローラ上の実行のために構成される、コードの分析(例えば、リアルタイム「オンライン」挙動に基づき得る、デバイスの挙動をシミュレートすること等を通したセキュリティプロバイダ102におけるオフライン分析)を通して、作成または修正されてもよい。コード行挙動および関係モデルは、リアルタイム(またはいくつかの実施形態では、シミュレートされた)コントローラ動作をモデルに適用し、コントローラ上のコードの機能を実証することによって、「オンライン」で使用されてもよい。用語「コード行」は、必ずしも、コードの文字行に限定されず、また、コードの行の代わりに、またはそれに加え、シンボル(下記に議論される)、シンボル関係(また、下記に議論される)、コンパイルコード、非コンパイルコード、ソフトウェアパッケージ(例えば、ソフトウェア更新のため)、命令セット、および/またはその機能性または挙動が分析され得る、任意のソフトウェアを含んでもよい。
【0233】
コード行挙動および関係モデル30は、シンボル300、シンボル302c、シンボル306b等の任意の数のシンボルを説明し得る。シンボルは、変数、バッファ、関数、コール、オブジェクト、コードのセグメント、シンボルが関連するコントローラ、シンボルが関連するシステム、またはシンボルに関連するコードの機能的影響に関連する任意の他の情報を含む、いくつかの情報の断片を表し、および/または記憶し得る。いくつかの実施形態では、シンボルは、コードのセグメントの機能的プロファイルを説明し得る、機能的ブロックを含んでもよい。機能的プロファイルは、手動ユーザ入力および/または機械観察される(例えば、シミュレーションを通して)挙動を通して開発されてもよい。いくつかの実施形態では、コード行挙動および関係モデル30は、確率論的、決定的、定常状態、動的、持続、離散、ローカル等であってもよい。いくつかの実施形態では、コード行挙動および関係モデル30は、コードのための関数コールグラフを含んでもよい(例えば、gprof、OpenPAT、pprof等に基づいて)。
【0234】
シンボル間の矢印によって図3に示されるように、シンボルは、相互に影響を及ぼし得る(すなわち、それらは、シンボル関係を有する)。一例として、シンボル302dは、シンボル306aによって表される変数を更新するためにプロセス内のシンボル304bによって表される機能によってコールされる、バッファを表し得る。本例示的図内の矢印は、左から右に移動するように示されるが、シンボル間のシンボル関係(例えば、依存性、相互依存性等)の任意の組み合わせも、可能性として考えられる。シンボル関係は、シンボル間で一指向性または双方向であってもよい。シンボル関係はまた、シンボル間の反復または回帰的関係を表し得る。いくつかの実施形態では、シンボル関係は、別のシンボルに影響を及ぼすことに加え、またはその代わりに、別のシンボル関係にも影響を及ぼし得る。
【0235】
図4は、例えば、ディスプレイ134に表示され得る、コード挙動を分析するためのインターフェース40の例示的絵図表現を図示する。インターフェース40は、ユーザデバイス128上のプログラムまたはプログラム126のうちの1つ等、デバイス上のプログラムに従って、表示されてもよい。インターフェース40によって表示される視覚的描写は、図6-14に関して議論されるもの等のプロセスに基づいてもよい。いくつかの実施形態では、インターフェース40上に表示される視覚的描写は、特定のコントローラ、コントローラシステムのタイプ、システムのタイプ、コード部分、および/またはコード行挙動ならびに関係モデルに関連してもよい。インターフェース40は、情報を静的(例えば、コントローラからのデータ等、固定された入力を使用して)または動的に(例えば、コントローラからのリアルタイムデータ等、リアルタイムで変化する入力を使用して)表示してもよい。いくつかの実施形態では、ユーザは、異なる固定された入力を選択することによって、静的に表示される情報を変更することが可能であり得る。例えば、インターフェース40は、スライダバーを表示してもよく、それに沿ってユーザは、スライダを移動させ、特定の時点におけるコントローラの挙動に関連するデータ等の特定の入力に対応する、時点を選択してもよい。いくつかの実施形態では、入力は、インターフェース40に、コントローラ動作の変化を経時的に示す、フレームのシーケンスをアニメーション化させてもよい。例えば、ユーザユーザデバイス128のユーザは、通信インターフェース132を使用して、インターフェース40と相互作用してもよい。
【0236】
インターフェース40は、上記に議論されるように、コード行挙動および関係モデル30によって表され得る、シンボル関係を視覚的に描写し得る、シンボル関係インターフェース400を含んでもよい。いくつかの実施形態では、シンボル関係インターフェース400は、グラフィカルユーザインターフェース(GUI)要素410を表示してもよい。GUI要素410は、とりわけ、図3に関して議論されるもの等のシンボルを表し得る。いくつかの実施形態では、シンボル関係インターフェース400は、図内のこれらの要素を接続する例示的黒色線によって示されるように、GUI要素410間のシンボル関係を表示してもよい。いくつかの実施形態では、GUI要素410および/またはシンボル関係は、色、テキスト、アニメーション、陰影、形状、位置、サイズ、図形要素(例えば、赤色Xマーク)、または情報をユーザ視認インターフェース40に伝達することが可能な任意の他の視覚的側面のいずれかの組み合わせを有してもよい。例えば、図4に示されるように、GUI要素410は、可変タイプの陰影を有し、これは、特定のGUI要素410と関連付けられるシンボルが、非アクティブ、アクティブ、または誤動作していることを示し得る。いくつかの実施形態では、シンボル関係インターフェース400は、使用されるコードのパーセント等、シンボルおよび/またはシンボル関係の下層のコードに関連する情報を表示してもよい。シンボル関係インターフェース400内の情報は、上記に議論されるように、静的または動的に表示されてもよい。
【0237】
インターフェース40は、リソースインターフェース402、機能的挙動インターフェース404、およびソフトウェア状態インターフェース406等の他のインターフェースを含んでもよい。リソースインターフェース402は、デバイスおよび/またはシステムと関連付けられる、現在、過去、または将来的リソース使用量を描写してもよい。例えば、リソースインターフェース402は、CPU、メモリ、および/またはネットワーク帯域幅の現在の使用量を描写してもよい。いくつかの実施形態では、リソースインターフェース402は、リソース使用量に関連する統計的情報、そのようなCPU使用量の平均レベル、またはネットワーク帯域幅使用量における履歴分散を描写してもよい。いくつかの実施形態では、リソースインターフェース402は、予測であり得る、リソース使用量および/または他の情報から導出されるデータを描写してもよい。例えば、リソースインターフェース402は、デバイス、システム等の休止時間の確率を描写してもよい(例えば、図4に示されるように)。リソースインターフェース402内の情報は、上記に議論されるように、静的または動的に表示されてもよい。
【0238】
インターフェース40は、シンボル関係インターフェース400に描写されるシンボルおよび/またはシンボル関係と関連付けられる、機能的挙動を描写し得る、機能的挙動インターフェース404を含んでもよい。いくつかの実施形態では、機能的挙動インターフェース404は、折れ線グラフ(例えば、図4に示されるように、「予想」として動作エンベロープを形成する線を伴う)、棒グラフ、動的着色要素(例えば、予期されるエンベロープからの挙動のさらなる逸脱を示す、色彩特質の強度を伴う)、これらの任意の組み合わせ、および/または経時的に変化し得る、任意の視覚的インジケータによってを含む、種々の方法で示され得る、機能的挙動の変化を経時的に描写してもよい。機能的挙動インターフェース404内の情報は、上記に議論されるように、静的または動的に表示されてもよい。
【0239】
インターフェース40はまた、GUI要素408を含み得る、ソフトウェア状態インターフェース406を含んでもよい。いくつかの実施形態では、ソフトウェア状態インターフェース406は、シンボル関係インターフェース400内に表され、および/またはデバイス(例えば、コントローラ)上のコードと関連付けられ得る、ソフトウェアの現在の状態を描写してもよい。例えば、ソフトウェア状態インターフェース406は、コントローラ上にインストールされるオリジナルソフトウェアと、そのソフトウェアへの任意の数の後続変更とを描写してもよい。そのような変更は、構成管理プロセスの一部であってもよく、限定ではないが、更新、ロールバック、削除、追加、再較正、パラメータ改変、および/またはデバイスのためのソフトウェアへの任意の他の変更を含んでもよい。ソフトウェア状態インターフェース406内に含まれ得る、GUI要素408は、入力の受信に応じて、インターフェース40内の視覚的描写、コード、および/またはコード行挙動ならびに関係モデルへの変更を引き起こしてもよい。例えば、GUI要素408は、入力の受信に応じて、コードおよび/または対応するコード行挙動ならびに関係モデルを更新されたバージョンに変更してもよい。インターフェース40上に表示され得る、視覚的描写とのユーザ相互作用は、とりわけ、図14に関してさらに議論される。ソフトウェア状態インターフェース406内の情報は、上記に議論されるように、静的または動的に表示されてもよい。
【0240】
図5は、コントローラ114a上のデルタファイルソフトウェア変更の例示的絵図表現を図示する。コントローラ上のソフトウェア(例えば、オリジナルソフトウェア502)は、経時的に変化し得、これは、デルタファイル(例えば、デルタファイル504)をメモリ空間116内に記憶することを通して遂行され得る。異なる時間において、異なるデルタファイルが、メモリ空間116内に記憶され、またはそこから除去され得、および/または異なるデルタファイルが、現在、コントローラ114a上のソフトウェアによって実装され得る。例えば、時間t1では、デルタファイル504は、メモリ空間116内に記憶され得、現在、オリジナルソフトウェア502によって実装され得る(図5における矢印によって示されるように)。別の時点T3では、デルタファイル508(例えば、構成管理プロセスの一部であり得る、ソフトウェア更新)が、メモリ空間116内に記憶され得、現在、オリジナルソフトウェア502によって実装され得る(図5における矢印によって示されるように)。さらに別の時点T4では、コントローラ114a上のソフトウェアは、デルタファイル508の実装から前のデルタファイル506の実装に変更(例えば、ロールバック)し得る。
【0241】
ソフトウェア(例えば、オリジナルソフトウェア502)と任意の数のデルタファイル(ゼロデルタファイルを含む)の組み合わせは、コード行挙動および関係モデルによってモデル化されてもよい。いくつかの実施形態では、メモリ空間116はまた、コード行挙動および関係モデルおよび/または一意の識別子を記憶してもよく、その一方または両方は、オリジナルソフトウェア502および/またはデルタファイル(例えば、デルタファイル504)と関連付けられ得る。これらの実施形態では、コード行挙動および関係モデルおよび/または一意の識別子は、デルタファイル自体の一部であってもよい。
【0242】
図6は、コード行挙動および関係モデルを発生させ、それに署名するための例示的プロセス600を示す。上記の実施形態によると、プロセス600は、図1に描写されるシステム10または任意のタイプのIoTネットワーク環境内に実装されてもよい。例えば、プロセス600は、プロセッサ(例えば、プロセッサ136)および/またはセキュリティプロバイダ102の他のコンポーネント(例えば、データベース130)によって、もしくは任意のコンピューティングデバイスまたはIoTシステムによって実施されてもよい。
【0243】
ステップ602では、プロセス600は、物理的コントローラ(例えば、車両のECU、IoTコントローラ等)上での実行のために構成され得る、実行可能コードであり得る、コードを識別してもよい。いくつかの実施形態では、プロセス600は、仮想コントローラ上での実行または他の実装、パーソナルコンピューティングデバイス上での実行のために構成される、コード、および/または実行するように構成されない、コードを識別してもよい。いくつかの実施形態では、実行可能コードは、実施例として、ソフトウェア変更(例えば、更新、パッチ、ロールバック、削除、改変、再較正、パラメータ改変等)デルタファイルを含んでもよい。いくつかの実施形態では、コードは、デバイス(例えば、ユーザデバイス128)において受信されるとき、例えば、コードがユーザによってユーザデバイス128に打ち込まれるとき、または別のデバイス(例えば、コントローラ114a)から送信されたものを受信されるとき、識別されてもよい。
【0244】
ステップ604では、プロセス600は、コードと関連付けられる機能の数および/またはその機能の数間の関係の数を判定し得る、ステップ602において受信されたコード等のコードの機能的分析を実施してもよい。いくつかの実施形態では、機能的分析を実施するステップは、既知のセグメント(例えば、判定された機能的効果を伴う、関数、変数等)および/または未知のセグメントに関する受信されたコードを解析するステップを伴ってもよい。いくつかの実施形態では、未知のセグメントは、(例えば、データベース130内の情報を更新し得る、セキュリティプロバイダ102における入力を通して)ユーザによって分類された機能的効果を有してもよい。いくつかの実施形態では、機能的分析は、コードを物理的または仮想コンピューティング環境内でシミュレートし、機能的効果を判定するステップを伴ってもよい。いくつかの実施形態では、コードは、セグメントの機能的効果および/またはセグメント間の機能関係に従って、分割されてもよい。
【0245】
ステップ606では、プロセス600は、上記に議論されるコード行挙動および関係モデル30のインスタンスであり得る、コード行挙動および関係モデルを発生させてもよい。いくつかの実施形態では、コード行挙動および関係モデルは、ステップ604において機能的分析によって判定された任意の数の機能および関係に基づいて発生されてもよい。いくつかの実施形態では、コード行挙動および関係モデルは、統計的分類プロセス、動的分析プロセス、コードのセグメントまたは複数のセグメントと関連付けられる機能のシーケンスの判定、および/またはシーケンスの機能のうちの少なくとも2つ間の関係の判定を含み得る、機械学習プロセスを通して発生されてもよい。
【0246】
ステップ608では、プロセス600は、署名演算を発生されたコード行挙動および関係モデル上で実施してもよい。署名演算は、ハッシュ演算、暗号化関数、および/または任意の署名アルゴリズムを含んでもよい。例えば、署名は、SHA-256、MD6、高速ハッシュ、ユニバーサル一方向ハッシュ関数、またはその他等のアルゴリズムに従って発生されてもよい。署名演算は、コード行挙動および関係モデル、シンボル、コントローラ、および/またはシステムと関連付けられる、一意の署名値を生成してもよい。いくつかの実施形態では、一意の署名値は、ハッシュ値および/または暗号化ノンス数を含んでもよい。いくつかの実施形態では、署名演算は、コードのセグメントまたは複数のセグメントと関連付けられるシンボルの数、シンボルのうちの少なくとも1つのタイプ、コード行挙動および関係モデル内の関係の数、コード行挙動および関係モデル内の関係の構成、少なくとも1つの関係と関連付けられるシンボルの数、および/またはコード行挙動ならびに関係モデルの任意の他の特性に基づいてもよい。
【0247】
ステップ610では、プロセス600は、一意の署名値(例えば、ステップ608において発生された値)をコード行挙動および関係モデル(ステップ606において発生されたコード行挙動および関係モデルまたは既存のコード行挙動および関係モデル等)にリンクさせてもよい。一意の署名値をリンクさせるステップは、一意の署名値およびコード行挙動ならびに関係モデルの両方を有する、ファイルを発生させるステップ、一意の署名値をコード行挙動および関係モデルのフィールドに書き込むステップ、一意の署名値をコード行挙動および関係モデルに埋め込むステップ、および/または一意の署名値がコード行挙動および関係モデルと関連付けられることを示す表記をデータ内に作成するステップを含んでもよい。いくつかの実施形態では、プロセス600は、一意の署名値を、コード行挙動および関係モデルが関連付けられ得る、コードのセグメントまたは複数のセグメント(例えば、デルタファイル)に割り当ててもよい(例えば、コード行挙動および関係モデルが、コードのセグメントまたは複数のセグメントに基づいて発生されたとき)。いくつかの実施形態では、一意の署名値をコード行挙動および関係モデルにリンクさせるステップは、コード行挙動および関係モデルを圧縮するステップを含んでもよく、これは、リンクさせるプロセスにおける任意の時点(例えば、終了時)に生じ得る。いくつかの実施形態では、プロセス600は、コード行挙動および関係モデルを割り当てられた署名値とともに遠隔デバイス(例えば、コントローラ114a)に送信してもよく、これは、ステップ610の前または後に生じ得る。
【0248】
図7は、コード行挙動および関係モデルを発生させ、それに署名するための例示的プロセス700を描写する。上記の実施形態によると、プロセス700は、図1に描写されるシステム10または任意のタイプのIoTネットワーク環境内に実装されてもよい。例えば、プロセス700は、プロセッサ(例えば、プロセッサ136)および/またはセキュリティプロバイダ102の他のコンポーネント(例えば、データベース130)によって、もしくはコンピューティングデバイスまたはIoTシステムによって実施されてもよい。
【0249】
ステップ702では、プロセス700は、コードの第1の部分およびコードの第2の部分を識別してもよい。コードの第1および第2の部分の一方または両方は、物理的コントローラ(例えば、車両のものであり得る、ECU)、仮想コントローラ、パーソナルコンピューティングデバイス上での実装または実行のためのものであり得る、実行可能コードであってもよく、および/または実行するように構成されない、コードであってもよい。例えば、コードの第1の部分の機能の実行またはコードの第2の部分の機能の実行のうちの少なくとも1つは、物理的または仮想化されたコントローラ上での実行であってもよい。いくつかの実施形態では、コードの第1の部分は、現在、デバイス上に展開され、および/または起動中であり得る、もしくはコードの第2の部分より前のバージョンのソフトウェアに対応し得る。さらに、コードの第2の部分は、コードの第1の部分を現在有するデバイスのために意図され得る、ソフトウェア変更(例えば、再較正)に対応し得る。第1および/またはコードの第2の部分を識別するステップは、第1および/またはコードの第2の部分を発生させるステップ、第1および/またはコードの第2の部分を受信するステップ、ならびに/もしくはコードの第1および/または第2の部分を記憶媒体(例えば、メモリ空間116、遠隔システム103の記憶媒体、メモリ138、データベース130等)から読み出すステップを含んでもよい。
【0250】
ステップ704では、プロセス700は、コードの第1の部分の機能の実行を表し得る、第1のコード行挙動および関係モデルにアクセスしてもよい。本モデルは、プロセス700を実施するデバイス(例えば、ユーザデバイス128)にアクセス可能な記憶デバイス(例えば、データベース130)上に記憶されてもよい。いくつかの実施形態では、第1のコード行挙動および関係モデルは、上記に議論されるコード行挙動および関係モデル30のインスタンスであってもよい。例えば、第1のコード行挙動および関係モデルは、コードの第1の部分と関連付けられるシンボルおよびシンボル関係をモデル化する、コード行挙動および関係モデル30であってもよい。いくつかの実施形態では、アクセスされるコード行挙動および関係モデルは、他の開示される実施形態と一致する、機械学習プロセスに従って発生されていてもよい。
【0251】
ステップ706では、プロセス700は、実行可能コードの第2の部分に基づいて、コードの第2の部分の機能の実行を表し得る、第2のコード行挙動および関係モデルを構築してもよい。いくつかの実施形態では、第1のコード行挙動および関係モデルは、コードの第2の部分と関連付けられるシンボルおよびシンボル関係をモデル化し得る、コード行挙動および関係モデル30であってもよい。いくつかの実施形態では、プロセス700は、コードの第2の部分の少なくとも1つの機能をコードの第2の部分の少なくとも1つのセグメントにリンクさせてもよい。
【0252】
いくつかの実施形態では、第1または第2のコード行挙動および関係モデルのうちの少なくとも1つは、動的に発生されていてもよい(例えば、コードの第1または第2の部分を使用して動作するデバイスから受信されたリアルタイムデータを使用して発生される)。例えば、セキュリティプロバイダ102は、リアルタイム動作情報をコントローラおよび/またはコントローラシステムから受信してもよい。そのような動的発生は、とりわけ、図13に関して議論されるステップを使用して実施されてもよい。他の実施形態では、第1または第2のコード行挙動および関係モデルは、静的に発生されていてもよい(例えば、リアルタイム動作に基づかない、既存のコードを使用して)。
【0253】
ステップ708では、プロセス700は、第1のコード行挙動および関係モデルと第2のコード行挙動および関係モデルの機能的差比較を実施してもよい。いくつかの実施形態では、機能的差比較を実施するステップは、第1および第2のコード行挙動および関係モデルと関連付けられ得る、コード行挙動および関係モデルの全てまたは一部を比較するステップを伴ってもよい。コード行挙動および関係モデル30を比較するステップに加え、またはその代わりに、プロセス700は、それぞれ、第1のコード行挙動および関係モデルならびに第2のコード行挙動および関係モデルと関連付けられる、一意の識別子または他の識別情報を比較してもよい。いくつかの実施形態では、機能的差比較は、実行可能コードの第1の部分の機能性が、CPUサイクル、メモリ要件、実行の速度、または機能性関係のうちの少なくとも1つに関連する、動作エンベロープ内に該当するかどうかを判定するステップを含んでもよい。いくつかの実施形態では、機能的差比較は、応答時間、機能実行のシーケンス、またはメモリ漏出の(例えば、第1および第2のコード行挙動および関係モデル間の)差異のうちの少なくとも1つに基づいてもよい。応答時間は、例えば、プロセッサがメッセージ(例えば、応答のための要求、ピング、またはリアルタイムメッセージ)に応答するために測定された時間に基づいて判定されてもよい。機能実行のシーケンスは、記憶されるシーケンス、以前の機能シーケンスの平均、または予期される機能シーケンスを判定する、機械学習プロセスによって表されてもよい。メモリ漏出は、例えば、メモリから削除されるべきではないが、削除されている、メモリコンテンツ、または削除されるべきであるが、削除されていない、メモリコンテンツとして示されてもよい。
【0254】
いくつかの実施形態では、プロセス700は、コードの第3の部分が休止状態である(例えば、最小限のアクションを実施する、全く使用されていない、陳腐化している、冗長である、非効率的である、前のソフトウェア変更の一部である等)ことを判定し得る。本判定は、ステップ708の機能的差比較に基づいてトリガされてもよい。
【0255】
ステップ710では、プロセス700は、第1および第2のコード行挙動および関係モデル間の機能的等価性のステータスを含み得る、機能的等価性のステータスを判定してもよい。いくつかの実施形態では、機能的等価性のステータスは、等価性または非等価性のステータスおよび/または等価性の程度を含んでもよく、これは、ステップ716において使用されてもよい。機能的等価性のステータスは、ステップ708において実施される比較に基づいてもよい。例えば、ステップ708における比較は、種々の方法で表され得る、第1および第2のコード行挙動および関係モデル間の機能的等価性の程度をもたらし得る。さらなる実施例として、そのような機能的等価性の程度は、等価性のパーセンテージ(例えば、75%等価性)、第1および第2のコード行挙動および関係モデルの特定の部分の等価性の判定(例えば、モデル間のシンボルの99%が、等価性である、第1のモデル内のシンボル「X-1」が、第2のモデル内の修正されたシンボル「X-1」に80%のみ等価性である等)を含んでもよい。いくつかのシナリオでは、プロセス700は、例えば、等価性のステータスがステップ710において判定される場合、直接、ステップ710からステップ712に進んでもよい。プロセス700は、ある場合には、ステップ710を実施後、ステップ716および/またはステップ718に進んでもよい。
【0256】
ステップ712では、プロセス700は、ステップ710において判定されたステータス、機能的等価性の程度、または第1および第2のコード行挙動および関係モデル間の機能類似性または差異に関連する任意の他の情報を含み得る、機能的等価性のステータスの報告を発生させてもよい。
【0257】
ステップ714では、プロセス700は、ステップ712において発生された報告を含み得る、機能的等価性のステータスの報告を送信してもよい。いくつかの実施形態では、報告は、例えば、ステップ708または710において判定されている場合がある、機能性ドリフトの少なくとも1つのインスタンスを識別してもよい。いくつかの実施形態では、本報告は、プロセス700を実施するデバイス(例えば、ユーザデバイス128)から別個のデバイス(例えば、ネットワークリソース104a、遠隔システム103等)に送信されてもよい。いくつかの実施形態では、別個のデバイスは、第1および/または第2のコード行挙動および関係モデルと関連付けられるデバイス(例えば、第1および/または第2のモデルの下層のコードを提供したデバイス、第1および/または第2のモデルの下層のコードのプロバイダのデバイス、コードの第1および/または第2の部分が意図される、コンポーネント、デバイス、もしくはシステムの製造業者のデバイス)であってもよい。
【0258】
ステップ716では、プロセス700は、機能的等価性の程度(例えば、ステップ710において判定された機能的等価性の程度)が閾値を満たすかどうかを判定してもよい。閾値の性質は、第1および第2のコード行挙動および関係モデル間のパーセンテージ等価性、第1および第2のコード行挙動および関係モデルのある部分間(例えば、第1および第2の部分内のコードの重要な部分間)のパーセンテージ等価性、またはコードの第1の部分と第2の部分との間もしくは第1および第2のコード行挙動および関係モデル間の等価性の任意の他の定量化を含む、種々の形態をとってもよい。いくつかの実施形態では、例えば、機能的差比較の結果が、閾値を超えると、プロセス700は、判定された差異に基づいて、(例えば、コードの第2の部分が意図されるデバイスの)休止時間の推定される確率を判定してもよく、これは、定義された時間周期内の休止時間の確率として表されてもよい。
【0259】
いくつかの実施形態では、閾値は、システム100または遠隔システム103において設定されていてもよい。例えば、いくつかの実装では、規制または仕様のセットが、コード機能性において許容される差異のための閾値を判定してもよい。一実施例は、国際連合欧州経済委員会によって発行された承認タイプのルールであってもよい。これらのルールは、例えば、無線ソフトウェア変更(更新、ロールバック、改変等)のために許可される、ソフトウェア機能性逸脱に関する閾値を規定してもよい。いくつかの状況では、閾値は、0%であり得る(すなわち、機能性におけるいかなる逸脱も、無線変更のために許可されない)一方、他の状況では、閾値は、より高くあり得る。類似規制およびルールは、IoTコントローラ(例えば、電子機器コントローラ、産業コントローラ、機械的デバイスコントローラ、家電コントローラ等)が、無線ソフトウェア変更を受信するために許可されるときを判定してもよい。このように、開示される技法は、効率的およびセキュアな様式において、政府または産業規制に準拠することが可能であって、許可された無線変更を可能にし、有意な機能的差異を伴う許容不可能変更を可能にしない。機能的等価性の判定された程度は、プロセス700によって行われるさらなるステップを決定付け得る。例えば、機能的等価性の判定された程度が、閾値を満たす場合、プロセス700は、ステップ712に進み得、機能的等価性の判定された程度が閾値を満たさない場合、プロセス700は、ステップ718に進み得る。
【0260】
ステップ718では、プロセス700は、ステップ710および/またはステップ716において行われた判定に基づき得る、プロンプトを発生させてもよい。いくつかの実施形態では、プロンプトは、警告、機能的等価性の程度、またはプロセス700の一部として判定された任意の他の情報を含んでもよい。いくつかの実施形態では、プロンプトは、コードの第2の部分、第2のコード行挙動および関係モデル、および/または一意の識別子をタグ付けしてもよい。タグ付けは、コード、モデル、および/または識別子を、使用不可能なもの、悪意のあるもの、バグがあるもの、または別様に、デバイス上での使用のために不適切なものとして標識化するステップを含んでもよい。いくつかの実施形態では、タグ付けは、コードを無効にするステップおよび/またはコードの実行を許可しないための通知をデバイスに送信するステップを伴ってもよい。
【0261】
図8は、機能的コード行挙動および関係モデルに基づいて、ソフトウェア相互依存性を識別するための例示的プロセス800を描写する。上記の実施形態によると、プロセス800は、図1に描写されるシステム10または任意のタイプのIoTネットワーク環境内に実装されてもよい。例えば、プロセス800は、プロセッサ(例えば、プロセッサ136)および/またはセキュリティプロバイダ102の他のコンポーネント(例えば、データベース130)によって、もしくはコンピューティングデバイスまたはIoTシステムによって実施されてもよい。
【0262】
ステップ802では、プロセス800は、コントローラと関連付けられ得る、コードの第1の部分を識別してもよい。例えば、コードの第1の部分は、物理的コントローラ(例えば、ECU)、仮想コントローラ、パーソナルコンピューティングデバイス上で実装または実行されるように構成されてもよく、および/または実行するように構成されなくてもよい。いくつかの実施形態では、コードの第1の部分は、現在、デバイス(例えば、コントローラ)上で展開され、および/または起動中であり得る、ソフトウェアに対応し得る、またはソフトウェア変更(例えば、更新、修正、パッチ、改変、削除、再較正、パラメータ改変等であって、そのいずれかは、構成管理プロセスの一部であり得る)に対応し得る。いくつかの実施形態では、コードの第1の部分は、それが関連するデバイスおよび/またはシステムに対するコードの第1の部分の重要性を説明する値であり得る、感度値と関連付けられ得る。したがって、感度値は、コードの第1の部分を含むソフトウェアがデバイス上で実行される、コードの第1の部分が使用される頻度、システム全体に対する第1の部分が関連付けられるデバイスの重要性のレベル(例えば、制動機能を制御するECUは、空気調整ファン速度を制御するECUより高いレベルの重要性を有し得る)、コードの第1の部分が有する、依存性または相互依存性の数、もしくはコードの第1の部分がデバイスおよび/またはシステムと有する関与の程度の任意の他の測定値に基づいてもよい。コードの第1の部分は、ここでは、第1の感度値と関連付けられるように議論されるが、コードの他の部分、シンボル、および/または個々のデバイス(例えば、コントローラ)もまた、他の実施形態に関してさらに議論されるように、感度値と関連付けられ得る。コードの第1の部分を識別するステップは、コードの第1の部分を発生させるステップ、コードの第1の部分を受信するステップ、および/またはコードの第1の部分を記憶媒体(例えば、メモリ空間116、遠隔システム103の記憶媒体、メモリ138、データベース130等)から読み出すステップを含んでもよい。
【0263】
ステップ804では、プロセス800は、コードの一部(例えば、ステップ802において識別されたコードの部分)の機能性を表し得る、機能的コード行挙動および関係モデルにアクセスしてもよい。いくつかの実施形態では、アクセスされる機能的コード行挙動および関係モデルは、コード行挙動および関係モデル30であってもよく、コードの第1の部分と関連付けられる、シンボルおよびシンボル関係をモデル化してもよい。いくつかの実施形態では、機能的コード行挙動および関係モデルにアクセスするステップは、機能的コード行挙動および関係モデルを発生させるステップ、機能的コード行挙動および関係モデルを受信するステップ、および/または機能的コード行挙動および関係モデルを記憶媒体(例えば、メモリ空間116、遠隔システム103の記憶媒体、メモリ138、データベース130等)から読み出すステップを含んでもよい。
【0264】
ステップ806では、プロセス800は、コントローラのためのソフトウェア変更(例えば、更新)を含み得る、コードの第2の部分を判定してもよい。例えば、コードの第1の部分と同様に、コードの第2の部分は、物理的コントローラ(例えば、ECU)、仮想コントローラ、パーソナルコンピューティングデバイス上で実装または実行されるように構成されてもよく、および/または実行するように構成されなくてもよい。いくつかの実施形態では、感度値は、コードの第2の部分と関連付けられる(ステップ802において議論される感度値等)。いくつかの実施形態では、コードの第2の部分は、コードの第1の部分と同一デバイス(例えば、コントローラ)と関連付けられ得る。いくつかの実施形態では、コードの第1の部分は、第1のコントローラと関連付けられ得、コードの第2の部分は、第2のコントローラと関連付けられ得、第1および第2のコントローラは両方とも、同一デバイスまたはシステムの一部であってもよい(例えば、車両、建物、ネットワーク等の少なくとも一部である)。コードの第2の部分を判定するステップは、コードの第2の部分を発生させるステップ、コードの第2の部分を受信するステップ(例えば、遠隔システム103から)、および/またはコードの第2の部分を記憶媒体(例えば、メモリ空間116、遠隔システム103の記憶媒体、メモリ138、データベース130等)から読み出すステップを含んでもよい。
【0265】
ステップ808では、プロセス800は、相互依存性を判定してもよい。例えば、プロセス800は、コードの第2の部分が、コードの第1の部分と相互依存することを判定し得る。いくつかの実施形態では、コードの第1および第2の部分は、相互依存性がデバイスの内部にあるように、同一デバイス(例えば、コントローラ)と関連付けられ得る。いくつかの実施形態では、本判定は、機能的コード行挙動および関係モデル(例えば、ステップ804においてアクセスされるモデル、コードの第1の部分と関連付けられるモデル、コードの第2の部分と関連付けられるモデル等)に基づいてもよい。相互依存性は、2つの異なるコード行挙動および関係モデルのシンボルまたはシンボル関係を比較することによって判定されてもよい。
【0266】
いくつかの実施形態では、相互依存性を判定するステップは、コードの第2の部分へのコードの第1の部分の機能的影響を判定するステップを含んでもよい。例えば、プロセス800は、コードの相互依存部分と関連付けられる、ステータスおよび/または機能性の変更を判定してもよい(例えば、プロセス700または本明細書で議論される他のプロセスに従って)。一例として、コードの1つの部分への変更は、(例えば、同一デバイスに関連する)コードの他の部分における機能的変更をもたらし得、プロセス800は、いずれかが存在する範囲まで、他の部分における各機能的変更の性質(例えば、機能等価性の程度)を判定してもよい。プロセス800はまた、相互依存性のタイプ(例えば、一方向相互依存性、双方向相互依存性、コードの重要な部分に影響を及ぼす相互依存性、コードの非重要な部分に影響を及ぼす相互依存性等)および/または相互依存性の強度(例えば、影響されるシンボルの数、シンボルへの影響の頻度、シンボルへの変更の潜在的または実際の量等)を判定してもよい。いくつかの実施形態では、機能的影響は、コードの第1の部分と関連付けられる感度値(すなわち、第1の感度値)と、第2の部分コードと関連付けられる感度値(すなわち、第2の感度値)とに基づいてもよい。いくつかの実施形態では、プロセス800は、機能的影響が閾値を超えることを判定し得る。上記に議論されるように、閾値は、動的に設定される(例えば、機械学習プロセスに基づいて)、または静的に設定されてもよい(例えば、手動で設定される、または機能的差異の許可される程度を定義する政府規制に基づいて設定される)。
【0267】
いくつかの実施形態では、プロセス800は、コードの第1の部分を一意に識別する、第1の署名と、コードの第2の部分を一意に識別する、第2の署名とを識別してもよい。プロセス800は、署名をともにリンクさせてもよく(例えば、相互参照またはルックアップテーブル内において)、これは、有用なコンパクトなフォーマットにおいて、相互依存性を説明し得る。
【0268】
ステップ810では、プロセス800は、報告を発生させてもよい。いくつかの実施形態では、報告は、判定された相互依存性に基づいてもよく、および/またはコードの相互依存部分(例えば、ステップ802および806のコードの第1ならびに第2の部分)を識別してもよい。報告は、相互依存性のタイプおよび/または強度を識別してもよい(例えば、ステップ808に関して議論されるように)。報告は、ステップ808において判定された機能的影響等の機能的影響を含んでもよい。
【0269】
いくつかの実施形態では、プロセス800は、判定された相互依存性の視覚的描写を発生させてもよい。例えば、視覚的描写は、2つのコード行挙動および関係モデルのグラフィカル表現において相互依存性を示してもよい。いくつかの実施形態では、視覚的描写は、シンボル関係インターフェース400に示されるものと同一または類似してもよい。視覚的描写は、判定された相互依存性の視覚的要素、コードの第1の部分の視覚的要素、コードの第2の部分の視覚的要素、および/またはコードの他の部分の視覚的要素を含んでもよい。いくつかの実施形態では、視覚的描写は、機能的影響が閾値を超えることの判定に基づいてもよい(例えば、視覚的描写は、機能的影響が閾値を超える程度を示してもよい、視覚的描写は、機能的影響が閾値を超える場合のみ表示されてもよい等)。
【0270】
図9は、ソフトウェアベースの誤動作またはエラーのソースを識別するための例示的プロセス900を描写する。上記の実施形態によると、プロセス900は、図1に描写されるシステム10または別のタイプのIoTネットワーク環境内に実装されてもよい。例えば、プロセス900は、プロセッサ(例えば、プロセッサ136)および/またはセキュリティプロバイダ102の他のコンポーネント(例えば、データベース130)によって、もしくはコンピューティングデバイスまたはIoTシステムによって実施されてもよい。
【0271】
ステップ902では、プロセス900は、潜在的または実際のソフトウェア誤動作を識別してもよい。いくつかの実施形態では、識別された潜在的または実際のソフトウェア誤動作は、複数の異なるソフトウェアソース(例えば、デバイス、ソフトウェア開発者等)と関連付けられる、複数のコードセットを有し得る、システムと関連付けられ得る(例えば、その中で生じている)。例えば、複数のコードセットは、複数の異なるソフトウェア開発者によって開発されている場合がある、コードセットを発生された異なるデバイスと関連付けられ得る、異なる地理と関連付けられ得る等である。いくつかの実施形態では、複数のコードセットは、システム(例えば、車両)の少なくとも1つのコントローラ(例えば、ECU)と関連付けられ得る。複数のコードセットが異なるソフトウェア開発者と関連付けられる、いくつかの実施形態では、複数の異なるソフトウェア開発者はそれぞれ、一意のソース識別子を有し得、各コードセットは、一意のソース識別子のうちの1つと関連付けられ得る。本明細書で議論される全ての実施形態と同様に、システムは、必ずしも、物理的システムに限定されず、代わりに、仮想システムを含んでもよい。
【0272】
コードセットはまた、異なる機能と関連付けられ得る。例えば、1つのコードセットは、システム内の1つの動作(例えば、車両内の操向)を制御するステップと関連付けられ得る一方、別のコードセットは、システム内の異なる動作(例えば、ブラインドスポット検出)を制御するステップと関連付けられ得る。いくつかの実施形態では、コードセットは、相互に依存し得る(例えば、図11に関して議論されるように)。
【0273】
ステップ904では、プロセス900は、コードセットの機能の実行を表し得る、コード行挙動および関係モデルにアクセスしてもよい。いくつかの実施形態では、アクセスされるコード行挙動および関係モデルは、単一コードセットのみを表し得る。いくつかの実施形態では、コード行挙動および関係モデルは、ステップ906において識別されたコードセットの機能の実行を表し得る。いくつかの実施形態では、アクセスされるコード行挙動および関係モデルは、少なくとも1つのデバイス(例えば、コントローラ)のリアルタイム動作と関連付けられるデータに基づいて、動的に発生されていてもよい。ステップ904を実施後、プロセス900は、ステップ906および/またはステップ914に進み得る。
【0274】
ステップ906では、プロセス900は、コードセットを識別してもよい。コードセットは、コード行挙動および関係モデルに基づいて識別されてもよく、コードセットは、少なくとも部分的に、ソフトウェア誤動作を引き起こす潜在性を有する、または引き起こしていることを判定されてもよい。例えば、プロセス900は、コード行挙動および関係モデルを分析して(例えば、リアルタイム動作データを使用した動作のシミュレーションを通して等)、潜在的または実際のソフトウェア誤動作と関連付けられる、コードセットまたはコードセットの一部を判定してもよい。
【0275】
いくつかの実施形態では、複数のコードセットが、潜在的または実際のソフトウェア誤動作と関連付けられ得る。これらのシナリオでは、複数のコードセットは、相互に相互依存し得る(すなわち、同一デバイス内にある場合)。
【0276】
ステップ908では、プロセス900は、識別されたコードセットのソース識別子(例えば、識別されたコードセットを発生させたデバイスまたはソフトウェア開発者を示す、識別子、コードセットが関連付けられるデバイスを示す、識別子等)であり得る、コードセット識別子を判定してもよい。
【0277】
ステップ910では、プロセス900は、潜在的または実際のソフトウェア誤動作の報告を発生させてもよい。潜在的または実際のソフトウェア誤動作の報告は、休止時間の推定される時間、潜在的または実際のソフトウェア誤動作によって潜在的または実際に影響されるデバイスおよび/またはシステムの識別子、潜在的または実際のソフトウェア誤動作によって潜在的または実際に影響されるデバイスおよび/またはシステムの数、誤動作の重要性のインジケーション(例えば、影響されるデバイスおよび/またはシステムのタイプ、潜在的または実際のソフトウェア誤動作の影響のレベル等に基づいて)を含んでもよい。
【0278】
ステップ912では、プロセス900は、潜在的または実際のソフトウェア誤動作の報告を、識別されたソース識別子と関連付けられ得る、遠隔ソース(例えば、遠隔システム103)に送信してもよい。
【0279】
ステップ914では、プロセス914は、デルタファイルを識別してもよい。本ステップは、(例えば、システム内の)潜在的ソフトウェア誤動作の識別がコンポーネント(例えば、コントローラ)への最近のソフトウェア変更に基づき得る場合等のいくつかの実施形態では、重要であり得る。例えば、潜在的ソフトウェア誤動作の識別は、デルタファイルを使用してコンポーネント上で実装される、または実装されることが計画されている、ソフトウェア変更から生じ得る。デルタファイルが識別された誤動作と関連付けられるもの等のいくつかの実施形態では、デルタファイルは、一意の識別子と関連付けられ得、一意の識別子は、報告内に含まれ得、これは、ステップ916において等、改良された応答性アクションを可能にし得る。
【0280】
ステップ916では、プロセス900は、応答性アクションを実装してもよい。そのような応答性アクションは、識別された誤動作に応答して行われてもよい。例えば、プロセス900は、デルタファイルをコンポーネント上の現在のソフトウェアからリンク解除することによって、識別された誤動作と関連付けられる、コンポーネント(例えば、コントローラ)上のソフトウェアを復帰させてもよい。デルタファイルをリンク解除するステップは、メモリ(例えば、図5に示されるようなメモリ空間116)内のポインタを変更する、デルタファイルを削除する、デルタファイルと関連付けられる一意の識別子を変更する、ソフトウェア変更をコントローラに送信する、および/またはリンク解除されたデルタファイルを実装せずに、ソフトウェアのバージョンを実装するように、コントローラにおいてアクションを実行することを含む、任意の数の異なるアクションを伴ってもよい。通知を遠隔デバイスに送信する(例えば、デルタファイルと関連付けられる、コントローラの車両内のインフォテインメント画面)、ステップ910および912等に関して議論される報告を発生および/または送信する、コンポーネント上の動作を休止する、識別された誤動作が関連付けられるコンポーネントに依存するコンポーネント上のソフトウェアを復帰させる、依存するコントローラ上の動作を休止すること等の種々の他の応答性アクションも、行われてもよい。
【0281】
図10は、機能的コード行挙動および関係モデルに基づいて、ハードウェア変更影響を分析するための例示的プロセス1000を描写する。上記の実施形態によると、プロセス1000は、図1に描写されるシステム10または任意のタイプのIoTネットワーク環境内に実装されてもよい。例えば、プロセス1000は、プロセッサ(例えば、プロセッサ136)および/またはセキュリティプロバイダ102の他のコンポーネント(例えば、データベース130)によって、もしくは任意のコンピューティングデバイスまたはIoTシステムによって実施されてもよい。いくつかの実施形態では、プロセス1000は、システムが、新しいハードウェアコンポーネントが、システムを動作させている、または動作するように試みていることを判定すると、開始されてもよい。
【0282】
ステップ1002では、プロセス1000は、システムと関連付けられ得る(例えば、その一部である)、新しいハードウェアコンポーネントを識別してもよい。いくつかの実施形態では、新しいハードウェアコンポーネントは、コントローラであってもよく、さらにより具体的実施形態では、新しいハードウェアコンポーネントは、車両(すなわち、システム)内のECUであってもよい。いくつかの実施形態では、新しいハードウェアコンポーネントは、前のハードウェアコンポーネントに取って代わるように構成、選択、調製等されてもよい。
【0283】
ステップ1004では、プロセス1000は、新しいハードウェアコンポーネントを使用したシステム内の機能の実行を表し得る、第1のコード行挙動および関係モデルにアクセスしてもよい。第1のコード行挙動および関係モデルは、新しいハードウェアコンポーネントのシミュレートされた動作と関連付けられるデータに基づいて発生されていてもよい。いくつかの実施形態では、プロセス1000はまた、システムの前のハードウェアコンポーネント上での機能の実行を表し得る、第2のコード行挙動および関係モデルにアクセスしてもよい。第2のコード行挙動および関係モデルは、前のハードウェアコンポーネントのリアルタイム動作と関連付けられるデータに基づいて動的に発生されていてもよい。
【0284】
いくつかの実施形態では、機能的コード行挙動および関係モデルにアクセスするステップは、機能的コード行挙動および関係モデルを発生させるステップ、機能的コード行挙動および関係モデルを受信するステップ、および/または機能的コード行挙動および関係モデルを記憶媒体(例えば、メモリ空間116、遠隔システム103の記憶媒体、メモリ138、データベース130等)から読み出すステップを含んでもよい。
【0285】
ステップ1006では、プロセス1000は、機能的差比較を実施してもよく、これは、第1のコード行挙動および関係モデルと第2のコード行挙動および関係モデルの比較を含んでもよい。
【0286】
ステップ1008では、プロセス1000は、ステップ1006において実施される機能的差比較に基づき得る、機能的等価性のステータスを判定してもよい。いくつかの実施形態では、機能的等価性のステータスは、新しいハードウェアコンポーネントと前のハードウェアコンポーネントとの間の機能的等価性のステータスを含んでもよい。いくつかの実施形態では、ステップ1008は、プロセス700におけるステップ710に類似し得、新しいおよび前のハードウェアコンポーネントの一方または両方は、コードおよび/またはコード行挙動ならびに関係モデルの関連付けられる部分を有する。いくつかの実施形態では、プロセス1000は、新しいハードウェアコンポーネントと前のハードウェアコンポーネント(および/またはコードならびに/もしくはコード行挙動および関係モデルの対応する部分)との間に、機能的差異が存在する、または存在しないことを判定し得る。
【0287】
ステップ1010では、プロセス1000は、ステップ1008において判定された機能的等価性のステータスを識別する、報告であり得る、機能的等価性のステータスの報告を発生させてもよい。いくつかの実施形態では、報告は、ステップ1008において判定されている場合がある、新しいハードウェアコンポーネントと前のハードウェアコンポーネント(および/またはコードならびに/もしくはコード行挙動および関係モデルの対応する部分)との間に判定された差異に基づいてもよい。
【0288】
ステップ1012では、プロセス1000は、ステップ1012において発生された報告を含み得る、機能的等価性のステータスの報告を送信してもよい。いくつかの実施形態では、報告は、例えば、ステップ1008または1010において判定されている場合がある、機能性ドリフトの少なくとも1つのインスタンスを識別してもよい。いくつかの実施形態では、本報告は、プロセス1000を実施するデバイス(例えば、ユーザデバイス128)から別個のデバイス(例えば、ネットワークリソース104a、遠隔システム103等)に送信されてもよい。いくつかの実施形態では、別個のデバイスは、新しいおよび/または前のハードウェアコンポーネント(および/またはコードならびに/もしくはコード行挙動および関係モデルの対応する部分)と関連付けられ得る。例えば、別個のデバイスは、新しいおよび/または前のハードウェアコンポーネントに関するコードライタの製造業者と関連付けられ得る。
【0289】
ステップ1014では、プロセス1000は、機能的等価性の程度(例えば、ステップ1008において判定された機能的等価性の程度)が閾値を満たすかどうかを判定してもよい。閾値の性質は、新しいおよび前のハードウェアコンポーネント間のパーセンテージ等価性、新しいおよび前のハードウェアコンポーネントと関連付けられる、第1および第2のコード行挙動および関係モデルのある部分間(例えば、第1および第2の部分内のコードの重要な部分間)のパーセンテージ等価性、または新しいおよび前のハードウェアコンポーネント間の等価性の任意の他の定量化を含む、種々の形態をとってもよい。上記に議論されるように、閾値は、性質上、静的または動的であってもよい。
【0290】
プロセス1000はまた、新しいハードウェアコンポーネントに基づき得る、他の判定を行ってもよい。例えば、いくつかの実施形態では、例えば、機能的差比較の結果が、閾値を超えると、プロセス1000は、判定された差異に基づいて、定義された時間周期内の休止時間の確率として表され得る、(例えば、新しいハードウェアコンポーネント、新しいハードウェアコンポーネントに依存するコンポーネント等の)休止時間の推定される確率を判定してもよい。新しいハードウェアコンポーネントがコントローラであるもの等のいくつかの実施形態では、プロセス1000はまた、別のコントローラであり得る、少なくとも1つのハードウェアコンポーネントが、新しいハードウェアコンポーネントに依存することを判定し得る。さらに他の実施形態では、プロセス1000は、少なくとも1つのハードウェアコンポーネント(例えば、コントローラ内のコンポーネント)が、新しいハードウェアコンポーネント(例えば、同一コントローラの別のコンポーネント)と相互依存することを判定し得る。
【0291】
プロセス1000はまた、コンポーネントが、前のハードウェアコンポーネントに依存することが判定されると、アクションを行ってもよい。例えば、プロセス1000は、少なくとも1つの依存するハードウェアコンポーネントおよび前のハードウェアコンポーネント上での機能の実行を表し得る、コード行挙動および関係モデルにアクセスしてもよい。さらに、プロセス1000は、少なくとも1つの依存するハードウェアコンポーネントおよび新しいハードウェアコンポーネント上での機能の実行を表す、コード行挙動および関係モデルを発生させてもよい。これらの2つのコード行挙動および関係モデルがプロセス1000の一部として発生されたかどうかにかかわらず、プロセス1000は、これらの2つのモデルの機能的差比較を実施してもよい。また、プロセス1000は、機能的差比較に基づき得る、システム内の機能的等価性の変更(例えば、依存するコンポーネントに対して識別された機能的差異)を判定してもよい。いくつかの実施形態では、プロセス1000は、判定された差異に基づき得る、そのような変更を識別する、報告を発生させてもよい。
【0292】
機能的差異が判定されるもの等のいくつかの実施形態では、プロセス1000は、新しいハードウェアコンポーネントが認可されていないことを判定し得、これは、判定された差異に基づき得る(例えば、機能的等価性の程度が、閾値を満たさない場合)。
【0293】
いくつかの実施形態では、閾値は、システム100または遠隔システム103において設定されていてもよい。機能的等価性の判定された程度は、プロセス1000によって行われるさらなるステップを決定付け得る。例えば、機能的等価性の判定された程度が、閾値を満たす場合、プロセス1000は、ステップ1010に進み得、機能的等価性の判定された程度が、閾値を満たさない場合、プロセス1000は、ステップ1016に進み得る。上記に議論されるように、いくつかの実施形態では、閾値は、静的である(例えば、政府または産業規制またはルールによって定義される)一方、他の実施形態では、動的である(例えば、機械学習プロセスに基づく)。
【0294】
ステップ1016では、プロセス1000は、ステップ1008および/またはステップ1014において行われる判定に基づき得る、プロンプトを発生させてもよい。いくつかの実施形態では、プロンプトは、警告、機能的等価性の程度、またはプロセス1000の一部として判定された任意の他の情報を含んでもよい。プロセス1000は、新しいハードウェアコンポーネントの動作をブロックしてもよく、これは、新しいハードウェアコンポーネントが認可されていないことの判定に基づき得る。例えば、プロンプトは、新しいハードウェアコンポーネント、新しいハードウェアコンポーネントと関連付けられるコードの一部、新しいハードウェアコンポーネントと関連付けられる第2のコード行挙動および関係モデル、および/または一意の識別子をタグ付けしてもよい。タグ付けは、使用不可能なもの、悪意のあるもの、バグのあるもの、または別様に、システムにおいて使用するために不適切なものとして、(例えば、ソフトウェア内で)コード、モデル、コンポーネントおよび/または識別子を標識化するステップを含んでもよい。いくつかの実施形態では、タグ付けは、コードを無効にするステップおよび/または新しいコンポーネントのインストールを許可しないための通知をシステムに送信するステップを伴ってもよい。他のタグ付けアクションは、図7に関して議論されるものを含んでもよい。
【0295】
図11は、機能的コード行挙動および関係モデルに基づいて、ソフトウェア依存性を識別するための例示的プロセス1100を描写する。上記の実施形態によると、プロセス1100は、図1に描写されるシステム10または任意のタイプのIoTネットワーク環境内に実装されてもよい。例えば、プロセス1100は、プロセッサ(例えば、プロセッサ136)および/またはセキュリティプロバイダ102の他のコンポーネント(例えば、データベース130)によって、もしくは任意のコンピューティングデバイスまたはIoTシステムによって実施されてもよい。いくつかの実施形態では、プロセス1100は、システムが、新しいハードウェアコンポーネントが、システムを動作している、または動作するように試みていることを判定すると、開始されてもよい。
【0296】
ステップ1102では、プロセス1100は、コードの第1の部分の機能の実行(例えば、コントローラ上で実行されるように構成され得る、実行可能コード)を表し得る、第1のコード行挙動および関係モデルにアクセスする。いくつかの実施形態では、コードの第1の部分は、変数、バッファ、関数、コール、オブジェクト、および/またはコードのセグメントのうちの少なくとも1つであり得、他の実施形態に議論されるように、シンボルの任意の他の特性を有し得る、第1のシンボルと関連付けられ得る。コードの第1の部分はまた、感度値と関連付けられ得る(とりわけ、図8に関して議論される感度値等)。
【0297】
ステップ1104では、プロセス1100は、コードの第1の部分への変更を検出してもよい。コードの一部への変更は、物理的コントローラ、仮想コントローラにおいて実装されるコード変更、ユーザによって行われたシミュレートされた変更、および/または任意の他のデバイスにおけるコード変更を含んでもよい。
【0298】
ステップ1106では、プロセス1100は、実行可能コードの変更された第1の部分の機能の実行を表し得る、第2のコード行挙動および関係モデルを構築してもよい。いくつかの実施形態では、第2のコード行挙動および関係モデルの構造は、実行可能コードの変更された第1の部分に基づいてもよい。
【0299】
ステップ1108では、プロセス1100は、依存性を判定してもよい。いくつかの実施形態では、これは、実行可能コードの変更された第1の部分または第1のシンボルのいずれかと第2のシンボルとの間の依存性を含んでもよい。第2のシンボルは、変数、バッファ、関数、コール、オブジェクト、および/またはコードのセグメントのうちの少なくとも1つであってもよく、他の実施形態に議論されるようなシンボルの任意の他の特性を有してもよい。第2のシンボルはまた、感度値(とりわけ、図8に関して議論される感度値等)と関連付けられ得る。いくつかの実施形態では、依存性は、構築された第2のモデルに基づいてもよい。依存性はまた、第2のコード行挙動および関係モデルを第1および第2のコントローラ(例えば、それぞれ、コードの第1の部分および第2のシンボルと関連付けられる、コントローラ)から遠隔で動作させることによって、遠隔で判定されてもよい。プロセス1100が少なくとも1つのコントローラに関する、実施形態では、そのようなコントローラは、車両内の電子制御ユニット(ECU)のグループの一部であってもよい。
【0300】
プロセス1100はまた、依存性に関連する情報を判定してもよい。例えば、プロセス1100は、感度値(例えば、コードの変更される第1の部分および第2のシンボルと関連付けられる、感度値)に基づき得る、コードの変更される第1の部分によって生じる、第2のシンボルへの影響を判定してもよい。いくつかの実施形態では、依存性は、第1のシンボルが第2のシンボルと相互作用する頻度、実行可能コードの第1の部分が第2のシンボルをコールまたは修正するように構成されること、影響されるシンボルの数、シンボルへの影響の頻度、シンボルへの潜在的または実際の変更の量等に基づき得る、第1のシンボルと第2のシンボルとの間の関連付けの強度を含んでもよい。いくつかの実施形態では、第2のシンボルは、コントローラ(例えば、可能性として、コードの第1の部分が、可能性として、第1のコントローラと関連付けられる、第2のコントローラ)と関連付けられ得る。いくつかの実施形態では、プロセス1100は、コードの相互依存部分と関連付けられる、機能性のステータスおよび/または変更を判定してもよい(例えば、プロセス700または本明細書で議論される他のプロセスに従って)。例えば、コードの1つの部分への変更は、コードの他の部分(例えば、他のデバイス上のコード)における機能的変更をもたらし得、プロセス1100は、いずれかが存在する範囲まで、他の部分における各機能的変更の性質(例えば、機能等価性の程度)を判定してもよい。例証的実施例として、車両上のカメラのためのコードの第1の部分を変更するステップは、操向を制御するもの等の他のECUを伴い得る、自己駐車特徴の機能に影響を及ぼし得る。換言すると、システムが複数のデバイスを含むもの等のいくつかの実施形態では、そのコードが変更していない、コントローラ(または他のデバイス)は、依然として、他のデバイスにおける変更に基づいて、変化し得、かつ機能性の変更を被り得る。
【0301】
ステップ1110では、プロセス1100は、報告を発生させてもよい。いくつかの実施形態では、報告は、判定された差異に基づいてもよく、および/または依存性を識別してもよい。報告はまた、例えば、プロセス1100のステップが、複数回実施される場合、複数の依存性を識別してもよい。いくつかの実施形態では、報告は、依存性と関連付けられる、付加的情報を含有してもよい。例えば、プロセス1100がコードの変更される第1の部分によって生じる第2のシンボルへの影響を識別する、実施形態では、本影響は、報告内に含まれてもよい。プロセス1100はまた、判定された依存性に関連する、他のアクションを行ってもよい。例えば、プロセス1100は、他の本明細書に開示される実施形態と一致する、判定された依存性の視覚的描写を発生させてもよい。
【0302】
図12Aは、機能的コード行挙動および関係モデルを使用して、ソフトウェアデルタ変更を管理するための例示的プロセス1200Aを描写する。上記の実施形態によると、プロセス1200Aは、図1に描写されるシステム10または任意のタイプのIoTネットワーク環境内に実装されてもよい。例えば、プロセス1100は、プロセッサ(例えば、プロセッサ136)および/またはセキュリティプロバイダ102の他のコンポーネント(例えば、データベース130)によって、もしくはコンピューティングデバイスまたはIoTシステムによって実施されてもよい。
【0303】
ステップ1202では、プロセス1200Aは、デバイス(例えば、コントローラ)上のコードの第1のバージョンをコードの第2のバージョンに変更するためのコード等のソフトウェア変更コードを含み得る、ソフトウェアを変更するためのプロンプトを識別してもよい。いくつかの実施形態では、コードの第2のバージョンは、コードの第1のバージョンに続いて展開されてもよい(例えば、更新として)。いくつかの実施形態では、プロンプトは、デルタファイル(例えば、コントローラ上のソフトウェアを変更するように構成される、デルタファイル)を含んでもよい。いくつかの実施形態では、ソフトウェア変更コードは、仮想コントローラ上での実行または他の実装、パーソナルコンピューティングデバイス上での実行のために構成されてもよく、および/または実行するように構成されない、コードであってもよい。いくつかの実施形態では、プロンプトは、それがデバイス(例えば、ユーザデバイス128)において受信されると、例えば、コードがユーザによってユーザデバイス128に打ち込まれると、または別のデバイス(例えば、遠隔システム103)から送信されたものが受信されるとき、識別されてもよい。
【0304】
ステップ1204では、プロセス1200Aは、ステップ1202において識別されたプロンプトに基づき得、コードの第2のバージョンに基づくコントローラの機能の実行を表し得る、コード行挙動および関係モデルを構築してもよい。
【0305】
ステップ1206では、プロセス1200Aは、発生されたコード行挙動および関係モデル上で実施され得、署名値を生成し得る、署名演算を実施してもよい。署名演算は、とりわけ、図6に関して説明されるものに類似し得る(例えば、署名演算は、ハッシュ演算、暗号化関数、および/または任意の署名アルゴリズムを含んでもよい)。いくつかの実施形態では、署名演算は、コントローラ(例えば、変更ソフトウェアを変更するためのプロンプト、構築されたコード行挙動および関係モデル等と関連付けられる、コントローラ)の識別子に基づいてもよい。署名演算はまた、コントローラのタイプ、機能、ソフトウェアのバージョン、感度値、使用年数、または処理容量に基づいてもよい。
【0306】
ステップ1208では、プロセス1200Aは、(例えば、ステップ1202からの)署名値および/またはソフトウェア変更コードを送信してもよい。いくつかの実施形態では、署名値および/またはソフトウェア変更コードは、署名値および/またはソフトウェア変更コードの受信に応じて、プロセス1200Bを実施し得る、コントローラに送信されてもよい。
【0307】
図12Bは、機能的コード行挙動および関係モデルに基づいて、ソフトウェアデルタ変更を分析するための例示的プロセス1200Bを描写する。上記の実施形態によると、プロセス1200Aは、図1に描写されるシステム10または任意のタイプのIoTネットワーク環境内に実装されてもよい。例えば、プロセス1100は、プロセッサ(例えば、プロセッサ118)および/またはコントローラシステム(例えば、コントローラシステム108a)の他のコンポーネントによって、もしくは任意のコンピューティングデバイスまたはIoTシステムによって実施されてもよい。
【0308】
ステップ1210では、プロセス1200Bは、(例えば、セキュリティプロバイダ102等からステップ1208において送信される)署名値および/またはソフトウェア変更コードを受信してもよい。例えば、署名値および/またはソフトウェア変更コードは、プロセス1200Bに関してさらに議論されるように、(i)受信された署名値を、コントローラが、コードの第2のバージョンに基づいて、算出するように構成される、算出された署名値と比較し、(ii)例えば、比較に基づいて、コードの第2のバージョンを検証すべきかどうかを判定するように構成され得る、コントローラ(例えば、コントローラ114a)によって受信されてもよい。
【0309】
ステップ1212では、プロセス1200Bは、署名値を算出してもよい。上記に議論されるように、署名は、種々の異なるアルゴリズムに従って発生されてもよい。プロセス1200Bは、識別されたプロンプトに基づき得、コードの第2のバージョンに基づいて、コントローラの機能の実行を表し得る、コード行挙動および関係モデルを構築することによって、署名値の算出を開始してもよい。プロセス1200Bは、算出された署名値を生成し得る、署名演算を構築されたコード行挙動および関係モデル上で実施してもよい。署名演算は、ステップ1206において説明されるものと類似または同一であり得る。
【0310】
ステップ1214では、プロセス1200Bは、受信された署名値と算出された署名値を比較してもよい。
【0311】
ステップ1216では、プロセス1200Bは、受信された署名値および算出された署名値が合致するかどうかを判定してもよく、これは、ステップ1214において実施される比較に基づき得る。本判定は、受信された署名値および/または受信された署名値と関連付けられるソフトウェア変更ファイルを検証してもよく、プロセス1200Bをステップ1218ならびに/もしくはステップ1220に指向してもよい。
【0312】
ステップ1218では、プロセス1200Bは、ステップ1210において受信されたソフトウェア変更コード等のソフトウェア変更コードを処理してもよい。いくつかの実施形態では、プロセス1200Bは、ステップ1216において実施される検証に基づいて、コントローラ上のコードの第2のバージョンを実行してもよい。例えば、プロセス1200Bが、コードの第2のバージョンのための受信および算出された署名値が合致することを判定する場合、コードを実行し、コードの第2のバージョンをコントローラ上に実装するステップに進み得る。
【0313】
ステップ1220では、プロセス1200Bは、補正アクションを実装してもよく、これは、ステップ1216において実施される検証に基づき得る。いくつかの実施形態では、補正アクションは、プロセス1200Bが、受信および算出された署名値が合致しないことが判定されると、実装されてもよい。補正アクションは、コントローラ上での(例えば、受信された署名値と関連付けられる)コードの第2のバージョンの実行を防止し、コードの第2のバージョンと関連付けられる遠隔ソース(例えば、遠隔システム103)に通知するステップを含んでもよい。
【0314】
いくつかの実施形態では、プロセス1200Aおよび/またはプロセス1200Bに関わるコード行挙動および関係モデルは、他の実施形態からのコード行挙動および関係モデルと同一または類似であってもよい。例えば、ステップ1204またはステップ1212において構築されたコード行挙動および関係モデルのうちの少なくとも1つは、コントローラのリアルタイム動作と関連付けられるデータに基づいて、動的に発生されていてもよい。いくつかの実施形態では、本データは、デバイスから遠隔で(例えば、ソフトウェア変更ファイルが意図される、コントローラから遠隔で)設定され得る、パラメータのグループに基づいて、(例えば、特定のタイムフレームからの、特定のデバイスのセットからの、特定のシステムのセットからの、特定のレートでサンプリングされる、データ等)に限定されてもよい。
【0315】
図13は、機能的コード行挙動および関係モデルに基づいて、制御フロー完全性を分析するための例示的プロセス1300を描写する。上記の実施形態によると、プロセス1300は、図1に描写されるシステム10または任意のタイプのIoTネットワーク環境内に実装されてもよい。例えば、プロセス1300は、プロセッサ(例えば、プロセッサ136)および/またはセキュリティプロバイダ102の他のコンポーネント(例えば、データベース130)によって、もしくは任意のコンピューティングデバイスまたはIoTシステムによって実施されてもよい。いくつかの実施形態では、プロセス1300の任意の数のステップは、コントローラと関連付けられる感度値に基づく周期に従って等、周期的に実施されてもよい。
【0316】
ステップ1302では、プロセス1300は、任意の数のコントローラのランタイム動作に基づき得る、データを受信してもよい(例えば、受信されたデータは、第1のコントローラおよび第2のコントローラのランタイム動作に基づいてもよい)。いくつかの実施形態では、そのようなコントローラ(または複数のコントローラ)は、ソフトウェア変更と関連付けられ得る。いくつかの実施形態では、データは、異なるランタイム動作と関連付けられる複数のデータセットを含んでもよい。プロセス1300はまた、ステップ1302またはプロセス内の別のステップの一部として、機械学習プロセスをそのような複数のデータセットに適用してもよく、これは、分析データを生成し得る。
【0317】
ステップ1304では、プロセス1300は、ステップ1302において受信されたデータ上で実施され得る、機能的分析を実施してもよい。
【0318】
ステップ1306では、プロセス1300は、コントローラ上の機能の実行を表し得、受信されたデータに基づき得る、コード行挙動および関係モデルを構築してもよい。いくつかの実施形態では、コード行挙動および関係モデルを構築するステップは、(例えば、ステップ1302において生成された)分析データに基づいてもよい。いくつかの実施形態では、プロセス1300は、コントローラへのソフトウェア変更を識別してもよく、識別されたソフトウェア変更に基づいて、コード行挙動および関係モデルを構築してもよい。いくつかの実施形態では、プロセス1300は、署名演算を構築されたコード行挙動および関係モデル上で実施してもよく、これは、署名値を生成し得る。
【0319】
ステップ1308では、プロセス1300は、コード行挙動および関係モデルに基づき得、コントローラがリアルタイムで施行するために構成され得る、動的制御フロー完全性モデルを構築してもよい。
【0320】
ステップ1310では、プロセス1300は、動的制御フロー完全性モデルをコントローラ(または複数のコントローラ)に展開してもよい。展開は、動的制御フロー完全性モデルを圧縮するステップ、動的制御フロー完全性モデルをコントローラに送信するステップ、動的制御フロー完全性モデルをシステムに送信するステップ等を含んでもよい。いくつかの実施形態では、動的制御フロー完全性モデルは、署名値を用いて展開されてもよい(例えば、ステップ1306において生成された署名値は、動的制御フロー完全性モデルとともに送信されてもよい)。
【0321】
動的制御フロー完全性モデルが展開される、コントローラは、動的制御フロー完全性モデルの効果的実装を可能にする、種々の方法において構成されてもよい。例えば、コントローラは、コントローラ上のコードを実行し、要求される実行と動的制御フロー完全性モデルを比較するための要求を検出するように構成されてもよい。加えて、そのようなコントローラは、要求される実行と動的制御フロー完全性モデルの比較に基づいて、あるアクションを行うように構成されてもよい。例えば、コントローラは、要求される実行が動的制御フロー完全性モデルに違反する場合、コントローラ上のコードの実行を否定するように構成されてもよい。別の実施例として、コントローラはまた、要求される実行が動的制御フロー完全性モデルに違反する場合、アラートを発生させるように構成されてもよい。
【0322】
いくつかの実施形態では、コントローラまたは他のデバイスは、動的制御フロー完全性モデルを検証するためのアクションを行ってもよい。例えば、コントローラは、受信された署名値(例えば、展開の一部として受信される)と、コントローラが算出するように構成され得る、算出された署名値を比較するように構成されてもよい。そのような算出は、ステップ1302の受信されたデータおよび/またはコントローラと関連付けられる動作のデータに基づいてもよい。いくつかの実施形態では、コントローラは、動的制御フロー完全性モデルを検証すべきかどうかを判定するように構成されてもよく、これは、受信された署名値と算出された署名値の比較に基づき得る。例えば、2つの署名値が合致する場合、コントローラは、受信された動的制御フロー完全性モデルが有効であって、モデルに従って動作し得ることを判定し得る。いくつかの実施形態では、署名値は、コード行挙動および関係モデルのための署名値を算出するステップの代わりに、またはそれに加えてのいずれかにおいて、動的制御フロー完全性モデルのために算出されてもよい。動的制御フロー完全性モデルのために算出された署名値は、本明細書で議論されるように、コード行挙動および関係モデルのための署名値と同一方法で使用されてもよい。
【0323】
図14は、コントローラ機能シーケンスを可視化および構成するための例示的プロセス1400を描写する。上記の実施形態によると、プロセス1400は、図1に描写されるシステム10または任意のタイプのIoTネットワーク環境内に実装されてもよい。例えば、プロセス1400は、プロセッサ(例えば、プロセッサ136)および/またはセキュリティプロバイダ102の他のコンポーネント(例えば、データベース130)によって、もしくは任意のコンピューティングデバイスまたはIoTシステムによって実施されてもよい。プロセス1400のステップは、情報をディスプレイ、例えば、ディスプレイ134上に発生させるステップを伴ってもよい。
【0324】
ステップ1402では、プロセス1400は、コントローラと関連付けられる実行可能コードセグメントであり得る、少なくとも1つのコードセグメントを識別してもよい。例えば、少なくとも1つのコードセグメントは、物理的コントローラ(例えば、車両のものであり得る、ECU)、仮想コントローラ、パーソナルコンピューティングデバイス上での実装または実行のためのものであってもよく、および/または実行するように構成されない、コードであってもよい。いくつかの実施形態では、コードセグメントは、本明細書で議論される他の実施形態と一致する、コントローラ上のコードを変更するように構成される、デルタファイルによって表され得る、コード変更を含んでもよい。
【0325】
ステップ1404では、プロセス1400は、少なくとも1つのコードセグメント(例えば、ステップ1402において識別されたコードセグメント)を分析してもよい。いくつかの実施形態では、コードセグメントを分析するステップは、少なくとも1つのコードセグメントと関連付けられる、少なくとも1つの機能および/または少なくとも1つの機能的関係を判定するステップを伴ってもよい。コードセグメントを分析するステップはまた、コード行挙動および関係モデル、署名値、動的コードフロー完全性モデル、または本明細書で議論される実施形態の他の類似情報を受信および/または発生させるステップを伴ってもよい。例えば、コードセグメントは、コントローラ上のコードをコードの第1のバージョンからコードの第2のバージョンに変更するように構成される、デルタファイルを含んでもよい。
【0326】
ステップ1406では、プロセス1400は、(例えば、ステップ1404において判定された)判定された機能および/または機能的関係等の情報を視覚的に描写し得る、ソフトウェア機能性コード行挙動および関係モデルを構築してもよい。いくつかの実施形態では、ソフトウェア機能性コード行挙動および関係モデルは、プロセス1400によってのみアクセスされてもよい(例えば、モデルがすでに構築されている、実施形態では)。いくつかの実施形態では、ソフトウェア機能性コード行挙動および関係モデルは、本開示に議論される別のモデル(例えば、コード行挙動および関係モデル30)と類似または同一であり得る。
【0327】
ステップ1408では、プロセス1400は、ソフトウェア機能性を描写し得る、コード行挙動および関係モデルを表示してもよい。コード行挙動および関係モデルは、ユーザインターフェース(例えば、例えば、ディスプレイ134に表示され得る、インターフェース40)に表示されてもよい。
【0328】
ステップ1410では、プロセス1400は、ユーザインターフェースにおいて打ち込まれ得る、入力を受信してもよい。例えば、入力は、アクション(例えば、マウスクリック、タッチスクリーン押下、キーボード押下等)を通して、ユーザデバイス128において受信され得るユーザインターフェースまたは通信インターフェース132において、ユーザによって受信されてもよい。そのようなアクションは、ユーザに表示される、インターフェース40に基づいてもよい。いくつかの実施形態では、プロセス1400は、同時に、または順次のいずれかにおいて、複数のユーザ入力を受信してもよい。例えば、プロセス1400は、ステップ1410において入力を受信した後、ユーザインターフェースにおいて、第2の入力(例えば、コントローラ上のコード変更と関連付けられる入力)を受信してもよい。
【0329】
ステップ1412では、プロセス1400は、ステップ1410において受信された入力に応答して実施され得る、応答性ディスプレイアクションを実施してもよい。いくつかの実施形態では、応答性ディスプレイアクションを実施するステップは、表示されるコード行挙動および関係モデルをアニメーション化し、コントローラ上のコードセグメントの実行を視覚的に描写するステップを含んでもよく、これは、少なくとも1つのコードセグメントと関連付けられる、少なくとも1つの機能の視覚的要素を強調するステップを含んでもよい。例えば、プロセス1400は、例えば、受信された第2の入力に基づき得る、モデル内の更新をアニメーション化することによって、表示されるコード行挙動および関係モデルをアニメーション化してもよい。そのようなアニメーションは、本明細書の他の実施形態に関して議論されるように、色、テキスト、陰影、形状、位置、サイズ、図形要素(例えば、赤色Xマーク)、またはシンボルもしくはシンボル関係に対応し得る、表示される視覚的要素の任意の他の視覚的側面を変更するステップを含んでもよい。いくつかの実施形態では、音もまた、ユーザ入力に基づいて再生されてもよい(例えば、アラート音が、ユーザ入力に基づく更新がエラーを引き起こすと判定されるとき、再生されてもよい)。さらにより具体的実施例として、アニメーションは、表示される視覚的要素を揺動させる、いくつかの要素を拡大する一方、その他を収縮させる、いくつかの要素の色を濃くする一方、他の要素の色を薄くする、および/または任意の視覚的操作を行い、情報をユーザに伝達するステップを含んでもよい。
【0330】
いくつかの実施形態では、プロセス1400は、ユーザ入力以外の情報に基づいて、応答性ディスプレイアクションを実施してもよい。例えば、プロセス1400は、リアルタイムコントローラ動作のデータ、履歴コントローラ動作のデータ、署名値、シンボル、シンボル関係、および/またはコード行挙動ならびに関係モデルに関連する、任意の他の情報ソースを受信してもよい。いくつかの実施形態では、プロセス1400は、コントローラの予期される機能的挙動と、コントローラの実際の機能的挙動とを判定してもよく、これは、プロセス1400または本明細書で議論される別のプロセスの一部として実施される、分析に基づき得る。応答性ディスプレイアクションは、そのような判定に基づいて行われてもよい。例えば、プロセス1400は、予期される機能的挙動に対する少なくとも1つの実行可能コードセグメントの実行に対応する、機能的挙動の視覚的インジケータを表示してもよい(例えば、ユーザインターフェースに)。さらなる実施例として、プロセス1400は、その実際のシンボルが予期される機能的挙動と異なる機能的挙動を呈する、表示されるシンボルまたは表示されるシンボル関係を輪郭付け、濃色化、アニメーション化、または別様に強調してもよい。いくつかの実施形態では、プロセス1400は、予期および実際の機能的挙動間の逸脱の程度を判定してもよい。プロセス1400はまた、予期される挙動と異なる機能的挙動を呈した程度と相関する、強度の程度とともに、(例えば、シンボルおよび/またはシンボル関係の)視覚的要素を強調(例えば、輪郭付け、濃色化、アニメーション化等)してもよい。
【0331】
プロセス1400はまた、逸脱の程度に基づいて、コントローラに関する休止時間の確率を推定し得る。いくつかの実施形態では、プロセス1400は、休止時間の確率のインジケーションを表示してもよい(例えば、ユーザインターフェースに)。
【0332】
いくつかの実施形態では、プロセス1400は、コントローラ上でソフトウェア変更を実行するように構成される、実行可能コードであり得る、コードにアクセスしてもよく、そこからコード行挙動および関係モデルが、構築されてもよい(例えば、ステップ1406において)。いくつかの実施形態では、プロセス1400はまた、アラート(例えば、受信された入力に基づく、逸脱に基づく等のアラート)を遠隔デバイスに送信してもよい。
【0333】
開示される実施形態は、必ずしも、その用途において、以下に説明に記載され、および/または図面ならびに/もしくは実施例に図示される、コンポーネントおよび/または方法の構造および配列の詳細に限定されないことを理解されたい。開示される実施形態は、変形例が可能である、または種々の方法において実践もしくは行われることが可能である。
【0334】
例えば、いくつかの実施形態は、電子コントローラユニット(ECU)および車両を伴う、コンテキストにおいて議論されるが、これらの要素は、各実施形態に存在する必要はない。車両通信システムが、いくつかの実施形態では、議論されるが、任意の種類のコントローラを有する、他の電子システム(例えば、IoTシステム)もまた、開示される実施形態内で動作してもよい。そのような変形例は、完全に、説明される実施形態の範囲および精神内である。
【0335】
開示される実施形態は、システム、方法、および/またはコンピュータプログラム製品内に実装されてもよい。コンピュータプログラム製品は、プロセッサに本開示の側面を行わせるためのコンピュータ可読プログラム命令をその上に有する、コンピュータ可読記憶媒体(または複数の媒体)を含んでもよい。
【0336】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を留保および記憶し得る、有形デバイスであることができる。コンピュータ可読記憶媒体は、例えば、限定ではないが、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述の任意の好適な組み合わせであってもよい。コンピュータ可読記憶媒体のより具体的実施例の非包括的リストは、以下、すなわち、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、消去可能プログラマブル読取専用メモリ(EPROMまたはフラッシュメモリ)、静的ランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読取専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピー(登録商標)ディスク、機械的にエンコーディングされたデバイス、例えば、その上に記録される命令を有する、パンチカードまたは溝内に隆起された構造、および前述の任意の好適な組み合わせを含む。コンピュータ可読記憶媒体は、本明細書で使用されるように、それ自体は、電波または他の自由伝搬電磁波、導波管または他の伝送媒体を通して伝搬する電磁波(例えば、光ファイバケーブルを通して通過する、光パルス)、もしくはワイヤを通して伝送される、電気信号等の一過性信号として解釈されない。
【0337】
本明細書に説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体または外部コンピュータもしくは外部記憶デバイスから、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、広域ネットワーク、および/または無線ネットワークを介して、個別のコンピューティング/処理デバイスにダウンロードされることができる。ネットワークは、銅伝送ケーブル、光学伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および/またはエッジサーバを備えてもよい。各コンピューティング/処理デバイス内のネットワークアダプタカードまたはネットワークインターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、個別のコンピューティング/処理デバイス内のコンピュータ可読記憶媒体の中への記憶のために、コンピュータ可読プログラム命令を転送する。
【0338】
本開示の動作を行うためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk、C++、または同等物等のオブジェクト指向プログラミング言語、および従来の手続型プログラミング言語を含む、1つまたはそれを上回るプログラミング言語の任意の組み合わせにおいて書き込まれる、ソースコードもしくはオブジェクトコードのいずれかであってもよい。コンピュータ可読プログラム命令は、完全に、ユーザのコンピュータ上で、部分的に、ユーザのコンピュータ上で、独立型ソフトウェアパッケージとして、部分的に、ユーザのコンピュータ上で、かつ部分的に、遠隔コンピュータ上で、または完全に、遠隔コンピュータもしくはサーバ上で実行されてもよい。後者のシナリオでは、遠隔コンピュータは、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)を含む、任意のタイプのネットワークを通して、ユーザのコンピュータに接続されてもよい、もしくは接続は、外部コンピュータに対して行われてもよい(例えば、インターネットサービスプロバイダを使用して、インターネットを通して)。いくつかの実施形態では、例えば、プログラマブル論理回路網、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む、電子回路網は、本開示の側面を実施するために、コンピュータ可読プログラム命令の状態情報を利用して、電子回路網を個人化することによって、コンピュータ可読プログラム命令を実行してもよい。
【0339】
本開示の側面は、本開示の実施形態による、方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して本明細書に説明される。フローチャート図および/またはブロック図の各ブロックならびにフローチャート図および/またはブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装されることができることを理解されたい。
【0340】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供され、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行される、命令が、フローチャートおよび/またはブロック図のブロックもしくは複数のブロック内に規定された機能/行為を実装するための手段を作成するように、機械を生成してもよい。これらのコンピュータ可読プログラム命令はまた、その中に記憶される命令を有する、コンピュータ可読記憶媒体が、フローチャートおよび/またはブロック図のブロックもしくは複数のブロック内に規定された機能/行為の側面を実装する、命令を含む、製造品を備えるように、コンピュータ、プログラマブルデータ処理装置、および/または他のデバイスに、特定の様式において機能するように指示し得る、コンピュータ可読記憶媒体内に記憶されてもよい。
【0341】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される、命令が、フローチャートおよび/またはブロック図のブロックもしくは複数のブロック内に規定された機能/行為を実装するように、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイス上にロードされ、一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイス上で実施させ、コンピュータ実装プロセスを生成してもよい。
【0342】
図内のフローチャートおよびブロック図は、本開示の種々の実施形態による、システム、方法、およびコンピュータプログラム製品の可能性として考えられる実装のアーキテクチャ、機能性、および動作を図示する。本点で、フローチャートまたはブロック図内の各ブロックは、ソフトウェアプログラム、セグメント、またはコードの一部を表し得、これは、規定された論理機能を実装するための1つまたはそれを上回る実行可能命令を備える。また、いくつかの代替実装では、ブロック内に記載される機能は、図に記載される順序外で生じ得ることに留意されたい。例えば、連続して示される2つのブロックは、実際には、実質的に並行して実行されてもよい、またはブロックは、関わる機能性に応じて、時として、逆順で実行されてもよい。さらに、いくつかのブロックは、反復的に実行されてもよく、いくつかのブロックは、全く実行されなくてもよい。また、ブロック図および/またはフローチャート図の各ブロックならびにブロック図および/またはフローチャート図内のブロックの組み合わせは、規定された機能または行為もしくは特殊目的ハードウェアとコンピュータ命令の組み合わせを実施する、特殊目的ハードウェアベースのシステムによって実装されることができることに留意されたい。
【0343】
本開示の種々の実施形態の説明は、例証目的のために提示されているが、包括的であること、または開示される実施形態に限定されることを意図するものではない。多くの修正および変形例が、説明される実施形態の範囲および精神から逸脱することなく、当業者に明白となるであろう。本明細書で使用される専門用語は、実施形態の原理、実践的用途、または市場に見出される技術に優る技術的改良を最良に解説し、当業者が本明細書に開示される実施形態を理解することを可能にするように選定されている。
【0344】
本願からの特許権が満了するまでの存続期間の間、多くの関連仮想化プラットフォーム、仮想化プラットフォーム環境、信頼されたクラウドプラットフォームリソース、クラウドベースのアセット、プロトコル、通信ネットワーク、セキュリティトークン、および認証証明書が、開発されるであろうことが予期され、これらの用語の範囲は、全てのそのような新しい技術を先験的に含むように意図される。
【0345】
明確にするために別個の実施形態のコンテキストに説明される、本開示のある特徴はまた、単一実施形態に組み合わせて提供されてもよいことを理解されたい。逆に言えば、簡潔にするために単一実施形態のコンテキストに説明される、本開示の種々の特徴はまた、別個に、または任意の好適な副次的組み合わせにおいて、もしくは本開示の任意の他の説明される実施形態において好適なものとして提供されてもよい。種々の実施形態のコンテキストに説明される、ある特徴は、実施形態が、それらの要素を伴わない場合、動作不能ではない限り、それらの実施形態の不可欠な特徴と見なされるものではない。
【0346】
本開示は、その具体的実施形態と併せて説明されているが、多くの代替、修正、および変形例が、当業者に明白となるであろうことが明白である。故に、添付の請求項の精神および広範な範囲内に該当する、全てのそのような代替、修正、および変形例を包含するように意図される。
図1A
図1B
図1C
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12A
図12B
図13
図14
【国際調査報告】