<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/index.php?action=history&amp;feed=atom&amp;title=Rosenpass</id>
	<title>Rosenpass - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/index.php?action=history&amp;feed=atom&amp;title=Rosenpass"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Rosenpass&amp;action=history"/>
	<updated>2026-05-29T21:05:13Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Rosenpass&amp;diff=41570&amp;oldid=prev</id>
		<title>Kusanaginoturugi: 訳出</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Rosenpass&amp;diff=41570&amp;oldid=prev"/>
		<updated>2026-05-28T04:11:45Z</updated>

		<summary type="html">&lt;p&gt;訳出&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Virtual Private Network]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|WireGuard}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://rosenpass.eu Rosenpass] は、将来の量子コンピュータの脅威から [[WireGuard]] VPN 接続を保護するために設計された、オープンソースの耐量子安全な鍵交換プロトコルです。Rosenpass は WireGuard と並行して動作し、耐量子安全な共有シークレットを WireGuard の事前共有鍵インターフェイスに注入します。すべての VPN トラフィックは引き続き WireGuard のみを通過し、WireGuard のバイナリとプロトコルは変更されないため、WireGuard 単体が持つすべてのセキュリティ保証は維持されます。&lt;br /&gt;
&lt;br /&gt;
Rosenpass は [[Rust]] で書かれており、主な開発は [https://github.com/rosenpass/rosenpass GitHub] で調整されています。また、MIT ライセンスおよび Apache 2 ライセンスの下で公開されています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
Rosenpass とヘルパーツール &amp;#039;&amp;#039;rp&amp;#039;&amp;#039; を提供する {{Pkg|rosenpass}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
== テスト ==&lt;br /&gt;
&lt;br /&gt;
インストールが成功したことを簡単に確認するには、&amp;#039;&amp;#039;rosenpass&amp;#039;&amp;#039; と &amp;#039;&amp;#039;rp&amp;#039;&amp;#039; の両方のツールで {{ic|help}} コマンドを実行し、短い使用方法のヒントを表示します:&lt;br /&gt;
&lt;br /&gt;
{{bc|$ rosenpass help}}&lt;br /&gt;
{{bc|$ rp help}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|現在のバージョン v0.2.2 では、Git がインストールされていない場合、&amp;#039;&amp;#039;rp&amp;#039;&amp;#039; はエラーメッセージを表示します。Git がなくても &amp;#039;&amp;#039;rp&amp;#039;&amp;#039; は安全に使用できます。}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
このセクションでは、2 つのピア間で Rosenpass により強化された WireGuard 接続をセットアップする方法を示します。技術的には、2 つのピアに違いはありません。ただし、わかりやすくするために、それぞれ {{ic|server}} と {{ic|client}} という名前を付けています。&lt;br /&gt;
&lt;br /&gt;
=== 鍵ペアの準備 ===&lt;br /&gt;
&lt;br /&gt;
各ピアは、シークレット鍵と公開鍵で構成される鍵ペアを生成する必要があります。&lt;br /&gt;
&lt;br /&gt;
==== 両方のピアのシークレット鍵を生成する ====&lt;br /&gt;
&lt;br /&gt;
以下のコマンドはシークレット鍵を生成し、新しく作成される {{ic|server.rosenpass-secret}} および {{ic|client.rosenpass-secret}} ディレクトリに保存します:&lt;br /&gt;
&lt;br /&gt;
 [server]$ rp genkey server.rosenpass-secret&lt;br /&gt;
&lt;br /&gt;
 [client]$ rp genkey client.rosenpass-secret&lt;br /&gt;
&lt;br /&gt;
==== 公開鍵を抽出する ====&lt;br /&gt;
&lt;br /&gt;
以下のコマンドは公開鍵を計算し、新しく作成される {{ic|server.rosenpass-public}} および {{ic|client.rosenpass-public}} ディレクトリに保存します:&lt;br /&gt;
&lt;br /&gt;
 [server]$ rp pubkey server.rosenpass-secret server.rosenpass-public&lt;br /&gt;
&lt;br /&gt;
 [client]$ rp pubkey client.rosenpass-secret client.rosenpass-public&lt;br /&gt;
&lt;br /&gt;
==== 各 -public ディレクトリを相手側のピアへコピーする ====&lt;br /&gt;
&lt;br /&gt;
両方のピアには、それぞれ相手側ピアの {{ic|-public}} ディレクトリが必要です。また、それは既に存在している {{ic|-secret}} および {{ic|-public}} ディレクトリの隣に配置する必要があります。両方のマシンへ SSH アクセスできる場合は、以下のコマンドを使用できます:&lt;br /&gt;
&lt;br /&gt;
 [server]$ scp -r server.rosenpass-public user@client:/path/to/directory&lt;br /&gt;
&lt;br /&gt;
 [client]$ scp -r client.rosenpass-public user@server:/path/to/directory&lt;br /&gt;
&lt;br /&gt;
これで鍵ペアのセットアップは完了です。&lt;br /&gt;
&lt;br /&gt;
=== Rosenpass により強化された WireGuard VPN を起動する ===&lt;br /&gt;
&lt;br /&gt;
以下の 2 つのコマンドでは、{{ic|$SERVERIP}} を client が server に到達できる IP アドレスに置き換えてください。これはパブリックにルーティング可能な IP アドレス、ローカルネットワーク内の IP アドレス、あるいはループバックアドレス {{ic|127.0.0.1}} でもかまいません。&lt;br /&gt;
&lt;br /&gt;
同様に、{{ic|$DEVICE}} は、server が {{ic|$SERVERIP}} 宛てのパケットを受信するネットワークデバイスの名前に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
ネットワークデバイスと IP アドレスに関する情報は、以下のコマンドで確認できます:&lt;br /&gt;
&lt;br /&gt;
 [server]$ ip a&lt;br /&gt;
&lt;br /&gt;
==== VPN を起動する ====&lt;br /&gt;
&lt;br /&gt;
{{ic|server}} と {{ic|client}} の両方で Rosenpass と WireGuard プロセスを起動します。これにより、{{ic|rosenpass0}} という名前の WireGuard ネットワークインターフェイスが作成されます。次の手順で、このインターフェイスに内部 IP アドレスを割り当て、内部ネットワーク用のルートを追加します。&lt;br /&gt;
&lt;br /&gt;
以下の 2 つのコマンドでは、{{ic|$SERVERIP}} を {{ic|client}} が {{ic|server}} に到達できる IP アドレスに置き換えることを忘れないでください。&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
[server]# rp exchange server.rosenpass-secret \&lt;br /&gt;
  dev rosenpass0 \&lt;br /&gt;
  listen $SERVERIP:9999 \&lt;br /&gt;
  peer client.rosenpass-public \&lt;br /&gt;
  allowed-ips 192.168.21.0/24&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
[client]# rp exchange client.rosenpass-secret \&lt;br /&gt;
  dev rosenpass0 \&lt;br /&gt;
  peer server.rosenpass-public \&lt;br /&gt;
  endpoint $SERVERIP:9999 \&lt;br /&gt;
  allowed-ips 192.168.21.0/24&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== IP アドレスを割り当てる ====&lt;br /&gt;
&lt;br /&gt;
この例では、VPN 内部ネットワークとして {{ic|192.168.21.0/24}} のアドレスを使用します。他のアドレスを試してもかまいませんが、必要に応じてすべてのコマンド内の IP アドレスとネットワークを調整してください。&lt;br /&gt;
&lt;br /&gt;
 [server]# ip a add 192.168.21.1 dev rosenpass0&lt;br /&gt;
&lt;br /&gt;
 [client]# ip a add 192.168.21.2 dev rosenpass0&lt;br /&gt;
&lt;br /&gt;
==== WireGuard ネットワーク用のルートを追加する ====&lt;br /&gt;
&lt;br /&gt;
ルーティングテーブルに内部ネットワーク {{ic|192.168.21.0/24}} 用のエントリが含まれていることを確認してください。これは以下のコマンドで確認できます:&lt;br /&gt;
&lt;br /&gt;
 $ ip route&lt;br /&gt;
&lt;br /&gt;
出力には、{{ic|192.168.21.0/24}} ネットワークに関する行が含まれ、インターフェイス {{ic|rosenpass0}} が示されているはずです:&lt;br /&gt;
&lt;br /&gt;
{{bc|…&lt;br /&gt;
192.168.21.0/24 dev rosenpass0 scope link&lt;br /&gt;
…&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このような行が存在しない場合は、以下のコマンドでルートを追加できます:&lt;br /&gt;
&lt;br /&gt;
 # ip route add 192.168.21.0/24 dev rosenpass0&lt;br /&gt;
&lt;br /&gt;
server と client の両方で確認し、必要に応じて実行することを忘れないでください。&lt;br /&gt;
&lt;br /&gt;
==== ファイアウォールを設定する ====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ファイアウォールの背後にいるかどうかわからない場合&amp;#039;&amp;#039;&amp;#039; は、この手順をスキップして、接続できない場合に戻ってきてもかまいません。&lt;br /&gt;
&lt;br /&gt;
この例では、server は 2 つのポートで到達可能である必要があります。Rosenpass 接続用の {{ic|9999}} と、WireGuard 接続用の {{ic|10000}} です。ポート {{ic|9999}} は次の手順で使用するコマンド内で明示的に設定されています。WireGuard のポートは、&amp;#039;&amp;#039;rp&amp;#039;&amp;#039; ツールによって Rosenpass のポート番号に 1 を加えた値に暗黙的に設定されます。この例では {{ic|10000}} です。&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ファイアウォールを設定&amp;#039;&amp;#039;&amp;#039; して、ポート {{ic|9999}} および {{ic|10000}} への受信 UDP パケットを許可してください。&lt;br /&gt;
&lt;br /&gt;
[[Uncomplicated Firewall]] を使用している場合は、この例のセットアップに必要な受信接続を許可するルールを追加するために、以下のコマンドを使用できます。{{ic|$SERVERIP}} を client が server に到達できる IP アドレスに、{{ic|$DEVICE}} を server が {{ic|$SERVERIP}} 宛てのパケットを受信するネットワークデバイス名に置き換えることを忘れないでください。&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
[server]# ufw allow in on $DEVICE \&lt;br /&gt;
  from any to $SERVERIP \&lt;br /&gt;
  port 9999 \&lt;br /&gt;
  proto udp \&lt;br /&gt;
  comment &amp;#039;Rosenpass&amp;#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
[server]# ufw allow in on $DEVICE \&lt;br /&gt;
  from any to $SERVERIP \&lt;br /&gt;
  port 10000 \&lt;br /&gt;
  proto udp \&lt;br /&gt;
  comment &amp;#039;WireGuard&amp;#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
新しいファイアウォールルールは以下のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|server # ufw status|&lt;br /&gt;
Status: active&lt;br /&gt;
&lt;br /&gt;
To                         Action      From&lt;br /&gt;
--                         ------      ----&lt;br /&gt;
$SERVERIP 9999/udp on $DEVICE ALLOW       Anywhere                   # Rosenpass&lt;br /&gt;
$SERVERIP 10000/udp on $DEVICE ALLOW       Anywhere                   # WireGuard&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[nftables]] を使用している場合は、Rosenpass の要件を満たすルールを追加するために、以下のコマンドを使用できます。このコマンドは、適切なファイアウォールテーブルとチェインが {{ic|filter}} および {{ic|input}} という名前であることを前提としています。これらは nftables のサンプル設定で使用される標準的な名前です。{{ic|$SERVERIP}} を client が server に到達できる IP アドレスに、{{ic|$DEVICE}} を server が {{ic|$SERVERIP}} 宛てのパケットを受信するネットワークデバイス名に置き換えることを忘れないでください。&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
[server]# nft add rule \&lt;br /&gt;
  inet filter input iif $DEVICE \&lt;br /&gt;
  udp dport { 9999, 10000 } \&lt;br /&gt;
  ip daddr $SERVERIP accept&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
再起動後もこのルールが維持されるように保存してください。方法の 1 つは、{{ic|/etc/nftables.conf}} に追加することです。&lt;br /&gt;
&lt;br /&gt;
=== セットアップを検証する ===&lt;br /&gt;
&lt;br /&gt;
==== Rosenpass ハンドシェイクをテストする ====&lt;br /&gt;
&lt;br /&gt;
最初のテストとして、Rosenpass が共有シークレットを交換し、それを事前共有鍵 (PSK) として WireGuard に渡せているか確認します。&lt;br /&gt;
&lt;br /&gt;
server と client の両方で、以下のコマンドを実行すると、WireGuard が接続に使用している事前共有鍵を確認できます。これは秘密であるべき暗号鍵素材を表示するため、コンピュータの画面を誰が見られる状態にあるか注意してください:&lt;br /&gt;
&lt;br /&gt;
 # wg show rosenpass0 preshared-keys&lt;br /&gt;
&lt;br /&gt;
出力には、スペースで区切られた 2 つの base64 エンコード文字列からなる 1 行が表示されるはずです。2 番目の文字列が事前共有鍵です。これは両方のマシンで同じである必要があります。Rosenpass はこれをおよそ 2 分ごとに変更します:&lt;br /&gt;
&lt;br /&gt;
 q1ySvWXjsS2l0Apu2f9YZLw7pLT4+QXfIZVTpMBO01I=    (redacted)&lt;br /&gt;
&lt;br /&gt;
同様に、server と client の両方で WireGuard 接続の状態を表示できます:&lt;br /&gt;
&lt;br /&gt;
 # wg show rosenpass0&lt;br /&gt;
&lt;br /&gt;
client では以下のような出力が表示されるはずです。ここで {{ic|$SERVERIP}} は以前に設定した IP アドレスと一致します:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
interface: rosenpass0&lt;br /&gt;
  public key: 1NQJ1iObOnkkWlqDU6bhqGPEjCIIvKTKjI10XE0t7DA{{=}}&lt;br /&gt;
  private key: (hidden)&lt;br /&gt;
  listening port: 52922&lt;br /&gt;
&lt;br /&gt;
peer: q1ySvWXjsS2l0Apu2f9YZLw7pLT4+QXfIZVTpMBO01I{{=}}&lt;br /&gt;
  preshared key: (hidden)&lt;br /&gt;
  endpoint: $SERVERIP:10000&lt;br /&gt;
  allowed ips: 192.168.21.0/24&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
server では以下のような出力が表示されるはずです。WireGuard の待ち受けポートは {{ic|10000}} です:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
interface: rosenpass0&lt;br /&gt;
  public key: q1ySvWXjsS2l0Apu2f9YZLw7pLT4+QXfIZVTpMBO01I{{=}}&lt;br /&gt;
  private key: (hidden)&lt;br /&gt;
  listening port: 10000&lt;br /&gt;
&lt;br /&gt;
peer: 1NQJ1iObOnkkWlqDU6bhqGPEjCIIvKTKjI10XE0t7DA{{=}}&lt;br /&gt;
  preshared key: (hidden)&lt;br /&gt;
  allowed ips: 192.168.21.0/24&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
表示される server の公開鍵は client 側の peer の ID として表示され、逆も同様である必要があります。&lt;br /&gt;
&lt;br /&gt;
WireGuard トンネルとその事前共有鍵の現在の状態を継続的に監視したい場合は、client と server の両方で以下のコマンドを使用できます。これはデバッグ時に便利です。たとえば、両側が同じ事前共有鍵を使い続け、それを同期して交換しているかを確認できます。このコマンドは、上記の 2 つのコマンドを組み合わせ、2 秒ごとに繰り返します:&lt;br /&gt;
&lt;br /&gt;
 # watch &amp;#039;wg show all; wg show all preshared-keys&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==== WireGuard 接続をテストする ====&lt;br /&gt;
&lt;br /&gt;
client ピアから server の内部 IP アドレスへ ping を送信し、その逆も行うことで、WireGuard 接続をテストできます:&lt;br /&gt;
&lt;br /&gt;
 [server]$ ping 192.168.21.2&lt;br /&gt;
&lt;br /&gt;
 [client]$ ping 192.168.21.1&lt;br /&gt;
&lt;br /&gt;
server から client への ping は、client から server への ping を開始した後にのみ通る場合があります。&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;すべて完了し、ping テストが成功しましたか?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
これで Rosenpass は、およそ 2 分ごとに WireGuard 用の新しい PSK 鍵を生成し、WireGuard VPN 接続を量子コンピュータによる将来の攻撃から保護し続けます。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [[WireGuard]]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Rosenpass|2026/05/28|850138}}&lt;/div&gt;</summary>
		<author><name>Kusanaginoturugi</name></author>
	</entry>
</feed>