web-dev-qa-db-ja.com

Linux組み込みデバイスの日付と時刻を更新する安全な方法

Linux4.9.171)マシンをARM Cortex-Aプロセッサで実行しています。システムにはinternet接続があり、SSLを介してサーバーと通信します。初回起動時に、date and timeを設定できます。ただし、システムが再起動した場合、適切なタイミングがなく、SSL接続がCertification Path Validation Algoで失敗する可能性があります。システムの時刻を最新に保つ方法が必要です(数秒の精度で十分です)。

私のシステムにはRTCがなく、NTPは安全ではなく、誰もがMITMになり、システムを攻撃するための危険な証明書を入手できるため、使用したくありません。 。

NTPSec and NTSについても調査しましたが、現在は成熟していません。

この問題ステートメントの標準的な方法はありますか?

2
abhiarora

これに対処する2つの合理的な方法を考えることができます。

  1. VPNを実行し、NTPクライアントをVPNの反対側のサーバーと同期するように設定します
  2. OpenBSDのntpdの実装をmanページから見てください( https://man.openbsd.org/ntpd.conf ):

[〜#〜]制約[〜#〜]

ntpd(8)は、TLSを介して信頼できるHTTPSサーバーから「日付」をクエリするように設定できます。この時間情報は正確さのために使用されませんが、認証された制約として機能するため、認証されていないNTP中間者攻撃の影響を低減します。受信NTP =時間情報が制約に近い範囲外のパケットは破棄され、そのようなNTP=サーバーは無効としてマークされます。

からの制約url

制約を設けるには、HTTPSサーバーのURL、IPアドレス、またはホスト名を指定します。 fromの制約が複数回使用される場合、ntpd(8)は指定されたすべてのサーバーから中央値の制約を計算します。

マニュアルページの説明は、まさにあなたが求めているもののようです。

LinuxバージョンのOpenBSD ntpdが、Brent Cookによって維持されるポータブルOpenNTPDの形式で存在します。 http://www.openntpd.org/portable.html

2
Little Code