【図解】SMB署名とSMB暗号化の違いとは?守れるものと既定の動きを初心者向けに解説

Windows 11 バージョン24H2やWindows Server 2025にしたら、古いNASの共有フォルダにつながらなくなった。そんな話の原因の多くは「SMB署名」です。SMBには、通信を守るしくみとして「署名」と「暗号化」の2つがあります。名前は似ていますが、守れるものも、既定の動きも違います。この記事では、署名と暗号化がそれぞれ何を防ぐのか、どう動くのか、最近のWindowsで何が変わったのかを見ていきます。

この記事でわかること
  1. SMB署名とSMB暗号化が、それぞれ何を防ぐのか
  2. 署名がリレー攻撃を防げる理由と、Windows 11 24H2・Windows Server 2025で変わった既定の動き
  3. 暗号化を要求できる場所と、有効にするときの注意・確認方法

全体像:署名と暗号化が守るもの

ネットワークを流れるSMBの通信には、大きく3つの危険があります。途中で中身を読まれる(盗聴)、途中で中身を書き換えられる(改ざん)、そして他人になりすまされる(なりすまし・リレー)です。署名と暗号化は、このうち防げるものが違います。

盗み見(盗聴)書き換え(改ざん)なりすまし・リレー何もしないはがき中身が見え、書き換えもできるSMB 署名封をしたはがき中身は見えるが、書き換えると分かるSMB 暗号化鍵付きの封筒中身が見えず、書き換えも分かる防げるか
図1 SMB署名とSMB暗号化が防げるもの

郵便にたとえると、何もしないSMBは「はがき」で、だれでも読めて書き換えもできます。署名は「封をしたはがき」で、中身は読めてしまいますが、開けて書き換えれば封が壊れて分かります。暗号化は「鍵付きの封筒」で、中身を読むことも、気づかれずに書き換えることもできません。暗号化すると改ざんの検知も一緒に行われるので、暗号化しているときに署名を別に使う必要はありません。

SMB署名のしくみ

SMB署名では、送る側がメッセージの中身と「署名用の鍵」から計算した値を、メッセージのヘッダーに付けます。受ける側は同じ鍵で計算し直し、付いている値と一致したときだけ受け取ります。

PCFS01メッセージ本体署名署名 = 署名用の鍵で計算した値そのまま送る(中身は読める)FS01 も同じ鍵で計算し直し、署名と一致すれば受け取る途中で書き換えられると、計算し直した値が署名と合わない → 捨てる署名用の鍵は認証のときのセッションキーから作るので、攻撃者は正しい署名を作れない
図2 SMB署名のしくみ

署名用の鍵は、Session Setup(認証)のときに両者が手に入れるセッションキーから作られます。セッションキーは通信路を流れないので、途中にいる攻撃者は正しい署名を作れません。署名の計算方法は、SMBのバージョンとともに強化されてきました。

署名の方式使われるバージョン
MD5SMB1(古い方式)
HMAC-SHA256SMB 2.0.2、2.1
AES-CMACSMB 3.0、3.0.2(3.1.1でも使える)
AES-GMACSMB 3.1.1(Windows Server 2022、Windows 11 から)。署名の処理が速い

署名がリレー攻撃を防げる理由

署名のいちばん大事な役目は、リレー攻撃を防ぐことです。リレー攻撃では、攻撃者がPCとサーバの間に入り、PCが送ってきたNTLMの認証をそのままサーバへ転送します。NTLMの認証そのものは通ってしまうので、署名がないと、攻撃者はそのセッションを使ってPCの利用者としてファイルを読み書きできます。

署名がない場合署名が必須の場合PC攻撃者FS01NTLMそのまま転送認証は通ってしまうその後の操作は署名なしで受け付けられ、攻撃者が PC の利用者としてファイルを読み書きできるPC攻撃者FS01NTLMそのまま転送認証のあとが続かない攻撃者はセッションキーを知らないので正しい署名を付けられず、FS01 は要求を受け付けないリレー攻撃:PC の認証を横取りして、別のサーバに使う攻撃
図3 リレー攻撃とSMB署名

署名が必須なら、認証のあとのメッセージにはすべて正しい署名が必要です。攻撃者は認証のデータを転送しただけで、セッションキーは知りません。そのため正しい署名を付けられず、サーバは攻撃者の要求を受け付けません。

Kerberosで認証することも大事

署名の強さは、もとになるセッションキーの強さで決まります。Microsoftは、NTLMv2ではなくKerberosで認証すること、そのために共有にはIPアドレスやCNAMEではなくサーバ名で接続することを勧めています。NTLMはサーバを確かめられないので、リレー攻撃に弱い方式です。

署名の既定の動き

署名を「必須にするか」は、クライアント側(自分から接続するとき)とサーバ側(接続を受けるとき)で別々に設定します。どちらか片方でも必須にしていれば、その接続は署名されます。署名されないのは、両方とも必須にしていないときだけです。

Windows署名を必須にしているところ(既定)
Windows 11 24H2
(Enterprise、Pro、Education)
クライアント側(自分から接続するとき)とサーバ側(接続を受けるとき)の両方
Windows 11 24H2(Home)どちらも必須にしていない
Windows Server 2025クライアント側(自分から接続するとき)だけ
ドメインコントローラー以前から、接続を受けるとき(SYSVOL、NETLOGON など)は必須
それより前のWindowsDCの SYSVOL・NETLOGON への接続など、限られた場面だけ

つまり、Windows 11 24H2のPCやWindows Server 2025から接続すると、相手が署名に対応していなければつながりません。古いNASや複合機で「暗号化署名が無効です」(STATUS_INVALID_SIGNATURE)のようなエラーになるのはこのためです。また、署名が必須の接続ではゲストでの接続(パスワードなしの接続)もできなくなります。

Microsoftは、こうした機器のために署名を無効にすることは勧めていません。まず機器のファームウェアを更新して署名に対応させ、ゲストでの接続をやめてユーザー名とパスワードで接続する形にするのが基本です。

必須にする前に、監査で確かめる

Windows 11 24H2とWindows Server 2025では、相手が署名や暗号化に対応していないことを記録する「監査」を有効にできます。署名や暗号化を必須にする前に監査を有効にしておくと、影響を受ける機器を事前に見つけられます。記録はイベントビューアーの アプリケーションとサービス ログ ›› Microsoft ›› Windows ›› SMBClient ›› Audit(イベントID 31998、31999)と、SMBServer ›› Audit(3021、3022)に残ります。

SMB暗号化のしくみ

SMB暗号化は、SMBのメッセージをAESで暗号化して、途中で中身を読まれないようにします。SMB 3.0以降で使えます。暗号化と一緒に改ざんの検知も行われます。

暗号の方式使われるバージョン・Windows
AES-128-CCMSMB 3.0、3.0.2(Windows 8、Windows Server 2012 から)
AES-128-GCMSMB 3.1.1 の既定(Windows 10 1607、Windows Server 2016 から)
AES-256-CCM、AES-256-GCMSMB 3.1.1(Windows 11、Windows Server 2022 から)

署名と違い、暗号化は既定では必須になっていません。必要な場所で、管理者が有効にします。なお、SMB暗号化が守るのは「通信の途中」だけです。サーバのディスクに保存されたファイルは暗号化されないので、保存されたデータを守るにはBitLockerなどを使います。

暗号化を要求できる場所

暗号化は、PC側とサーバ側のどちらからでも要求できます。どこか1か所で必須になっていれば、その接続は暗号化されます。

PCFS01どこか1か所で「必須」なら暗号化されるクライアント全体RequireEncryption 24H2 / WS2025 からドライブの割り当てごとnet use /REQUIREPRIVACYUNC の強化(グループポリシー)パスごとに指定サーバ全体EncryptData(サーバ)共有ごとEncryptData(共有)PC 側で要求するサーバ側で要求する
図4 SMB暗号化を要求できる場所
場所設定と動き
共有ごと機密のファイルを置く共有だけ暗号化する。Set-SmbShare -EncryptData
サーバ全体そのファイルサーバのすべての共有を暗号化する。Set-SmbServerConfiguration -EncryptData
ドライブの割り当てごとnet use /REQUIREPRIVACY などで、その接続だけ暗号化を求める。サーバが応じなければ接続しない
UNCの強化グループポリシーで、決まったパスへの接続に暗号化などを求める
クライアント全体Windows 11 24H2、Windows Server 2025 から。すべての接続で暗号化を求め、対応しないサーバにはつながらない

サーバ側で暗号化を必須にすると、既定ではSMB 3.x で暗号化できるクライアントしか接続できません(RejectUnencryptedAccess が既定で有効)。対応していないクライアントはアクセスが拒否され、サーバのログ(Microsoft-Windows-SmbServer/Operational)にイベントID 1003が記録されます。Microsoftは、この制限をゆるめるのではなく、クライアントを更新するよう勧めています。

有効にするときの注意

注意点内容
性能署名も暗号化も計算が増える。特に暗号化は、暗号化しない通信と比べて性能への影響がはっきり出る。AES命令を持つCPUや、新しい方式(GMAC、GCM)を使えるWindowsほど影響は小さい
WAN高速化装置途中で通信の中身を見て最適化する装置は、暗号化した通信を扱えないことがある
他社のNASなどSMB 3.0に対応していても、暗号化や署名に対応していない機器がある。事前に監査で確かめる
SMB1SMB1は暗号化できない。暗号化を確実にするには、SMB1を無効にしておく

どちらを使うかは、守りたいものによって決まります。社内のLANで改ざんやリレー攻撃を防ぎたいなら署名、人事や経理のデータのように「中身を読まれたくない」ものには暗号化、という分け方が目安です。インターネット越しに使うSMB over QUICは、TLS 1.3で守られたトンネルの中を通るので、通信全体が暗号化されます。

確認に使うコマンド

PC(PowerShell):クライアント側で署名と暗号化を必須にしているかを表示する

Get-SmbClientConfiguration | Format-List RequireSecuritySignature, RequireEncryption

ファイルサーバ(PowerShell・管理者):サーバ側で署名と暗号化を必須にしているかを表示する

Get-SmbServerConfiguration | Format-List RequireSecuritySignature, EncryptData, RejectUnencryptedAccess

ファイルサーバ(PowerShell・管理者):共有ごとに暗号化が必須かを表示する

Get-SmbShare | Select-Object Name, EncryptData

ファイルサーバ(PowerShell・管理者):共有「人事」の暗号化を必須にする

Set-SmbShare -Name 人事 -EncryptData $true

PC(コマンドプロンプト):暗号化を求めてドライブを割り当てる

net use Z: \\fs01.corp.example.com\人事 /REQUIREPRIVACY

PC(PowerShell・管理者):接続先が署名・暗号化に対応していないことを記録する(監査を有効にする)

Set-SmbClientConfiguration -AuditServerDoesNotSupportSigning $true -AuditServerDoesNotSupportEncryption $true

ファイルサーバ(PowerShell・管理者):接続してくるクライアントが署名・暗号化に対応していないことを記録する

Set-SmbServerConfiguration -AuditClientDoesNotSupportSigning $true -AuditClientDoesNotSupportEncryption $true

RequireSecuritySignature が True なら、その側で署名を必須にしています。グループポリシーでは「Microsoft ネットワーク クライアント: 常に通信にデジタル署名を行う」(クライアント側)と「Microsoft ネットワーク サーバー: 常に通信にデジタル署名を行う」(サーバ側)がこの設定にあたります。

まとめ

項目ポイント
SMB署名改ざんとなりすまし(リレー攻撃)を防ぐ。中身は読めてしまう
SMB暗号化盗聴・改ざん・なりすましを防ぐ。暗号化していれば署名は不要
鍵どちらも、認証のときのセッションキーから作る。Kerberosで認証するとより強い
署名の既定Windows 11 24H2(Home以外)は送受信とも必須、Windows Server 2025は自分から接続するときに必須。どちらかが必須なら署名される
暗号化の既定必須ではない。共有、サーバ、ドライブの割り当て、UNCの強化、クライアント全体のどこかで要求する
つながらないとき署名を無効にするのではなく、機器を更新する。必須にする前に監査で影響を確かめる

署名と暗号化は、どちらも「認証したあとの通信」を守るしくみです。認証(Kerberos)、署名、暗号化の3つがそろって、SMBの通信を安心して使えるようになります。

コメント