0

接続されたopensslクライアントを使用したjsse tls暗号化と復号化に関して、Javaアプリケーションの動作を調べています。

最初に、クライアント データに対して unwrap を呼び出すと、常に 37 バイトを消費して 0 を生成することを観察しました。次の unwrap は、いくつかのバイトを消費し、いくつかを生成します。

最初は、クライアントが最初に空の配列をラップすると思っていました。しかしその後、jsse コードが同じことを行うことを発見しましたが、0 ではなく 1 バイトを生成する点が異なります。

したがって、 a へのすべての呼び出しwrapは X バイトを消費して Y バイトを生成しますがunwrap、最初の呼び出しは 37 バイトを消費して 1 バイトを生成し、2 番目の呼び出しは Y-37 バイトを消費して X-1 バイトを生成します。

openssl と jsse はほぼ同じことを行っていますが、それは正しいと思います。しかし、なぜそれが起こるのか知りたいです。その理由がわかりません。追加のリソースが必要です...?

4

1 に答える 1

4

あなたが見ているのは、BEAST攻撃を軽減する2つのわずかに異なる方法です。これを行う1つの方法は、OpenSSLで行われるように空のフラグメントを使用することです。JSSEは、1バイトのデータと残りのデータを別々に送信することで同様のことを行います。

興味があるかもしれないいくつかのリンクはここにあります:

于 2013-03-05T14:10:15.210 に答える