ねこものがたり

いちにちいっぽ

SSHとかSSLとか

SSH

SSH= Secure Shell

セキュアなシェル。 シェルはOSとサーバをつなぐ受付嬢的な役割だと先日読んだけれど、セキュリティーバッチリな状態にしておくことで安全な操作が可能になるという事のよう。

公開鍵暗号(Public-key cryptography)秘密鍵暗号(secret key cryptosystem)を組み合わせることで通信経路もOSとサーバを行き来する情報や処理結果も全部暗号化してしまう。

SSL

SSL(secure sockets layer)というプロトコル

プロトコル:コンピューター同士が通信をする際の手順や規約などの約束事

SSLは安全な通信に関する約束事。

ssl通信してる時はアドレス欄に“https://~”と表示される。

アプリケーションとTCPの間で動いている。

暗号化方式

方式 内容 特徴
共通鍵暗号 暗号化と復号に同じ鍵を使う 通信が軽いが安全性は低い
公開鍵暗号 暗号化した鍵(公開鍵)とペアの鍵(秘密鍵)でしか復号できない 通信は重いが安全性が高い

クライエントとサーバーのやりとり

前準備

  1. クライエントがサーバーにSSL通信を要求する
  2. サーバーからサーバー証明書と公開鍵がクライエントに返ってくる。

<クライエント>公開鍵がある(暗号化できる)

<サーバー>秘密鍵がある(復号できる)

  1. クライエントが共通鍵を暗号化してサーバーに送る

情報のやりとり

  • クライエントとサーバー間は共通鍵で暗号化した情報を送受信する

共通鍵を秘密鍵暗号方式で共有することで、共通鍵暗号方式で高速かつ安全な通信が可能になる

TLS

SSLを専門家を交えてよりセキュリティ強化を目指して開発されたのがTLS(Transport Layer Security)らしい。

参考にしたブログ

プロトコル(プロトコル)とは - コトバンク

TPCベンチマーク基礎講座 | 日経 xTECH(クロステック)

aptとは何か

「〜とは何か」シリーズができそう。

aptについてまとめ。

aptの説明

wikiによると

apt = Advanced Packaging Tool
Debian用に開発されたパッケージ管理システム

読み方は「アプト」

wikiの続き

dpkgのフロントエンドとして動作するように設計されたが、現在はRPMに対応するように移植されたapt-rpmもある。コンパイル済みのソフトウェアを管理する機能に加え、ソースコードからソフトウェアをコンパイルする際の依存関係を解決する機能も備えている。

なるほど分からん。

説明の説明(前半)

パッケージ管理システム

OSというひとつの環境で、各種のソフトウェアの導入と削除、そしてソフトウェア同士やライブラリとの依存関係を管理するシステム

つまり 「Debian用に開発されたパッケージ管理システム」 はDebian上でソフトウェア周りの面倒ごとを簡単に管理できるように作ってある機能、ということか。

説明の説明(後半)

dpkg

Debianのパッケージ管理システムの基礎となるソフトウェアである

読み方は「ディーピーケージー」

dpkgは低水準ツールで、複雑なことをしたい時にはaptの方が良いよう。

フロントエンド

ユーザーなどと直接やり取りをする要素のことをフロントエンド、フロントエンドの入力データや指示をもとに、処理を行って結果を出力したり、記録媒体に保存したりする処理をバックエンドといいます

aptは「dpkgのフロントエンドとして動作するように設計された」とは・・・ パッケージを管理するための操作についてユーザーに直接関わるということ。 ユーザーはdpkgを直に実行するのではなくてaptを通して実行している。ということはdpkgはバックエンドということかな。

なぜdpkgよりもaptの方が複雑な処理に向いているのかというと、パッケージ間の依存関係などを認知して、ユーザーが欲しいと思うパッケージの周辺も一括でいい感じにしてくれるからということらしい。

パッケージ間の関係性

関係 説明
依存 パッケージを導入するのに欠かすことのでないパッケージ
推奨 無くてもよいが、プログラムの機能を利用するために通常は導入するパッケージ
提案 無くてもよいが、導入することによってプログラムの機能を向上させるパッケージ
衝突 パッケージを導入することで、同一の機能を有するなどの理由で削除されるパッケージ

もしもaptを使わずに直接dpkgを実行するのならば、この関係性を自分で調べて、追加したり削除したりしないといけない。考えただけで面倒そう。

RPM

パッケージには実行形式とそうでないものの2つあるらしい。 RPM形式パッケージは実行形式ではないもののうちの1つ。 aptは通常deb形式パッケージ(これも実行形式ではない)を扱う模様。

コンパイル

コンピュータ・プログラミング言語の処理系(言語処理系)の一種で、高水準言語によるソースコードから、機械語に(あるいは、元のプログラムよりも低い水準のコードに)変換すること。そのためのプログラムをコンパイラという。

英和辞書によると compile = 編集する compiler = 編集者

つまり通訳みたいな? OSに「異国の言葉でスッゲーむすがしく書いてあったからあんたにわかるようにしてやったZE」みたいなことだろうか。(違うかもしれない)

以上をもとに 「dpkgのフロントエンドとして動作するように設計されたが、現在はRPMに対応するように移植されたapt-rpmもある。コンパイル済みのソフトウェアを管理する機能に加え、ソースコードからソフトウェアをコンパイルする際の依存関係を解決する機能も備えている。」を読むとなんとなくわかる気がする!

調べ切らなかったこと

ツールの水準(高水準・低水準)とは何だろう。 なんとなくイメージはできるけど、何かヒエラルキーのような水準を定義したものがあったりするんだろうか・・・?

参考に読んだもの

APT - Wikipedia

コンパイル(コンパイル)とは - コトバンク

dpkg - Wikipedia

今さら聞けない!? 「フロントエンド」と「バックエンド」 - ITips(アイティップス)|転職@type