Module: PqcRails::Session::KeyManager

Defined in:
lib/pqc_rails/session/key_manager.rb

Overview

セッション暗号化用のHybridKemキーペアを、環境変数またはRails credentialsから読み込む。 実際のfetch/decode処理はKeySource::EnvCredentialsに一本化されており、ここはセッション用の ENV変数名/credentialsキーを添えて委譲するだけ。

鍵ローテーション時は#previous_keypairsが旧鍵世代を返す。PqcCookieStoreはこれを使って 現行鍵で復号できなかったCookieを旧鍵で試す。セッションはDBと違い自然に失効するため、 ロールバック期間(概ね最長セッション有効期限)を過ぎたら運用側がPREVIOUS_ENV_VARを 空にすれば旧鍵は自動的に無効化される。

Constant Summary collapse

ENV_VAR =
"PQC_SESSION_KEY"
PREVIOUS_ENV_VAR =
"PQC_SESSION_PREVIOUS_KEYS"
CREDENTIALS_KEY =
:pqc_session_key
PREVIOUS_CREDENTIALS_KEY =
:pqc_session_previous_keys

Class Method Summary collapse

Class Method Details

.decode(encoded) ⇒ Object



32
# File 'lib/pqc_rails/session/key_manager.rb', line 32

def decode(encoded) = KeySource.decode(encoded)

.encode(keypair) ⇒ Object



31
# File 'lib/pqc_rails/session/key_manager.rb', line 31

def encode(keypair) = KeySource.encode(keypair)

.key_sourceObject



34
35
36
37
38
39
40
# File 'lib/pqc_rails/session/key_manager.rb', line 34

def key_source
  KeySource::EnvCredentials.new(
    env_var: ENV_VAR, previous_env_var: PREVIOUS_ENV_VAR,
    credentials_key: CREDENTIALS_KEY, previous_credentials_key: PREVIOUS_CREDENTIALS_KEY,
    label: "session"
  )
end

.keypairObject



23
24
25
# File 'lib/pqc_rails/session/key_manager.rb', line 23

def keypair
  key_source.current_keypair
end

.previous_keypairsObject



27
28
29
# File 'lib/pqc_rails/session/key_manager.rb', line 27

def previous_keypairs
  key_source.previous_keypairs
end