2016-07-14 10 views
0

PHP 5.5.22に弱い暗号化を報告しますが、レポートを強化し、彼らがどのように私はこの問題を解決することができます弱い暗号化 ていると言いますか?DESの暗号化が、Fortifyには、私はDESの暗号化すると解読

暗号

function encrypt($key, $encrypt) 
    { 
     $size = mcrypt_get_block_size(MCRYPT_DES, MCRYPT_MODE_CBC); 
     $pad = $size - (strlen($encrypt) % $size); 
     $encrypt = $encrypt . str_repeat(chr($pad), $pad); 
     $data = mcrypt_encrypt(MCRYPT_DES, $key, $encrypt, MCRYPT_MODE_CBC, $key); 

     return base64_encode($data); 
    } 

解読

function decrypt($key, $decrypt) 
    { 
     $decrypt = base64_decode($decrypt); 
     $decrypt = mcrypt_decrypt(MCRYPT_DES, $key, $decrypt, MCRYPT_MODE_CBC, $key); 
     $pad = ord($decrypt{strlen($decrypt) - 1}); 

     if ($pad > strlen($decrypt)) { 
      return false; 
     } 

     if (strspn($decrypt, chr($pad), strlen($decrypt) - $pad) != $pad) { 
      return false; 
     } 

     return substr($decrypt, 0, -1 * $pad); 
    } 

レポート IssueGroup弱い暗号化

} 

    $size = mcrypt_get_block_size(MCRYPT_DES, MCRYPT_MODE_CBC); 
    $pad = $size - (strlen($encrypt) % $size); 
    $encrypt = $encrypt . str_repeat(chr($pad), $pad); 

{ 
     $decrypt = base64_decode($decrypt); 
     $decrypt = mcrypt_decrypt(MCRYPT_DES, $key, $decrypt, MCRYPT_MODE_CBC, $key); 
     $pad = ord($decrypt{strlen($decrypt) - 1}); 
+0

さて、どのように弱い* *以下のものを使用してはどうですか? DESは何年も前に3DESに取って代わられましたが、新しいプロジェクトではAES(MCRYPT_RIJNDAEL_128)のようなより高速で安全なものを使用するべきです。 –

+2

'mcrypt' **と** DESを使うことはあなたができる最悪の事です。 –

+0

実際、DESはAESに取って代わられました。つまり、暗号化アルゴリズムの競争の全ポイントでした。 3DESはストップギャップ対策であり、完全な168ビットのキーでも112ビットのセキュリティしか持たない。 – zaph

答えて

1

DES は、実際には、弱い暗号化です。 90年代に24時間以内に公開されましたが、キーが短すぎると、ブルートフォース攻撃でクラックする可能性があります。これはもはや動機付けられた攻撃者に対する防御としては適していません。 3DES、AES、Twofishな​​ど、いくつかのオプションが用意されています。

編集: 3DESは、あなたがしているので(それははるかに安全な(しかしまだAESよりも安全)ですが、その性能は必然的にAES、DES、またはTwofishはより大幅に悪化しているという意味で、DESよりも優れています本質的にDESを3回適用する)。 3DESは、新しい実装ではめったに使用されません。

+0

いいえ、3DESおよびTwofishのが特に良い選択肢ではない別の対称キー暗号化アルゴリズムを選択する、よく理解理由がある場合を除き、AESを使用する必要があります。 – zaph

+0

3DESは貧しい選択です(特に比較的遅いため)。セキュリティ面ではありますが、シングルDESよりもまだかなり優れています。私は編集して私のポストでそれをより明確にします。私はTwofishに問題は見られませんが、AESのファイナリストであり、それはまだ非常に安全だと考えられています(そして、長い間安全であると思われます)。 – EJoshuaS

+0

私はTwofishを嫌うことはありませんし、その歴史と著者を認識しています。 Twofishの2つの問題:1.それはピアレビューが少なく、レビューは本質的に終了しました。それはAESに選ばれませんでした。 2.相互運用性の観点から、それをうまくサポートしない多くのシステムがありますが、サポートは速度が遅く、認証が賢明かもしれません。例として、iOSがあり、AESにはハードウェア暗号化のサポートがあり、500〜1000倍の速度向上が得られています.CryptoSwiftがその一例です。また、iOSとmacOSでは、AESバージョンはFIPS 140-2認定(実装レビュー)です。 – zaph

関連する問題