6

Excel 2010 (および 2007) で、より安全な種類の暗号化のいずれかを選択しようとすると、設定が黙って無視され、たとえば復号化で数秒でクラックできるファイルが残ることがわかりました。

これは、デフォルトで AES 暗号化されている新しいファイル形式には適用されず、97-2003 形式に保存する場合にのみ適用されます。

これは、ブックで作成したマクロです。

Sub enc()
  Me.SetPasswordEncryptionOptions _
    PasswordEncryptionProvider:= "Microsoft Strong Cryptographic Provider", _
    PasswordEncryptionAlgorithm:= "RC4", _
    PasswordEncryptionKeyLength:=128, _
    PasswordEncryptionFileProperties:=True
  Me.SaveAs _
    Filename:="encryption_test.xls", _
    FileFormat:=xlExcel8, _
    Password:="password"
End Sub

FileFormat パラメータを省略すると、これらの暗号化設定で Excel 2003 を (正しく) 出力するのは非常に簡単です。

Sub enc()
  Me.SetPasswordEncryptionOptions _
    PasswordEncryptionProvider:= "Microsoft Strong Cryptographic Provider", _
    PasswordEncryptionAlgorithm:= "RC4", _
    PasswordEncryptionKeyLength:=128, _
    PasswordEncryptionFileProperties:=True
  Me.SaveAs _
    Filename:="encryption_test.xls", _
    Password:="password"
End Sub

私が期待するように、decryptum は復号化に失敗します。

私は何か間違ったことをしていますか、それともこれはバグですか? バグの場合、どうすれば回避できますか?

以下に Excel 2010 向けのソリューションを追加しましたが、もっとシンプルなもの、できれば 2007 でも機能するものを期待しています。

4

2 に答える 2

8

Office 2007/2010 では RC4 が有効になっていないためです。管理者テンプレートで行っていることとまったく同じことを手動で行う必要があります。

Altこの点を証明するには、Excel 2010 で上記のルーチンを実行してから、「encryption_test.xls」ファイルを開き、 +を押しF11て VBE に移動します。次に、次を実行します (最初にCtrl+を押しGてイミディエイト ウィンドウを開きます)。

Sub CheckEncryption()
    Dim aw As Workbook: Set aw = ActiveWorkbook
    With aw
        Debug.Print .PasswordEncryptionAlgorithm
        Debug.Print .PasswordEncryptionFileProperties
        Debug.Print .PasswordEncryptionKeyLength
        Debug.Print .PasswordEncryptionProvider
    End With
End Sub

おそらく表示されるのは、1) Office Standard、2) False、3) 40、および 4) Officeの値です。これが意味することは、RC4 が使用されていないということです。暗号化のデフォルトは、標準の - および古い/古い - Excel 暗号化です。明らかに、RC4 は MSFT からも非常に扱いにくいものと見なされているため、新しい Office クライアントでは RC4 の使用が少し妨げられています。

次の 2 つの記事を参照してください。

脚注: ルーチンのFileFormat一部は、SaveAsここでは問題ではありません。それは、CryptoAPI が指示していることを実行しているだけです。実際、Excel 2010 VBA からは、Excel 2003 の を使用できますがSaveAs、これはわずかに異なり、違いはありません (Excel 2010 からは、 のようにアクセスできる隠しルーチンActiveWorkbook.[_SaveAs] Filename:="encryption_test.xls", Password:="password"です)。

于 2011-02-25T10:14:54.817 に答える
3

Office 2010 の回避策:

  1. Office 2010 管理用テンプレート (office14.adm) を追加します。
  2. 「User Configuration\Administrative Templates\Microsoft Office 2010\Security Settings\Encryption type for password protected Office 97-2003 files」を「Microsoft Strong Cryptographic Provider,RC4,128」に編集します (引用符なし)。
于 2011-02-22T14:25:53.253 に答える