SyuchiNikuRingの備忘録

お勉強したことをまとめておく場所。中の人の理解や感覚で書いているから不正確なことも多いかも。

Classification of Viruses!

やっほー。前回にTelnetなどに関してまとめますと言いましたが、例によって今回もやりません。後日やります。これはマジ。
今回はウイルスの分類について勉強したことをまとめます。レッツゴー。

  • Polymorphic Viruses

アンチウイルスソフトに検出されないように、感染するたびに新たな暗号解読ルーティンを生成するウイルス。

  • Stealth Viruses

感染したことを検知されないように、victimのコンピュータが正常であるように偽装するウイルス。

  • Slow Viruses

修正時に変更した又はコピーしたファイルにのみ感染するウイルス。オリジナルファイルに影響しないので検出が困難です。

  • Retro Viruses

アンチウイルスソフトの機能を停止させてから感染し、アンチウイルスソフトの動作(設定)を変更するウイルス。 凶悪ですね…

  • Multipartite Viruses

ブートセクターと実行可能ファイルに同時感染するウイルス。ブートセクタに感染するのでシステムの制御を奪われます。

  • Armored Viruses

Armoredとある時点でだいぶやばそうなニオイがしますね。このウイルスはアンチウイルスソフトに自身の位置を偽装します。そのため、追跡やリバースエンジニアリングが困難になります。

  • Companion Viruses

このウイルスは実行可能ファイル用にCompanion fileとしてCOMファイルを作成します。COMファイルは実行ファイルに優先することを利用したものです。

  • Phage Viruses

リライトコードによりプログラムの削除や破壊を行うウイルスです。
自分のDNAを大腸菌に感染させて増殖する、理科でおなじみT2ファージをイメージするといいかもしれません。

  • Revisiting Viruses

メモリ内で自身を複製し、TCP/IP Protocolを用いて他のコンピュータに自身を複製して増殖します。ワームですね。

今回はここまで!
ウイルスには気を付けましょう。

Spam対策 from テクニカルな観点

やっほー。前回のエントリでTelnetなどに関してまとめるなどと言いましたが、量が多いのでまた今度にします。
今回はライトな感じでSpam対策に関してテクニカルな観点からまとめます。(勉強したての知識を吐き出したいだけです。)
Spamメールが最近よく来るのでタイムリーだったりします。なんなんでしょうね。来る日はどかっと来るのですが、大人しい日は一通も来ません。送信者は完全週休二日なのでしょうかね?

そんなことはさておき本題にレッツゴー。

  • SMTP Authentication

SASL(Simple Authetication and Security Layer)認証のロジックを利用したuser認証です。メールの送信時にuser名とパスワードを要求します。

送信前に指定されたPOP3サーバにアクセスして行うuser認証でSMTPの使用を許可します。認証されなければSMTPの使用はできませんのでメールの送信はできません。

  • Sender Policy Frame Work

特定のドメインのメールを転送可能なサーバのIPアドレスをリスト化しておき、そのドメインに関係しない、送信元を偽装したメールが転送されてきたときには自動で受け取り拒否ができる転送元メールサーバの認証です。

  • Domain Key

送信側のSMTPサーバでデジタル署名をして、受信側のサーバで検証する認証です。

今回は以上です。ライトでしょ。
勉強していて、SMTP AuthenticationとPbSは「送らせない」ようにするものに思えましたね。
後半2つは受信者側の防衛手段ですね。印象的に。

TLS/SSLのお話。

やっほー。前回のエントリで書いた通り、今回はTLS/SSLについて勉強したことをまとめます。

SSL(Secure Socket Layer)とは?
Socketとあることから通信に関係するものであることは何となくわかります。そしてSecureとありますから、通信を安全に行うための何かであろうという予想はつきますね。
SSLTCPの上位ProtocolとしてTCP Socketインターフェイスとアプリケーションの間を構成し、authenticity/confidentiality/integrity/non-repudiationの機能を提供します。またUDPをサポートしません。

  • integrityを実現する暗号方式

message authentication code HMACを使用。
SHA-384/256,SHA-1,MD5が使えます。

  • confidentialityを実現する暗号方式

symmetric key encryptionを使用。
AES/Camellia/IDEA/RC4/RC"/DES3が使えます(versionによります)。

  • non-repudiationを実現する暗号方式(Key Exchangeとdigital signatureのための暗号方式)

TLS/SSLを用いたmessageの暗号化用のKey ExchangeはDH,ECDH,ECDHEなど。
Digital SignatureはRSA, DSA,ECDSAなど。
PSKを用いる方式も存在します。

暗号方式に関してまとめましたが、実際にTLS/SSLで選択される暗号方式の組合せは、clientとserverとの通信で決まります。

TLS/SSL脆弱性に関して
2014年2月に発見されたheartbleedバグはOpenSSLの特定バージョンに存在します。このバグは、攻撃者がいつでもどこでも何度でも痕跡を残さずにサーバ内のメモリからデータを読み出すことを可能にします。脆弱性はCVE2014-0160,CVE2013-0169,CVE2013-2566です。特に,CVE2013-0169はOpenSSLなどでTLS1.1又は1.2をブロック暗号モードで使うとLucky Thirteen攻撃*を受けうるもので、,CVE2013-2566はTLS/SSL通信にRC4を使うとコネクションから平文を得られるというものです。
[Lucky Thirteen攻撃]
攻撃者がリモートから端数が出るパケットを投げて、TLSがブロック長形成のためにパディング処理を行っているときのメッセージ認証コードの値の計算時間差をタイミング攻撃で統計的に解析して平文回復攻撃などを行うこと。

ここからはProtocolのお話になります。

  • FTP(File Transfer Protocol)

そのままですね。ファイル転送用のProtocolとプログラムです。
FTPの通信は制御用(TCP21番)とデータ転送用です。

◎Active Mode
データ転送portはTCP20番。clientがデータ転送用にオープンし待機するportをserverに通知。serverはTCP20番を送信元として通知されたclinet portに対してデータ転送用のTCPコネクションを3 way handshakeで確立します。
FTP Clientがファイアウォール内の場合】
FTP Serverからの接続要求は拒否される。当たり前ですね。
ファイアウォールを通過するためには、ServerからClientへの【ソースPort=TCP20番、宛先Port=TCP任意】という着信パケットを通過させるようにファイアウォールを設定しなければなりません。
しかしこれは脆弱な設定です。ではどうするのか。もう一つのModeを使います。

◎Passive Mode
Clientがアクセスするときにpassiveであることとデータportを通知して、serverが自身のデータ転送port番号を通知します。その後、clientからserverにデータ転送用のTCPコネクションを3 way handshakeで確立します。clientからinternetの流れなので、脆弱な設定をすることなくファイアウォールFTPパケットを通過せることができます。

SSLを用いてFTP serverのauthenticationと通信の暗号化を行います。デフォルトのportはTCP990番。暗号化ModeにはImplicitとExplicitの2種類あります。
◎Implicit
FTPS Serverにclientが接続するとTLS/SSL通信を開始します。確かに黙示的ですね。
◎Explicit
clientが認証コマンドを実行してTLS/SSL protocolの選択を行います。コマンドを実行しなければFTPに接続します。確かに明示的ですね。

ではFTPのセキュリティはどうなっているのでしょうか。
FTPの認証は、誰でもアクセス可能な匿名認証とuser-nameとpasswordが要求される基本認証があります。基本認証のuser-nameとpasswordは暗号化されずプレーンな状態でネットワークを流れます。(‼)

  • TFTP(Trivial FTP)

これはUDPを用いたconnection-less Modeで動作します。接続時の認証はありません。デフォルトのportはUDP69番です。Protocolが単純なのでアプリのサイズを小型化でき、ネットワーク機器やdisk-lessのコンピュータなどのROMにアプリを搭載可能で、シスコのルータなどに利用されています。

今回はいったんここまで。次回はTelnetなどに関してまとめます。

IPSecのお話。

やっほー。今回からしばらくはProtocolに関して勉強したことをまとめていきます。最近、ようやく備忘録らしく使えている気がする。

ではさっそくいってみよー。

IPSec(Internet Protocol Security)とは?
認証(authentication)、IP Datagram単位の暗号化(Confidentiality)、改竄検出(Integrity)の3機能を有する。これらの機能の実現には、symmetric key encryption, public-key cryptography, hash cryptography, authentication, digital signatureの技術を用いる。
IPv4は別ProtocolとしてIPSecを併用し、IPv6はオプションとしてIPSecを含む。

◎通信モード

  • Transport Mode

送受信ホストの全区間においてIPSec形式のdatagramで通信する。

  • Tunnel Mode

送信ホスト:IP datagramを送信側IPSec Gatewayに送信する。IPSec GatewayIPSec形式の中にIP datagramをカプセル化する。
受信ホスト:IPSec形式で受信側IPSec Gatewayまで通信する。受信側Gatewayから宛先ホストまではIP datagramで通信する。
流れ的にはこんな感じ。
送信ホスト~(IP datagram形式)~送信側Gateway~(IPSec形式)~受信側Gateway~(IPSec形式)~受信ホスト

◎protocolの種類

  • AH

上位protocol番号51。AH Headerを使用し、message authentication codeを用いてpacket authenticationを提供し、第三者の介入と改竄を検出する。

  • ESP

上位protocol番号50。ESP Headerを使用し、Packetの認証と暗号化の機能を提供。IPSec.v.2.0はESP単独で認証と暗号化が可能。

IPSec Packetの構造
【!】IP HeaderとTCP Headerの間に来る。

  • IPSec Transport Mode~AH Header Packet

[IP Header][AH Header][TCP Header][data]
authentication rangeは全て。

  • IPSec Transport Mode~ESP Header Packet

[IP Header][ESP Header][TCP Header][data][ESP trailer][ESP authentication data]
authentication rangeはESP Header~ESP trailerまで。encryption rangeはTCP Header~ESP trailerまで。

  • IPSec Tunnel Mode~AH Header Packet

[外側IP Header][AH Header][IP Header][TCP Header][data]
authentication rangeは全て。

  • IPSec Tunnel Mode~ESP Header Packet

[外側IP Header][ESP Header][IP Header][TCP Header][data][ESP trailer][ESP authentication data]
authentication rangeはESP Header~ESP trailerまで。encryption rangeはIP Header~ESP trailerまで。

IPv6のPacket構造

  • IPSec Transport Mode~AH Header Packet

[IPv6 Header][拡張Header][AH Header][拡張Header2][TCP Header][data]
authentication rangeは全て。

  • IPSec Transport Mode~ESP Header Packet

[IPv6 Header][拡張Header][ESP Header][拡張Header][TCP Header][data][ESP Trailer][ESP authentication data]
authentication rangeはESP Header~ESP trailerまで。
encryption rangeは拡張Header2~ESP trailerまで。

IPSecの通信準備
2段階あり、IKE(Internet Key Exchange)による鍵交換と認証を行う。
[Phase 1]

  1. 利用可能な暗号アルゴリズムの確認を行い、SA(Security Association)を確立する
  2. Diffie-HellmanでPhase 2で用いるsymmetric key encryptionのprivate keyを計算
  3. authentication:PSK(Pre Shared Key)とdigital certificate

[Phase 2]

  1. IPSec内で使用するheaderと暗号アルゴリズムの確認(2つ目のSA確立)
  2. 相手に専用の制御用トンネル番号を通知(通信経路の通知)

IPSecの通信開始
Phase2で確立したSAを用いて行う。

◎IKE Protocolについて

  1. ISAKAMP(Internet Security Association and Key Management Protocol):IKEの中でParameterを交換するProtocolでRFC4306に含まれる。
  2. Oakley(Oakley Key Determination Protocol):ISAKAMPで使用されるKey Exchange(dateの暗号化のために用いる鍵を生成するためのDiffie-Hellman Key Exchange)Protocolに認証機能を追加したもの。RFC2412で公開されている。

◎ISAKAMPの機能

  • Dos攻撃への耐久性向上
  • symmetric key encryptionのprivate keyの生成・交換と管理
  • SAの作成と管理
  • 通信相手の認証

◎SA(Security Association)
IPSecのsecurity情報を管理する構造。ISAKAMP SA(IKEで使用)とIPSec SA(IPSec通信で使用)がある。

・ISKAMPのsecurity parameter

  • symmetric key encryption

AES,3DESなど。ISAKAMP message用暗号。

  • Hash cryptography

SHA-1,MD5など。ISAKMP message用の認証・鍵計算に使用。

  • ライフタイム

ISAKMP SAのライフタイムとライフタイプ(単位は秒など)

  • 認証方式

IPSecの通信相手の機器の認証方式。PKSやpublic keyのcertificateなど。

  • DH Group

Diffie-Hellman group

IPSec SA security parameter
通信相手ごとにSAを持つので、一つのホストが複数のSAを持つこともあり得る。

AH or ESP

  • symmetric key encryption

AES,3DESなど。

  • Message Authentication Code

HMAC-MD5, HMAC-SHA-1など。

  • ライフタイム

IPSec SAのライフタイムとライフタイプ

  • 通信モード

Tunnel Mode or Transport Mode

  • DH Group

(option)common keyの生成にPFSを使用する場合に用いる。

今回はここまで。次回はTLS/SSLのメモを落とします。

暗号処理をする機器

やっほー。この時間にご飯食べすぎるとこの後眠くなりますよね。

そんなことは置いておいて、前回のエントリ最後に宣言した通り、今回は暗号化処理の機器に関してまとめます。

今回はTPMとHSMに関してまとめます。


TPM(Trusted Platform Module)
暗号鍵の生成・保管、public keyとprivate keyの生成・保存、デジタル署名の生成と検証、プラットフォームの完全性検証が可能。Windowsのドライブ暗号化機能であるBit Lockerも鍵の保存にTPMを用いる。ハードウェアの処理時間や消費電力、電磁波などの特徴から暗号解読を試みる攻撃に対して情報漏洩を防止。
<<<<<主な機能>>>>>

  • Protected Capabilities(保護機能)

保護領域(Shielded Locations:レジスタ・メモリなど機密性を要求する場所)にアクセスするための権限を持つコマンドセット。鍵の管理、乱数生成、そしてシステムの状態にデータを結びつける役割を果たす。

  • Attestation(構成機能)

情報の正確さを確認するプロセス。TPM外の要素がShielded Locations, Protected Capabilities, Root of Trustについて正確さを確認できる。プラットフォームは、自身の完全性に影響する特性の記述の正確さを確認できる。

  • Integrity Measurement and Report(完全性の測定と保存通知)

プラットフォームの完全性に影響するプラットフォームの特性に関する計測値を取得し、それらのMessage Digest値をPCRに保存する。Root of MeasurementはRTM(Root of Trust for Measurement)と呼ばれる。Static RTMは起動時を、Dynamic RTMは信頼できない状態から信頼できる状態への推移をRoot of Measurementとする。完全性の通知(Integrity Report)はPCRに完全性についての計測値を保存する構成証明のための実行プロセス。

  • セキュアブート

TPMで起動時にソフトウェアの改竄を検知する。

<<<<<TPMで管理される鍵>>>>>

  • Signing Keys

非対称鍵でアプリケーションデータとメッセージの署名に利用される。移行の可否を設定可能。

  • AIK Keys(Attestation Identity Keys)

移行可能なSignig Keys。TPMで作成されたデータやPCRレジスタ値への署名のみに使用。

  • Storage Keys

非対称鍵で、データや他の鍵の暗号化・復号に使用される。鍵やTPM外で管理されるデータを暗号化できる。

  • Bind Keys

プラットフォーム上で小さいサイズのデータ(ex. 対称鍵)を暗号化し、別のプラットフォーム上で復号するために用いる。

  • Legacy Keys

TPM外で生成される鍵で署名や暗号操作に使用後、TPMへインポートされる。

  • Authentication Keys

TPMが関連するトランスポートセッション(ホストとTPM間でのデータ交換の際のバスの暗号化)の保護に用いる。

<<<<<TPMの特別な鍵(保証鍵とStorage Root Key)>>>>>

  • 保証鍵(Endorsement Keys)

TPMハードウェアに永続的に組み込まれるPublic KeyとPrivate Keyの鍵ペアで、通常製造時に書き込まれる。Public Keyを使い、正規のTPMかを識別する。プラットフォームの所有者の確立時に所有者許可データの復号とAIK作成に関連するメッセージの復号に使用される。

  • Storage Root Key(SRK)

TPMハードウェアに保存される鍵。アプリケーションが作成する鍵を暗号化・復号するマスタ・キー役割を果たす。ユーザがTPMの所有権を取得するときにSRKが作成され、ユーザ設定がクリアされた後に新たなユーザが所有権を取得した時には新しくSRKが作成される。

<<<<<TPMに含まれる証明書>>>>>

  • Edorsement 証明書

EKのPublic Keyを含む証明書。保証鍵が保護されていることを証明する。

  • プラットフォーム証明書

プラットフォームにより作成され、プラットフォームのセキュリティ要素が保護されていることを証明する。

  • 適合証明書

評価機関により生成され、プラットフォームのセキュリティ特性に関する信用状を発行する依頼人を証明する。

★HSM(Hardware Security Module)
暗号鍵の作成(ハードウェアのRandom Number Generatorを含む)、鍵交換、鍵配送、鍵のインポート/エクスポート、鍵の保管、鍵の破壊(ゼロ化)、改竄の痕跡記録(タンパー証跡)などの管理を行う。

今回はここまで。

攻撃手法種類

やっほー。久しぶりの更新です。

今回は攻撃手法のメモ。正確には暗号破りの手法をまとめます。

そもそも暗号の強度は何で決まるのでしょうか。
暗号の強度は3要素で決まります。
暗号プログラムの複雑さ、鍵の機密性、そして鍵の長さです。

では、それを破ろうとする攻撃手法を見ていきましょう。



  • Brute Force Attack

いわゆる総当たりです。

  • Birthday Attack

ハッシュ関数の値が衝突する場合を探します。n人いるときに誕生日が被る確率は?というパラドクスに基づいています。

  • Meet in the Middle Attack

共通鍵暗号にBirthday Attackを用います。

  • 既知平文攻撃

平文と暗号文のセットが手元にある場合又は暗号文から平文を一部でも推測可能な場合に、その情報を用いて解読します。

  • 選択平文攻撃

解読に都合に良い平文と暗号文を入手できる場合に、その平文と暗号文のセットから解読を試みます。

  • タイミング攻撃

時間計測攻撃ともいわれます。暗号化処理時間がカギの長さに依存する場合、その処理時間の差を統計的に解析して鍵を推測する攻撃です。

  • SPA攻撃(Simple Power Analysis)

単純電力解析ともいわれます。電力の消費量の波形を観測し情報を推測する攻撃です。

  • DPA攻撃(Differential Power Analysis)

電力差解析です。暗号化処理による電力波形の観測を複数回行い、統計的に解析します。SPA攻撃より強力で精度も高いです。

  • プローブ攻撃

チップ内信号線を直接触って暗号化処理中のデータや暗号鍵を解読します。

  • 故障利用攻撃

エラーを意図的に引き起こし正しい処理結果との差を解析して暗号鍵を割り出します。

電磁波解析攻撃です。製品が出す電磁波を解析して暗号処理中のデータや暗号鍵を割り出します。


今回はこんなところで。次回は暗号化処理を行う機器に関してまとめていきます。