0

サーバーとクライアントの間の単純で安全なデータ交換を開発していますが、AES の実装時にいくつかの問題があります。

私はすでに共有鍵交換 (公開鍵暗号を使用) を実装しており、正常に動作します。私の頭の中のアイデアは(疑似コード)でした:

SERVER
ciphertext = AES.encrypt(sharedKey,data)
send(ciphertext)

CLIENT
ciphertext = receive()
plaintext = AES.decrypt(sharedKey,ciphertext)

そしてほら。それを実装しようとしたとき、最初にIVがあることに気づきました。最初に、次のようにすべてゼロに設定してみました。

self.cipher = AES.new(self.Kshared, AES.MODE_CFB, '0000000000000000')
while( there is data to send ):
    ciphertext = self.cipher.encrypt(data)
    self.sendData(ciphertext)

次に、クライアントで:

cipher = AES.new(Ksecreta, AES.MODE_CFB,'0000000000000000')
while( there is data to receive ):
    plaintext = cipher.decrypt('0000000000000000'+data)[16:]

これは FIRST メッセージでは問題なく機能しますが、残りのメッセージでは機能しません。私の問題は IV と関係があるのではないかと思いますが、わかりません。さらに、私が見つけた最初の実装では、ソルトを使用して別のキーとランダムな IV を生成しましたが、問題は、サーバーがどのソルト/IV を使用しているかクライアントが認識できないことです。公開鍵暗号を介して送信できると思いますが、最初に単純に機能する AES 暗号が必要です。

ありがとう。

4

1 に答える 1