LoginSignup
1
0

More than 5 years have passed since last update.

zebedee のような vpn の代替としての StreamRelay.jar

Posted at

java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar

StreamRelay.bat

StreamRelay.jar にはストリームに暗号処理を被せる事ができるため、VPN(Zebedee)の代替のようなことを行わせることもできる。


諸注意

zebedee プロトコル互換ではないし、zebedee のようなマルチプロトコルを含有できるようなものでもなく、あくまで通信を暗号化する、そして、鍵交換を安全に行う、という内容です


クライアント側(タイプ1)

java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemoteHost 192.0.2.1 -RemotePort 10990 -RemoteCipherAlgorithm RC4 -RemoteCipherDH

「remote」と呼称される側のストリーム側に

  • 暗号アルゴリズムは RC4
  • 鍵交換に DH

サーバ側(タイプ1)

java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 10990 -RemoteHost 192.0.2.2 -RemotePort 80 -LocalCipherAlgorithm RC4
-LocalCipherDH

「local」と呼称される側のストリーム側も

  • 暗号アルゴリズムは RC4
  • 鍵交換に DH

クライアント側(タイプ2)

java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemotePort 10990 -RemoteHost 192.0.2.1 -RemoteCipherAlgorithm AES/OFB8/NoPadding -RemoteCipherPassword abcdefgh -RemoteAlgorithmParameters [サーバ側で出力されたAlgorithmParameterを指定する]

「remote」と呼称される側のストリーム側に

  • 暗号アルゴリズムは AES
  • 鍵交換は使わずに事前共有鍵をセットしている
  • サーバ側で出力される「AlgorithmParameter」も事前共有しておく必要がある

サーバ側(タイプ2)

java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 10990 -RemotePort 80 -RemoteHost 192.0.2.2 -LocalCipherAlgorithm AES/OFB8/NoPadding -LocalCipherPassword abcdefgh -CalculateAlgorithmParameters

「local」と呼称される側のストリーム側も

  • 暗号アルゴリズムは AES
  • 鍵交換は使わずに事前共有鍵をセットしている

クライアント側(タイプ3)

java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemotePort 10990 -RemoteHost 192.0.2.1 -RemoteCipherAlgorithm AES/CTR/NoPadding -RemoteCipherPassword abcdefgh -RemoteAlgorithmParameters [サーバ側で出力されたAlgorithmParameterを指定する]

「remote」と呼称される側のストリーム側に

  • 暗号アルゴリズムは AES
  • モードを CTR にする事でブロック暗号がストリーム暗号のように1バイト毎に出力される
  • 鍵交換は使わずに事前共有鍵をセットしている
  • サーバ側で出力される「AlgorithmParameter」も事前共有しておく必要がある

サーバ側(タイプ3)

java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 10990 -RemotePort 80 -RemoteHost 192.0.2.2 -LocalCipherAlgorithm AES/CTR/NoPadding -LocalCipherPassword abcdefgh -CalculateAlgorithmParameters

「local」と呼称される側のストリーム側も

  • 暗号アルゴリズムは AES
  • モードを CTR にする事でブロック暗号がストリーム暗号のように1バイト毎に出力される
  • 鍵交換は使わずに事前共有鍵をセットしている
  • サーバ側で出力される「AlgorithmParameter」も事前共有しておく必要がある

クライアント側(タイプ4)

java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemotePort 10990 -RemoteHost 192.0.2.1 -RemoteZLIBCommpress -RemoteCipherAlgorithm AES/CTR/NoPadding -RemoteCipherPassword abcdefgh -RemoteAlgorithmParameters [サーバ側で出力されたAlgorithmParameterを指定する]

「remote」と呼称される側のストリーム側に

  • 暗号アルゴリズムは AES
  • モードを CTR にする事でブロック暗号がストリーム暗号のように1バイト毎に出力される
  • 鍵交換は使わずに事前共有鍵をセットしている
  • サーバ側で出力される「AlgorithmParameter」も事前共有しておく必要がある
  • バッファリングょしない zlib 圧縮を指定

サーバ側(タイプ4)

java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 10990 -RemotePort 80 -RemoteHost 192.0.2.2 -LocalZLIBCommpress -LocalCipherAlgorithm AES/CTR/NoPadding -LocalCipherPassword abcdefgh -CalculateAlgorithmParameters

「local」と呼称される側のストリーム側も

  • 暗号アルゴリズムは AES
  • モードを CTR にする事でブロック暗号がストリーム暗号のように1バイト毎に出力される
  • 鍵交換は使わずに事前共有鍵をセットしている
  • サーバ側で出力される「AlgorithmParameter」も事前共有しておく必要がある
  • バッファリングょしない zlib 圧縮を指定

鍵交換アルゴリズム

Java には DH 法と ECDH 法が標準されていた。

当然、事前共有鍵をセットして、それを使う、という事も可能ですよ


圧縮

-(Local|remote)ZLIB(DeCommpress/Commpress) を指定する事でバッファリングしない zlib圧縮が可能だ


暗号一般

ファイル暗号化コマンドとしての StreamRelay.jar


ブロックサイズ

暗号アルゴリズムとか、暗号モードによっては、ストリーム暗号のように1Byte単位にする事もできる


目次へ戻る

目次というか最初の一歩

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0