Information Security

  1. 1. 情報セキュリティ
    1. 1.1. 情報セキュリティの目的
    2. 1.2. 情報セキュリティのマネージメント
    3. 1.3. セキュリティポリシー
    4. 1.4. 情報セキュリティ基本方針
    5. 1.5. 情報セキュリティ管理策の分類
    6. 1.6. 情報セキュリティの運用
    7. 1.7. 情報資産
    8. 1.8. セキュリティに関わる脅威
      1. 1.8.1. リスク分析の手法
      2. 1.8.2. 脅威の種類
        1. 1.8.2.1. 不正攻撃
        2. 1.8.2.2. 侵入
        3. 1.8.2.3. マルウェア(malware)
        4. 1.8.2.4. Webアプリケーションの脅威
        5. 1.8.2.5. 盗聴・改ざん・なりすまし
        6. 1.8.2.6. 人を対象にした攻撃
    9. 1.9. 情報セキュリティの脆弱性
    10. 1.10. セキュリティ技術的対策6階層
    11. 1.11. 情報セキュリティ強化に必要な要素
      1. 1.11.1. 情報セキュリティ技術と法制度
  2. 2. 暗号システムの基礎
    1. 2.1. 暗号(Cryptography)
    2. 2.2. 暗号系(Crypto System)
      1. 2.2.1. 実用的な暗号系
    3. 2.3. 古典暗号
      1. 2.3.1. 換字暗号(Substitution Cipher)
        1. 2.3.1.1. 平文・暗号文
        2. 2.3.1.2.
        3. 2.3.1.3. 暗号化・復号関数
        4. 2.3.1.4. 換字暗号の例
      2. 2.3.2. 転置暗号(Permutation Cipher)
        1. 2.3.2.1. 平文・暗号文
        2. 2.3.2.2.
        3. 2.3.2.3. 暗号化・復号関数
        4. 2.3.2.4. 転置暗号の例
    4. 2.4. 安全性
      1. 2.4.1. 安全性の考え方
    5. 2.5. 情報理論的安全性
      1. 2.5.1. 暗号について
      2. 2.5.2. 鍵空間Kのサイズについて
    6. 2.6. 現代暗号
      1. 2.6.1. ブロック暗号
      2. 2.6.2. DES暗号(Data Encryption Standard)
        1. 2.6.2.1. f関数
        2. 2.6.2.2. DES暗号の限界
      3. 2.6.3. AES暗号(Advanced Encryption Standard)
        1. 2.6.3.1. AES暗号の撹拌部
    7. 2.7. 課題2.1
  3. 3. 共通鍵暗号方式
    1. 3.1. 利用モード
    2. 3.2. ECBモード(Electroric CodeBook)
    3. 3.3. CBCモード(Cipher-Block Chaining)
      1. 3.3.1. 排他的論理和
    4. 3.4. CFBモード(Cipher FeedBack)
    5. 3.5. OFBモード(Output FeedBack)
    6. 3.6. 利用モード(シフト暗号)
    7. 3.7. メッセージ認証
    8. 3.8. まとめ
    9. 3.9. 課題3.1
  4. 4. 公開鍵暗号方式
    1. 4.1. 一方向性関数
    2. 4.2. 公開鍵暗号の利点
    3. 4.3. 公開鍵暗号の安全性
      1. 4.3.1. 安全性の目標・定義
      2. 4.3.2. 攻撃者のタイプ
      3. 4.3.3. 各種暗号の安全性
    4. 4.4. 初等整数論
      1. 4.4.1. 有限体(素体Fp\mathbb{F}_pFp​)
      2. 4.4.2. 既約剰余類
      3. 4.4.3. オイラー関数
      4. 4.4.4. オイラーの定理
        1. 4.4.4.1. オイラーの定理の利用
      5. 4.4.5. 中国人剰余定理
    5. 4.5. 課題4.1
  5. 5. RSA暗号
    1. 5.1. 秘密鍵の計算
      1. 5.1.1. 拡張ユークリッド法
    2. 5.2. べき乗剰余計算
    3. 5.3. RSA暗号の誤用
    4. 5.4. 素数の選択
    5. 5.5. RSAの安全性
    6. 5.6. RSA-OAEP(Optimal Asymmetric Encryption Padding)
    7. 5.7. 課題5.1
  6. 6. ElGamal暗号
    1. 6.1. 原始元
    2. 6.2. ElGamal暗号の誤用
    3. 6.3. 素数の選択
      1. 6.3.1. Pohlig-Hellman algorithm
      2. 6.3.2. Baby-step Giant-step algorithm
    4. 6.4. ElGamal暗号の安全性
    5. 6.5. Cramer-Shoup暗号
      1. 6.5.1. ハッシュ関数
    6. 6.6. 課題6.1
  7. 7. McEliece暗号
  8. 8. Rabin暗号
    1. 8.1. 平方剰余
      1. 8.1.1. ルジャンドル記号とヤコビ記号
    2. 8.2. 素数判定アルゴリズム (Rabin法)
      1. 8.2.1. アルゴリズムの原理
    3. 8.3. 課題8.1
  9. 9. 鍵配送・鍵共有
    1. 9.1. Diffie-Hellmanの公開鍵配送方式
    2. 9.2. DH鍵配送方式の安全性
      1. 9.2.1. 中間攻撃
    3. 9.3. 公開鍵暗号方式を利用する方式
    4. 9.4. IDに基づく方式
    5. 9.5. 共通鍵暗号方式を用いる方式
    6. 9.6. 課題9.1
  10. 10. ディジタル署名
    1. 10.1. RSA暗号によるディジタル署名方式
      1. 10.1.1. RSA署名方式の問題
      2. 10.1.2. RSA-PSS署名方式
    2. 10.2. 公開鍵暗号方式の問題点(なりすまし)
    3. 10.3. 公開鍵認証基盤(PKI: Public Key Infrastrucure)
    4. 10.4. 公開鍵暗号を用いた署名付き鍵配送方式
    5. 10.5. ElGamal暗号を利用した署名方式
      1. 10.5.1. ElGamal署名方式の安全性
    6. 10.6. DSA署名(Digital Signature Algorithm)
    7. 10.7. ブラインド署名(RSAタイプ)
  11. 11. ブラインド署名
    1. 11.1. 零知識対話証明(ZKIP: Zero Knowledge Interactive Proof)
      1. 11.1.1. 洞窟の問題(零知識対話証明)
      2. 11.1.2. 洞窟の問題の解決案
    2. 11.2. Fiat-Shamir認証方式
    3. 11.3. 高次Fiat-Shamir認証方式
    4. 11.4. Schnorrの認証方式
    5. 11.5. 課題11.1
  12. 12. 電子マネー・電子投票
    1. 12.1. 暗号技術の応用
    2. 12.2. 電子現金の条件
    3. 12.3. 電子財布型電子現金
    4. 12.4. オンライン検証型電子現金:ブラインド署名を利用した電子現金
    5. 12.5. お釣り
    6. 12.6. 金額の構造
    7. 12.7. 小銭瓶方式(おつりを1つにまとめる方式)
    8. 12.8. 電子投票の条件
    9. 12.9. 電子投票の方式
      1. 12.9.1. 高次剰余暗号を利用する方式
      2. 12.9.2. ミックスネットを利用する方式
        1. 12.9.2.1. ElGamalシャッフル
        2. 12.9.2.2. 他のシャッフル
      3. 12.9.3. ブラインド署名を利用する方式
  13. 13. 秘密分散法
    1. 13.1. 分散環境
    2. 13.2. 秘密分散法
      1. 13.2.1. Shamirの(k, n)しきい値法
    3. 13.3. 視覚復号型秘密分散方式
    4. 13.4. 秘密分散法による暗号の多重化
    5. 13.5. 検証可能秘密分散方式
      1. 13.5.1. Feldmanの検証可能秘密分散方式
    6. 13.6. 課題13.1
  14. 14. 秘匿計算
    1. 14.1. 秘密計算・秘匿検索
    2. 14.2. 秘密計算の実現法
      1. 14.2.1. 回路計算
      2. 14.2.2. 準同形暗号を用いた秘密計算
      3. 14.2.3. 秘密分散法を用いた秘密計算
  15. 15. 参考文献

CS专业课学习笔记

情報セキュリティ

情報セキュリティの目的

情報セキュリティ(information security)とは、様々なセキュリティ上の危険や脅威から情報資産を保護し、機密性(Confidentiality)、完全性(Integrity)、可用性(Availability)の3つの観点で正常な機能・状態を保持することにより、情報ステムや情報の信頼性を高め、情報システムの利用者が安心して情報システムを利用できるようにすることである

情報セキュリティ(CIA) 定義
機密性 その情報にアクセスを許可されたものだけがアクセスできるようにすること
完全性 情報およびその処理方法が正確であり完全であるようにすること
可用性 正当な利用者が必要な時に情報および関連する資産に確実にアクセスできる状態を保つこと
本人認証 情報の作成者や送信者が本物であることを保証すること
責任・監査 システムが、いつ、誰に利用されたかを追跡できること
プライバシ 情報やサービスの利用が他人に観察されないようにすること

情報セキュリティのマネージメント

セキュリティポリシー

組織が情報資産を活用するにあたり、情報セキュリティ上保護すべき対象範囲と、 それらの対策や管理運用方針などを文書化したもの

情報セキュリティ基本方針

組織のセキュリティ方針の根幹をなすもの

組織のトップ(上層部・経営層)によって承認され、情報資産にかかわるすべての人員に周知徹底(ISMS(Infromation Security Management System)認証基準)

  • 目的
  • 用語の定義
  • 適用範囲
  • 基本原則及び方針
  • 組織体制及び責任と権限
  • 諸規定との関連
  • 教育・訓練
  • 監査
  • 評価と見直し
  • セキュリティ事故への対応
  • 例外処理
  • 罰則規定

情報セキュリティ管理策の分類

  • セキュリティ基本方針
  • 情報セキュリティのための組織
  • 資産分類
  • 人的資源のセキュリティ
  • 物理的および環境的セキュリティ
  • 通信および運用管理
  • アクセス制御
  • 情報システムの取得、開発およびメンテナンス
  • 情報セキュリティインシデント
  • 事業継続管理
  • 適合性

情報セキュリティの運用

情報資産

  • 物理的資産
    • コンピュータ・ハードウェア、通信機器、施設・設備
  • 情報・データ
    • 文書、データベース等
  • ソフトウェア
    • アプリケーションソフトウェア、OS、開発ツール等
  • 製品やサービス
  • 企業イメージ
    • 企業の評判、信頼度等
  • 人員
    • 社員、利用者、運営管理者、顧客等

セキュリティに関わる脅威

セキュリティリスクの評価式:リスク = 資産価値 × 脅威 × 脆弱性

リスク分析の手法

  • ベースラインアプローチ:
    • 定性分析手法で、組織全体を俯瞰し、既存の標準や規定を基に一定のセキュリティレベルに準拠しているかを調査する手法
  • 非形式アプローチ:
    • 今までの経験に基づいた定性的なリスク分析手法コンサルタントのレベルにより分析結果が左右される
  • 詳細アプローチ:
    • 定量的分析手法で、組織全体のすべての情報資産を洗い出し、各脅威の発生確率と脆弱性の重要度に関する評価を行い、それを基にリスクの大きさを評価する手法
  • 組み合わせアプローチ:
    • システムの構成や業務に応じて、ベースラインアプローチと詳細アプローチを使い分ける

脅威の種類

  1. 不正攻撃(ポートスキャン、Dos(Denial of Sevices) DDos
  2. 侵入 (トロイの木馬、バッファーオーバーフロー、バックドア)
  3. マルウェア(ウイルス、ワーム、スパイウェア、ランサムウェア)
  4. 盗聴
  5. 改ざん
  6. なりすまし
  7. 持ち出し
  8. ソーシャルエンジニアリング
  9. 事故・災害
  10. 紛失
  11. 不作為の作為

(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階層

情報セキュリティ強化に必要な要素

  1. 技術:暗号技術をはじめ、バイオ情報による個人識別技術、電子透かし等による著作権保護、ウイルス対策、ファイアウォール、不正 侵入検知システム
  2. 管理・運営:ISO/IEC 15408,ISO/IEC17799
  3. 法制度:不正アクセス行為の禁止などに関する法律、知的財産権、個人情報保護法等
  4. 倫理

情報セキュリティ技術と法制度

情報技術などの新しい技術の出現により、従来の法制度を適用できない事例 \Rightarrow 法制度の整備が必要

  • 不正アクセス行為の禁止などに関する法律
  • 電気通信事業法
  • 知的財産権
  • 著作権法
  • 個人情報保護法
  • 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: 以下の性質を満たす関数の有限集合
    • ekEE,dkDD,kEK,kDK,xP,cCe_{k_E} \in E, d_{k_D} \in D, k_E \in K, k_D \in K, x \in P, c \in C
    • ekE:PC,dkD:CPe_{k_E}:P \rightarrow C, \quad d_{k_D}:C \rightarrow P
    • ekE(x)=c,dkD(c)=x,s.t.dkD(ekE(x))=xe_{k_E}(x) = c, \quad d_{k_D}(c) = x, \quad s.t. \quad d_{k_D}(e_{k_E}(x)) = x

実用的な暗号系

  • 安全性
    • 暗号文c=ekD(x)C,xP,kDKc = e_{k_D}(x) \in C, x \in P, k_D \in Kから、鍵kKk \in Kや平文xPx \in Pの情報が手に入らない
    • 鍵空間KKの大きさK|K|が大きい(全数探索が不可能)
  • 効率性
    • 暗号化・復号の関数ekE()E,dkD()D,kE,kDKe_{k_E}() \in E, d_{k_D}() \in D, k_E, k_D \in Kが高速に計算可能

古典暗号

現代暗号(共通鍵暗号)の基礎となる暗号方式、それぞれ単体では実用的ではない

  • 換字暗号(Substitution Cipher):平文の文字を別の文字で置き換える
    • eg. 古代ローマ、シーザー暗号
  • 転置暗号(Permutation Cipher):平文の文字列を並び替える
    • eg. 古代ギリシャ、スキュタレー暗号

換字暗号(Substitution Cipher)

平文・暗号文

P=C=Zn={0,1,,n1}P = C = Z_n = \lbrace 0, 1, \cdots, n-1 \rbrace

K={π=01n2n1π(0)π(1)π(n2)π(n1):置換}\begin{aligned} K = \begin{Bmatrix} \pi = \begin{matrix} 0 & 1 & \cdots & n-2 & n-1 \\ \pi(0) & \pi(1) & \cdots & \pi(n-2) & \pi(n-1) \end{matrix} : \text{置換} \end{Bmatrix} \end{aligned}

  • π(0),,π(n1)\pi(0), \cdots, \pi(n-1)ZnZ_nから1つずつ重複なく選ぶ
  • 鍵空間の大きさ:K=n!=12(n1)n|K| = n! = 1 \cdot 2 \cdot \cdots \cdot (n-1) \cdot n
暗号化・復号関数
  • πK\pi \in K
  • eπ(x):=π(x)e_{\pi}(x) := \pi(x)
  • dπ(y):=π1(y),π1d_{\pi}(y) := \pi^{-1}(y), \quad \pi^{-1}π\piの逆置換
換字暗号の例
  • シフト暗号(シーザー暗号)
  • アフィン暗号

51mod26=5x(mod26)1x=215^{-1} \bmod 26 = 5 \cdot x \pmod {26} \equiv 1 \Rightarrow x = 21

転置暗号(Permutation Cipher)

平文・暗号文

P=C=(Zn)mP = C = (Z_n)^m

  • 長さmmの文字列(文字はZnZ_nの要素に対応)

K={π=12m1mπ(1)π(2)π(m1)π(m):置換}\begin{aligned} K = \begin{Bmatrix} \pi = \begin{matrix} 1 & 2 & \cdots & m-1 & m \\ \pi(1) & \pi(2) & \cdots & \pi(m-1) & \pi(m) \end{matrix} : \text{置換} \end{Bmatrix} \end{aligned}

  • π(1),,π(m)\pi(1), \cdots, \pi(m)ZmZ_mから1つずつ重複なく選ぶ
  • 鍵空間の大きさ:K=m!=12m|K| = m! = 1 \cdot 2 \cdot \cdots \cdot m
暗号化・復号関数
  • πK\pi \in K
  • eπ(x1,,xm):=xπ(1),,xπ(m)e_{\pi}(x_1, \cdots, x_m) := x_{\pi(1)}, \cdots, x_{\pi(m)}
  • dπ(y1,,ym):=yπ1(1),,yπ1(m)d_{\pi}(y_1, \cdots, y_m) := y_{\pi^{-1}(1)}, \cdots, y_{\pi^{-1}(m)}
転置暗号の例

安全性

  • 換字暗号では、文字の統計的性質(出現頻度)を利用することで解読される可能性
    • p(e)=0.127,p(t)=0.91,p(a)=0.82,,p(z)=0.063p(e) = 0.127, p(t) = 0.91, p(a) = 0.82, \cdots, p(z) = 0.063
  • 転置暗号では、文字の連続する文字の出現頻度(bigram, trigram)を利用することで解読される可能性
    • 頻出する文字の並び: bigram: th, he, in, er, an, re, ed \quad trigram: the, ing, and, her, ere, ent

安全性の考え方

計算量的安全性

  • 暗号系を破るための既存の最も高速な方法をもってしても途方もなく莫大な計算時間を必要となるとき安全と考える
  • 計算機の能力や攻撃法の発展で破られる可能性
  • 現代暗号の安全性の基本となっている

情報理論的安全性

  • 無限の計算資源を用いても破ることができないとき安全と考える

情報理論的安全性

C. Shannon, “Communication Theory of SecrecySystems”, 1949

定義:すべてのxP,yCx \in P, y \in Cに対して, P(x  y)=P(x)\color{red}{P(x \ |\ y) = P(x)}であるとき, つまり, 暗号文yyが与えられたときに平文がxxである条件付き確率が平文xxを選ぶ確率が同じであるとき,この暗号系は情報理論的安全性, あるいは, 完全守秘性(perfect secrecy)をもつという

  • 暗号文yCy \in Cを入手したあとの平文xPx \in Pの確率分布P(x  y)\color{red}{P(x \ |\ y)}が、入手前P(x)\color{red}{P(x)}と変わらないことを意味(平文に関して暗号文から何も情報が得られていない)

暗号について

情報理論的安全性をもつ暗号について

定理: K=P=C|K| = |P| = |C|を満たす暗号系を考える。すべての鍵が等確率1K\frac{1}{|K|}で使われ, かつ,すべてのxP,yCx \in P, y \in Cに対して, ek(x)=y\color{red}{e_k(x) = y}となるような唯一の鍵kK\color{red}{k \in K}存在するならば, その時に限り,この暗号系は完全秘匿性をもつ

鍵空間Kのサイズについて

定理: 情報理論的に安全な暗号系においてはKP\color{red}{|K| \geq |P|}でなければならない。(鍵空間の大きさは平文空間より大きくなければならない)

現代暗号

1970年代以降, ネットワーク技術が発展し, 不特定多数の人がネットワークにアクセスできるようになり, ネットワーク上での情報通信の安全性(秘匿性)を考慮する必要

暗号化・復号の処理を容易に実現するために,誰でも利用できる標準の暗号が必要

標準暗号の設計思想

  • 暗号アルゴリズムは公開
  • 暗号の安全性は鍵によって確保(鍵が分からなければ、復号できない)

ブロック暗号

平文をデータ撹拌(かくはん)部において多段階に渡って部分鍵に基づいた撹拌を行うことで疑似ランダム性をもつ暗号文を生成する(撹拌部では、換字置換を組み合わせる)

DES暗号(Data Encryption Standard)

1976年にアメリカ連邦政府の標準暗号として採用された共通鍵暗号(データ:64ビット, 鍵:56ビット)

f関数

S-Boxを利用

DES暗号の限界

コンピュータの性能向上により解読される可能性

  • TDES(Triple DES):3鍵DES
    • 異なる3つの鍵(k1,k2,k3k_1, k_2, k_3)を使い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}P = K = \lbrace 0, 1, 2, 3, 4 \rbraceとする. なお, 平文xPx \in Pの確立分布は, Pr(x=0)=13,Pr(x=1)=Pr(x=2)=Pr(x=3)=Pr(x=4)=16Pr(x = 0) = \frac{1}{3}, Pr(x = 1) = Pr(x = 2) = Pr(x = 3) = Pr(x = 4) = \frac{1}{6} であるとする. この時, 以下の二つの暗号方式について, 暗号文の確率分布Pr(c)Pr(c)及び条件付き確率Pr(x  c)Pr(x \ |\ c)を計算しなさい. なお, 鍵は等確率で選択されるとする. すなわち, Pr(k)=15,kKPr(k) = \frac{1}{5}, k \in Kである.

(1) ek(x)=x+kmod5e_k(x) = x + k \bmod 5

CC x=0x = 0 x=1x = 1 x=2x = 2 x=3x = 3 x=4x = 4
k=0k = 0 0 1 2 3 4
k=1k = 1 1 2 3 4 5
k=2k = 2 2 3 4 5 6
k=3k = 3 3 4 5 6 7
k=4k = 4 4 5 6 7 8

暗号文の確率分布Pr(c)Pr(c)は以下である

Pr(c=0)=13×15=115Pr(c=1)=13×15+16×15=110Pr(c=2)=215Pr(c=3)=16Pr(c=4)=15Pr(c=5)=215Pr(c=6)=110Pr(c=7)=115Pr(c=8)=130\begin{aligned} &Pr(c = 0) = \frac{1}{3} \times \frac{1}{5} = \frac{1}{15} \\ &Pr(c = 1) = \frac{1}{3} \times \frac{1}{5} + \frac{1}{6} \times \frac{1}{5} = \frac{1}{10} \\ &Pr(c = 2) = \frac{2}{15} \\ &Pr(c = 3) = \frac{1}{6} \\ &Pr(c = 4) = \frac{1}{5} \\ &Pr(c = 5) = \frac{2}{15} \\ &Pr(c = 6) = \frac{1}{10} \\ &Pr(c = 7) = \frac{1}{15} \\ &Pr(c = 8) = \frac{1}{30} \end{aligned}

Bayesの定理により

Pr(P=x  C=c)=Pr(P=x)Pr(C=c  Pr(P=x)Pr(C=c)=Pr(P=x)k,x=dk(c)Pr(K=k)k,cc(k)Pr(K=k)Pr(x=dk(c))\begin{aligned} Pr(P = x \ |\ C = c) &= \frac{Pr(P = x) \cdot Pr(C = c \ |\ Pr(P = x)}{Pr(C = c)} \\ &= \frac{Pr(P = x) \cdot \sum_{k,x = d_k(c)} Pr(K = k)}{\sum_{k,c \in c(k)} Pr(K = k) \cdot Pr(x = d_k(c))} \end{aligned}

条件付き確率Pr(x  c)Pr(x \ |\ c)は以下である

Pr(00)=1,Pr(10)=0,Pr(20)=0,Pr(30)=0,Pr(40)=0Pr(01)=23,Pr(11)=13,Pr(21)=0,Pr(31)=0,Pr(41)=0Pr(02)=12,Pr(12)=14,Pr(22)=14,Pr(32)=0,Pr(42)=0Pr(03)=25,Pr(13)=15,Pr(23)=15,Pr(33)=15,Pr(43)=0Pr(04)=13,Pr(14)=16,Pr(24)=16,Pr(34)=16,Pr(44)=16Pr(05)=0,Pr(15)=14,Pr(25)=14,Pr(35)=14,Pr(45)=14Pr(06)=0,Pr(16)=0,Pr(26)=13,Pr(36)=13,Pr(46)=13Pr(07)=0,Pr(17)=0,Pr(27)=0,Pr(37)=12,Pr(47)=12Pr(08)=0,Pr(18)=0,Pr(28)=0,Pr(38)=0,Pr(48)=1\begin{aligned} &Pr(0 | 0) = 1, \quad Pr(1 | 0) = 0, \quad Pr(2 | 0) = 0,\quad Pr(3 | 0) = 0, \quad Pr(4 | 0) = 0 \\ \\ &Pr(0 | 1) = \frac{2}{3}, \quad Pr(1 | 1) = \frac{1}{3}, \quad Pr(2 | 1) = 0,\quad Pr(3 | 1) = 0, \quad Pr(4 | 1) = 0 \\ \\ &Pr(0 | 2) = \frac{1}{2}, \quad Pr(1 | 2) = \frac{1}{4}, \quad Pr(2 | 2) = \frac{1}{4},\quad Pr(3 | 2) = 0, \quad Pr(4 | 2) = 0 \\ \\ &Pr(0 | 3) = \frac{2}{5}, \quad Pr(1 | 3) = \frac{1}{5}, \quad Pr(2 | 3) = \frac{1}{5},\quad Pr(3 | 3) = \frac{1}{5}, \quad Pr(4 | 3) = 0 \\ \\ &Pr(0 | 4) = \frac{1}{3}, \quad Pr(1 | 4) = \frac{1}{6}, \quad Pr(2 | 4) = \frac{1}{6}, \quad Pr(3 | 4) = \frac{1}{6}, \quad Pr(4 | 4) = \frac{1}{6} \\ \\ &Pr(0 | 5) = 0, \quad Pr(1 | 5) = \frac{1}{4}, \quad Pr(2 | 5) = \frac{1}{4}, \quad Pr(3 | 5) = \frac{1}{4}, \quad Pr(4 | 5) = \frac{1}{4} \\ \\ &Pr(0 | 6) = 0, \quad Pr(1 | 6) = 0, \quad Pr(2 | 6) = \frac{1}{3}, \quad Pr(3 | 6) = \frac{1}{3}, \quad Pr(4 | 6) = \frac{1}{3} \\ \\ &Pr(0 | 7) = 0, \quad Pr(1 | 7) = 0, \quad Pr(2 | 7) = 0, \quad Pr(3 | 7) = \frac{1}{2}, \quad Pr(4 | 7) = \frac{1}{2} \\ \\ &Pr(0 | 8) = 0, \quad Pr(1 | 8) = 0, \quad Pr(2 | 8) = 0, \quad Pr(3 | 8) = 0, \quad Pr(4 | 8) = 1 \end{aligned}

(2) ek(x)=x+ke_k(x) = x + k

CC x=0x = 0 x=1x = 1 x=2x = 2 x=3x = 3 x=4x = 4
k=0k = 0 0 1 2 3 4
k=1k = 1 1 2 3 4 5
k=2k = 2 2 3 4 5 6
k=3k = 3 3 4 5 6 7
k=4k = 4 4 5 6 7 8

暗号文の確率分布Pr(c)Pr(c)は以下である

Pr(c=0)=115Pr(c=1)=110Pr(c=2)=215Pr(c=3)=16Pr(c=4)=15Pr(c=5)=215Pr(c=6)=110Pr(c=7)=115Pr(c=8)=130\begin{aligned} &Pr(c = 0) = \frac{1}{15} \\ &Pr(c = 1) = \frac{1}{10} \\ &Pr(c = 2) = \frac{2}{15} \\ &Pr(c = 3) = \frac{1}{6} \\ &Pr(c = 4) = \frac{1}{5} \\ &Pr(c = 5) = \frac{2}{15} \\ &Pr(c = 6) = \frac{1}{10} \\ &Pr(c = 7) = \frac{1}{15} \\ &Pr(c = 8) = \frac{1}{30} \end{aligned}

Bayesの定理により条件付き確率Pr(x  c)Pr(x \ |\ c)は以下である

Pr(00)=1,Pr(10)=0,Pr(20)=0,Pr(30)=0,Pr(40)=0Pr(01)=23,Pr(11)=13,Pr(21)=0,Pr(31)=0,Pr(41)=0Pr(02)=12,Pr(12)=14,Pr(22)=14,Pr(32)=0,Pr(42)=0Pr(03)=25,Pr(13)=15,Pr(23)=15,Pr(33)=15,Pr(43)=0Pr(04)=13,Pr(14)=16,Pr(24)=16,Pr(34)=16,Pr(44)=16Pr(05)=0,Pr(15)=14,Pr(25)=14,Pr(35)=14,Pr(45)=14Pr(06)=0,Pr(16)=0,Pr(26)=13,Pr(36)=13,Pr(46)=13Pr(07)=0,Pr(17)=0,Pr(27)=0,Pr(37)=12,Pr(47)=12Pr(08)=0,Pr(18)=0,Pr(28)=0,Pr(38)=0,Pr(48)=1\begin{aligned} &Pr(0 | 0) = 1, \quad Pr(1 | 0) = 0, \quad Pr(2 | 0) = 0,\quad Pr(3 | 0) = 0, \quad Pr(4 | 0) = 0 \\ \\ &Pr(0 | 1) = \frac{2}{3}, \quad Pr(1 | 1) = \frac{1}{3}, \quad Pr(2 | 1) = 0,\quad Pr(3 | 1) = 0, \quad Pr(4 | 1) = 0 \\ \\ &Pr(0 | 2) = \frac{1}{2}, \quad Pr(1 | 2) = \frac{1}{4}, \quad Pr(2 | 2) = \frac{1}{4},\quad Pr(3 | 2) = 0, \quad Pr(4 | 2) = 0 \\ \\ &Pr(0 | 3) = \frac{2}{5}, \quad Pr(1 | 3) = \frac{1}{5}, \quad Pr(2 | 3) = \frac{1}{5},\quad Pr(3 | 3) = \frac{1}{5}, \quad Pr(4 | 3) = 0 \\ \\ &Pr(0 | 4) = \frac{1}{3}, \quad Pr(1 | 4) = \frac{1}{6}, \quad Pr(2 | 4) = \frac{1}{6}, \quad Pr(3 | 4) = \frac{1}{6}, \quad Pr(4 | 4) = \frac{1}{6} \\ \\ &Pr(0 | 5) = 0, \quad Pr(1 | 5) = \frac{1}{4}, \quad Pr(2 | 5) = \frac{1}{4}, \quad Pr(3 | 5) = \frac{1}{4}, \quad Pr(4 | 5) = \frac{1}{4} \\ \\ &Pr(0 | 6) = 0, \quad Pr(1 | 6) = 0, \quad Pr(2 | 6) = \frac{1}{3}, \quad Pr(3 | 6) = \frac{1}{3}, \quad Pr(4 | 6) = \frac{1}{3} \\ \\ &Pr(0 | 7) = 0, \quad Pr(1 | 7) = 0, \quad Pr(2 | 7) = 0, \quad Pr(3 | 7) = \frac{1}{2}, \quad Pr(4 | 7) = \frac{1}{2} \\ \\ &Pr(0 | 8) = 0, \quad Pr(1 | 8) = 0, \quad Pr(2 | 8) = 0, \quad Pr(3 | 8) = 0, \quad Pr(4 | 8) = 1 \end{aligned}

共通鍵暗号方式

利用モード

一般に取り扱われるデータ(平文)の長さはブロック暗号のデータ長を超えるため、利用するブロック暗号のデータ長ごとにデータ(平文)を分割して暗号化する必要がある

ECBモード(Electroric CodeBook)

ECBモードは同一鍵を用いて、各ブロックを暗号化し、復号の際も同じ鍵を用いて、各ブロックを復号する

  • 同一の平文が入力されたとき、暗号文も同一となるそのため、統計的な解析等で推測がしやすくなる(画像のようなデータの場合、同じ値が続くことがある)
  • 1ビット誤りの伝搬: 1ブロック
  • 並列計算: 実行可能

CBCモード(Cipher-Block Chaining)

暗号化では、乱数を用いて初期値rrを準備する。初期値rrはそのまま送信し、その後、暗号化した暗号ブロックを送信する。暗号化は平文ブロックxix_iとひとつ前の暗号文ブロックci1c_{i-1}排他的論理和を取り、その値を暗号化鍵kkで暗号化し、暗号文ブロックcic_iを生成する。なお、最初の平文ブロックx1x_1暗号化については、ひとつ前の暗号文ブロックc0c_0が存在しないため、その値を初期値rrとする

復号では、暗号文ブロックcic_iを復号し、その値とひとつ前の暗号文ブロックci1c_{i-1}との排他的論理和を取り、元の平文ブロックxix_iが計算できる

  • 最も良く使用されているモードであり、標準実装されている場合が多い
  • 初期値は定数を用いると安全でなくなる
  • 1ビット誤りの伝搬: 1ブロック+次のブロックの1ビット
  • 並列計算: 暗号化は実行不可、復号は実行可能

排他的論理和

排他的論理和xyx \oplus yの計算:

  1. x,yx,yの数値をそれぞれをビット列(2進数)に変換
  2. 各ビットごとに下記の表にある計算を実行
  3. 計算結果を元の数値に変換
\oplus 0 1
0 0 1
1 1 0

CFBモード(Cipher FeedBack)

暗号化、復号共CBCモードと同様に初期値rrを準備して最初に初期値rrを送信する。暗号化はひとつ前の暗号文ブロックci1c_{i-1}を暗号化鍵kkで暗号化した値と平文ブロックxix_iとの排他的論理和を取り、暗号文ブロックcic_iを生成する。なお、最初の平文ブロックx1x_1暗号化については、ひとつ前の暗号文ブロックc0c_0が存在しないため、その値を初期値rrとする

復号では、ひとつ前の暗号文ブロックci1c_{i-1}を暗号化鍵kkで暗号化し、その値と暗号文ブロックcic_iとの排他的論理和を取り、元の平文ブロックxix_iが計算できる

  • 暗号化処理のみで実現可能
  • 1ビット誤りの伝搬: 1ブロック+次のブロックに影響
  • 並列計算: 暗号化は実行不可、復号は実行可能

OFBモード(Output FeedBack)

OFBモード暗号化はCFBモードと似た形になっているが、次のブロック送るのは排他的論理和を取る前の暗号化した値のみになる。r0r_0は初期値rrとして、rir_iri1r_{i-1}暗号化した値になり、rir_irrが与えられば、次々と暗号化することによって計算できる。rir_iと平文ブロックxix_i排他的論理和を取り、暗号化できる。

これらの計算は復号も同様になる。すなわち、OFBモードの暗号化、復号の処理は入力が異なるだけで、全く同じものになる。

  • 暗号化処理のみで実現可能
  • 暗号化と復号が同じ処理
  • ビット誤りによる影響が最小限であるので、無線通信のようなエラーレートが高い通信路にも適する
  • 1ビット誤りの伝搬: 1ビットのみ
  • 並列計算: 暗号化・復号初期値が既知であれば事前計算可能

利用モード(シフト暗号)

シフト暗号: ek(x)=x+kmodn,n=32e_k(x) = x + k \bmod n, \quad n = 32
鍵: k=7k = 7
平文: king (x1,x2,x3,x4)=(10,8,13,6)\Rightarrow (x_1, x_2, x_3, x_4) = (10, 8, 13, 6)
初期値: 13(CBC, CFB, OFBモード)

  • ECBモード

c1=ek(x1)=10+7mod32=17c2=ek(x2)=8+7mod32=15c3=ek(x3)=13+7mod32=20c4=ek(x4)=6+7mod32=13\begin{aligned} &c_1 = e_k(x_1) = 10 + 7 \bmod 32 = 17 \\ &c_2 = e_k(x_2) = 8 + 7 \bmod 32 = 15 \\ &c_3 = e_k(x_3) = 13 + 7 \bmod 32 = 20 \\ &c_4 = e_k(x_4) = 6 + 7 \bmod 32 = 13 \end{aligned}

暗号文: rpun

  • CBCモード

c1=ek(x1c0)=(1013)+7mod32=14c2=ek(x2c1)=(814)+7mod32=13c3=ek(x3c2)=(1313)+7mod32=7c4=ek(x4c3)=(67)+7mod32=8\begin{aligned} &c_1 = e_k(x_1 \oplus c_0) = (10 \oplus 13) + 7 \bmod 32 = 14 \\ &c_2 = e_k(x_2 \oplus c_1) = (8 \oplus 14) + 7 \bmod 32 = 13 \\ &c_3 = e_k(x_3 \oplus c_2) = (13 \oplus 13) + 7 \bmod 32 = 7 \\ &c_4 = e_k(x_4 \oplus c_3) = (6 \oplus 7) + 7 \bmod 32 = 8 \end{aligned}

暗号文: onhi

x1=dk(c1)c0=(147mod32)13=10x2=dk(c2)c1=(137mod32)14=8x3=dk(c3)c2=(77mod32)13=13x4=dk(c4)c3=(87mod32)7=6\begin{aligned} &x_1 = d_k(c_1) \oplus c_0 = (14 - 7 \bmod 32) \oplus 13 = 10 \\ &x_2 = d_k(c_2) \oplus c_1 = (13 - 7 \bmod 32) \oplus 14 = 8 \\ &x_3 = d_k(c_3) \oplus c_2 = (7 - 7 \bmod 32) \oplus 13 = 13 \\ &x_4 = d_k(c_4) \oplus c_3 = (8 - 7 \bmod 32) \oplus 7 = 6 \end{aligned}

平文: king

  • CFBモード

c1=x1ek(c0)=10(13+7mod32)=30c2=x2ek(c1)=8(30+7mod32)=13c3=x3ek(c2)=13(13+7mod32)=25c4=x4ek(c3)=6(25+7mod32)=6\begin{aligned} &c_1 = x_1 \oplus e_k(c_0) = 10 \oplus (13 + 7 \bmod 32) = 30 \\ &c_2 = x_2 \oplus e_k(c_1) = 8 \oplus (30 + 7 \bmod 32) = 13 \\ &c_3 = x_3 \oplus e_k(c_2) = 13 \oplus (13 + 7 \bmod 32) = 25 \\ &c_4 = x_4 \oplus e_k(c_3) = 6 \oplus (25 + 7 \bmod 32) = 6 \end{aligned}

暗号文: =nzg

x1=c1ek(c0)=30(13+7mod32)=10x2=c2ek(c1)=13(30+7mod32)=8x3=c3ek(c2)=25(13+7mod32)=13x4=c4ek(c3)=6(25+7mod32)=6\begin{aligned} &x_1 = c_1 \oplus e_k(c_0) = 30 \oplus (13 + 7 \bmod 32) = 10 \\ &x_2 = c_2 \oplus e_k(c_1) = 13 \oplus (30 + 7 \bmod 32) = 8 \\ &x_3 = c_3 \oplus e_k(c_2) = 25 \oplus (13 + 7 \bmod 32) = 13 \\ &x_4 = c_4 \oplus e_k(c_3) = 6 \oplus (25 + 7 \bmod 32) = 6 \end{aligned}

平文: king

  • OFBモード

c1=x1ek(r0)=10(13+7mod32)=30c2=x2ek(r1)=8(20+7mod32)=19c3=x3ek(r2)=13(27+7mod32)=15c4=x4ek(r3)=6(2+7mod32)=15\begin{aligned} &c_1 = x_1 \oplus e_k(r_0) = 10 \oplus (13 + 7 \bmod 32) = 30 \\ &c_2 = x_2 \oplus e_k(r_1) = 8 \oplus (\color{blue}{20} + 7 \bmod 32) = 19 \\ &c_3 = x_3 \oplus e_k(r_2) = 13 \oplus (\color{blue}{27} + 7 \bmod 32) = 15 \\ &c_4 = x_4 \oplus e_k(r_3) = 6 \oplus (\color{blue}{2} + 7 \bmod 32) = 15 \end{aligned}

暗号文: =tpp

x1=c1ek(r0)=30(13+7mod32)=10x2=c2ek(r1)=19(20+7mod32)=8x3=c3ek(r2)=15(27+7mod32)=13x4=c4ek(r3)=15(2+7mod32)=6\begin{aligned} &x_1 = c_1 \oplus e_k(r_0) = 30 \oplus (13 + 7 \bmod 32) = 10 \\ &x_2 = c_2 \oplus e_k(r_1) = 19 \oplus (\color{blue}{20} + 7 \bmod 32) = 8 \\ &x_3 = c_3 \oplus e_k(r_2) = 15 \oplus (\color{blue}{27} + 7 \bmod 32) = 13 \\ &x_4 = c_4 \oplus e_k(r_3) = 15 \oplus (\color{blue}{2} + 7 \bmod 32) = 6 \end{aligned}

平文: king

メッセージ認証

CMAC(Cipher based Message Authentication Code)

メッセージの完全性を保証するために利用

まとめ

モード 並列化 1ビット誤りの伝搬 特徴
ECB 可能 1ブロック 同一平文が同一暗号文に
CBC 暗号化:不可 \quad 復号: 可能 1ブロック + 次ブロック1ビット 最も使用
CFB 暗号化:不可 \quad 復号: 可能 1ビット + 次のブロック 暗号器のみ
OFB 事前計算可能(初期値既知) 1ビット 暗号器のみ \quad 暗号化・復号同一

課題3.1

平文集合と暗号文集合P=C=Z32P = C = Z_{32}とし、アフィン暗号ek1,k2(x)=k1x+k2mod32e_{k_1,k_2}(x) = k_1x + k_2 \bmod 32を考える。この時、ECBモード、CBCモード、CFBモード、OFBモードの各利用モードで暗号化せよ。また、復号も行い、元の平文に戻ることを確認せよ

なお、アフィン暗号の復号はdk1,k2(y)=k11(yk2)mod32d_{k_1, k_2}(y) = k_1^{-1} (y - k_2) \bmod 32であり、5113mod32(5×131mod32)5^{-1} \equiv 13 \bmod 32(5 \times 13 \equiv 1 \bmod 32)である。

暗号化鍵は(k1,k2)=(5,17)(k_1, k_2) = (5, 17)とし、平文はqueenとする。また、CBCモード、CFBモード、OFBモードの初期値は11とする。

  • ECBモード
    • 暗号:ci=ek(xi)c_i = e_k(x_i)
    • 復号:xi=dk(ci)x_i = d_k(c_i)

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\begin{aligned} &c_1 = e_{k_1, k_2}(x_1) = 5 \times 16 + 17 \bmod 32 = 1 \\ &c_2 = e_{k_1, k_2}(x_2) = 5 \times 20 + 17 \bmod 32 = 21 \\ &c_3 = e_{k_1, k_2}(x_3) = 5 \times 4 + 17 \bmod 32 = 5 \\ &c_4 = e_{k_1, k_2}(x_4) = 5 \times 4 + 17 \bmod 32 = 5 \\ &c_5 = e_{k_1, k_2}(x_5) = 5 \times 13 + 17 \bmod 32 = 18 \end{aligned}

暗号文: bvffs

x1=dk1,k2(c1)=51(117)mod32=13×16mod32=16x2=dk1,k2(c2)=51(2117)mod32=13×4mod32=20x3=dk1,k2(c3)=51(517)mod32=13×20mod32=4x4=dk1,k2(c4)=51(517)mod32=13×20mod32=4x5=dk1,k2(c5)=51(1817)mod32=13×1mod32=13\begin{aligned} &x_1 = d_{k_1, k_2}(c_1) = 5^{-1}(1 - 17) \bmod 32 = 13 \times 16 \bmod 32 = 16 \\ &x_2 = d_{k_1, k_2}(c_2) = 5^{-1}(21 - 17) \bmod 32 = 13 \times 4 \bmod 32 = 20 \\ &x_3 = d_{k_1, k_2}(c_3) = 5^{-1}(5 - 17) \bmod 32 = 13 \times 20 \bmod 32 = 4 \\ &x_4 = d_{k_1, k_2}(c_4) = 5^{-1}(5 - 17) \bmod 32 = 13 \times 20 \bmod 32 = 4 \\ &x_5 = d_{k_1, k_2}(c_5) = 5^{-1}(18 - 17) \bmod 32 = 13 \times 1 \bmod 32 = 13 \end{aligned}

復号の結果: queen

  • CBCモード
    • 暗号: ci=ek(xici1),c0=rc_i = e_k(x_i \oplus c_{i-1}), \quad c_0 = r
    • 復号: xi=dk(ci)ci1,c0=rx_i = d_k(c_i) \oplus c_{i-1}, \quad c_0 = r

c1=ek1,k2(x1c0)=k1(1611)+k2mod32=5×27+17mod32=24c2=ek1,k2(x2c1)=k1(2024)+k2mod32=5×12+17mod32=13c3=ek1,k2(x3c2)=k1(413)+k2mod32=5×9+17mod32=30c4=ek1,k2(x4c3)=k1(430)+k2mod32=5×26+17mod32=19c5=ek1,k2(x5c4)=k1(1319)+k2mod32=5×30+17mod32=7\begin{aligned} &c_1 = e_{k_1, k_2}(x_1 \oplus c_0) = k_1(16 \oplus 11) + k_2 \bmod 32 = 5 \times 27 + 17 \bmod 32 = 24 \\ &c_2 = e_{k_1, k_2}(x_2 \oplus c_1) = k_1(20 \oplus 24) + k_2 \bmod 32 = 5 \times 12 + 17 \bmod 32 = 13 \\ &c_3 = e_{k_1, k_2}(x_3 \oplus c_2) = k_1(4 \oplus 13) + k_2 \bmod 32 = 5 \times 9 + 17 \bmod 32 = 30 \\ &c_4 = e_{k_1, k_2}(x_4 \oplus c_3) = k_1(4 \oplus 30) + k_2 \bmod 32 = 5 \times 26 + 17 \bmod 32 = 19 \\ &c_5 = e_{k_1, k_2}(x_5 \oplus c_4) = k_1(13 \oplus 19) + k_2 \bmod 32 = 5 \times 30 + 17 \bmod 32 = 7 \end{aligned}

暗号文: yn=th

x1=dk1,k2(c1)c0=k11(c1k2)mod32c0=13×7mod3211=16x2=dk1,k2(c2)c1=k11(c1k2)mod32c1=13×28mod3224=20x3=dk1,k2(c3)c2=k11(c1k2)mod32c2=13×13mod3213=4x4=dk1,k2(c4)c3=k11(c1k2)mod32c3=13×2mod3230=4x5=dk1,k2(c5)c4=k11(c1k2)mod32c4=13×22mod3219=13\begin{aligned} &x_1 = d_{k_1, k_2}(c_1) \oplus c_0 = k_1^{-1}(c_1 - k_2) \bmod 32 \oplus c_0 = 13 \times 7 \bmod 32 \oplus 11 = 16 \\ &x_2 = d_{k_1, k_2}(c_2) \oplus c_1 = k_1^{-1}(c_1 - k_2) \bmod 32 \oplus c_1 = 13 \times 28 \bmod 32 \oplus 24 = 20 \\ &x_3 = d_{k_1, k_2}(c_3) \oplus c_2 = k_1^{-1}(c_1 - k_2) \bmod 32 \oplus c_2 = 13 \times 13 \bmod 32 \oplus 13 = 4 \\ &x_4 = d_{k_1, k_2}(c_4) \oplus c_3 = k_1^{-1}(c_1 - k_2) \bmod 32 \oplus c_3 = 13 \times 2 \bmod 32 \oplus 30 = 4 \\ &x_5 = d_{k_1, k_2}(c_5) \oplus c_4 = k_1^{-1}(c_1 - k_2) \bmod 32 \oplus c_4 = 13 \times 22 \bmod 32 \oplus 19 = 13 \end{aligned}

復号の結果: queen

  • CFBモード
    • 暗号: ci=xiek(ci1),c0=rc_i = x_i \oplus e_k(c_{i-1}), \quad c_0 = r
    • 復号: xi=ciek(ci1),c0=rx_i = c_i \oplus e_k(c_{i-1}), \quad c_0 = r

c1=x1ek1,k2(c0)=16(55+17mod32)=24c2=x2ek1,k2(c1)=20(120+17mod32)=29c3=x3ek1,k2(c2)=4(145+17mod32)=6c4=x4ek1,k2(c3)=4(30+17mod32)=11c5=x5ek1,k2(c4)=13(55+17mod32)=5\begin{aligned} &c_1 = x_1 \oplus e_{k_1, k_2}(c_0) = 16 \oplus (55 + 17 \bmod 32) = 24 \\ &c_2 = x_2 \oplus e_{k_1, k_2}(c_1) = 20 \oplus (120 + 17 \bmod 32) = 29 \\ &c_3 = x_3 \oplus e_{k_1, k_2}(c_2) = 4 \oplus (145 + 17 \bmod 32) = 6 \\ &c_4 = x_4 \oplus e_{k_1, k_2}(c_3) = 4 \oplus (30 + 17 \bmod 32) = 11 \\ &c_5 = x_5 \oplus e_{k_1, k_2}(c_4) = 13 \oplus (55 + 17 \bmod 32) = 5 \end{aligned}

暗号文: y/glf

x1=c1ek1,k2(c0)=24(55+17mod32)=16x2=c2ek1,k2(c1)=29(120+17mod32)=20x3=c3ek1,k2(c2)=6(145+17mod32)=4x4=c4ek1,k2(c3)=11(30+17mod32)=4x5=c5ek1,k2(c4)=5(55+17mod32)=13\begin{aligned} &x_1 = c_1 \oplus e_{k_1, k_2}(c_0) = 24 \oplus (55 + 17 \bmod 32) = 16 \\ &x_2 = c_2 \oplus e_{k_1, k_2}(c_1) = 29 \oplus (120 + 17 \bmod 32) = 20 \\ &x_3 = c_3 \oplus e_{k_1, k_2}(c_2) = 6 \oplus (145 + 17 \bmod 32) = 4 \\ &x_4 = c_4 \oplus e_{k_1, k_2}(c_3) = 11 \oplus (30 + 17 \bmod 32) = 4 \\ &x_5 = c_5 \oplus e_{k_1, k_2}(c_4) = 5 \oplus (55 + 17 \bmod 32) = 13 \end{aligned}

復号の結果: queen

  • OFBモード
    • 暗号: ci=xiri,ri=ek(ri1),r0=rc_i = x_i \oplus r_i, \quad r_i = e_k(r_{i-1}), \quad r_0 = r
    • 復号: xi=ciri,ri=ek(ri1),r0=rx_i = c_i \oplus r_i, \quad r_i = e_k(r_{i-1}), \quad r_0 = r

c1=x1ek1,k2(r0)=16(5×11+17mod32)=168=24c2=x2ek1,k2(r1)=20(5×8+17mod32)=2025=13c3=x3ek1,k2(r2)=4(5×25+17mod32)=414=10c4=x4ek1,k2(r3)=4(5×14+17mod32)=423=19c5=x5ek1,k2(r4)=13(5×23+17mod32)=134=9\begin{aligned} &c_1 = x_1 \oplus e_{k_1, k_2}(r_0) = 16 \oplus (5 \times 11 + 17 \bmod 32) = 16 \oplus 8 = 24 \\ &c_2 = x_2 \oplus e_{k_1, k_2}(r_1) = 20 \oplus (5 \times 8 + 17 \bmod 32) = 20 \oplus 25 = 13 \\ &c_3 = x_3 \oplus e_{k_1, k_2}(r_2) = 4 \oplus (5 \times 25 + 17 \bmod 32) = 4 \oplus 14 = 10 \\ &c_4 = x_4 \oplus e_{k_1, k_2}(r_3) = 4 \oplus (5 \times 14 + 17 \bmod 32) = 4 \oplus 23 = 19 \\ &c_5 = x_5 \oplus e_{k_1, k_2}(r_4) = 13 \oplus (5 \times 23 + 17 \bmod 32) = 13 \oplus 4 = 9 \end{aligned}

暗号文: ynktj

x1=c1ek1,k2(r0)=24(5×11+17mod32)=248=16x2=c2ek1,k2(r1)=13(5×8+17mod32)=1325=20x3=c3ek1,k2(r2)=10(5×25+17mod32)=1014=4x4=c4ek1,k2(r3)=19(5×14+17mod32)=1923=4x5=c5ek1,k2(r4)=9(5×23+17mod32)=94=13\begin{aligned} &x_1 = c_1 \oplus e_{k_1, k_2}(r_0) = 24 \oplus (5 \times 11 + 17 \bmod 32) = 24 \oplus 8 = 16 \\ &x_2 = c_2 \oplus e_{k_1, k_2}(r_1) = 13 \oplus (5 \times 8 + 17 \bmod 32) = 13 \oplus 25 = 20 \\ &x_3 = c_3 \oplus e_{k_1, k_2}(r_2) = 10 \oplus (5 \times 25 + 17 \bmod 32) = 10 \oplus 14 = 4 \\ &x_4 = c_4 \oplus e_{k_1, k_2}(r_3) = 19 \oplus (5 \times 14 + 17 \bmod 32) = 19 \oplus 23 = 4 \\ &x_5 = c_5 \oplus e_{k_1, k_2}(r_4) = 9 \oplus (5 \times 23 + 17 \bmod 32) = 9 \oplus 4 = 13 \end{aligned}

復号の結果: queen

公開鍵暗号方式

秘密である復号鍵kDk_Dから生成した暗号化鍵kEk_Eを公開する暗号方式暗号化鍵kEk_Eの生成には一方向性関数(One-Way Function)を利用共通鍵暗号のように秘密の鍵をお互いに交換する必要がなく、公開されている暗号化鍵を使って暗号化が可能

一方向性関数

入力x1,x2,,xnx_1, x_2, \cdots, x_nに対し, 出力F(x1,,xn)F(x_1, \cdots, x_n)を計算するのは容易であるが, 出力F(x1,,xn)F(x_1, \cdots, x_n)から入力x1,,xnx_1, \cdots, x_nを求めることが計算量的に困難である関数

代表的な一方向性関数:

  • 素因数分解: 大きな素数p,qn=p×qp, q \rightleftarrows n = p \times q
  • 離散対数問題:xx, (公開:g,ng, n) y=gxmodn\rightleftarrows y = g^x \bmod n

一方向性関数と公開鍵暗号方式

  • 素因数分解
    • RSA暗号(1977)
    • RSA-OAEP暗号
    • Rabin暗号(1979)
  • 離散対数問題
    • ElGamal暗号(1982)
    • Cramer-Shoup暗号
    • 楕円暗号(1985)
  • ナップザック問題
    • Merkle-Hellman暗号
  • 線形符号の復号問題
    • McEliece 暗号

公開鍵暗号の利点

  • 鍵の管理が簡単

共通鍵暗号では, nn人がお互いに暗号化しようとすると全体で(n2)\binom{n}{2}の鍵が必要。それに対し公開鍵暗号では, その人が秘密の復号鍵を用意すれば良いため全体でnn個となる(暗号化鍵は電話帳のようなもので公開するので、管理の負担が減少する)

  • ディジタル署名に応用

公開鍵暗号方式の鍵の非対称性を利用して, 署名方式が構築できる

公開鍵暗号の安全性

安全性の目標・定義

  • 一方向性(OW: One-Wayness)
    • 暗号文c=f(x)c = f(x)から平文x=f1(c)x = f^{-1}(c)を推定するのが困難
  • 強秘匿性(SS: Semantically Secure)
    • 平文xxに関する何らかの情報(平文のある1bit)を推定するのが困難
  • 識別不可能性(IND:INDistingishability)
    • 2つの平文x1,x2x_1, x_2のどちらかに対する暗号文をccとし,その対応を知らされていない攻撃者にとって暗号文ccがどちらの平文x1,x2x_1, x_2に対応するかを推定するのが困難
  • 頑健性(NM:Non-Malleability)
    • 平文に対する暗号文をc=f(x)c = f(x)とする. ccのみを知っている攻撃者が平文xxに関連する平文xx^{'}に対応する暗号文cc^{'}を作り出すことが困難

攻撃者のタイプ

  • 暗号文単独攻撃(CTA: CipherText only Attack)
    • 攻撃者には暗号文のみが入手可能
  • 既知平文攻撃(KPA: Known Plaintext Attack)
    • 暗号文に対応する平文も攻撃者に渡る
  • 選択平文攻撃(CPA:Chosen Plaintext Attack)
    • 攻撃者が自由に選んだ平文とそれに対応する暗号文の両方を入手可能
  • 選択暗号文攻撃(CCA:Chosen Ciphertext Attack)
    • 攻撃者が自由に選んだ暗号文とそれに対応する平文の両方を入手可能
  • 適応的選択暗号文攻撃(CCA2)
    • CCAで暗号文を選ぶときに以前の復号の結果を利用することが可能

各種暗号の安全性

  • 古典暗号
    • OW-CTA
    • 暗号化の方式は秘密
  • 現代暗号までの暗号
    • OW-KPA
    • 暗号化の方式は秘密
    • 諜報活動等で平文が既知の場合もある
  • 現代暗号
    • IND-CCA2
    • 暗号化の方式は公開
    • 公開鍵暗号は暗号化鍵が公開
    • 攻撃者の強さは少なくともCPA

初等整数論

  • 合同式 (congruence)

2つの整数 a,bZa, b \in \mathbb{Z} に対して, aba - b が自然数nNn \in \mathbb{N}で割り切れるとき,「nnを法として合同」という.

abmodnabnZ:={n×i  iZ}a \equiv b \bmod n \Leftrightarrow a - b \in n\mathbb{Z} := \lbrace n \times i \ |\ i \in \mathbb{Z} \rbrace

  • 剰余類 (residue class, coset)

nnを法として合同なものを集めた集合(aaを代表元という)

[a]:=a+nZ={a+x  xnZ}[a] := a + n\mathbb{Z} = \lbrace a + x \ |\ x \in n\mathbb{Z} \rbrace

  • 剰余類環 (quotient ring)

剰余類の集合

Zn:=ZnZ={[0],[1],,[n1]}={0,1,,n1}\mathbb{Z}_n := \frac{\mathbb{Z}}{n\mathbb{Z}} = \lbrace [0], [1], \cdots, [n-1] \rbrace = \lbrace 0, 1, \cdots, n-1 \rbrace

例:剰余環n=5n = 5

Z5={[0],[1],[2],[3],[4]}={0,1,2,3,4}\mathbb{Z}_5 = \lbrace [0], [1], [2], [3], [4] \rbrace = \lbrace 0, 1, 2, 3, 4 \rbrace

[0]=0+5Z={,10,5,0,5,10,,}[1]=1+5Z={,9,4,1,6,11,,}[2]=2+5Z={,8,3,2,7,12,,}[3]=3+5Z={,7,2,3,8,13,,}[4]=4+5Z={,6,1,4,9,14,,}\begin{aligned} &[0] = 0 + 5\mathbb{Z} = \lbrace \cdots, -10, -5, 0, 5, 10, \cdots, \rbrace \\ &[1] = 1 + 5\mathbb{Z} = \lbrace \cdots, -9, -4, 1, 6, 11, \cdots, \rbrace \\ &[2] = 2 + 5\mathbb{Z} = \lbrace \cdots, -8, -3, 2, 7, 12, \cdots, \rbrace \\ &[3] = 3 + 5\mathbb{Z} = \lbrace \cdots, -7, -2, 3, 8, 13, \cdots, \rbrace \\ &[4] = 4 + 5\mathbb{Z} = \lbrace \cdots, -6, -1, 4, 9, 14, \cdots, \rbrace \end{aligned}