Skip to content.

kagome.lab.tkikuchi.net

Sections
Personal tools
You are here: Home » Members » tkikuchi's Home » 授業 » 情報社会と情報倫理(2006) » パスワードと暗号
Views

パスワードと暗号

Document Actions

前回の問題

  • 脆弱性 (ぜいじゃくせい)
  • 原因
    • バッファオーバーフロー
    • SQL インジェクション
    • クロスサイトスクリプティング

パスワードと暗号

  • パスワード = 合言葉
  • 「有楽町で会いましょう」
  • 「山」「川」
  • 人が横で聞いていたらばれる
  • システムに「平文」で保存してはいけない

パスワードの暗号化

  • パスワードを決める ... 暗号化して保存
  • パスワードの入力 ... 暗号化して比較

暗号化されたパスワードの例

  • $ /sw/www/bin/htpasswd -c passwd tokio
    New password:
    Re-type new password:
    Adding password for user tokio
    $ cat passwd
    tokio:gqyee65NFqv9s
    

暗号化パスワードの解析

  • tokio:gqyee65NFqv9s
  • 最初の2文字 = salt ... ランダム文字
  • 残りの11文字 = DES 暗号
  • 但し、復号は不可能(と言われている)

パスワードを当ててみる

  • ログインしてみる
  • 何度もパスワード間違いの記録が残る
  • crack を使う

自家製 crack

  • #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # crack.py
    import sys
    import crypt
    f = open("passwd")
    user, passwd = f.readline().strip().split(":")
    salt = passwd[:2]
    while 1:
        guess = raw_input("あててみる? ")
        guesscrypted = crypt.crypt(guess, salt)
        if passwd == guesscrypted:
            print "BINGO!"
            break
        else:
            print "Non, Non.",
    

DES 暗号

  • Data Encryption Standard
  • 既に標準ではない
  • DES in Wikipedia
  • 8文字ごとに暗号化
  • 鍵(Key)は8文字(=56bit)

ビット順の交換による暗号

  • #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # bit 交換関数
    def bitx(bits, key):
        outbits = []
        for k in key:
            outbits.append(bits[int(k)])
        return ''.join(outbits)
    if __name__ == '__main__':
        bits = "11100110"
        #      "01234567" を以下のように交換
        key  = "72165430"
        ciph = bitx(bits, key)
        print ciph
        deci = bitx(ciph, key)
        print deci
    
  • $ ./bitx.py
    01111001
    11100110
    

排他論理和による暗号

  • >>> a = 123456789
    >>> b = 987654321
    >>> c = a^b
    >>> c
    1032168868
    >>> c^b
    123456789
    

DES 暗号は

  • おおざっぱに言うと
  • ビット交換と排他論理和を 16 回実行

共通鍵暗号

  • AとBが同じ「鍵」を持つ
  • A:「箱」に入れて「鍵」をかける ... 暗号化
  • 「箱」を運ぶ
  • B:「鍵」で「箱」を開ける ... 復号

共通鍵暗号では

  • 「鍵」が合えばBは「箱」の送信者をAと認める
  • パスワードはこれを応用

共通鍵暗号 illustrated

公開鍵暗号

  • 2つ「鍵」を持つ。
  • 片方の「鍵」で閉じた「箱」はもう一方の「鍵」で開く
  • A:Bの「公開鍵」で暗号化
  • B:自分の「秘密鍵」で復号
  • Bの「公開鍵」は本当にBのものなんだろうか?
  • C「認証機関」が証明(署名する)

公開鍵暗号を使った署名

  • C:自分の「秘密鍵」で暗号化
  • A:Cの「公開鍵」で復号
  • 全文を暗号化するのでなく、ハッシュ関数で短くしたものを暗号化
    • ハッシュは文のうち1ビットでも違えば全く違う
    • 同じハッシュになる文が出てくる確率は非常に小さい

公開鍵暗号 illustrated

暗号・署名ツール

  • PGP ... Pretty Good Privacy
  • GPG ... GNU Privacy Guard

GPG の使い方

  • A -> B へ暗号を送る
  • B の公開鍵を入手
  • gpg --import Bの公開鍵
  • gpg -ea -r B -o text.gpg text.txt
  • text.txt ... 元の平文 | text.gpg ... 暗号文

B が受け取ったら

  • gpg text.gpg
  • 自分の秘密鍵使用のパスワードを入れる
  • text に平文ができる

GPG で暗号化されたメッセージの例

  • -----BEGIN PGP MESSAGE-----
    Version: GnuPG v1.4.4 (Darwin)
     
    hQIOA33/fYzLqW99EAgAzej9QjKyZEDy3E7Bjh9Zrb1KBmaIztHAQprC0dpVzdV1
    pq9gnYU3T1oL1I4n2NaMF7zZrndaS6frS3NCdo4dQwqvTyNj0Eo7eA3Yg0oBz1zx
    SaGw3E3DVNA1V4vaZnzfYt3RYZlWOz1kXoMP0WYjFkDcuHNPF6JmvpkWdtp/aLAI
    c8QJkn/HsOfUyu35JbXxxorl+2a83h267CRatEhQb0Xx80G1OKHytwIPOi45/9HN
    Q8p4cipjc1J9CPpokcTho0JTZVLQcTIIGiAIp0lJ3lC8b9/vZpxxFXEgykvWDfMu
    v6egbcAulU0HCidrb6SmXqjOp1TKyvn/qbHiDomCjwgAqcNlin9PSTnxz4ZLVE2f
    ZYecE7d2odA3NhoacM4nKc8LYRyHBoRVY9jh5jsFUeEW0ir3zNNsXz1RRf2TD7t8
    +f52SEbmAwsFM7WUadhfniiBsl3FIFj7zJ2VpCVGPVl8SdL0Zt15CjwpDn14N1FK
    4wbqsDgu8dNzFUeWpnXnYNGhysLXLk3n00Jp4J2ooFI84JzVnLIDjENU1r74Fefv
    TkZJYcmF1ygCNqv1h5R49vSStrHRv42VqcrZbSh4R+Ycjf+y+QmhtPQWYSUbx1Us
    1yombaFHkp+lq2IAZ8W9Wd+afudPkJJb6VVPtfIo3uPvLRddlptoagC5+ze9Jogj
    DNJeAU9a33WYj4wPLOAi7iE2bBr4a+WESdI9mZgEmywJjqL+RYwG64Zq+G6q94yi
    YnT2U1/7OjsljnwmAZRCRdpGAzrWhoeKR2sbXSwWjumSbcv1KE4/HSb262FHO6mx
    ZA==
    =E+9r
    -----END PGP MESSAGE-----
    

復号を実演

  • この暗号文は私しか読めません。
  • 読んでみせます。
  • あとで問題に出します。

HTTPS

  • SSL (Secure Socket Layer)
  • ブラウザに「認証機関」の公開鍵を持つ
  • サーバ側のBが正しいことを認める
  • 乱数で共通鍵を生成
  • Bの公開鍵で暗号化した共通鍵をサーバに送り、以後の通信を暗号化する

HTTPS(図解)

正しく認証されたサイト

SSH/SFTP/SCP

  • telnet ... パスワードが平文でネットを流れる
  • ssh ... SSL を用いてログイン
  • sftp/scp ... ファイル転送
  • この とおりです。

POP/SMTP 認証

  • メールは認証時の盗聴以外にもスパムの問題 あり
  • ISP で「外向け25番ポート遮断」
  • というわけで この とおり。

本日の問題

  • 暗号で書かれていた文を書いてください。
    • ヒント:「王様は はだか だ!」ではありません
  • その他感想など、どうぞ。
Created by tkikuchi
Last modified 2007-01-10 12:56
 

Powered by Plone

This site conforms to the following standards: