SICP一人勉強会(第1章)

計算機プログラムの構造と解釈

計算機プログラムの構造と解釈

大学院生の時に挫折したSICPに再チャレンジ!
基本的に毎週土曜にコツコツ読み進めよう。

今日は環境構築として、DrRacketをダウンロード。昔はDrSchemeだったのだけども。

0.0 環境構築

1.1 プログラムの要素

 この章で扱うデータは数値データのみである。
 そのため以降の議論では、この章の冒頭に記載してある強力な言語の持つ三つの仕掛けはそれぞれ

  • 基本式…数値
  • 組み合わせ法…数値を組み合わせた演算
  • 抽象化法…変数と数値の対応づける

に限定される。

1.1.1 式

 ここでは基本式としての整数の評価、および演算子と引数を組み合わせた式の評価を行っている。

 ここで利用されている+や-などの演算子も式であるため、以下のように評価することが可能である。数値の場合は評価した結果として数値を返すが、演算子の場合は、procedureを返す。

> +
#<procedure:+>
> -
#<procedure:->
1.1.2 名前と環境

 1.1.2では新しく変数と環境という概念が定義されている。

 ここでは変数とはある計算対象(数・演算子など)を指し示すものの別名である、と定義している。
 defineを用いることで変数名と、その変数の評価結果の対応を決めることにより、変数名を使って計算対象(例えば数値とか演算子とか)を指し示すことができる。よって評価結果をもたない変数というものは定義できない。
 そうした変数名と、その評価結果としての計算対象の組み合わせが環境である。
  

 演算子も同様にして定義できる。以下のようにplusとして演算子+を再定義して、plusを+の代わりに利用することも可能。

> (define plus +)
> plus
#<procedure:+>
> (plus 2 3)
5

 一般的には変数を「データを格納しておくメモリ領域の識別子」として定義されることが多い。この場合、そのメモリ領域に値が格納されていなければ、変数の評価はできない。
 

Ubuntuにrootとしてログイン

一般ユーザからログインしてrootに昇格するのでなく、直接rootユーザとしてログインできるようにする設定
以下のコマンドでrootでのログインパスワードを設定する。

# passwd root

次に/etc/lightd/lightd.conf (なければapt-get install lightdでインストール) に
greeter-show-manual-login=true
を1行追加する。

RADIUS

 Remote Authentication Dial-in User Serviceの略。ネットワーク利用者の認証と利用記録を管理するシステム構成のこと。RADIUSクライアントとRADIUSサーバからなる。
 RADIUSクライアントはユーザからの接続要求を受け取り、RADIUSサーバに転送する。RADIUSサーバにてユーザの認証を行う。アクセス要求を受け付ける機能と認証を行う機能が物理的に分離されている。

タイムスタンプ

信頼される第三者機関である時刻認証局による時刻情報が含まれた電子文書。
電子文書がある時刻以前に存在したこと、およびその時刻以降改ざんされていないことを保証する。
電子署名には誰が何を記したことは保障されるが、いつという時刻の情報は含まれていないことに注意。

参考ページ

http://www.ipa.go.jp/files/000013706.pdfを参考にしました。
IPAの資料はさすがに内容がしっかりしていて、大変たすかります。

無線LANのセキュリティ

WEPとWPA、WPA2が存在する。

WEP(Wired Equivalent Privacy)

40ビットの共通鍵を使う方式と104ビットの共通鍵を使う方式があり、鄽と呼ばれる24ビットの初期化ベクトルとを組み合わせてネットワークキーとする。
RC4という暗号化アルゴリズムを利用している。
鄽がパターン化されやすいという問題点があり、通信内容を一定時間取集すれば解読される危険性がある。

WPA(Wired Protected Access)

WEPの脆弱性を補うための規格。TKIPとAESの2つの方式が存在する。

WPA2

WPAの新方式。暗号化アルゴリズムとしてAESのみを採用している。AESはハードウェアで暗号化処理を行うため高速かつ安全であるが、機器自体が対応している必要がある。