2要素認証と2段階認証の違い
パスワード認証だけで認証を行うのは危険だということで、2要素認証や2段階認証というのがはやりつつあるように感じます。
そこは良いのですが、このふたつの言葉がたびたび同義語として使われてるのが見受けられます。
そこで、2要素認証と2段階認証の違いについて解説したいと思います。
以前にも解説したような気がしますが、再度認証について解説します。
認証は知識情報(SYK;Something You Know)、所持情報(SYH;Something You Have)、生体情報(SYA;Something You Are)のどれかを用いて認証を行います。
SYK・SYH・SYAのことを認証の3要素とも言われます。
各情報には一長一短あるため、これらを補うために2要素認証が出てきました。
知識情報なら忘却や漏えい、所持情報なら紛失や盗難といった問題が存在するため、これらの要素を組み合わせてお互いの問題点を補完しあうというのが2要素認証です。
つまり、知識情報と所持情報、所持情報と生体情報のように各要素を組み合わせて行われる認証のことを2要素認証と言い、パスワード(知識情報)をふたつ求めるような認証のことは2要素認証とは言いません。
それに対して2段階認証は認証を2回に分けて行うことを言います。
パスワード認証を実施した後に再度パスワードを求めるような認証は2段階認証と言われます。
2要素認証と違い、同じ要素を組み合わせた認証も2段階認証と言われます。
ただし、認証を1回しか行わない(一度に2種類のパスワードを求めるような)認証の場合は2段階認証とは言いません。
よくごちゃまぜにして考えられがちですが、ようはSYK・SYH・SYAのどれかを組み合わせた認証を2要素認証、2回に分けて認証を行うことを2段階認証と言います。
ただ、最近では同一要素を組み合わせた認証のことも2要素認証と言われたりするので、深く考えないことが重要かもしれません。
エポスゴールドカードのインビテーション
エポスカードからゴールドカードへの招待状(インビテーション)が届きました。
黒い封筒に金色で「エポスゴールドカードへのご招待」と書かれておりました。
特に大きく「本状お届けのお客さまは年会費永年無料」と書かれており、年会費無料が主張されております。
中身は宛名、案内状、ゴールドカードの紹介の三つ入っておりました。
申し込み自体はエポスNetにログインして申し込むようになってました。
「ログインすると「インビテーション」ページが開きます」となっていますが、実際はログインした後にページ内にあるゴールドカードの申し込みをクリックしないとインビテーションページにはいけませんでした。
申し込み後、1週間くらいでゴールドカードが届きました!
おかげ様でお財布がキラキラになっております。
これからゴールドカードの取得を目指している方の為に簡単にカードを作ってからの利用実績について記載しておきます。
カード作ってからちょうど1年で50万円達成、インビテーションが届いております。
カードを作った時は教師という肩書で作成
ゴールドカードの申し込み時に職業の確認があるのですが、すでに退職後だったので修正して申し込みましたが、ゴールドカードの審査には通過したようです。
他の方の情報を見ていても、インビテーションに勤続年数は関係なさそうです。
今回の条件として以下の二つが考えられます。
・カード利用1年以上
・年間決算50万円以上
参考になれば幸いです。
追記
年齢を書き忘れていました。。
10代です!とか言うと怒られそうですね…ぎりぎりお酒飲めるくらいの年齢です。
認証とは?
セキュリティの入り口とも言われる認証について。
認証を簡単に言うと、複数人の中から1人を特定することです。
特定するための行為そのものを認証と言ったりします。
認証を行う為には、まず、複数人の中から1人を識別する必要があります。
そして、識別された1人が本当に特定したい本人であるのか検証することで認証を行います。
よく用いられている認証としてIDとパスワードを用いた認証(パスワード認証)を例に考えてみます。
まず、インターネットを利用する人の中からIDで1人を識別します。そして、識別された1人が本当にIDの人なのかをパスワードで検証します。
IDに対応したパスワードが一致すれば識別された人がIDの人だと言える=認証が行われたことになります。
ここで、認証には識別と検証という二つの側面があることが言えます。
(識別のことを個人識別、検証のことを本人認証とも言われる)
識別に用いられる情報(パスワード認証でいうID)は識別を行いたいだけなので、他者と重複しない性質(唯一性)が求められる。また、認証を行う度に変わると不便になるので、ある程度変わらない性質(不変性)が求められます。
検証に用いられる情報(パスワード認証でいうパスワード)は、本人しか持ち合わせない、知りえないような固有情報である必要があります。
一般的に認証に用いられている固有情報には、生体情報、所持情報、知識情報があります。(位置情報が加えられる場合もありますが…)
認証で一番注意しないといけないのは、認証された人が必ずしも特定したい人であるとは限らないことです。
パスワード認証で考えてみると、IDとパスワードを知っていれば誰でもその人になりすまされて認証されてしまいます。
認証された人が必ずしも特定したい人とは限りません。
法律とは?
法律を学ぶとき、いつも曖昧にしか教えてもらっていない!という経験はありませんか?
学校では著作権等の法律が出てきますが、具体的な事例を出して、それが違法か合法かを聞いても答えてもらえないということはありませんでしたか??
それは法律の特性から答えられないからなのです。
そもそも法律って何でしょう?
規律や規則、秩序、約束、ルールといった答えが返ってきそうです。
その通りではあるのですが、こういった決まり事には様々な側面があるのです。
それが正しいのか正しくないのか(合法か違法か)というのを単純に判断するのは難しいのです。
たとえば人を殺してしまった場合=殺人となるのでしょうか?
階段でうっかり足を滑らせてたまたま前にいた人を押し倒してしまった。その結果、相手が階段から落ちて死んでしまった場合でも殺人罪になるでしょうか。
喧嘩している相手を殴り倒してしまった。倒れた相手はうちどころが悪く死んでしまった場合でも殺人罪になるでしょうか。
実際は前者は過失致死罪(刑法210条)、後者は傷害致死罪(刑法205条)にあたります。
人を殺しても殺人罪(刑法199条)にならないケースで一般的に知られているのは正当防衛(刑法36条)があります。
こうなると、人を殺した場合=殺人になるとは言いきれなくなりますね。
法律を例えるとするなら「説得」や「武器」が適切ではないかと考えます。
法律を知っていればそれが武器となる。その武器を使って戦いを繰り広げることによって自分を優位な立場にする。
相手を説得させるためのものが法律
つまり、こういった場合にどうなるのか、違法なのか合法なのかは法律の解釈で自分に優位な説得材料を持ってくれば良いのです。
たとえその行為が違法だったとしても、その法律自体が間違いであることを証明すれば良いのです(刑法200条が削除された理由もそれですね)。
法律はケースバイケース
その時々によって裁判という場で法律という武器を用いて優位になるように闘っているのです。
法律を学ぶ場合は、答えありきではなく、自分にとって都合の良い答えを導き出すにはどうしたら良いのかを考えると勉強しやすくなるのではないでしょうか。
DVDメディアからソフトをインストール(CentOS 6.5)
今回はCentOS6.5を用いてインストールメディアからソフトウェアパッケージをインストールする方法を書きます。今回はGUI環境での実施を想定してみます。
CentOSはパッケージ管理としてyumを用いているため、yumをオフラインで使用する方法について紹介します。(yumの使い方に関しては特に記述しませんので注意してください。)
まずはCentOSを立ち上げてCentOSのインストールディスクをドライブにセットします。
OSが起動したらCUI操作で進めていきます。
メディアがどこにマウントされているか確認します。
(コマンド:”maunt”)
これを実行するとマウント状況が出てきます。
この中に”/dev/sc0 on ~”ではじまるやつがあると思うのでその後に書いてある場所を確認してください。
(ちなみに”/dev/sc0”ではなく”/dev/cdrom”だったりもします)
GUI環境で実行している人は標準だと”/dev/sc0 on /media/CentOS_6.5_Final type iso9660 ~”となっているはずです。
必要なのは”/media/CentOS_6.5_Final”の部分なので、これを覚えておいてください。
これがメディアのマウント先になります。
マウントされていない人は・・・とりあえず気にせずに読み進めてください。
次にyumの設定を確認してみます。
yumをメディアから実行するのに必要な設定ファイルの場所は↓
/etc/yum.repos.d/CentOS-Media.repo
これをエディタで開きます
(コマンド:”vi /etc/yum.repos.d/CentOS-Media.repo”)
開くと#(コメントアウト)から始まる行がいっぱい出てくると思います。
最後の#のところに”# yum --disablerepo=\* --enablerepo=c6-media [command]”があることを確認してください(OSや設定によって微妙に変わる可能性があります)
このコマンドを利用すればメディアからyumを実行することが出来ます。しかし、その後の設定が適正かどうかが少し問題となります。
というのも、CUI環境の人は問題ないでしょうが、GUIの場合は少し修正しないと使えないのです。
”[c6-media]”より下側に書かれている中に”baseurl=~”ではじまるやつを確認してみてください。
~の部分が”file:///media/CentOS/”になってませんか?
この場所にメディアがマウントされていればいいのですが、標準では先ほど確認した”/media/CentOS_6.5_Final”なのでこの部分を修正する必要があります。
vimで開いている状態なら書き換え可能なのでI(アイ)キーを押して挿入モードに入り編集します。
”baseurl=file:///media/CentOS/”を”baseurl=/media/CentOS_6.5_Final”に書き換えたらESCキーを押し”:wq”で保存して終了します。
後は”yum”の後にオプションとして”--disablerepo=\* --enablerepo=c6-media”を書いて後はいつもどおりに実行するだけです。
たとえばemacsをインストールする場合は↓
”yum --disablerepo=\* --enablerepo=c6-media -ivh emacs-*”でメディアからemacsをインストールすることが出来ます。
毎回オプションを記載するのが面倒だという人はaliasや.bashrcをつかって別名設定をしてみてください。
とても適当な解説になってしまい申し訳ありません。
ところどころわかっていることを前提として書いてました。。。
わからない人用にとりあえず簡単に実行できるコマンドを下に列挙していきます。
この方法を使えば上の設定などはすべて必要ありません。(最初からこれで良いのでは・・・)
ちなみに、この設定は管理者権限でないと出来ません。
一度だけ実行する必要あり
mkdir /media/CentOS
再起動の度に実行する必要あり(自動マウント設定を行っていれば必要なし)
mount /dev/sr0 /media/CentOS
あとはyumを使うたびに”--disablerepo=\* --enablerepo=c6-media”オプションを追記してyumを実行すればメディアからパッケージをインストールが出来るようになります。
Javaにおけるnewの意味
Javaでプログラミングしているとちょくちょく”new”が出てきます。
この”new”は何を表すのか疑問に思った事はありませんか?
”new”が何を表すのか一言で言うとメモリ内に変数(コンストラクタ)を扱うための領域(オブジェクト領域)を作成します。
配列の宣言を例に説明してみます。
String array = new String[3];
(”String”をクラス名、”array”を変数(オブジェクト変数)、”String[3]”をコンストラクタ名と言います)
”String array”で文字列型変数arrayを宣言しています。
この時、メモリ内にはarrayを扱う領域が確保されます。しかし、確保された領域内にはarrayは配列全体を指す情報(参照情報)があるだけで、実データはありません。
そのため、イコールの後にある”new String[3]”で実データを扱うための領域を新たにメモリ内に確保します。
そして新たに確保した領域の場所をイコールでarray内に代入することで、arrayが配列として扱えるようになります。
実際に使用する場合でもarrayではなくarray[0]やarray[1]のように変数名の後に[数字]をつけて使用しますよね。
arrayという変数には実データがどこにあるのかという参照情報しか持っていないため、arrayとだけしても配列内のどこのデータのことなのかわからないから変数名の後にでどの場所にある情報かを指定するのです。これによってようやく場所を認識することができ、配列を扱うことができるのです。
ちなみに、”new”の概念はC言語をやったことのある人でしたらポインタと考え方は同じです。
returnでのインクリメント演算子・デクリメント演算子
”i++”というようなインクリメント演算子や”i--”といったデクリメント演算子をreturnで返す場合には注意が必要です。
この”++”は変数の前に記述する場合と、後に記述する2種類の記述方法があります。
前後のどちらに記述するかによって動作にも違いがあります。
前に書くと処理の開始時に変数+1された状態で処理が実行され、後に書くと処理が終了した後に変数+1されます。
このインクリメント演算子・デクリメント演算子をreturnで返す場合、前後を間違えると適切な値が返されないことになります。
わかりやすく書き直してみます。
例1:”return ++i;”を書きなおすと
i = i + 1;
return i;
例2:”return i++;”を書きなおすと
return i;
i = i + 1;
上のような違いになります。
例1だと変数+1した値が返されるのに対して例2では変数の値が返された後に変数+1されています。
インクリメント演算子やデクリメント演算子を用いる場合にたまーにこういったミスで適正な値が返ってこないということがありますので、ご注意ください。