SSHとは?
はじめに
sshはたびたび使ったことあるのだけども、「そもそもsshって何々です?」という感じなので調べて、ちゃんと学んでから使ってみてるよ。
Unixというより、シェルなのか、いつも頼りにしてる参考書に該当項目がなかったので、ネットの海をソースに頼りに書くよー。
セキュリティ屋のお隣さんに聞いたほうが良い気もするけどね!
えすえすえいちって?
Secure SHellの略。
wikipediaによると、
Secure Shell(セキュアシェル、SSH)は、暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコル。パスワードなどの認証部分を含むすべてのネットワーク上の通信が暗号化される。
ふむ。やりとりするデータを暗号化してくれるから、盗聴とかの心配がなくなって良い!ということらしい。
Telnet、rlogin、ftpは暗号化せずにデータを渡すんだから、
そりゃ、皆、暗号化してやりとりできるsshを使うよね。
公開鍵認証
SSHは、この公開鍵認証という仕組みを採用している。
これは大学の頃セキュリティの講義でさんざん聞いたからちょっと分かる。
鍵を2つ用意して、1つを暗号化するために使って(公開鍵)、もう1つを暗号化したものを復号するために使う(秘密鍵)。
サーバとクライアントだと、サーバはクライアントに公開鍵を渡して、クライアントはサーバに公開鍵を渡す。
こうすれば、互いにやりとりするときに、受け取った公開鍵で暗号化したものを相手に渡せば周りからは見れなくなる。
秘密鍵を渡しちゃ、ダメ、絶対。
以下のサイトを参考にしました。
第12回 SSHについて - Linux入門講座
プロトコル
SSH1とSSH2がある。
ただ、別に2になったからといって上位互換ではない、という点に注意が必要とのこと。
どっちも公開鍵認証を使うのだけれども、まず、その暗号化方式が異なる。というか異なっていた。
SSH1の暗号化方式は、RSA。SSH2は(元)DSA。
なんで1と2に分けられたかっていうと、RSAに特許問題があって、それを回避するためにDSA方式を採用したSSH2が生まれた。
その特許が2000年9月に失効しているため、SSH2でもRSAで暗号化してやりとりができるようになった。
特許が失効して互いに同じ暗号化方式を使うならもう一つでいいじゃん、と思うけど。
データ改竄をチェックするためのアルゴリズムがSSH2のほうが強力な分、2を推奨、といった現代の流れ。
SSH1はCRC、SSH2はHMACアルゴリズムを採用している。
以下のサイトを参考にしました。
SSHプロトコルの種類(SSH1とSSH2)
速さは?
すぐ疑問に思ったのが、暗号化してやりとりするってことは転送速度が遅くなるのでは、という点。
調べたらいい感じの記事が見つかった。
【Linux小技】 scp(ssh)での暗号化方式の違いによる転送速度ベンチマーク 「知ったかブログ」
によると、ftpとsshでざっと50MB/sぐらい差がでるみたい。
これに起因しているのがCPUの処理速度で、暗号と復号にがしがしCPU使うせいで転送速度が落ちる、とのこと。
ただ、採用する暗号化方式に寄るらしく、
arcfourという手法だとそんなに下がらない。
AESだと半分くらいに落ちるらしい。(それでも50MB/s出ているけども)
速度と暗号強度との兼ね合いで好きなのを採用しよう!といった感じ。
SFTP? SCP?
頭のSがSecureのSなのは分かるけど、こいつらなんなんです?
と思って調べたら、SSH、SFTP、SCPは同じレイヤーにいるのではなく、SFTPとSCPはSSHを利用した安全なファイル転送方式のことを指すらしい。
分かりやすくまとめているサイトさんがあったので、そこから引用する感じでまとめとく。
SCPとSFTPの違い - たこにありがちなこと。
SCPは、
SFTPは、
SSHサーバからSFTPサーバを起動して、SFTPのコマンドを用いてファイル転送を行う。
違いを表にざっとまとめると。
項目 | SCP | SFTP |
パケット確認 | しない | する |
信頼性 | 低い | 高い |
速度 | 速い | 遅い |
4GB以上の転送 | できない | できる |
転送中断からの再開 | できない | できる |
機能面 | シンプル | 高機能 |
こんな感じ。SFTPのほうが転送速度も遅いけど色々できるから使うなら俺はこっちにするね。
おわりに
なんとなく分かった気がする。
何がともあれ、セキュアなの使おうぜ!って感じだから俺も使う。
使ってみて感じたことがあったらまた記事を書こうと思う。
RSAやDSAやarcfourやAESなどの暗号化方式はおいおい調べて、おいおいお隣さんに確認を取ります。
というか教えてもらいます。