Message Queuingは、RC2 暗号化アルゴリズムで暗号化されたメッセージを送信するときに、40 ビットの有効な長さがある暗号化キーを使います。
CryptoAPI (Windows NT 4.0 Service Pack 2 (SP2) ~ Service Pack 5 (SP5)) にバグがあったため、エンハンス RC2 キーは、有効な長さが (128 ビットではなく) 40 ビットで作成されていました。このバグは、Windows Server 2003、Windows XP Service Pack 1 (SP1)、および Windows 2000 Service Pack 4 (SP4) で修正されました。
次のオペレーティング システムでエンハンス RC2 暗号化を使用する場合は、送信側でレジストリ キーが設定されていない限り、メッセージの暗号化を解除できません。
送信元 | 送信先 |
Windows Server 2003 | Windows XP |
Windows XP SP1 および SP2 | Windows 2000 (Service Pack 3 (SP3) まで) |
Windows NT 4.0 |
Windows 2000 SP4 用の修正プログラムはレジストリ キーも使用しますが、既定で、それまでのサービス パックと互換性があります。
下位互換性を有効にし、セキュリティを強化するために、次のレジストリ値がすべてのプラットフォームに追加されました。
Windows XP Service Pack 1、Windows Server 2003
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\Security\SendEnhRC2With40: 既定値は 0 で、128 ビットの有効長を使用します。ゼロ以外の値の場合は、Windows 2000 の動作に戻り、40 ビットの有効な長さがあるキーが作成されます。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\Security\RejectEnhRC2IfLen40: 既定値は 0 で、あらゆるキー長を受け入れます。セキュリティを強化して、有効長 40 を使用するメッセージを拒否するには、この値を 1 に設定します。
Windows 2000 Service Pack 4
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\Security\SendEnhRC2With128: 既定値は 0 で、40 ビットの有効長を使用します。値をゼロ以外にすると、128 ビットの有効長が強制されます。その場合、セキュリティは改善されますが、他のコンピューターとの互換性がない可能性があります。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\Security\RejectEnhRC2IfLen40: 既定値は 0 で、あらゆるキー長を受け入れます。セキュリティを強化して、有効長 40 を使用するメッセージを拒否するには、この値を 1 に設定します。
エンタープライズ内に、Windows NT 4.0、Windows 2000 Server SP4 未満、または Windows XP SP1 未満でMessage Queuing (MSMQ) を実行しているコンピューターがない場合は、レジストリを次のように変更することを検討してください。
すべてのコンピューターにおいて、SendEnhRC2With40 キーが存在する場合は削除します。このキーは、128 ビット キーが使用可能なコンピューターに対して、40 ビット キーを使用するよう強制するため、セキュリティが不必要に脆弱になります。詳細については、「レジストリ キーの削除」セクションを参照してください。
Windows 2000 SP4 コンピューターに SendEnhRC2With128 キー (値は 1) を追加します。これにより、これらのコンピューターで、互換性のための 40 ビット キーではなく 128 ビット キーを使用できるようになり、セキュリティが強化されます。詳細については、「レジストリ キーの追加」セクションを参照してください。
すべてのコンピューターに RejectEnhRC2IfLen40 キー (値は 1) を追加します。これにより、エンハンス RC2 暗号化を使用する着信メッセージは 128 ビット キーを持つように要求され、セキュリティが強化されます。詳細については、「レジストリ キーの追加」セクションを参照し、必要に応じてこのキーを変更してください。
レジストリ キーの削除
レジストリ キーを削除するには:
注意: レジストリを誤って編集すると、システムに重大な障害をもたらす可能性があります。レジストリを変更する前に、重要なデータのバックアップを作成するようにしてください。
レジストリ エディターを開きます。レジストリ エディターを開くには、[スタート] をクリックします。検索ボックスに「regedit」と入力し、Enter キーを押します。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\Security\RejectEnhRC2IfLen40 に移動し、レジストリ キーを削除します。
レジストリ キーの追加
レジストリ キーを追加するには (Windows 2000 SP4):
注意: レジストリを誤って編集すると、システムに重大な障害をもたらす可能性があります。レジストリを変更する前に、重要なデータのバックアップを作成するようにしてください。
レジストリ エディターを開きます。レジストリ エディターを開くには、[スタート] をクリックします。検索ボックスに「regedit」と入力し、Enter キーを押します。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\Security に移動します。
[Security] を右クリックし、[新規] をポイントして、[追加] をクリックします。
値を 1 に設定します。
詳細については、イベント ID 2175 ( http://technet.microsoft.com/en-us/library/dd337468(WS.10).aspx) を参照してください
Target | Microsoft.MSMQ.6.3.Servers | ||
Category | ConfigurationHealth | ||
Enabled | False | ||
Event_ID | 2175 | ||
Event Source | $Target/Property[Type="Microsoft.MSMQ.6.3.ServerRole"]/ServiceName$ | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.Windows.EventProvider | Default |
GenerateAlert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="Microsoft.MSMQ.6.3.Rule.Alert.Event2175" Enabled="false" Target="Microsoft.MSMQ.6.3.Servers" ConfirmDelivery="true" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>ConfigurationHealth</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="Microsoft.MSMQ.6.3.ServerRole"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>2175</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertOwner/>
<AlertMessageId>$MPElement[Name="Microsoft.MSMQ.6.3.Rule.Alert.Event2175.AlertName"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>