ポタージュを垂れ流す。

マイペースこうしん(主に旅行)

ASLR

例のリレーブログ*1の時間です。前の僕の記事はこれ、前回の方のブログはこちらになります。

今回僕に与えられたテーマはASLR。聞いたことないワードだったので毎度のごとく少し調べて、今回は試してみたことを書いていこうと思う。

ASLRとは

ASLR(Address Space Layout Randomization、アドレス空間配置のランダム化)とは、重要なデータ領域の位置(スタックやヒープの位置など)を無作為に配置するOSのセキュリティ技術のこと。現在よく使われているOSにはこの機能が標準搭載されている。

なんでそんなことするんだ、と思うかもしれないが、この技術は例えばスタックバッファオーバーフロー攻撃に有効な防御手段となる。入力サイズの上限の指定ができなかったり、その指定を怠った時に、大量の入力をすると、スタック領域を超えた場所にあるデータが上書きされてしまうことがある。これを悪用して呼び出し元のプログラムへの戻りアドレスであるリターンアドレスを書き換え、別のプログラムを実行させるといったことができてしまう。これに対してアドレスのランダム化を行えば、攻撃の成功率を下げることができる。

ASLRを確認する

ASLRあり

実際にASLRがどう動いているのか確かめてみる。今回は床に転がっていたraspberry piを使う。

pi@raspberrypi:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.11 (stretch)
Release:    9.11
Codename:   stretch

適当なコードを実行させてメモリマップを見てみる。

pi@raspberrypi:~$ sleep 100 &
[1] 996
pi@raspberrypi:~$ sleep 100 &
[2] 997

100秒スリープするプロセスを2つ走らせてみた。これら2つのメモリマップを確認してみる。

pi@raspberrypi:~$ cat /proc/996/maps
00010000-00016000 r-xp 00000000 b3:07 391782     /bin/sleep
00025000-00026000 r--p 00005000 b3:07 391782     /bin/sleep
00026000-00027000 rw-p 00006000 b3:07 391782     /bin/sleep
002d0000-002f1000 rw-p 00000000 00:00 0          [heap]
76d3c000-76e55000 r--p 00000000 b3:07 14166      /usr/lib/locale/locale-archive
76e55000-76f7f000 r-xp 00000000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
76f7f000-76f8e000 ---p 0012a000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
76f8e000-76f90000 r--p 00129000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
76f90000-76f91000 rw-p 0012b000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
76f91000-76f94000 rw-p 00000000 00:00 0 
76faa000-76faf000 r-xp 00000000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
76faf000-76fbe000 ---p 00005000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
76fbe000-76fbf000 r--p 00004000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
76fbf000-76fc0000 rw-p 00005000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
76fc0000-76fe1000 r-xp 00000000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
76fee000-76ff0000 rw-p 00000000 00:00 0 
76ff0000-76ff1000 r--p 00020000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
76ff1000-76ff2000 rw-p 00021000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
7ec25000-7ec46000 rw-p 00000000 00:00 0          [stack]
7eff0000-7eff1000 r-xp 00000000 00:00 0          [sigpage]
7eff1000-7eff2000 r--p 00000000 00:00 0          [vvar]
7eff2000-7eff3000 r-xp 00000000 00:00 0          [vdso]
ffff0000-ffff1000 r-xp 00000000 00:00 0          [vectors]
pi@raspberrypi:~$ cat /proc/997/maps
00010000-00016000 r-xp 00000000 b3:07 391782     /bin/sleep
00025000-00026000 r--p 00005000 b3:07 391782     /bin/sleep
00026000-00027000 rw-p 00006000 b3:07 391782     /bin/sleep
01562000-01583000 rw-p 00000000 00:00 0          [heap]
76cc3000-76ddc000 r--p 00000000 b3:07 14166      /usr/lib/locale/locale-archive
76ddc000-76f06000 r-xp 00000000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
76f06000-76f15000 ---p 0012a000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
76f15000-76f17000 r--p 00129000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
76f17000-76f18000 rw-p 0012b000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
76f18000-76f1b000 rw-p 00000000 00:00 0 
76f31000-76f36000 r-xp 00000000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
76f36000-76f45000 ---p 00005000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
76f45000-76f46000 r--p 00004000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
76f46000-76f47000 rw-p 00005000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
76f47000-76f68000 r-xp 00000000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
76f75000-76f77000 rw-p 00000000 00:00 0 
76f77000-76f78000 r--p 00020000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
76f78000-76f79000 rw-p 00021000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
7e91a000-7e93b000 rw-p 00000000 00:00 0          [stack]
7e98f000-7e990000 r-xp 00000000 00:00 0          [sigpage]
7e990000-7e991000 r--p 00000000 00:00 0          [vvar]
7e991000-7e992000 r-xp 00000000 00:00 0          [vdso]
ffff0000-ffff1000 r-xp 00000000 00:00 0          [vectors]

差分を見てみる。

pi@raspberrypi:~$ diff <(cat /proc/996/maps)  <(cat /proc/997/maps)
4,22c4,22
< 002d0000-002f1000 rw-p 00000000 00:00 0          [heap]
< 76d3c000-76e55000 r--p 00000000 b3:07 14166      /usr/lib/locale/locale-archive
< 76e55000-76f7f000 r-xp 00000000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
< 76f7f000-76f8e000 ---p 0012a000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
< 76f8e000-76f90000 r--p 00129000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
< 76f90000-76f91000 rw-p 0012b000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
< 76f91000-76f94000 rw-p 00000000 00:00 0 
< 76faa000-76faf000 r-xp 00000000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
< 76faf000-76fbe000 ---p 00005000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
< 76fbe000-76fbf000 r--p 00004000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
< 76fbf000-76fc0000 rw-p 00005000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
< 76fc0000-76fe1000 r-xp 00000000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
< 76fee000-76ff0000 rw-p 00000000 00:00 0 
< 76ff0000-76ff1000 r--p 00020000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
< 76ff1000-76ff2000 rw-p 00021000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
< 7ec25000-7ec46000 rw-p 00000000 00:00 0          [stack]
< 7eff0000-7eff1000 r-xp 00000000 00:00 0          [sigpage]
< 7eff1000-7eff2000 r--p 00000000 00:00 0          [vvar]
< 7eff2000-7eff3000 r-xp 00000000 00:00 0          [vdso]
---
> 01562000-01583000 rw-p 00000000 00:00 0          [heap]
> 76cc3000-76ddc000 r--p 00000000 b3:07 14166      /usr/lib/locale/locale-archive
> 76ddc000-76f06000 r-xp 00000000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
> 76f06000-76f15000 ---p 0012a000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
> 76f15000-76f17000 r--p 00129000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
> 76f17000-76f18000 rw-p 0012b000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
> 76f18000-76f1b000 rw-p 00000000 00:00 0 
> 76f31000-76f36000 r-xp 00000000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
> 76f36000-76f45000 ---p 00005000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
> 76f45000-76f46000 r--p 00004000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
> 76f46000-76f47000 rw-p 00005000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
> 76f47000-76f68000 r-xp 00000000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
> 76f75000-76f77000 rw-p 00000000 00:00 0 
> 76f77000-76f78000 r--p 00020000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
> 76f78000-76f79000 rw-p 00021000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
> 7e91a000-7e93b000 rw-p 00000000 00:00 0          [stack]
> 7e98f000-7e990000 r-xp 00000000 00:00 0          [sigpage]
> 7e990000-7e991000 r--p 00000000 00:00 0          [vvar]
> 7e991000-7e992000 r-xp 00000000 00:00 0          [vdso]

これから、[heap]から[vdso]まで、ヒープやスタックなどは違うアドレスになっていることがわかる。

もうちょっと直接的に(?)見てみる。C言語のmain関数の中で定義した変数(ローカル変数)はスタックメモリに配置されるので、試しに以下のような適当なローカル変数のアドレスを表示するだけのプログラム

#include <stdio.h>

int main() {
    int x;
    printf("%p\n",&x);
    return 0;
}

を書いて、10回実行してみると

pi@raspberrypi:~$ gcc test.c -o test
pi@raspberrypi:~$ for x in {0..9}; do ./test; done
0x7e9496e4
0x7ee156e4
0x7ea486e4
0x7ed7e6e4
0x7efc56e4
0x7eb376e4
0x7eea06e4
0x7ea146e4
0x7e8196e4
0x7e8a96e4

このように全て異なるアドレスになっていることがわかる。

ASLRなし

Linuxの場合、sudo sysctl -w kernel.randomize_va_space=0とすれば、ASLRを切ることができる。逆にsudo sysctl -w kernel.randomize_va_space=2とすればASLRありの状態に戻る。

ASLRなしの状態で上のsleepコマンドとCのプログラムを走らせてみる。

pi@raspberrypi:~$ cat /proc/1019/maps
00010000-00016000 r-xp 00000000 b3:07 391782     /bin/sleep
00025000-00026000 r--p 00005000 b3:07 391782     /bin/sleep
00026000-00027000 rw-p 00006000 b3:07 391782     /bin/sleep
00027000-00048000 rw-p 00000000 00:00 0          [heap]
76d4a000-76e63000 r--p 00000000 b3:07 14166      /usr/lib/locale/locale-archive
76e63000-76f8d000 r-xp 00000000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
76f8d000-76f9c000 ---p 0012a000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
76f9c000-76f9e000 r--p 00129000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
76f9e000-76f9f000 rw-p 0012b000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
76f9f000-76fa2000 rw-p 00000000 00:00 0 
76fb8000-76fbd000 r-xp 00000000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
76fbd000-76fcc000 ---p 00005000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
76fcc000-76fcd000 r--p 00004000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
76fcd000-76fce000 rw-p 00005000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
76fce000-76fef000 r-xp 00000000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
76ff9000-76ffb000 rw-p 00000000 00:00 0 
76ffb000-76ffc000 r-xp 00000000 00:00 0          [sigpage]
76ffc000-76ffd000 r--p 00000000 00:00 0          [vvar]
76ffd000-76ffe000 r-xp 00000000 00:00 0          [vdso]
76ffe000-76fff000 r--p 00020000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
76fff000-77000000 rw-p 00021000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
7efdf000-7f000000 rw-p 00000000 00:00 0          [stack]
ffff0000-ffff1000 r-xp 00000000 00:00 0          [vectors]
pi@raspberrypi:~$ cat /proc/1020/maps
00010000-00016000 r-xp 00000000 b3:07 391782     /bin/sleep
00025000-00026000 r--p 00005000 b3:07 391782     /bin/sleep
00026000-00027000 rw-p 00006000 b3:07 391782     /bin/sleep
00027000-00048000 rw-p 00000000 00:00 0          [heap]
76d4a000-76e63000 r--p 00000000 b3:07 14166      /usr/lib/locale/locale-archive
76e63000-76f8d000 r-xp 00000000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
76f8d000-76f9c000 ---p 0012a000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
76f9c000-76f9e000 r--p 00129000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
76f9e000-76f9f000 rw-p 0012b000 b3:07 526355     /lib/arm-linux-gnueabihf/libc-2.24.so
76f9f000-76fa2000 rw-p 00000000 00:00 0 
76fb8000-76fbd000 r-xp 00000000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
76fbd000-76fcc000 ---p 00005000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
76fcc000-76fcd000 r--p 00004000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
76fcd000-76fce000 rw-p 00005000 b3:07 11311      /usr/lib/arm-linux-gnueabihf/libarmmem.so
76fce000-76fef000 r-xp 00000000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
76ff9000-76ffb000 rw-p 00000000 00:00 0 
76ffb000-76ffc000 r-xp 00000000 00:00 0          [sigpage]
76ffc000-76ffd000 r--p 00000000 00:00 0          [vvar]
76ffd000-76ffe000 r-xp 00000000 00:00 0          [vdso]
76ffe000-76fff000 r--p 00020000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
76fff000-77000000 rw-p 00021000 b3:07 526228     /lib/arm-linux-gnueabihf/ld-2.24.so
7efdf000-7f000000 rw-p 00000000 00:00 0          [stack]
ffff0000-ffff1000 r-xp 00000000 00:00 0          [vectors]

差分をとってみると

pi@raspberrypi:~$ diff <(cat /proc/1019/maps)  <(cat /proc/1020/maps)
pi@raspberrypi:~$ 

ということでキレイに何も出力されなかったので、全く同じアドレスになっている。

Cのプログラムも先ほど同様10回走らせてみると

pi@raspberrypi:~$ for x in {0..9}; do ./test; done
0x7efff6e4
0x7efff6e4
0x7efff6e4
0x7efff6e4
0x7efff6e4
0x7efff6e4
0x7efff6e4
0x7efff6e4
0x7efff6e4
0x7efff6e4

ということで全く同じアドレスになった。

*1:seccampのグループワークから生まれた企画。リレーブログのルール:前の人がが次の人のテーマを決める

京都発着1周片道切符で行く下呂温泉・富山市街旅行記

はじめに

大学の学祭休み中に統計検定1級を受けてきた。会場として東京or大阪or名古屋が選べたが、大阪会場で変なところに飛ばされるのも嫌だなと思って帰省ついでに名古屋で受けることにした。

名古屋に行って戻るだけではつまらないので、適当にどっか旅行して帰ろうと思い、昔から作ってみたかった切符を発券してもらった。

f:id:potaxyz:20211126233725j:plain
京都発着1周片道切符

前半は特になんということもない帰省して試験受けてふらふらした話、後半が旅行記になります。

統計検定のことはいつか記事にします。多分。

前哨戦(11/20,21)

11/20

実家に帰った。普段は在来線や高速バスだが、今回は切符経路の都合もあって新幹線*1

11/21

統計検定1級を受ける@中京大名古屋キャンパス

統計数理(午前)と統計応用(午後)の試験があるのだが、午後は多分落ちた。詳しい話は結果がわかったらおそらく記事にする。

試験の後、きらら展を見に行った。

f:id:potaxyz:20211126234612j:plain
きらら展 in 名古屋

一昨年は大阪、昨年は新潟で見ているのでわざわざ見に行くこともなかったが、試験で傷だらけの心に効いた。新しく展示に加わっていた『ななどなどなど』の複製原画が面白かった。気づいたら

2万円が溶けた。届くのが楽しみです。

家に帰って流石に疲れたな〜こんな疲れてるのに明日から本当に旅行いくんか〜?と思いながら就寝。

本編(11/22,23,24)

11/22

切符を発券するだけ発券して本当にどうするか何も考えていなかったので名駅ゲートタワー1階のスタバで計画立案。下呂に早く着き過ぎても開いている温泉は少ないのでゆっくりした。

ついでに統計検定のせいで先延ばしにしていた課題(のために講義動画を止めてノート起こし)もちょっとやる。

気が早いね。

スタバを出て色々準備の物品探し。

雨が降っていたが傘がなかったのでコンビニで折り畳み傘を購入。

温泉街でもタオル買えるとは思ったけど一応買っておこうと思って無印良品で適当なタオルを購入。

twitter見てたら北海道行っている人間が多くて僕も北海道気分になりてえ〜と思ったのでどさんこプラザでリポンナポリンを購入。

こんな感じで買い物して名駅でうろちょろしていたのでうまい感じの電車の時間に合わず、昼食たべてから電車乗ることにした。

台湾まぜそば。麺とスープとかがあっておらずハズレでした...55系列だし美味しいと思っていたんだけどなあ

特急代の節約のために名古屋から岐阜は普通電車で移動して、岐阜から特急に乗ることにした。

飛騨川に沿って北上。山岳地帯に入っていくと景色も楽しくなりますね。そこそこ紅葉も見れた気がする。

到着。

湯めぐり手形を買って3箇所を巡ります。

1 水明館

由緒正しき旅館。中がでかい。

2 小川屋

畳風呂が有名。ひのき。サウナに入れなかったのは心残り。

〜休憩〜

下呂プリンを食した。おいしい。

下呂温泉合掌村を見学。

f:id:potaxyz:20211127001748j:plain
合掌。

温泉寺。紅葉のとこだけライトアップしていて他のとこは超真っ暗だった。

f:id:potaxyz:20211127001904j:plain
温泉寺

温泉寺にいました。

夜になったので夜ご飯を食べる。下呂温泉はトマト丼が名物らしいのでそれを注文。鶏ちゃんはまた今度。

トマトが合ってるかどうかは正直わからなかったが美味かったのでヨシ!

3 白鷺の湯

ここは1.2.とは異なり銭湯。お湯が熱め。おっちゃんがフレンドリーだった。今日は終電で富山まで行くんや!そっから何するかは決めとらん笑みたいな旨のことを言ったら変なやつやなガハハと言われた。帰り際は常連のおばさんと一緒に気をつけてな〜って送り出してくれた。また行きたい。

3箇所無事巡ることができた。温泉に入ると本当にリラックスできることがわかった。温泉最高〜!

f:id:potaxyz:20211127002802j:plain
ありがとう下呂温泉

富山に向かう。

20:03発の特急ひだ17号が富山に抜けられる最終。

高山で降りて乗り換え。

猪谷で再び乗り換え。ここでJR東海からJR西日本に会社が変わる。そのせいかホームが対面ではなくて縦(?)移動な感じで若干遠い。

こういう周りに何もないようなローカル区間でぼーっとしているのが楽しい。

猪谷駅ですでに富山市内でびっくりした。

寝てたら西富山だった。

富山駅に到着。

最近駅が新しくなって駅の南北で分かれていた路面電車が繋がったらしい。南北統一。駅が未来的(?)でかっこいい。

ホテル到着。2018年にできたばっかりで綺麗だった。

就寝。

11/23

この日も雨。

市街徘徊したい気持ちもあったがこの日締め切りの課題をやらなければならなかったのでホテルにこもって講義動画を見ることから開始。なんとか提出できた。昼食をとる時間もなく16時ごろになっていた。

とりあえずどこか行こうと思って市内公共交通の一日乗車券*2を買ってガラス美術館へ。

常設展に行ってもよかったが企画展に行った。ガラスにも色々あるんだなあという気持ちになった(小並感)。

路面電車をとりあえず乗り潰すかと思ってガラス美術館の最寄りから南富山駅まで行った。

再び戻って富山市中心街を散歩。

日枝神社なるところをちょっと見たりとか、グランドプラザとかそのあたりの商店街とかを適当に歩いた。

総曲輪(そうがわ)←読めん

石畳に路面電車が走ってるの海外感があっていいです。

一旦富山駅に戻って回転寿司を食べる。

時間が遅かったのでネタが少なく、注文して○○売り切れですって言われるたびにテンションが下がっていった...

富山の魚は美味しいって聞いてたけど思っていたほどではなく、北海道の方が美味しい気がした。タイミングが悪かっただけかもしれないのでもう一度回らない寿司屋とかで検証する必要がある。

再び路面電車に乗って富山大学前まで。

富山大学内を適当に散歩。雨風が強くなる。

終点の富山大学前駅の隣が日本で一番長い駅名のところだった。

実際後ろにトヨタの店がある。

雨風強すぎてこれ以上散歩する気が起きなかったのでホテルに戻る。

11/24

学祭休みが終わり、平日がやってきた。

大学を休んでする観光は最高だと思います。

が、今日も雨。本当は立山アルペンルート行きたかった。

ぐるっとグルメぐりクーポンというものを購入。路面電車1日乗車券にますのすしとか和菓子のお店で交換できるクーポン券2枚(or5枚)がついて1000円(or1500円)というもの。

この日は水曜日で、クーポン券が使える店で定休日になっているところが多く、切符販売所のところのお姉さんが何か目的のお店があるならお勧めできないかもしれないですよと確認してくれた。

とりあえずますのすし1つと引き換えようと思って川上鱒寿し店に行ったが売り切れ...。近くの高田屋に行って引き換えた。あとで食べよう。

富山城へ。

中の展示で佐々成政の手紙の展示会してたんだけど歴史に全然詳しくないせいかふぅ〜んという感じで全然頭に入らなかった。

富山城の天守閣からの眺めは(雨だったというのもあるだろうが)ビルとかが多くあまりよいものではなかった。

ついでにマンホールカードを回収。(下のデザインのものの他に別の場所でも回収した)

昼食。富山ブラックではない?かもしれないが、美味しい醤油ラーメンだった。

岩瀬浜へ。ちょうど雨が止んだ。

岩瀬浜の海。風がクソ強くて砂がめっちゃ当たって足元が舞台とかのスモークみたいになってヤバかったのでちょっと歩いて撤収。

富山港展望台へ。雨が止んだとはいえ立山の方はまだ雲がかかっていてあまり見えなかった。

北前船の廻船問屋の森家、馬場家を見学。でかい家。

クーポンの残り1枚を引き換えようと思ったが売り切れになっていたのでここではスルー。

富山駅に戻る。駅の近くでクーポンを適当にどらやきと交換しておく。

富岩運河環水公園へ。

ちょっとのんびりして富山駅に再び戻る。

16:57の新幹線で帰るので時間には余裕があり、途中でどこかに寄って夜ご飯を取るかけっこう迷ったが、疲れたのでそのまま帰ることにした。

各所へのお土産を購入。

新幹線に乗車。

22分で金沢駅に到着。

ノルマ達成。写真だけ撮ってすぐ戻る。

はやい。

朝貰ったますのすしがリュックに入っているのを思い出したのでここで食べる。当然おいしい。

気づいたら寝ていて起きたら山科。

お疲れ様でした。

おまけ

帰りについでに清水寺に立ち寄った。人はめっちゃいた。

お土産

*1:在来線だと岐阜-名古屋が被る、まあ代わりに関西本線使えばいいけど

*2:路面電車だけではなくバスとか地鉄の一部も使える

BGPとそのセキュリティ対策

はじめに

例のリレーブログ*1の時間です。前の僕の記事はこれ、前回の方のブログはこちらになります。

potaxyz.hatenablog.jp

amame.hateblo.jp

今回のテーマは『BGPのセキュリティ』です。今回もこの分野に関する知識は持ち合わせていなかったので、ゼロから調べたことを簡単にまとめて(まとまってるか?)紹介します。

BGPとその問題点

BGPとは、Border Gateway Protocolの略で、AS(自律システム:単一のルーティングポリシーによって管理されたネットワークの集まり)間の経路制御プロトコルです。

AS同士は、ASに割り振られているAS番号を利用してネットワーク上での組織間の経路情報を交換しますが、送られてくる経路情報はいちいち認証せずに基本的に信用する仕様になっています。

そのため、BGPルータで誤ったネットワークの設定がなされると、その正当性の確認なしにその経路情報が伝搬して、IPパケットが到達しなくなったり、転送先や経路が変わってしまうことがあります。このように通信経路を結果的に乗っ取ってしまうことを(意図的かどうかにかかわらず)BGPハイジャックと言うようです。

この仕様によって、例えば

  • 2008年にはYouTubeの経路情報が乗っ取られたり(これは設定ミスが原因らしい)

https://www.ripe.net/publications/news/industry-developments/youtube-hijacking-a-ripe-ncc-ris-case-study

  • 2014年にはBitcoinのマイニングプールへの経路をハイジャックする攻撃が行われて報酬が横取りされたり*2

https://www.secureworks.com/research/bgp-hijacking-for-cryptocurrency-profit

  • 2018年にもAmazonのRoute53向けの通信が別のサーバーに転送されて仮想通貨が盗まれる

https://doublepulsar.com/hijack-of-amazons-internet-domain-service-used-to-reroute-web-traffic-for-two-hours-unnoticed-3a6f0dda6a6f

といったような被害が出ています。

BGPのセキュリティ対策

RPKI

上であげたような問題を解決するために、BGPのセキュリティ機能としてRPKIというものの利用が考えられました。

RPKI(Resource Public Key Infrastructure)とは、IPアドレスやAS番号といった番号資源の割り振りと割り当てを証明する公開鍵基盤です。

これを用いることで、ROAと呼ばれるものの生成ができます。

ROA(Route Origination Authorization)とは、IPアドレスとAS番号の組み合わせに対し、それが正しい組み合わせであることを示す電子署名が施されたデータです。

ROAを利用すると、オリジン検証というものを行うことができるようになります。

オリジン検証:あるIPアドレスの経路情報が本来の経路情報の広告元によって経路広告(広告:動的ルーティングによりルート情報を伝えること)されたものかをROAと比較して検証します。

この検証によって、本来と異なるASがIPアドレスを使い始めた場合に検知ができます。

BGPsec

RPKIだけで問題は解決するように見えます*3が、厳密には、ニセのBGPルーティング情報を送るときにASパス(ルート情報がどのASを経由してきたのか分かるAS番号のリストを示すアトリビュート)の末尾に正しいAS番号を追加すればオリジン認証を突破できてしまうようです。

BGPsecは、誤った経路情報を以下の2つの仕組みで検出する仕組みです。

  • オリジン検証:上で説明した通りです*4

  • ASパス検証:IPパケットの伝送経路が正しいか確認します。ASパスが途中で変えられてしまったことが検知できます。

これにより経路情報の保証がほぼ完全になされますが、前のASが作った署名にも署名がなされている、といった署名のチェーンが起きていたりして署名チェックの負荷が大きく、BGPルータに大量のメモリが必要となるという問題があり、現状あまり普及していないようです*5

おわりに

今回BGPについて色々調べてみて、誤操作によって問題が起きてしまうこともよくあったり、脆弱性を突いた攻撃もけっこうなされているんだなあと勉強になりました(小学生並の感想...)。

次回の方はこちらで更新予定です。

参考文献

BGPハイジャックの怖さを、目で見てみよう:可視化ツールで学ぶWAN入門(1) - @IT

[招待講演] RPKIとルーティングセキュ リティ技術BGPSECにおける課題と展望

インターネット用語1分解説~リソースPKIとは~ - JPNIC

インターネット用語1分解説~BGPsecとは~ - JPNIC

BGP security: the BGPsec protocol | Noction

*1:seccampのグループワークから生まれた企画。リレーブログのルール:前の人がが次の人のテーマを決める

*2:この手の攻撃はよくされているようです:BGP Hijacking for Cryptocurrency Profit | Secureworks

*3:誤操作によるBGPハイジャックが大半のようなので、攻撃のことを考えず意図的でないBGPハイジャックを防ごうと思えばこれで事足りているらしい?https://rpki-nstgt-test.readthedocs.io/ja/latest/about/faq.html

*4:オリジンだけ見ていて途中の伝送経路はちゃんと見ていないという理解をしています。

*5:これの改良を試みている論文もあります:https://ipsj.ixsq.nii.ac.jp/ej/index.php?active_action=repository_view_main_item_detail&page_id=13&block_id=8&item_id=177521&item_no=1

EMアルゴリズムをirisデータセットで試す(PRML 9-2)

前期に引き続いてPRMLの自主ゼミをしているわけですが、後期に入って下巻に突入。本を参考にEMアルゴリズムを実装してみることになった。

PRMLの9章2節に混合ガウス分布EMアルゴリズムを用いて最尤推定する手順が記されており、それを元に実装した。

以下のリンクの枠組みだけは参考にしつつ、中のコードはできるだけ自分で考えて書いた。とりあえず動かすことを目標にしていたので計算量的にかなり無駄な計算をしていたり綺麗ではないコードではあるが...

qiita.com

実装したやつ

gist.github.com

まずは本にあったようにold_faithfulとかいう間欠泉データに対して試してみた。

ゼミのメンバーに分散共分散行列のプロットをしている人がいたので僕も描画してみようと思ってネットでコード探してほぼコピペして使ったりしてる。

分散共分散行列の逆行列が存在しない場合があるので適当に小さい単位行列を足す処理を入れている。

初期値にけっこう依存するけどうまく初期値が選ばれるとちゃんと分類される。

f:id:potaxyz:20211104002418p:plain
old faithfulデータにEMアルゴリズムを適用

次にirisでやってみているメンバーがいたので僕もやってみた。

こっちもけっこう初期値に依存するが、うまく初期値が選ばれていれば良い感じに分類された。

4次元のデータセットなので2次元に射影したやつにプロットしている。

EMアルゴリズムを試した結果。

f:id:potaxyz:20211104002811p:plain
irisデータセットEMアルゴリズムを適用

答えのラベルがirisデータセットについてるので正しい分類もプロットしてみた。

f:id:potaxyz:20211104002840p:plain
irisデータセットの正解

目視ではわからないので正解と不正解のプロットをしてみた。今回の場合は正解率が97%くらいになっててうまく分類できた。(うまくいかない時は30%台になったりほぼ2クラスにしか分類されなかったりとかするのでランダムに選んでる初期値が良い感じになってくれるまで何回か試しています)

f:id:potaxyz:20211104002956p:plain
irisデータセットの正解率

こうやって実際に実装してみると面白いですね!

セキュリティ・キャンプ2021参加記【L-II】

セキュリティキャンプ2021にL-IIトラック「暗号のままで計算しようゼミ」で参加してきました。

メインとしては、TFHEという完全準同型暗号の1つについての理論の理解と実装をしました。

長くだらだらと書いているので、です、ます調がごちゃごちゃになっているのはご了承ください。

セキュリティ・キャンプ全国大会2021 オンライン とは

情報処理推進機構(IPA)が主催している無料でセキュリティ技術が学べるイベントです。今年は疫病の影響もあり(去年もでしたが)8/9〜10/3という長期間開催になりました。

詳しくは下のリンクを見てください。

www.ipa.go.jp

参加理由

3回生の夏休みってことで周りはインターンとか考えてるみたいだけど、あんまりインターンには興味がなかった。せっかくだし何か技術系のイベントに参加してみたいなあと漠然に思ってはいた。

1回生くらいからセキュリティキャンプの存在は知っていて、あまりよく覚えてはいないが、京大界隈では単位取得率botで有名なへいほぅさんがtwitterで参加します、みたいなことを言っていたのを見て存在を知った気はする。

ただ、セキュリティキャンプは低レイヤーな話が多い印象で、バリバリプログラミング書いているわけでもないし、最近は数学とか物理とかばっかりやっていたのもあって、自分が挑戦するにはハードルが高すぎるなあとも思っていた。

しかし、2021の講義一覧とか応募課題を見ると、Lトラック(暗号数理実装トラック)だったらいけるんじゃない?面白そうだし、という気持ちに。

学科の先輩(YトラックでOS作ったらしい)がtwitterでセキュキャンは技術よりやる気が買われるぞ!と言っていたのも見て、年齢制限(22歳までしか応募できないので最初で最後のチャンスだった)もあるしとりあえず申し込んでみるか〜となった。

L-IIトラックを選んだ理由

理由としては

  • 準同型暗号とは何たるか知りたい
  • 応募課題が取り組みやすかった

の2つかなと思う。応募課題が取り組みやすかったのが正直一番の決め手だと思う。

応募課題

応募課題のうちL-IIの部分をざっくり要約すると

  1. 準同型暗号について調べたことをまとめる(意欲と調査力を問う、準同型暗号だけでなく他の秘密計算との比較)
  2. プログラミング能力を図る(整数係数多項式の剰余演算、剰余環上のP進数をp進数に直すみたいなやつ)
  3. 自由記述

でした。超シンプル!

出した応募課題は載せないけど、どんな感じでやったかだけ書いてみようと思います。

↑書いた応募課題下に載せました

課題1

意欲を問うとのことだったのでとにかく書きまくってやろうという気持ちでがんばった。間違ったことを書いても減点されないらしいのでとにかく調べて書きまくるのだ。

去年の参加者の方が応募課題をあげていたのを発見。なんとこの方、今年のチューターさんでした。

qiita.com

とりあえず「準同型暗号」でググったりしていたら講師の方が書かれていたqiita記事を発見する。当然知らないワードがいっぱいあるのでそれの中から掘り下げたい単語をググる

qiita.com

図書館で「準同型暗号」で調べてヒットした本を読んだ(これはネットで読めた)。

herumi.github.io

TFHEのいろんな論文にあたってみる。準同型暗号をまとめたスライドを見つけたので読んでみる。情報処理学会とかのpdfを読んでみる。など...

調べてはまとめてをひたすらやっていたら去年の参加者の応募課題晒しに書いてあることと理解が違うな、と思うなどしたり...

結局5000文字くらいにはなった。参考文献は20個。

課題2

  1. 2n-1次以下の多項式をXn+1で割ってください、という課題。ナイーブに割り算をすると構造はすぐ見える。pythonで課題を出したのでリストのスライス使えばプログラムとしてはなんと11文字だけで終わり(雛形の関数内にプログラムを追記する形式だった)。当然だけど説明のコメントはしっかり書いた。

  2. 割り算と繰り上がりみたいなのに気をつける。と完成。

とりあえず書いてみようと一番初めに手につけたのがこの課題で、すぐ書けたのでこれは課題出せる!という気持ちになった。

課題3

がんばって自己アピールをする。何かそういうイベントに応募したりとかインターンとか行ってはないのでとりあえず最近つくったものとかをそれっぽく書いた。

あと大学で何やってるか。応用数学、応用物理、計算シミュレーション、機械学習アルゴリズムやってますとか、数理工学実験でこういうことやりました(数理工学実験でやったことは2回生後期の振り返り - ポタージュを垂れ流す。を参照)、とか。

ここまで暗号の話をなにもしていないので、最後に暗号の話を書いた。

暗号技術に興味を持つようになったのは最近。遡ると量子力学おもろいなあってのがまずあるけど、量子情報科学入門を手に取ってみて量子アルゴリズムや量子暗号ってこうなってるんだ〜へえ〜というのがきっかけになっていると思う。ちなみに読み切れてなくて積読になってる。はやく読もうね。

www.kyoritsu-pub.co.jp

ところで、量子じゃない暗号についてなんも知らない...。

こんな感じのことと、暗号について勉強を始めたのは最近だから準同型暗号をきっかけに色々知りたいみたいなことを書いた。

応募課題晒し

選考通過

締め切りが1週間伸びた影響で結果の公表も1週間程度伸びてた

ちなみに、同学科同回生で一緒にPRMLゼミやってるんですが、そこのメンバーがL-IIのトラックに来てたりとか、L-IIIトラックにもメンバーが行ってたりした。

L-IIIトラックに行った友人。選考通過者1人でウケた

講師の方もL-II,IIIともに京大の情報学研究科の方です。全国大会なのになんだか内輪感が...

閉講式の成果発表のときも...

実際に参加してやったこと

オンラインなので講義の時間が被らなければ他の講義も取れる。集中コースと選択コースは時間被らないように時間割が設定されています。僕は追加でA2の講義を受けました。他にAIシステム・ハッキング入門とか申し込んでたけど外れました。かなしいね。

各受講生には専用のgoogle accountが配られ、講義にはgoogle meetが使用されていました。

L-IIの講義

メンバーとしては自分入れて4人+追加受講者1人の合計5人でした。

TFHEとは?

TFHE(Torus Fully Homomorphic Encryption)とは、データを暗号化したまま任意の演算を行うことができる完全準同型暗号の1つです。いくつかある完全準同型暗号の流派のなかでも特に高速なことで注目されているようです。

流れ(?)としては、

入力を0,1のバイナリとして、暗号化(ノイズを付加、トーラスに埋め込み、多項式にする、など)して、所望の論理ゲートの性質を満たすように暗号のまま加算、回転などをして、符号をとって復号する

という感じになっています。

最近ではパスワードモニター等の技術に応用されているようです。

www.microsoft.com

詳しくは講師の方が書かれたものを見るのがいいかな、と思います

qiita.com

講義内容

講義は3回、13:30-17:30の4時間。8/11,9/19,9/26にあった。基本的に進捗を聞いて、暗号のしくみ等についての講義を1時間程度して、残りはひたすらハッカソンという感じでした。

8/11と9/19の間にすごい期間空いちゃっているけど、そこには週1回くらいのペースで1時間程度のミーティングがあった。進捗どうですかと講義。

講義の目的は理論と実装の間を埋めること。実際論文を見ると、書かれている順番が講義の順の方が自然だったりとか、実装とちょっと数字の取り方が違ったりとか、アルゴリズムもそうだけど理論に寄ってて実装に持ってくのが大変だなあと思ったりした。

ミーティングと旅行が被って野付半島にドライブした帰りにミーティング受けた日もあった(10泊11日 だいたい北海道ぐるっと - ポタージュを垂れ流す。←の9/14)。

セキュキャンのdiscordがあるのでそこで連絡を取ったりとか時には質問投げたりとか、通話して作業したりした。

オンラインのメリットはどこでもいつでも好きな時に進捗が生めることだなあとは思う。

けど、デメリットとしては、あんまり交流が生まれなかったなあ、っていうのがある。ここは難しいところだと思う。画面突き合わせてはい喋ってくださいってなっても難しいよね。あとは、些細な質問でもオフラインなら質問してたのかなあと思ったり。自分で考えたら解決する/した問題でも、聞いたことで新たな知見を得られることもあるしね。

成果

github.com

応募課題はpythonで出したが、c++を書いてみることにした。普段python書いてるけどc++python並みに使えるようになればいいかなと思って。実際ポインタとか理解が完全ではないにせよ、逃げていたようなところとかも通らざるを得なくなって勉強になった。

講義の目標はHom NANDをつくること。NANDが作れれば任意の論理演算ができます。僕は9/19の時点で完成していたので、講義の目標は達成できた。

ちなみに、昨年度より受講生の進捗はだいぶよかったみたいです。昨年はHom NAND実装まで到達してない人もいたみたい。今年は追加受講生の方以外はみんな到達できていたと思う。

追加でTBSR(という暗号形式)を用いた整数加算アルゴリズム論文を読みつつ実装した。

見た目は地味だけど、実際走ってるのを見ると感動する。

f:id:potaxyz:20211004020151p:plain
Hom NANDの表を計算して表示 / TBSRによる足し算

Hom NANDは実行に50秒程度かかっているけど、FFTなどでちょっと高速化すると4秒程度にはなるらしい。高速化を目指すとさらに10ミリ秒単位くらいにはなるみたい。

結果だけ表示してるので、暗号になってるものを文字列として表示するとそれっぽくていいかもしれないですね。

今後の展望

  • TBSRの加算だけ実装したので、乗算も実装しようと思う
  • 今度は準同型暗号のライブラリを使って何かアプリケーションを作ってみる(L-IIIでやってたMNISTの分類とかを準同型暗号を使ってやってみる)
  • 準同型暗号に限らず暗号についての知見を広げたい

A2の講義

講義内容

講義タイトルは「任意USBデバイス開発実験」でした。なんかちっちゃいマイコン触れるの面白そう〜というノリ。講義で使ったのは 開発ボード EZ-USB(FX2LP CY7C68013A) です。

Lチカから始まって開発ボードから文字入力、カーソル操作、USB通信の盗聴をみてみたり...

成果

Lチカをいじって3拍子に

最後はBadUSBを作ろう!とのことだったのですが、何も思いつかなかったのでそのデバイスをパソコンに接続すると画面にフィボナッチ数列をひたすら表示するってのを作った。

交流会

時々交流会的なのが設定されていました。oviceというのをつかってやっていました。

自己紹介の回のときは機械学習に興味があるみたいな中学1年生の人がいたりしておじさんびっくりしちゃった。あと九十九里浜をひたすら歩いたみたいな話した人がいて、そのまま限界旅行の話になってしばらく盛り上がった。そこではじめて琵琶湖一周した時の話 - ポタージュを垂れ流す。の話をしたらめちゃくちゃウケた。みんなも昼夜逆転したらとりあえず琵琶湖一周するといいと思います。

グループワーク

「セキュリティ・キャンプ修了後にあなたが取り組むこと」ってテーマでランダムに5人グループが作られて、そこでグループで何をするか決めることになった。3回くらいそういう時間が設けられたかな。僕はブログリレーをすることになった。いつまで続けられるかは正直わからないが...。前の人が次の人のテーマを決めるというなかなかユニークなものなので、勉強になるとは思う。

ちなみに1つ目の自分の記事はVPNについて調べてみた - ポタージュを垂れ流す。です。分野外なだけあって伝えるのが難しい...。

企業イベント

協賛企業さんがお話してくれる。労働意識の低い僕にとっては企業というものに触れられるいい機会になった。

NTTデータの方が初めは全然セキュリティとか知らなかったけど会社入ってから色々な技術を学んでいったみたいな話してて僕でも就職できるかもしれんって思った。

ヒルンのお話を聞けたのは本当に良かったと思う。いつもtwitterとかアプリとかお世話になってます。あとスライドのデザインが良すぎ。好きです。

twitter.com

あんま関係ないけど気象データ扱ってるから雷のデータベースとか知りませんかって社長さんに聞いたら https://www.blitzortung.org/を教えてもらった。こんなんあんねや。

ノベルティ

たくさんいただきました

その他

修了証が後日届くらしいです。届いたら追記したい。

さいごに

夏休みに1つの思い出ができたかなと思う。自分からでは触れなかったであろう準同型暗号を実際に理論から実装まで勉強する機会になって良かった。これからの暗号技術の勉強のきっかけにしたい。

そして、運営の方々、講師の方、チューターの方、そして受講生仲間、ありがとうございました!

あと、これ読んでてセキュリティキャンプに応募するか迷っている人、応募に必要なのは技術よりやる気だ!バシバシ挑戦してみよう!

VPNについて調べてみた

はじめに

セキュリティ・キャンプ2021のグループワークの一環で、リレー形式でブログを書くことになりました。前回のブログはこちらです。

前回の方が次の方のテーマを決めるという形式になっており、僕に与えられたテーマは

ネットワークセキュリティ

です。

ネットワークについてはあんまり知らない...とはいえ大学で前期にコンピュータネットワークという講義を取っていたし応用情報の資格取るときにそこらへんの話も見たな、と思ったのでそこから気になったことを書いてみることにしました。

今回はVPNについて取り上げてみます。調べればいろいろ出てくるありふれた内容ですが...

VPN

VPNとは、Virtual Private Networkの略で、日本語では仮想専用線とも訳されます。その名前の通り、仮想のプライベートネットワークを公衆回線などを用いて構築する技術になっています。

目的としては

  • 会社(大学)の外から会社(大学)の中のネットワークに接続したい
  • 特定のサーバから接続したように見せたい

時に使われる場合が多いでしょう。

僕の場合は、学外アクセスが制限されている大学のwebページを自宅などの学外から見るために使うことが多いです。

また、例えば屋外などで無料wifiを使う際、そのまま使うと通信が筒抜けになってしまう場合があります。以下のyoutubeの動画のように簡単に傍受できてしまいます。

youtu.be

そこでVPNを通して通信を行うことで、悪意ある第三者からのアクセスを防ぐといった使い方も考えられます。

VPN

  • 暗号化:元のパケットを暗号化する
  • トンネリング:2点間で仮想的な通信路をつくり、パケットなどを別のプロトコルで保護する(カプセル化
  • 認証:データを送受信する者同士が正しい相手であることを確かめる

という3つの機能から成り立っています。

例えてみるならVPNの仕組みというのは2点間を専用の車で移動するようなもので、いろいろな人が同じ道路を使うとはいえ、他人と接触せず、中身を知られることなくパケットを送り届けることができます。

VPNを実現するプロトコル

以上の機能をもつVPNを構築する際には、例えばネットワーク層のセキュリティプロトコルであるIPsecが用いられます。IPというだけあってネットワーク層において、暗号化や認証、改ざんの検出などを行うものになります。

IPsec

IPsec(Security Architecture for Internet Protocol)とは、インターネットに関する各種のプロトコルなどの標準化組織であるIETFが標準化を進めている、暗号化通信方式の標準規格で、共有鍵暗号方式を用いることで、IP パケット単位で改ざん検知や秘匿機能を提供するプロトコルです。 利用する暗号化のアルゴリズムを具体的に特定せず、どのような暗号でも利用できるような柔軟な枠組みを提供しているという点も特徴になっています。

2つの動作モード

IPsecの動作モードは2通りあり

  • トランスポートモード:IPヘッダはそのままで、送受信するデータ本体部分だけを暗号化する
  • トンネルモード:パケット全体を暗号化する

があります。

送受信するIPパケットを葉書だとすれば、トランスポートモードは宛名のない面片面だけを暗号化、トンネルモードは葉書の両面を暗号化するものだと考えられるでしょう。

なお、VPNの構築にはトンネルモードが用いられています。

3つのプロトコル

IPsecは以下に示すAHESPIKEの3つのプロトコルによって構成されています。役割により暗号通信プロトコル鍵共有プロトコルに分けられます。

暗号通信プロトコル

実際にIPsecを用いるときは、以下の2つのいずれか、もしくは、両方のプロトコルを用いて暗号化通信を行っています。

  • AH(Authentication Header):認証のための仕組みで、完全性の保証(改ざん検知)ができる。

  • ESP(Encapsulated Security Payload):認証と暗号化のための仕組みで、パケットの秘匿性と改ざん検知が担保される。

※完全性:情報およびその処理方法が正確かつ完全であることを保証すること。

鍵共有プロトコル
  • IKE(Internet Key Exchange):鍵交換を行うプロトコル。暗号化通信を行う前に通信の暗号化アルゴリズムを決定し、暗号化鍵を作って鍵交換を行う。IKEv1とIKEv2がある。IKEv2は、IKEv1が混沌としてしまったようなので整理を諦めて仕切り直しで作られた規格で、v1とv2となってはいるが全くの別物と考えて良い。

なお、私の通っている大学ではIKEv2が用いられているようです。

おわりに

記事を書いていくうちにIPsecが中心っぽい記事になってしまいました...。読んでいる側からすればあまり面白みのない内容だったかもしれませんが、個人的にはあまり触れない方面の話を調べるきっかけになって良かったかなあと思います。

次回の方の記事はこちらです!

参考文献

10泊11日 だいたい北海道ぐるっと

旅行ゲージが爆発した twitterのリンクを貼りまくってるのでちょっと読み込みに時間がかかるかもしれません あと長い

今回のメインは函館と道東かな 青森もメインの1つになるはずだったのですが色々あり...

だいたい北海道ぐるっと というのはJRの線路を地図で見ると時計回りにぐるっと、という意味で北海道の北の方とか襟裳岬の方とか行ってるわけではない 青森秋田も通ってるのでだいたい

9/8(水)

4時起床 どっかでドライブする予定だったので日が昇ってきたくらいの頃に運転の練習をした

何やってたか覚えてないけどなんかやってるうちに昼になってきたので学食に行く なんで雨降ってんの?しぶしぶ折り畳み傘を持っていく

普通に食べながら関空までの電車とか調べてたらアレ?もしかして間に合わん?となったので早歩きで出町柳まで行く

お金の節約ができない

なんだかんだで関空に間に合う

peachの出てる第二ターミナルまでの連絡バスは所要時間約7分(実際には6分程度?)、9時から22時まではで7分間隔で出てるってことを知った

peachなら飛ぶ25分前までにチェックインすればいいのでこれでギリギリの電車出発時間が逆算できますね

飛行機に乗って寝てるとあっというまに新千歳空港に到着

18時くらいになっていたのでラーメンを啜る〜

ラーメン道場って北海道ラーメンのイメージを具現化したやつみたいなの食べれるからいいよね

切符を買って札幌へ 明日のことも考えて函館までの切符を購入

北海道きてやっぱりちょっと寒いな〜と思ってユニクロで適当に長袖のシャツを買っておいた(この時は流石に要らんかったかな〜って思ったけど道東で役立った)

ホテルにチェックイン

お散歩 やっぱり名古屋栄に似てると思う

一時期話題になってたケーキ自販機 高いけどまあいいでしょう ただのショートケーキじゃなくてナッツが入ってたりとかでおいしかったよ

ホテルでコンパイル通らね〜とか言ってパソコンカタつかせてるとだんだん睡眠時間なくなってきてやばくなったりしていた

9/9(木)

おはよう

特急ニセコに乗る 去年偶然存在を知って乗ってみようと思ったので

今年はノースレインボーエクスプレスとかいうのが使われていた 僕の乗った日の後で冷房の不具合とか色々あったみたいだから不具合のないうちに乗れてよかったね

余市駅 ソーラン武士

りんごパイとかりんごラムネ(飲料)とかを駅のホームで購入

ソーラン武士と写真撮った

ニセコ駅での車内販売

飲むヨーグルトとでかいどら焼きを購入 でかいどら焼きは次の日の朝食になった

ほえ〜ってしてたら長万部に到着

まんべくん大人気

広い窓から景色を眺めているとあっという間に函館到着

昼ごはんを食べていなかったのでラッキーピエロ

なんとなくバーガーじゃなくてオムライスを注文したらたまたまオムライスが安くなってる日だった

なんかデカくね?

ホテルにチェックイン

いいとこだったのでまた泊まろうと思う

街を回ろうかなって思ってたんだけど疲労の限界がきたのでお昼寝

起きたらもう建物の拝観時間終わってた

まあそれでも色々ライトアップされてるので歩いてみようってことで

旧公会堂とか坂のぼったりとか山の上の方の神社から街見てみたりとか(函館山ロープウェイが止まっていたため登れなかった、バスが出ているっぽいのでそっちならいけたかもしれない?)

なんとなく市電に乗って湯の川まで行ってみたりもした(湯倉神社)

戻って夕食の調達 流石にこの時間に店はやってないのでハセストに駆け込んでやきとり弁当を購入

金森レンガ倉庫に寄り道

ホテルに戻る 作業をして就寝

9/10(金)

昨日歩いてて気になったところにいくつか入ってみた

旧函館区公会堂と旧イギリス領事館 2館共通入場券みたいなのが公会堂入ったら売ってたのでそれを使いました(他にもいろいろあるらしい お得な共通券のご案内 – 旧函館区公会堂

本当はもっとみたいものはあったが時間がないのでこれくらいにして市電に乗る

立待岬 青森が見えた

ホテルに荷物預けてたので回収

勝手に自分の函館のチェックポイントとしているミスタードーナツに訪問したかったけど時間がなかったので断念

函館市場で海鮮丼でも食べようってことで

食べた

ここで成績の異議申し立てが通ったメールが届いたので嬉しい気持ちになる

青函フェリー連絡バス(200円)に乗って函館フェリーターミナルへ

乗客は3人だけ? 調べた感じ青函フェリーで一番古い船らしく乗客は雑魚寝スペースくらいしか与えられてなかった

出港を見届ける セキュキャンのプログラムを書いて過ごす あと昼寝

起きると日没の時間が近づいていた いい感じに赤くなっている

f:id:potaxyz:20210919213319j:plain
夕焼け

青森に到着

津軽海峡青函フェリー津軽海峡フェリーのどちらかで移動できるので今度は津軽海峡フェリーを使ってみようと思う

下船してしばらく歩く 青森駅付近のホテルにチェックイン

こういう地域を感じられる些細な事が旅行の楽しみ

カレーサービスがあった うれしいね

外散歩しようかな〜とかおもったけど疲れたしやめた おやすみ〜

9/11(土)

今日は竜飛岬をみるぞ〜って思って朝早くから出発

津軽線蟹田に着いた頃に青函トンネル記念館調べたら臨時休業になっていた 数日前に調べた時には営業予定だったのに...前日に調べておくべきでした

ここまできてしまったので三厩まで行って戻るかってことでとりあえず三厩まで行った

戻ってホテルでちょっとゆっくり

のっけ丼と迷ったが新規開拓ってことで 味噌カレー牛乳ラーメンを食べる おいしー

リゾートしらかみに乗る

座席間隔の広さに驚いた

千畳敷を歩く(降りてみてきていいよって時間が取られている)

f:id:potaxyz:20210919213225j:plain
千畳敷

景色もいい

ぶなの森アイスと白神山地の水で淹れたコーヒー

ぼーっと外見てたら夜になってきた

フリーwifi飛んでたので普通にそれにつないでパソコンで作業してた

秋田駅に到着

なんかしら駅弁とか買おうとしたけど何も売っておらず...

しょうがないのでそのまま何も買わずに電車に乗る 青森行きの終電

f:id:potaxyz:20210919213532j:plain
奥羽本線 快速 青森行き

寝てたら青森駅に到着

なんか牛丼屋でテイクアウトするか〜って思ったら普通に営業しててアレ?って思ったけど緊急事態宣言出てないから普通に遅い時間でも店で食べれるんですね

ホテルに戻って就寝 明後日以降の予定をこの辺で考えていた(天気などの関係と泊数も決めていなかったため これ以降は2日後の予定を毎日考えていた)

9/12(日)

今日は移動の日!北海道東日本パスのオプション券を事前に購入しておきました 旭川あたりが夕方雨予報だったからどうなるか心配でした

ホテルを出るのがめっちゃギリギリ(google mapで経路出して時間見ると間に合わない)で青森駅まで走る

途中で朝ごはんってことでイギリストーストを購入

なんとか電車に乗れたので青森駅から新青森駅に移動

新青森からは新幹線で青函トンネルを通過して新函館北斗まで渡る

新函館北斗からは特急北斗で札幌まで ほとんど寝てた気がする

新函館北斗駅で買った水 正直あまり美味しくないかな...

札幌で駅弁を買ってカムイで札幌から旭川

鮭めしおいしい

いつもの美唄駅の謎看板

旭川からは富良野線で美瑛まで

美瑛からはノロッコでラベンダー畑まで

ファーム富田を散歩 ラベンダーシーズンではないけど綺麗でした お店とかも時間の関係で閉まってたりとか花のシーズン外とかで見る場所が制限されていたのであまり時間取れてなかったけどちょうどよかった

f:id:potaxyz:20210919213927j:plain
ファーム富田

ラベンダー畑から旭川駅まで再びノロッコに乗る (別にここで再びノロッコに乗る必要はなかった 中富良野駅まで歩いてそこから旭川まで戻るというのも考えたけど徒歩の時間を考えると観光時間がほとんど変わらなかった)

ノロッコといいながらけっこう飛ばす

乗ってると空がゴロゴロ言い始めてゲリラ豪雨降ってきた ここまでは雨降ってなくてよかった 窓閉めようとしたけど閉まらず自分から濡れに行った状態になった(乗務員さんが閉めてくれた)

スプラッシュマウンテンしてる動画

旭川駅に到着 流石に雨やばすぎて外のラーメン屋とかいく気になれなかったのでイオンモールのフードコートで我慢

旭川からは特急オホーツクに乗って北見まで

真っ暗だしなんもみえんのでほとんど寝てたら北見に着いた

北見ってカーリングの街なんだね

経費圧縮のために快活宿泊

雑魚寝できるだけじゃなくてシャワーとか朝食ついてたり飲み物飲み放題だし優秀な宿だと思う いつも漫画とか読もうと思うんだけど大体寝て起きて終わってしまう 前泊まった快活(浜松駅前?)より全然綺麗で快適でした

調べた感じ道東で快活宿泊が現実的そうなのはこの北見と釧路かなあ 釧路は中が微妙みたいなことも書いてあったけど

夜とかけっこう冷えるな〜ってことで札幌で買っていた長袖をここから着用

9/13(月)

目的地は釧路

またもやギリギリに快活を出る 当然google map通りの時間だと間に合わない 店出た瞬間だけ雨降ってた

網走行き普通列車に乗車 地元の高校生がたくさん乗り降りした

地図を見るとこのへんの数駅は近くに高校があってこの時間の列車がけっこう通学需要を拾っているとみた

網走に到着 網走市街見に行こうとおもったんだけど普通に雨降ってて諦めた

待合室で作業 かにめしを購入

釧路行きに乗車

知床の海と湿原 湿原みるなら進行方向右側の席に座る方がよかったかもね

かにめしを食べたりしていたら釧路に到着

バスに乗って釧路湿原展望台へ

周辺に散策路が整備されているので歩く

f:id:potaxyz:20210919214507j:plain
釧路湿原 北斗展望台

広い

戻る

バスで釧路駅まで戻ってホテルにチェックイン

夜ご飯なんも考えてなかったけど釧路ラーメンを啜る〜ことにした

京都ラーメンに慣れた舌には優しすぎる味でした

be kobeのパクリ

船が泊まっていたりした

9/14(火)

前日に知床の海あたりでレンタカーの予約を入れた 車種指定できなかったのでドキドキしていたが日産ノートが出てきた よくカーシェアで乗ってた車だったので安心

ペーパードライバーが知らん土地で運転をするとどうなるのか

まず車の速度がはやい スピード感わからんくてはじめ60-70km/hくらいで走ってたら遅すぎてバチクソ抜かされたので結局80km/h前後でずっと走ってた それでも抜かされるけど

北海道らしいずっとまっすぐ周り畑とかでなんもない道をひたすら走る

野付半島に到着 右も左も海のところを一本の道路が走っている

国後島が見える

ネイチャーセンター横の遊歩道 トドワラの道を歩く 思っていたより枯れ木的なやつが少ない(後で調べたところナラワラの方がいっぱい生えてるらしい)

f:id:potaxyz:20210919215327j:plain
トドワラ

海 きれいすぎた

f:id:potaxyz:20210919215749j:plain
遊歩道

f:id:potaxyz:20210919215915j:plain

アニメとかの天国の草とか生えてるとこの描写にありそうな風景が広がっている

f:id:potaxyz:20210919215132j:plain
野付半島 遊歩道

名物っぽい別海ジャンボホタテバーガーを食べる 牛乳つき うまい

より半島の先の方へ行く

車で行けるのはここまで これの後ろにも道が続いてはいる(次のツイートの画像参照)が通行許可証がいる

時間の許す限りいけるところまで歩くことにした 同じような景色でだからどうとかそういうものはなかったけど

戻るとエゾシカがいた 別に襲ってはこない

時間使いすぎてちょっとやばいかも〜と思いながら車に乗って釧路方面へ

途中で奥行臼駅跡に立ち寄ろうとするが曲がるところを直進してしまったためタイムロス

f:id:potaxyz:20210919220729j:plain
標津線 奥行臼駅跡

戻ろう ナビ見るとギリギリ間に合わなさそうな到着予定時刻が表示されているけど

ひたすら快走

夕方のいい景色〜の一方で時間やべ〜になってた

結局釧路市街に入ってあと少しのところで返却時間をすぎてしまい...営業時間も終わったけど

返却場所に行ったらとりあえず給油してきてってことだったので油を入れて戻る

結局追加料金はかからずそのまま返却できたのでよかった 多分翌日返してもプラン的に料金が変わらなかったんだと思う ご迷惑をかけた

時間的にやってる店もないのでセイコーマートで適当にごはんを購入

就寝

9/15(水)

昨日レンタカーに忘れ物をしていたので回収 次の列車まで時間があったのでちょっと街を歩く

昨日コンキリエ行って牡蠣食べるつもりだったけど叶わなかったので駅で牡蠣弁当を買って根室へ向かう

北海道らしい広い平原的な風景やら太平洋やらを見ていると根室に到着 バスに乗り換えて納沙布岬

緊急事態宣言で施設が閉まりまくってるが北方領土資料館は空いてたのでぐるっとみる 北方領土のことを知れる ついでに分厚い資料ももらっておいた

納沙布岬からは北方領土が見える

f:id:potaxyz:20210919221818j:plain
納沙布岬

奪還の落書きはちょうどこの日の前の日とかにニュースになってた(北方領土返還祈念シンボル 四島のかけ橋)

根室駅に戻る 列車で釧路方面へ

牡蠣弁当たべてなかったので東根室から乗ってきた高校生を横目にここで食べる

釧路駅に到着 乗り換えて帯広へ

寝てたら帯広に到着

ホテルにチェックイン

してから夕食を探しに行く セイコーマートに世話になる

帯広だし豚丼だよな、とかは全く考えていなかったが豚丼をチョイスしていた

就寝

9/16(木)

ホテルが洒落ていそうだったのでなんとなく朝食付きにしていた

うまい

14:40の列車で札幌方面へ行く予定だったのでそれまでどうしようか...ってことでホテルでレンタサイクルを借りた

十勝川とか札内川の散策路を走ったりとか

帯広神社に立ち寄ったりとか

真鍋庭園を見たりとか(帯広は庭がいろいろある)

(真鍋庭園にはめっちゃリスがいた)

グリーンパーク的なとこ走ったりとかした

そうこうしているとレンタサイクルの返却時間になったので返却

この時点で乗るつもりだった列車には乗れないので特急課金が確定

六花亭の本店が近くにあったのでせっかくだし〜とマルセイアイスサンドを購入 当然うまい

帯広駅に向かう 豚丼を購入 インデアンってカレー屋がうまいらしいのでそこのテイクアウトも購入

特急おおぞらで新得駅まで

新得駅からは東鹿越駅まで列車代行バスに乗る 乗ってるのは自分入れて2人だけ

狩勝峠をこえる 景色めっちゃすごい

幾寅駅で地元の高校生が乗ってくる

田舎だろうとウマ娘が人気であることには変わりはなかった

東鹿越に到着

列車に乗り換えて富良野まで

富良野駅で2時間待ち ここで豚丼を食す

滝川まで行く列車に乗車

なかなか出発しない...

東鹿越からこの列車に乗り継げる列車が熊とぶつかって遅れていたらしい

結局20分遅れで出発

20分遅れで滝川に着くと普通列車で乗り継いで札幌には到達できないがなんとかしてくれるらしい

滝川に到着 特別に特急宗谷で岩見沢まで乗せてくれることになった 感謝

岩見沢で降りて普通列車に乗り換え 札幌駅へ

札幌に到着 地下鉄に乗り換えて中島公園にとっていたホテルにチェックイン

ここでインデアンを食べた 帯広のソウルフードらしい

9/17(金)

特に予定もないので遅くまで寝て出発

なんとなく札沼線を単振動

白い恋人パークへ 工場見学したいし有料入場券を購入 入場券買うと白い恋人が1枚もらえた

調べてもなんかよくわかんなかったので係員の誘導のままショー?に参加

期間限定でハロウィンのなんかについてのを見ることになった

本当に衝撃を受けた...

係員の人がソロツーリストに優しくお写真撮りましょうかって聞いてくれたので撮ってもらった

工場を見学 バウムクーヘンは作っていないらしい

ここ限定みたいに書いてあるお土産を折角だしと購入

札幌駅に戻る 寿司をたべよう

時間までミスドでゆっくりする

そろそろ電車に乗ろうって時間になる お土産として買おうと思っていたものの存在をおもいだすけど手遅れに...

札幌から南千歳へ ここから新日本海フェリーのターミナルまでのバスに乗る

浜厚真駅がターミナルの最寄りだが熊が出るとかなんとか言われているのでバスに乗ったほうがいいと思う

ターミナルに到着

フェリーへ乗船

露天風呂から出港を見届ける 就寝

9/18(土)

おはようございます

パソコンで作業 疲れたので昼寝

パソコン作業再開

下船が近づいてきたので天気を確認 そういえば本州には台風が直撃していましたね ちょうど過ぎ去ってくれましたが

ちなみに釧路とかでテレビ見てた時は朝の最低気温が4度のところがあったりとかしたからそれと比べると気候が全然違う

到着

敦賀港からバスで敦賀駅

サンダーバードに課金

京都に到着

帰ってきちゃったね

おつかれさまでした!

行程表(だいたい)

9/8

9/9

9/10

9/11

9/12

9/13

  • 石北本線 網走行 北見 7:57 - 9:04 網走
  • 釧網本線 快速しれとこ摩周号 釧路行 網走 10:24 - 13:36 釧路
  • 阿寒バス 鶴居線・幌呂線 グリーンパークつるい行 釧路駅前バスターミナル 14:45 - 15:24 釧路市湿原展望台
  • 阿寒バス 鶴居線・幌呂線 市立病院前行 釧路市湿原展望台 16:34 - 17:18 釧路駅前バスターミナル

9/14

9/15

9/16

9/17

9/18