CS专业课学习笔记
情報セキュリティ
情報セキュリティの目的
情報セキュリティ(information security)とは、様々なセキュリティ上の危険や脅威から情報資産を保護し、機密性(Confidentiality)、完全性(Integrity)、可用性(Availability)の3つの観点で正常な機能・状態を保持することにより、情報ステムや情報の信頼性を高め、情報システムの利用者が安心して情報システムを利用できるようにすることである
情報セキュリティ(CIA) |
定義 |
機密性 |
その情報にアクセスを許可されたものだけがアクセスできるようにすること |
完全性 |
情報およびその処理方法が正確であり完全であるようにすること |
可用性 |
正当な利用者が必要な時に情報および関連する資産に確実にアクセスできる状態を保つこと |
本人認証 |
情報の作成者や送信者が本物であることを保証すること |
責任・監査 |
システムが、いつ、誰に利用されたかを追跡できること |
プライバシ |
情報やサービスの利用が他人に観察されないようにすること |
情報セキュリティのマネージメント
セキュリティポリシー
組織が情報資産を活用するにあたり、情報セキュリティ上保護すべき対象範囲と、 それらの対策や管理運用方針などを文書化したもの
情報セキュリティ基本方針
組織のセキュリティ方針の根幹をなすもの
組織のトップ(上層部・経営層)によって承認され、情報資産にかかわるすべての人員に周知徹底(ISMS(Infromation Security Management System)認証基準)
- 目的
- 用語の定義
- 適用範囲
- 基本原則及び方針
- 組織体制及び責任と権限
- 諸規定との関連
- 教育・訓練
- 監査
- 評価と見直し
- セキュリティ事故への対応
- 例外処理
- 罰則規定
情報セキュリティ管理策の分類
- セキュリティ基本方針
- 情報セキュリティのための組織
- 資産分類
- 人的資源のセキュリティ
- 物理的および環境的セキュリティ
- 通信および運用管理
- アクセス制御
- 情報システムの取得、開発およびメンテナンス
- 情報セキュリティインシデント
- 事業継続管理
- 適合性
情報セキュリティの運用
情報資産
- 物理的資産
- 情報・データ
- ソフトウェア
- 製品やサービス
- 企業イメージ
- 人員
セキュリティに関わる脅威
セキュリティリスクの評価式:リスク = 資産価値 × 脅威 × 脆弱性
リスク分析の手法
- ベースラインアプローチ:
- 定性分析手法で、組織全体を俯瞰し、既存の標準や規定を基に一定のセキュリティレベルに準拠しているかを調査する手法
- 非形式アプローチ:
- 今までの経験に基づいた定性的なリスク分析手法コンサルタントのレベルにより分析結果が左右される
- 詳細アプローチ:
- 定量的分析手法で、組織全体のすべての情報資産を洗い出し、各脅威の発生確率と脆弱性の重要度に関する評価を行い、それを基にリスクの大きさを評価する手法
- 組み合わせアプローチ:
- システムの構成や業務に応じて、ベースラインアプローチと詳細アプローチを使い分ける
脅威の種類
- 不正攻撃(ポートスキャン、Dos(Denial of Sevices) DDos
- 侵入 (トロイの木馬、バッファーオーバーフロー、バックドア)
- マルウェア(ウイルス、ワーム、スパイウェア、ランサムウェア)
- 盗聴
- 改ざん
- なりすまし
- 持ち出し
- ソーシャルエンジニアリング
- 事故・災害
- 紛失
- 不作為の作為
(1)~(3):ソフトウェアを含めてコンピューターに関わるもの
(4)~(6):ネットワーク上で通信や記録に関わるもの
(7)~(11):人が関わるもの
不正攻撃
- ポートスキャン(Port scanner): 攻撃の糸口を発見するための手段
- Dos(Denial of Sevrices):大量のデータを送りつけることで負荷をかけシステムをダウンさせる
- DDoS(Distributed Denail of Services):複数個所に分散したDoS攻撃(1か所からアクセスが集中するDoS攻撃は検知がしやすいため、複数個所から攻撃することで、検出されにくくしている)
侵入
- トロイの木馬(Trojan Horse):不正ファイルを実行させることで、 悪意のある機能を実行させる
- バッファーオーバーフロー(Buffer overflow):セキュリティホールの1つバッファに想定以上の長さのデータが入力されてしまうバグ((スタック) あふれた値で関数の戻り先アドレスを上書きすることにより、制御を奪うことができる)
- バックドア(Backdoor):不正者が使用権を確認するコンピュータの機能を無許可で利用するために、コンピュータ内に設けられた通信接続の機能侵入後仕掛けることで、次回以降の侵入をより容易にする
マルウェア(malware)
malware = 「malicious」+「software」
不正かつ有害に動作させる意図で作成された悪意のあるソフトウェアや悪質なコードの総称
- ウイルス: 他のプログラムやファイルの一部を書き換え、自己複製する機能をもつマルウェア
- ワーム(worm): 自身を複製して他のシステムに拡散する(Code Red, Nimda, Sobig, Mydoom, Conficker)
- スパイウェア(spyware): コンピュータの内部情報を外部に送信(情報収集)(キーロガー、アドウェア、ダウンローダ)
- ランサムウェア(ransomware): コンピュータをロックしたり、重要なファイルを暗号化して読めなくし、身代金(ransom)を要求する(AIDS Trojan, PC Cyborg, Reveton, CryptoLocker)
マルウェアの感染経路:
- Web閲覧:メールに添付されたURLに誘導
- Web誘導:偽セキュリティソフト配布サイト誘導感染
- ネットワーク:セキュリティホール(無線パスワード未使用等)
- メール添付:添付ファイル内(偽装)
- 外部記憶媒体:USBメモリ、ディジタルカメラ
- ファイル共有ソフト
- マクロプログラム:Office(VBA)
不正攻撃・マルウェア対策:
- ファイアーウォール: パケットフィルタリング
- アクセスログ: 定期的な監視
- 不要なポートを無効にする
- バージョン管理、セキュリティパッチ
- アンチウイルスソフトウェアの導入
Webアプリケーションの脅威
- SQLインジェクション(SQL injection):Webアプリケーションの入力データとしてSQL文を入力し、想定外のSQL文を意図的に実行させることでデータベースを攻撃する手法
- クロスサイトスクリプティング(Cross-site scripting,简称XSS):Webページを動的に生成するアプリケーションのセキュリティ上の不備を意図的に利用し、サイト間を横断して悪意のあるスクリプトを混入させることでユーザのCookie(ユーザ情報、セッション情報)を盗むなどの攻撃手法
- クロスサイトリクエストフォージェリ(Cross-site request forgery,通常缩写为CSRF或XSRF):悪意のあるスクリプトが埋め込まれたWebページを訪問者に閲覧させて、別のWebサイトでその訪問者が意図しない操作を行わせる攻撃手法
- セッションハイジャック(Session hijacking):認証が完了してセッションを開始しているブラウザとWebサーバの間の通信において、CookieやセッションIDなどのセッション情報を盗むことで、対象セッションを通信当事者以外が乗っ取る攻撃手法
跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任
盗聴・改ざん・なりすまし
- なりすまし(masquerading):攻撃者は通信をしている人のふりをして通信を行う(認証(IDの正当性)の侵害)
- 中間者攻撃(man-in-the-middle attack):セッションの乗っ取りが先に行われ、アクティブな通信セッションが盗聴
- 盗聴:ネットワーク等を流れる情報をアクセス権のない第三者が盗み見ること
- 受動的に行われる(ログが残らない)
- ネットワーク上のどこで行われるかわからない
盗聴の主な手段:
- コンピュータに直接仕掛ける
- ネットワーク上のデータを読み取る
- 空気中のデータを読み取る(電磁界の変化を読み取る):EMC等
人を対象にした攻撃
- 持ち出し:USBメモリなどの記録媒体に機密情報を保存し持ち出す
- ソーシャルエンジニアリング(Social engineering):人間の心理的な隙や、行動のミスにつけ込んで個人が持つ秘密情報を入手する方法
- 重役や上司、重要顧客、システム管理者などと身分を詐称して電話をかけ、パスワードや重要情報を聞き出す
- IDやパスワードが書かれた紙(付箋紙など)を瞬間的に見て暗記してメモする
- 学校の同級生の親族や警察・公安委員会・裁判所を名乗り、住所や電話番号などの個人情報を聞き出す
- フィッシング(Phishing):インターネット上のユーザから経済的価値がある情報(ユーザ名、パスワード、クレジットカード情報)を奪う詐欺行為信頼されている主体になりすましたEメールによって偽のWebサーバに誘導することによって行われることが多い
情報セキュリティの脆弱性
攻撃者によってセキュリティ上の脅威の原因となる管理や設備の問題、システム上の誤りや設計の問題、またシステムの各種設定の問題など
脆弱性を最小化するには:
- 組織に関わる対策:セキュリティポリシ、情報セキュリティの運営組織
- ソフトウェアおよびハードウェアについての対策:ファイアウォール、侵入検知システム(IDS)、アンチウイルスソフト、セキュリティパッチ、パスワード
- 物理的対策:IDカード、施錠、バックアップ
- 人的対策:責任範囲の明確化、パスワード管理、教育
セキュリティ技術的対策6階層
情報セキュリティ強化に必要な要素
- 技術:暗号技術をはじめ、バイオ情報による個人識別技術、電子透かし等による著作権保護、ウイルス対策、ファイアウォール、不正 侵入検知システム
- 管理・運営:ISO/IEC 15408,ISO/IEC17799
- 法制度:不正アクセス行為の禁止などに関する法律、知的財産権、個人情報保護法等
- 倫理
情報セキュリティ技術と法制度
情報技術などの新しい技術の出現により、従来の法制度を適用できない事例 ⇒ 法制度の整備が必要
- 不正アクセス行為の禁止などに関する法律
- 電気通信事業法
- 知的財産権
- 著作権法
- 個人情報保護法
- IT基本法
ディジタルフォレンジックス(Digital forensics):不正アクセスや情報漏えいなどのセキュリティインシデントの発生時に、原因究明や法的証拠を保全するために対象となる電子的記録を収集・解析すること
暗号システムの基礎
- 古典暗号
- 換字式暗号
- 転置式暗号
- シーザー暗号
- スキュタレー暗号
- 現代暗号
- 共通鍵暗号:ブロック暗号,ストリーム暗号,DES,AES,バーナム暗号
- 公開鍵暗号:RSA暗号,楕円曲線暗号,エルガマル暗号
- 量子暗号
暗号(Cryptography)
盗聴の恐れのある通信路を通して安全に通信を行うために情報記号列を変換(暗号化)する技術
安全な記号列から元の情報記号列へ戻す(復号)には鍵が必要
- 鍵による分類
- 共通鍵暗号(秘密鍵暗号、対称暗号):暗号化する鍵と復号する鍵が同一
- 公開鍵暗号(非対称暗号):暗号化する鍵と復号する鍵が異なる
- 処理単位による分類
- ブロック暗号:一定の長さの単位で処理
- ストリーム暗号:1bitごと処理
暗号系(Crypto System)
暗号系C: (P, C, K, E, D) 5つの集合により定義
- P: 発生しうる平文(plain text)の有限集合
- C: 発生しうる暗号文(cipher etxt)の有限集合
- K: 可能性のある鍵(key)の有限集合
- E, D: 以下の性質を満たす関数の有限集合
- ekE∈E,dkD∈D,kE∈K,kD∈K,x∈P,c∈C
- ekE:P→C,dkD:C→P
- ekE(x)=c,dkD(c)=x,s.t.dkD(ekE(x))=x
実用的な暗号系
- 安全性
- 暗号文c=ekD(x)∈C,x∈P,kD∈Kから、鍵k∈Kや平文x∈Pの情報が手に入らない
- 鍵空間Kの大きさ∣K∣が大きい(全数探索が不可能)
- 効率性
- 暗号化・復号の関数ekE()∈E,dkD()∈D,kE,kD∈Kが高速に計算可能
古典暗号
現代暗号(共通鍵暗号)の基礎となる暗号方式、それぞれ単体では実用的ではない
- 換字暗号(Substitution Cipher):平文の文字を別の文字で置き換える
- 転置暗号(Permutation Cipher):平文の文字列を並び替える
換字暗号(Substitution Cipher)
平文・暗号文
P=C=Zn={0,1,⋯,n−1}
鍵
K={π=0π(0)1π(1)⋯⋯n−2π(n−2)n−1π(n−1):置換}
- π(0),⋯,π(n−1)はZnから1つずつ重複なく選ぶ
- 鍵空間の大きさ:∣K∣=n!=1⋅2⋅⋯⋅(n−1)⋅n
暗号化・復号関数
- π∈K
- eπ(x):=π(x)
- dπ(y):=π−1(y),π−1はπの逆置換
換字暗号の例
5−1mod26=5⋅x(mod26)≡1⇒x=21
転置暗号(Permutation Cipher)
平文・暗号文
P=C=(Zn)m
- 長さmの文字列(文字はZnの要素に対応)
鍵
K={π=1π(1)2π(2)⋯⋯m−1π(m−1)mπ(m):置換}
- π(1),⋯,π(m)はZmから1つずつ重複なく選ぶ
- 鍵空間の大きさ:∣K∣=m!=1⋅2⋅⋯⋅m
暗号化・復号関数
- π∈K
- eπ(x1,⋯,xm):=xπ(1),⋯,xπ(m)
- dπ(y1,⋯,ym):=yπ−1(1),⋯,yπ−1(m)
転置暗号の例
安全性
- 換字暗号では、文字の統計的性質(出現頻度)を利用することで解読される可能性
- p(e)=0.127,p(t)=0.91,p(a)=0.82,⋯,p(z)=0.063
- 転置暗号では、文字の連続する文字の出現頻度(bigram, trigram)を利用することで解読される可能性
- 頻出する文字の並び: bigram: th, he, in, er, an, re, ed trigram: the, ing, and, her, ere, ent
安全性の考え方
計算量的安全性
- 暗号系を破るための既存の最も高速な方法をもってしても途方もなく莫大な計算時間を必要となるとき安全と考える
- 計算機の能力や攻撃法の発展で破られる可能性
- 現代暗号の安全性の基本となっている
情報理論的安全性
- 無限の計算資源を用いても破ることができないとき安全と考える
情報理論的安全性
C. Shannon, “Communication Theory of SecrecySystems”, 1949
定義:すべてのx∈P,y∈Cに対して, P(x ∣ y)=P(x)であるとき, つまり, 暗号文yが与えられたときに平文がxである条件付き確率が平文xを選ぶ確率が同じであるとき,この暗号系は情報理論的安全性, あるいは, 完全守秘性(perfect secrecy)をもつという
- 暗号文y∈Cを入手したあとの平文x∈Pの確率分布P(x ∣ y)が、入手前P(x)と変わらないことを意味(平文に関して暗号文から何も情報が得られていない)
暗号について
情報理論的安全性をもつ暗号について
定理: ∣K∣=∣P∣=∣C∣を満たす暗号系を考える。すべての鍵が等確率∣K∣1で使われ, かつ,すべてのx∈P,y∈Cに対して, ek(x)=yとなるような唯一の鍵k∈Kが存在するならば, その時に限り,この暗号系は完全秘匿性をもつ。
鍵空間Kのサイズについて
定理: 情報理論的に安全な暗号系においては∣K∣≥∣P∣でなければならない。(鍵空間の大きさは平文空間より大きくなければならない)
現代暗号
1970年代以降, ネットワーク技術が発展し, 不特定多数の人がネットワークにアクセスできるようになり, ネットワーク上での情報通信の安全性(秘匿性)を考慮する必要
暗号化・復号の処理を容易に実現するために,誰でも利用できる標準の暗号が必要
標準暗号の設計思想
- 暗号アルゴリズムは公開
- 暗号の安全性は鍵によって確保(鍵が分からなければ、復号できない)
ブロック暗号
平文をデータ撹拌(かくはん)部において多段階に渡って部分鍵に基づいた撹拌を行うことで疑似ランダム性をもつ暗号文を生成する(撹拌部では、換字と置換を組み合わせる)
DES暗号(Data Encryption Standard)
1976年にアメリカ連邦政府の標準暗号として採用された共通鍵暗号(データ:64ビット, 鍵:56ビット)
f関数
S-Boxを利用
DES暗号の限界
コンピュータの性能向上により解読される可能性
- TDES(Triple DES):3鍵DES
- 異なる3つの鍵(k1,k2,k3)を使いDESにより3重に暗号化する方式(当面は安全)
DESの解読: 1998年 Deep Crack(DES解読コンピュータ)により22時間で解読
AES暗号(Advanced Encryption Standard)
標準暗号であるDESの後継としてアメリカ政府が公募2001年にDaemen, Rijmen(ベルギー)が開発したRijndael(ラインドール)が採用される(選考に2年間余り)
- データ長:128ビット
- 鍵長:128, 192, 256ビット
- 構造:SPN構造(Substitution-Permutation Network)置換(Substitution)と転置(permutation)の組み合わせ(ネットワーク)により構成される
AES暗号の撹拌部
課題2.1
平文集合と鍵集合をP=K={0,1,2,3,4}とする. なお, 平文x∈Pの確立分布は, Pr(x=0)=31,Pr(x=1)=Pr(x=2)=Pr(x=3)=Pr(x=4)=61 であるとする. この時, 以下の二つの暗号方式について, 暗号文の確率分布Pr(c)及び条件付き確率Pr(x ∣ c)を計算しなさい. なお, 鍵は等確率で選択されるとする. すなわち, Pr(k)=51,k∈Kである.
(1) ek(x)=x+kmod5
C |
x=0 |
x=1 |
x=2 |
x=3 |
x=4 |
k=0 |
0 |
1 |
2 |
3 |
4 |
k=1 |
1 |
2 |
3 |
4 |
5 |
k=2 |
2 |
3 |
4 |
5 |
6 |
k=3 |
3 |
4 |
5 |
6 |
7 |
k=4 |
4 |
5 |
6 |
7 |
8 |
暗号文の確率分布Pr(c)は以下である
Pr(c=0)=31×51=151Pr(c=1)=31×51+61×51=101Pr(c=2)=152Pr(c=3)=61Pr(c=4)=51Pr(c=5)=152Pr(c=6)=101Pr(c=7)=151Pr(c=8)=301
Bayesの定理により
Pr(P=x ∣ C=c)=Pr(C=c)Pr(P=x)⋅Pr(C=c ∣ Pr(P=x)=∑k,c∈c(k)Pr(K=k)⋅Pr(x=dk(c))Pr(P=x)⋅∑k,x=dk(c)Pr(K=k)
条件付き確率Pr(x ∣ c)は以下である
Pr(0∣0)=1,Pr(1∣0)=0,Pr(2∣0)=0,Pr(3∣0)=0,Pr(4∣0)=0Pr(0∣1)=32,Pr(1∣1)=31,Pr(2∣1)=0,Pr(3∣1)=0,Pr(4∣1)=0Pr(0∣2)=21,Pr(1∣2)=41,Pr(2∣2)=41,Pr(3∣2)=0,Pr(4∣2)=0Pr(0∣3)=52,Pr(1∣3)=51,Pr(2∣3)=51,Pr(3∣3)=51,Pr(4∣3)=0Pr(0∣4)=31,Pr(1∣4)=61,Pr(2∣4)=61,Pr(3∣4)=61,Pr(4∣4)=61Pr(0∣5)=0,Pr(1∣5)=41,Pr(2∣5)=41,Pr(3∣5)=41,Pr(4∣5)=41Pr(0∣6)=0,Pr(1∣6)=0,Pr(2∣6)=31,Pr(3∣6)=31,Pr(4∣6)=31Pr(0∣7)=0,Pr(1∣7)=0,Pr(2∣7)=0,Pr(3∣7)=21,Pr(4∣7)=21Pr(0∣8)=0,Pr(1∣8)=0,Pr(2∣8)=0,Pr(3∣8)=0,Pr(4∣8)=1
(2) ek(x)=x+k
C |
x=0 |
x=1 |
x=2 |
x=3 |
x=4 |
k=0 |
0 |
1 |
2 |
3 |
4 |
k=1 |
1 |
2 |
3 |
4 |
5 |
k=2 |
2 |
3 |
4 |
5 |
6 |
k=3 |
3 |
4 |
5 |
6 |
7 |
k=4 |
4 |
5 |
6 |
7 |
8 |
暗号文の確率分布Pr(c)は以下である
Pr(c=0)=151Pr(c=1)=101Pr(c=2)=152Pr(c=3)=61Pr(c=4)=51Pr(c=5)=152Pr(c=6)=101Pr(c=7)=151Pr(c=8)=301
Bayesの定理により条件付き確率Pr(x ∣ c)は以下である
Pr(0∣0)=1,Pr(1∣0)=0,Pr(2∣0)=0,Pr(3∣0)=0,Pr(4∣0)=0Pr(0∣1)=32,Pr(1∣1)=31,Pr(2∣1)=0,Pr(3∣1)=0,Pr(4∣1)=0Pr(0∣2)=21,Pr(1∣2)=41,Pr(2∣2)=41,Pr(3∣2)=0,Pr(4∣2)=0Pr(0∣3)=52,Pr(1∣3)=51,Pr(2∣3)=51,Pr(3∣3)=51,Pr(4∣3)=0Pr(0∣4)=31,Pr(1∣4)=61,Pr(2∣4)=61,Pr(3∣4)=61,Pr(4∣4)=61Pr(0∣5)=0,Pr(1∣5)=41,Pr(2∣5)=41,Pr(3∣5)=41,Pr(4∣5)=41Pr(0∣6)=0,Pr(1∣6)=0,Pr(2∣6)=31,Pr(3∣6)=31,Pr(4∣6)=31Pr(0∣7)=0,Pr(1∣7)=0,Pr(2∣7)=0,Pr(3∣7)=21,Pr(4∣7)=21Pr(0∣8)=0,Pr(1∣8)=0,Pr(2∣8)=0,Pr(3∣8)=0,Pr(4∣8)=1
共通鍵暗号方式
利用モード
一般に取り扱われるデータ(平文)の長さはブロック暗号のデータ長を超えるため、利用するブロック暗号のデータ長ごとにデータ(平文)を分割して暗号化する必要がある
ECBモード(Electroric CodeBook)
ECBモードは同一鍵を用いて、各ブロックを暗号化し、復号の際も同じ鍵を用いて、各ブロックを復号する
- 同一の平文が入力されたとき、暗号文も同一となるそのため、統計的な解析等で推測がしやすくなる(画像のようなデータの場合、同じ値が続くことがある)
- 1ビット誤りの伝搬: 1ブロック
- 並列計算: 実行可能
CBCモード(Cipher-Block Chaining)
暗号化では、乱数を用いて初期値rを準備する。初期値rはそのまま送信し、その後、暗号化した暗号ブロックを送信する。暗号化は平文ブロックxiとひとつ前の暗号文ブロックci−1の排他的論理和を取り、その値を暗号化鍵kで暗号化し、暗号文ブロックciを生成する。なお、最初の平文ブロックx1暗号化については、ひとつ前の暗号文ブロックc0が存在しないため、その値を初期値rとする
復号では、暗号文ブロックciを復号し、その値とひとつ前の暗号文ブロックci−1との排他的論理和を取り、元の平文ブロックxiが計算できる
- 最も良く使用されているモードであり、標準実装されている場合が多い
- 初期値は定数を用いると安全でなくなる
- 1ビット誤りの伝搬: 1ブロック+次のブロックの1ビット
- 並列計算: 暗号化は実行不可、復号は実行可能
排他的論理和
排他的論理和x⊕yの計算:
- x,yの数値をそれぞれをビット列(2進数)に変換
- 各ビットごとに下記の表にある計算を実行
- 計算結果を元の数値に変換
CFBモード(Cipher FeedBack)
暗号化、復号共CBCモードと同様に初期値rを準備して最初に初期値rを送信する。暗号化はひとつ前の暗号文ブロックci−1を暗号化鍵kで暗号化した値と平文ブロックxiとの排他的論理和を取り、暗号文ブロックciを生成する。なお、最初の平文ブロックx1暗号化については、ひとつ前の暗号文ブロックc0が存在しないため、その値を初期値rとする
復号では、ひとつ前の暗号文ブロックci−1を暗号化鍵kで暗号化し、その値と暗号文ブロックciとの排他的論理和を取り、元の平文ブロックxiが計算できる
- 暗号化処理のみで実現可能
- 1ビット誤りの伝搬: 1ブロック+次のブロックに影響
- 並列計算: 暗号化は実行不可、復号は実行可能
OFBモード(Output FeedBack)
OFBモード暗号化はCFBモードと似た形になっているが、次のブロック送るのは排他的論理和を取る前の暗号化した値のみになる。r0は初期値rとして、riはri−1暗号化した値になり、riはrが与えられば、次々と暗号化することによって計算できる。riと平文ブロックxiの排他的論理和を取り、暗号化できる。
これらの計算は復号も同様になる。すなわち、OFBモードの暗号化、復号の処理は入力が異なるだけで、全く同じものになる。
- 暗号化処理のみで実現可能
- 暗号化と復号が同じ処理
- ビット誤りによる影響が最小限であるので、無線通信のようなエラーレートが高い通信路にも適する
- 1ビット誤りの伝搬: 1ビットのみ
- 並列計算: 暗号化・復号初期値が既知であれば事前計算可能
利用モード(シフト暗号)
シフト暗号: ek(x)=x+kmodn,n=32
鍵: k=7
平文: king ⇒(x1,x2,x3,x4)=(10,8,13,6)
初期値: 13(CBC, CFB, OFBモード)
c1=ek(x1)=10+7mod32=17c2=ek(x2)=8+7mod32=15c3=ek(x3)=13+7mod32=20c4=ek(x4)=6+7mod32=13
暗号文: rpun
c1=ek(x1⊕c0)=(10⊕13)+7mod32=14c2=ek(x2⊕c1)=(8⊕14)+7mod32=13c3=ek(x3⊕c2)=(13⊕13)+7mod32=7c4=ek(x4⊕c3)=(6⊕7)+7mod32=8
暗号文: onhi
x1=dk(c1)⊕c0=(14−7mod32)⊕13=10x2=dk(c2)⊕c1=(13−7mod32)⊕14=8x3=dk(c3)⊕c2=(7−7mod32)⊕13=13x4=dk(c4)⊕c3=(8−7mod32)⊕7=6
平文: king
c1=x1⊕ek(c0)=10⊕(13+7mod32)=30c2=x2⊕ek(c1)=8⊕(30+7mod32)=13c3=x3⊕ek(c2)=13⊕(13+7mod32)=25c4=x4⊕ek(c3)=6⊕(25+7mod32)=6
暗号文: =nzg
x1=c1⊕ek(c0)=30⊕(13+7mod32)=10x2=c2⊕ek(c1)=13⊕(30+7mod32)=8x3=c3⊕ek(c2)=25⊕(13+7mod32)=13x4=c4⊕ek(c3)=6⊕(25+7mod32)=6
平文: king
c1=x1⊕ek(r0)=10⊕(13+7mod32)=30c2=x2⊕ek(r1)=8⊕(20+7mod32)=19c3=x3⊕ek(r2)=13⊕(27+7mod32)=15c4=x4⊕ek(r3)=6⊕(2+7mod32)=15
暗号文: =tpp
x1=c1⊕ek(r0)=30⊕(13+7mod32)=10x2=c2⊕ek(r1)=19⊕(20+7mod32)=8x3=c3⊕ek(r2)=15⊕(27+7mod32)=13x4=c4⊕ek(r3)=15⊕(2+7mod32)=6
平文: king
メッセージ認証
CMAC(Cipher based Message Authentication Code)
メッセージの完全性を保証するために利用
まとめ
モード |
並列化 |
1ビット誤りの伝搬 |
特徴 |
ECB |
可能 |
1ブロック |
同一平文が同一暗号文に |
CBC |
暗号化:不可 復号: 可能 |
1ブロック + 次ブロック1ビット |
最も使用 |
CFB |
暗号化:不可 復号: 可能 |
1ビット + 次のブロック |
暗号器のみ |
OFB |
事前計算可能(初期値既知) |
1ビット |
暗号器のみ 暗号化・復号同一 |
課題3.1
平文集合と暗号文集合P=C=Z32とし、アフィン暗号ek1,k2(x)=k1x+k2mod32を考える。この時、ECBモード、CBCモード、CFBモード、OFBモードの各利用モードで暗号化せよ。また、復号も行い、元の平文に戻ることを確認せよ
なお、アフィン暗号の復号はdk1,k2(y)=k1−1(y−k2)mod32であり、5−1≡13mod32(5×13≡1mod32)である。
暗号化鍵は(k1,k2)=(5,17)とし、平文はqueenとする。また、CBCモード、CFBモード、OFBモードの初期値は11とする。
- ECBモード
- 暗号:ci=ek(xi)
- 復号:xi=dk(ci)
c1=ek1,k2(x1)=5×16+17mod32=1c2=ek1,k2(x2)=5×20+17mod32=21c3=ek1,k2(x3)=5×4+17mod32=5c4=ek1,k2(x4)=5×4+17mod32=5c5=ek1,k2(x5)=5×13+17mod32=18
暗号文: bvffs
x1=dk1,k2(c1)=5−1(1−17)mod32=13×16mod32=16x2=dk1,k2(c2)=5−1(21−17)mod32=13×4mod32=20x3=dk1,k2(c3)=5−1(5−17)mod32=13×20mod32=4x4=dk1,k2(c4)=5−1(5−17)mod32=13×20mod32=4x5=dk1,k2(c5)=5−1(18−17)mod32=13×1mod32=13
復号の結果: queen
- CBCモード
- 暗号: ci=ek(xi⊕ci−1),c0=r
- 復号: xi=dk(ci)⊕ci−1,c0=r
c1=ek1,k2(x1⊕c0)=k1(16⊕11)+k2mod32=5×27+17mod32=24c2=ek1,k2(x2⊕c1)=k1(20⊕24)+k2mod32=5×12+17mod32=13c3=ek1,k2(x3⊕c2)=k1(4⊕13)+k2mod32=5×9+17mod32=30c4=ek1,k2(x4⊕c3)=k1(4⊕30)+k2mod32=5×26+17mod32=19c5=ek1,k2(x5⊕c4)=k1(13⊕19)+k2mod32=5×30+17mod32=7
暗号文: yn=th
x1=dk1,k2(c1)⊕c0=k1−1(c1−k2)mod32⊕c0=13×7mod32⊕11=16x2=dk1,k2(c2)⊕c1=k1−1(c1−k2)mod32⊕c1=13×28mod32⊕24=20x3=dk1,k2(c3)⊕c2=k1−1(c1−k2)mod32⊕c2=13×13mod32⊕13=4x4=dk1,k2(c4)⊕c3=k1−1(c1−k2)mod32⊕c3=13×2mod32⊕30=4x5=dk1,k2(c5)⊕c4=k1−1(c1−k2)mod32⊕c4=13×22mod32⊕19=13
復号の結果: queen
- CFBモード
- 暗号: ci=xi⊕ek(ci−1),c0=r
- 復号: xi=ci⊕ek(ci−1),c0=r
c1=x1⊕ek1,k2(c0)=16⊕(55+17mod32)=24c2=x2⊕ek1,k2(c1)=20⊕(120+17mod32)=29c3=x3⊕ek1,k2(c2)=4⊕(145+17mod32)=6c4=x4⊕ek1,k2(c3)=4⊕(30+17mod32)=11c5=x5⊕ek1,k2(c4)=13⊕(55+17mod32)=5
暗号文: y/glf
x1=c1⊕ek1,k2(c0)=24⊕(55+17mod32)=16x2=c2⊕ek1,k2(c1)=29⊕(120+17mod32)=20x3=c3⊕ek1,k2(c2)=6⊕(145+17mod32)=4x4=c4⊕ek1,k2(c3)=11⊕(30+17mod32)=4x5=c5⊕ek1,k2(c4)=5⊕(55+17mod32)=13
復号の結果: queen
- OFBモード
- 暗号: ci=xi⊕ri,ri=ek(ri−1),r0=r
- 復号: xi=ci⊕ri,ri=ek(ri−1),r0=r
c1=x1⊕ek1,k2(r0)=16⊕(5×11+17mod32)=16⊕8=24c2=x2⊕ek1,k2(r1)=20⊕(5×8+17mod32)=20⊕25=13c3=x3⊕ek1,k2(r2)=4⊕(5×25+17mod32)=4⊕14=10c4=x4⊕ek1,k2(r3)=4⊕(5×14+17mod32)=4⊕23=19c5=x5⊕ek1,k2(r4)=13⊕(5×23+17mod32)=13⊕4=9
暗号文: ynktj
x1=c1⊕ek1,k2(r0)=24⊕(5×11+17mod32)=24⊕8=16x2=c2⊕ek1,k2(r1)=13⊕(5×8+17mod32)=13⊕25=20x3=c3⊕ek1,k2(r2)=10⊕(5×25+17mod32)=10⊕14=4x4=c4⊕ek1,k2(r3)=19⊕(5×14+17mod32)=19⊕23=4x5=c5⊕ek1,k2(r4)=9⊕(5×23+17mod32)=9⊕4=13
復号の結果: queen
公開鍵暗号方式
秘密である復号鍵kDから生成した暗号化鍵kEを公開する暗号方式暗号化鍵kEの生成には一方向性関数(One-Way Function)を利用共通鍵暗号のように秘密の鍵をお互いに交換する必要がなく、公開されている暗号化鍵を使って暗号化が可能
一方向性関数
入力x1,x2,⋯,xnに対し, 出力F(x1,⋯,xn)を計算するのは容易であるが, 出力F(x1,⋯,xn)から入力x1,⋯,xnを求めることが計算量的に困難である関数
代表的な一方向性関数:
- 素因数分解: 大きな素数p,q⇄n=p×q
- 離散対数問題:x, (公開:g,n) ⇄y=gxmodn
一方向性関数と公開鍵暗号方式
- 素因数分解
- RSA暗号(1977)
- RSA-OAEP暗号
- Rabin暗号(1979)
- 離散対数問題
- ElGamal暗号(1982)
- Cramer-Shoup暗号
- 楕円暗号(1985)
- ナップザック問題
- 線形符号の復号問題
公開鍵暗号の利点
共通鍵暗号では, n人がお互いに暗号化しようとすると全体で(2n)の鍵が必要。それに対し公開鍵暗号では, その人が秘密の復号鍵を用意すれば良いため全体でn個となる(暗号化鍵は電話帳のようなもので公開するので、管理の負担が減少する)
公開鍵暗号方式の鍵の非対称性を利用して, 署名方式が構築できる
公開鍵暗号の安全性
安全性の目標・定義
- 一方向性(OW: One-Wayness)
- 暗号文c=f(x)から平文x=f−1(c)を推定するのが困難
- 強秘匿性(SS: Semantically Secure)
- 平文xに関する何らかの情報(平文のある1bit)を推定するのが困難
- 識別不可能性(IND:INDistingishability)
- 2つの平文x1,x2のどちらかに対する暗号文をcとし,その対応を知らされていない攻撃者にとって暗号文cがどちらの平文x1,x2に対応するかを推定するのが困難
- 頑健性(NM:Non-Malleability)
- 平文に対する暗号文をc=f(x)とする. cのみを知っている攻撃者が平文xに関連する平文x′に対応する暗号文c′を作り出すことが困難
攻撃者のタイプ
- 暗号文単独攻撃(CTA: CipherText only Attack)
- 既知平文攻撃(KPA: Known Plaintext Attack)
- 選択平文攻撃(CPA:Chosen Plaintext Attack)
- 攻撃者が自由に選んだ平文とそれに対応する暗号文の両方を入手可能
- 選択暗号文攻撃(CCA:Chosen Ciphertext Attack)
- 攻撃者が自由に選んだ暗号文とそれに対応する平文の両方を入手可能
- 適応的選択暗号文攻撃(CCA2)
- CCAで暗号文を選ぶときに以前の復号の結果を利用することが可能
各種暗号の安全性
- 古典暗号
- 現代暗号までの暗号
- OW-KPA
- 暗号化の方式は秘密
- 諜報活動等で平文が既知の場合もある
- 現代暗号
- IND-CCA2
- 暗号化の方式は公開
- 公開鍵暗号は暗号化鍵が公開
- 攻撃者の強さは少なくともCPA
初等整数論
2つの整数 a,b∈Z に対して, a−b が自然数n∈Nで割り切れるとき,「nを法として合同」という.
a≡bmodn⇔a−b∈nZ:={n×i ∣ i∈Z}
- 剰余類 (residue class, coset)
nを法として合同なものを集めた集合(aを代表元という)
[a]:=a+nZ={a+x ∣ x∈nZ}
剰余類の集合
Zn:=nZZ={[0],[1],⋯,[n−1]}={0,1,⋯,n−1}
例:剰余環n=5
Z5={[0],[1],[2],[3],[4]}={0,1,2,3,4}
[0]=0+5Z