暗号化技術の重ねがけが逆効果になるケースは無いか？


TLSで暗号化された通信経路上を流すデータに対して、アプレイケーションのレイヤで更に暗号化を独自にかける場合、それによってかえって保護のレベルがTLS単体よりも低下する可能性はありますか？  
それとも、少なくともTLSによる保護のレベルまでは保証されますか？

もしTLS単体よりも低下する場合、例えばどのような理由により起こり得るでしょうか？

「SSL/TLSだけだとよく脆弱性問題も起きてて心配だから、自分たちでも暗号化してセキュリティを高めよう」という話が身近にあったのですが、セキュリティ素人のアレンジが本当に有効なのかどうか気になっています。  
車輪の再発明程度の問題で済むならまだしも、逆効果になってしまっては大変なので・・・




たとえば暗号に対する中間一致攻撃と言うのがあります。

平文→(1段目の暗号化)→1段目の暗号文→(2段目の暗号化)→暗号文、暗号文→(2段目の暗号化の復号)→1段目の暗号分→(1段目の暗号化の復号)→平文、という処理をしてるとして、暗号と復号のプロセスから

  * 平文→(1段目の暗号化)→1段目の暗号文
  * 暗号文→(2段目の暗号化の復号)→1段目の暗号文

を取り出します。これを全てのパターンの鍵で試行して、「1段目の暗号文」が一致すればその鍵が正解です。素直に全件探索すると「1段目の試行×2段目の試行」の回数がいるところ、「1段目+2段目」の回数で済むことになります。

ともに128bit鍵だとすると、256bit分の強度になるかと思いきや129bit分にしかならない、と言う話です。

また、暗号の強度はアルゴリズムそのものだけではなく運用にも関わります。

1段目の暗号の運用をきちんと考えないと、2段目が破られたら結局1段目も破られるので意味なし、ということが考えられます。(極端な例を出すと、1段目の鍵をTLSのみで暗号化して送っているとか)

ということで「セキュリティを強化したつもりが全然意味なかった」ということは容易に発生しうることになります。

ここからは自信が無いのですが、1段目を加えたせいで2段目(TLS)の強度が落ちるようなことがあるかというと、1段目でヘッダなどとして構造化データを付加するとその部分が既知となり攻撃の助けになる、と言う可能性はあるかと思います。とはいっても、普通にTLSを使っていても上位レイヤのヘッダや構造化されたデータはあるので、増えると言っても微々たる物ではないでしょうか。

なんにせよ、本当にこういうことを必要とされているのであれば、専門家に支援してもらうほうが良いです。




たとえば暗号に対する中間一致攻撃と言うのがあります。

平文→(1段目の暗号化)→1段目の暗号文→(2段目の暗号化)→暗号文、暗号文→(2段目の暗号化の復号)→1段目の暗号分→(1段目の暗号化の復号)→平文、という処理をしてるとして、暗号と復号のプロセスから

  * 平文→(1段目の暗号化)→1段目の暗号文
  * 暗号文→(2段目の暗号化の復号)→1段目の暗号文

を取り出します。これを全てのパターンの鍵で試行して、「1段目の暗号文」が一致すればその鍵が正解です。素直に全件探索すると「1段目の試行×2段目の試行」の回数がいるところ、「1段目+2段目」の回数で済むことになります。

ともに128bit鍵だとすると、256bit分の強度になるかと思いきや129bit分にしかならない、と言う話です。

また、暗号の強度はアルゴリズムそのものだけではなく運用にも関わります。

1段目の暗号の運用をきちんと考えないと、2段目が破られたら結局1段目も破られるので意味なし、ということが考えられます。(極端な例を出すと、1段目の鍵をTLSのみで暗号化して送っているとか)

ということで「セキュリティを強化したつもりが全然意味なかった」ということは容易に発生しうることになります。

ここからは自信が無いのですが、1段目を加えたせいで2段目(TLS)の強度が落ちるようなことがあるかというと、1段目でヘッダなどとして構造化データを付加するとその部分が既知となり攻撃の助けになる、と言う可能性はあるかと思います。とはいっても、普通にTLSを使っていても上位レイヤのヘッダや構造化されたデータはあるので、増えると言っても微々たる物ではないでしょうか。

なんにせよ、本当にこういうことを必要とされているのであれば、専門家に支援してもらうほうが良いです。

