2015年12月06日

【Protocol】暗号技術の構成要素一覧

VPNの設定をしていると、暗号プロトコルの名前があれこれ出てくる。
とりあえず推奨値で設定してもいいが、なんだかすっきりしない。

IPsecやSSL/TLSで使用される構成要素の覚書。




【対称鍵暗号】
 -DES : Data Encryption Standard
 -3DES : Triple Data Encryption Standard
 -AES : Advanced Enctyption Standard (Rijndael)
  -one time pad (ストリーム暗号)

 暗号化鍵と復号化鍵が同一の暗号アルゴリズム
 処理速度が速い為、データの暗号化部に使用される。
 "one time pad"以外はブロック暗号である。(固定長に区切り暗号化していく)
 ストリーム暗号とは、ビット単位で順次暗号化していく暗号化方式を指す。
 送信者、受信者がどのように鍵を共有するかという"鍵配送問題"がある。

 ※3DESは単純に3回DESを繰り返す。
   その処理の際、鍵を幾つ使用するかによりEDE/EDE2/EDE3(それぞれ1個/2個/3個)と呼ばれる。
   EDEは Enctypt Dectypt Enctypt の略である。


【モード】
 -ECB : Electronic CodeBook mode
 -CBC : Cipher Block Chaining mode
 -CFB : Cipher-FeedBack mode
 -OFB : Output-FeedBack mode
 -CTR : CounTeR mode
 -CTS : Cipher Text Stealing mode
 -GCM : Galois/Counter mode

 固定長の単位で暗号化するブロック暗号をどのように繰り返すかを選択。
 ECBの場合、同じ平文は常に同じ暗号文になるため、安全とはいえない。
 他のモードでは、様々な方法で予測不可能な出力にしている。
 ※OFB/CTRはストリーム暗号になる。




【公開鍵暗号】
 -RSA (Rivest Shamir Adleman)
 -ElGamal方式
 -Rabin方式
 -楕円曲線暗号

 "鍵配送問題"を解決する。
 暗号化鍵(公開鍵)と復号化鍵(秘密鍵)を別にする。
 公開鍵で暗号化したものは、秘密鍵でしか復号化できない。
 公開鍵は文字通り公開し、秘密鍵のみ管理すればよくなる。
 しかし、受信者と送信者の間に悪意のある第三者が入り込む"man-in-the-middle"の危険性がある。
 そのため、 通信相手を認証する方法が必要となる。
 処理速度は対称鍵暗号と比べ遅い。



【ハイブリッド暗号システム】
 -PGP : Pretty Good Privacy
 -SSL/TLS : Secure Socket Layer / Transport Layer Security

 対称鍵暗号の鍵を公開鍵暗号で交換し、データは対称鍵暗号で暗号化する。
 公開鍵暗号は遅いが"鍵配送問題"を解決、対称鍵暗号は処理速度が速いという長所を組み合わせた方式。
 対称鍵は一度きりのセッション鍵が使用され、擬似乱数生成器から生成される。



【一方向ハッシュ関数】
 -MD4 : Message Digest
 -MD5
 -SHA-1 : Secure Hash Algorithm
  -SHA-2 (SHA-256,SHA-384,SHA-512)
  -SHA-3 (KECCAK)
  -RIPEMD-160

  正真性(integrity)を確認する。
 あるビット列の入力から、固定長のビット列を出力する。
 入力が1bitでも違えば、全く異なるビット列が出力される。
 一方向性を持っている為、元のビット列をハッシュ値より導くのは困難。
 また、同じハッシュ値を持つメッセージを見つけ出すことも困難。
 ハッシュ値を確認することで、データが改ざんされていないか確認することが出来る。



【メッセージ認証コード】
 -HMAC : Hash Message Authentication Code

  通信相手の認証を行う。
 対称鍵暗号と一方向ハッシュ関数を組み合わせ、正真性と認証の確認を行う。
 対称鍵を相手が知っているということは、正しい相手と通信していることを意味する。
 暗号化とハッシュ値の計算のどちらを先に行うかは、方式により異なる。
 しかし、これでは"第三者への証明"と"否認防止"ができない。
 ※相手がいなくても全て自分ひとりで処理ができてしまうことに起因する



【デジタル署名】
 -RSA方式
 -DSA : Digital Signature Algorithm
  -ECDSA : Elliptic Curve Digital Signature Algorithm
  -Rabin方式

 公開鍵暗号の秘密鍵と公開鍵の用途を逆にして実現。
 秘密鍵で暗号化し、公開鍵で復号化できることを確認する。
 秘密鍵は公開されていない為、本人であるということが確認できる。
 ハッシュ値を暗号化することで、正真性も合わせて確認することが出来る。
 しかし、その公開鍵が本物なのかどうかは確認できない。



【証明書】
 -X.509(規格)

 公開鍵を認証局(certificate authority)に証明してもらう。
 公開鍵をCAの秘密鍵で暗号化し、証明書を作成。
 利用者はCAの公開鍵で証明書を復号化することで確認することが出来る。



かなり大雑把に書いた。
この他にも対称鍵を交換するための"Diffie-Hellman鍵交換"などもあるが
ちょっともう満腹なので。以上。

posted by   at 00:47| Comment(0) | Protocol | このブログの読者になる | 更新情報をチェックする

2015年11月18日

【Network】 MAC Masquaeradeの設定はなにをしているのか。

BIG-IPなどの冗長構成を組む際に
フローティングIPに紐づけるMACアドレスを手動で設定することがある。

これを、MACマスカレードと呼ぶ。
MAC変装、という意味合いになる。
ちなみにグーグル翻訳では、"仮面舞踏会"が第一候補にあがる…

フローティングIPに所属する物理ポートをどれか選び
そのMACアドレスの特定の位置にあるビットを反転させる。

これを "G/Lビット" と呼ぶのだが、これは後程……


その前に、簡単にMACアドレスの構造を確認すると

全体で48bitのアドレスの内
24bit : OUI = Organizationally Unique Identifier / 製造ベンダーを指す
24bit : 固有のインターフェイスアドレス

製造ベンダーが一意なインターフェイスIDを割り振るので、
全世界で重複しないMACアドレスが割り当てられる。

管理されているから、重複しないようになっている、というところが重要な点になる。

表記方法は、仮に全てアルファベットに置き換えると
AB:CD:EF:GH:IJ:KL
|OUI------|NIC-----|

アルファベットがそれぞれ4bit
4bit × 2 × 4 = 48bit になる。

それぞれのアルファベットが16進数の数値と置き換わる構造だ。

そして先ほどの"G/Lビット"がどこにあるかというと………
A[B]:CD:EF:GH:IJ:KL


Bの位置にあたり、さらにその中の
111111[1]1


下から二桁目のビットがそれにあたる。

そしてもう一つ大事なビットが同じくBのブロックに存在している。
1111111[1]

末尾のビット。これを"I/Gビット"と呼ぶ。



それではMACマスカレードの際に設定する"G/Lビット"と"I/Gビット"とはなにか。


"G/Lビット"とは
Global / Local の略であり
ベンダー固有の一意なMACアドレスか、そうじゃないかを示している。
1:ローカルアドレス
0:グローバルアドレス


"I/Gビット"とは
Individual / Group の略であり
そのMACアドレスがユニキャストかマルチキャストかを示している。
0:ユニキャストアドレス
1:マルチキャストアドレス


MACアドレスは一意というイメージが強いが
NICは、ブロードキャストアドレスやマルチキャストアドレスなど
複数の関連するMACアドレスを聴いている。

そして自分に関連のないMACアドレスの場合に
処理をCPUまで上げずに破棄するようになっている。

ブロードキャストアドレスは、特殊なマルチキャストという位置づけだが、とてもわかりやすい。
111111[11]:11111111:11111111:11111111:11111111:11111111


ブロードキャストのMACアドレスは全て"1"になるが
この場合の解釈としては
ローカルアドレスでマルチキャスト、ということになる。
(ローカル=一意ではない=ベンダーが割り振ったものではない)



では、なぜそんな半端な位置にそんな大事なビットがあるのか
ちょっと不審に思うかもしれない。

しかし、それにもちゃんとした理由がある。

MACアドレスをさらに簡潔に8bit単位で表現するとこうなる。
A:B:C:D:E:F

物理層にフレームとして送信される際、吐き出される順番は、実はこの通りではない。
>>A:B:C:D:E:F

と、一見そのまんまに見えるが
仮にAを以下のようなビット配列だとすると
10101100
送信される際は………
00110101
と、お尻から送信されるのだ。
各ブロック、同じ送信の仕方をする。


送信先MACアドレスは、受信時、最初に読み込まれる個所である。
そうすると真っ先に読み込まれるのは
"I/Gビット" "G/Lビット" の順番になる。

そう考えると、あの位置に重要な二つのビットが配置されていることに納得がいく。


話はかなり逸れてしまったが……

MACマスカレードがしていることは
"G/Lビット"の反転。

それは物理MACアドレス、つまりグローバルビット(0)を反転させるということ。
それは一意ではない、ローカルアドレス(1)を設定することになる。

MACアドレスが重複するという事態は、現実問題としてまず発生しないことだが
ローカルビットを立てることにより、それを確実なものにすることが出来る。

ということなのだと、思いました。

posted by   at 00:50| Comment(0) | Network | このブログの読者になる | 更新情報をチェックする

2015年11月15日

【Web】 今現在のインターネットユーザー数がわかるサイト

小学生の頃、学校に古びたパソコンが置いてあった。
備え付けのフロッピーディスクには、鳥の鳴き声を鑑賞するアプリケーションが入っていた。

初めて触れたパソコンは、ネットワークに接続されていなかった

すっかり当たり前になってしまったが
今のネット環境というのは、とてつもなく恵まれているように思う。


上記サイトは、今のインターネットユーザー数を確認できる。

だいたい32億人。
全世界人口の半分に迫っている。

これだけの人が動画やら音楽やら、
大容量コンテンツを楽しみ、膨大なトラフィックが発生させている

そしてそれを物理的なインフラで支えているというのは
とてつないLANスパゲティ化のはず。

他にも、グーグルの検索回数やら
存在しているWEBサイトの総数やら、見ることができる。
posted by   at 00:02| Comment(0) | Web | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。