「検証キーを外部に保存する必要がある」場合、journalctlはどのようにログに署名しますか?


8
$ man journalctl
...
--setup-keys
Instead of showing journal contents, generate a new key pair for Forward Secure Sealing (FSS). This will generate a
sealing key and a verification key. The sealing key is stored in the journal data directory and shall remain on the
host. The verification key should be stored externally. Refer to the Seal= option in journald.conf(5) for
information on Forward Secure Sealing and for a link to a refereed scholarly paper detailing the cryptographic
theory it is based on.
...
--verify
Check the journal file for internal consistency. If the file has been generated with FSS enabled and the FSS
verification key has been specified with --verify-key=, authenticity of the journal file is verified.

--verify-key=
Specifies the FSS verification key to use for the --verify operation.

afaik、PKIシステムへのサインインは、秘密鍵がある場合にのみ機能します。

「確認キーは外部に保存する必要があります。」秘密鍵(?)は別の場所に保存する必要がありますか?

Q:では、暗号化されたログメッセージはこの状況でどのように署名されるのですか?

暗号化されたログが署名されていない場合、攻撃者は変更されたログを暗号化することにより、ログを偽造でき、署名されていないため、受け入れられます。しかし、秘密鍵もそこに保持することは、攻撃者によって署名される可能性があるため、やはり悪いことです。

回答:


2

まず、LWNの記事で指摘されているいくつかのポイントを理解する必要があります。

  • FSS [Forward Secure Sealing]は、少なくとも1つのシステムのみを使用して改ざんを検出する方法を提供しますが、外部ロギングが提供できるすべての保証は提供しません

  • systemdジャーナルによって処理されるバイナリログは、定期的に「封印」できます。そのシールは、ログデータの暗号化操作であり、シール前の改ざんを検出できます。

  • FSSのアルゴリズムは、「Forward Secure Pseudo Random Generators」(FSPRG)に基づいています。

  • 1つはシステムに保持されている「シーリングキー」で、もう1つは他の場所に安全に保管する必要がある「確認キー」です。FSPRGメカニズムを使用すると、不可逆プロセスを使用して新しいシーリングキーが定期的に生成されます。変更後、古いキーはシステムから安全に削除されます。

  • 検証キーを使用して、任意の時間範囲のシーリングキーを計算できます。つまり、攻撃者は現在のシーリングキー(おそらく次のシーリング操作に使用される)にのみアクセスでき、管理者はシーリングキーを確実に生成して以前のログファイルのシーリングを確認できます。最後のシールの前にログファイルエントリを変更すると、検証が失敗します。

次に、あなたの質問への答え:

Q:では、暗号化されたログメッセージはこの状況でどのように署名されるのですか?

ログファイルは実際には暗号化も署名もされていませんが、封印されています。これは、特定の暗号化操作を介して行われます。シール操作の2つの主要なプロパティは次のとおりです。

1)前方セキュリティ:

過去のログエントリを偽造することを目的とする場合、攻撃者は現在のキーを学習してもメリットがありません

2)シーカビリティ:

監査人は、実質的に計算コストなしで、任意の順序またはアクセスパターンでログエントリの整合性を検証できます。

詳細については、記事「実用的な安全なロギング:Giorgia Azzurra MarsonおよびBertram Poetteringによるシーク可能なシーケンシャルキージェネレーター」を参照してください。

fsprg.cのソースコードを確認することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.