ネットワークをシンプルに考える。

宇宙、芸術、情報技術、哲学など。

RSA:公開鍵で復号できない理由、簡単なまとめ。

どうしてRSAの公開鍵で復号ができないのだろうか。

厳密にはオイラー関数などの理解が必要だが、ここではその構造理解は置いて、シンプルに納得してもらうためのわかりやすい解説を考えてみた。

 

1.登場人物と前提

<登場人物>

・大統領A:受信者

・役人B:送信者

・スパイC:解読者

 

<前提>

・公開鍵は二つの数で構成:E,N(全員に公開)

秘密鍵も二つの数で構成:D,N(大統領Aのみ※受信者のみ)

・原文情報(数a)は非公開

・暗号化の方法、復号化のアルゴリズムは世間に公開。

f:id:hirotsugu-furukawa:20170729192243p:plain

2.スパイCは公開された情報と暗号からなぜ復号できないのか?

スパイは数aから公開鍵(E, N)で暗号化された暗号をどうして復号できないのか。

ここには実は簡単なポイントがある

-----

①暗号化は割り算を用いること

②数a(平文)を割った余りを暗号として送信すること

③送信者(役人B)は商は誰にも教えないままにしていること

-----

暗号化(暗号文の作り方)は以下の式で行われる。

b = a^E mod N

※このbのみを暗号として送るわけだ。

 

余りだけを送るので、たとえここでEやNが公開されていたとしても、

商がわからない限り、数aはわからない。(当然特定ができない。)

(例)x÷5=yあまり1のとき、xがわかるだろうか。

   このとき、yが特定されない限り、xは判別不可能だ。

 

え?それならどうして受信者は復号できるの?という疑問が出てくるだろう。

それは綿密に作成された秘密鍵があるからに他ならない。

RSAの凄みは実は”秘匿性”よりも、この復号方法にある。

 

公開鍵と秘密鍵の関係を細かく見なければその点は理解できない。

(大学で数学専攻していればわかる範囲)

 

いずれにしても、取り急ぎ公開鍵では復号できないことはご理解いただけただろう。

 

なぜAdobe Flashは終了したのか、簡単に。

Adobe Flashが終了した背景を簡単に考える。

(1)機能上の問題

 特にスマートフォンが一般的になってAdobe Flashには機能的に課題となる部分が露呈してしまった。

 ・スマホスクリーンへの未対応

 ・スマホには高すぎる負荷/これに伴う長すぎるローディング

 

(2)セキュリティ上の問題

 Adobe Flashは度々深刻な脆弱性を露呈していた。

・2015年2月2日、「CVE-2015-0313」

ゼロデイ | トレンドマイクロ セキュリティブログ - Part 3

・2016年10月26日、「CVE-2016-7855」

Adobe Flash Player にゼロデイ脆弱性「CVE-2016-7855」確認、直ちに更新を | トレンドマイクロ セキュリティブログ

 

(3)サービス上の問題

 機能上の制約、セキュリティ上の制約から、各種サービスからも敬遠されるようになった。

Safariではver10以降、デフォルトでFlash無効化。

ChromeでのFlash無効化。(2016年5月~)

 

(4)HTML5WebGLの存在

そもそも、Flashは他のオープンソースによって代替され、主要なHTML5WebGLによってその潮流は決定的となった。

 

Adobe Flashの終了、内容を見てみる。

1.AdobeAdobe Flashを2020年に終了することを発表。

2017年7月25日、米AdobeAdobe Flashを2020年に終了することを発表した。

Adobe FlashがWEBの発展に重要な役割を担ってきただけに、この宣言は一時代の終わりを告げるものだった。

(リリース本文は以下を参照)

blogs.adobe.com

 

2.Adobe Flash終了宣言の内容

実際に終了宣言はどのような内容だろうか。

以下、翻訳。(日本語)

FLASH & THE FUTURE OF INTERACTIVE CONTENT

 

(訳)「フラッシュ&インタラクティブコンテンツの未来」

 

Adobe has long played a leadership role in advancing interactivity and creative content – from video, to games and more – on the web. Where we’ve seen a need to push content and interactivity forward, we’ve innovated to meet those needs. Where a format didn’t exist, we invented one – such as with Flash and Shockwave. And over time, as the web evolved, these new formats were adopted by the community, in some cases formed the basis for open standards, and became an essential part of the web.

(訳)「アドビは、ビデオ、ゲーム、その他のウェブ上でインタラクティブ性とクリエイティブなコンテンツを進化させる上でリーダーとしての役割を果たしてきました。コンテンツとインタラクティブ性を推進する必要があることが分かったところで、我々はそのニーズを満たすために革新してきました。フォーマットが存在しない場合、FlashShockwaveなどでフォーマットを作成しました。そして、Webが進化するにつれて、これらの新しいフォーマットがコミュニティによって採用され、場合によってはオープンスタンダードの基礎を形成し、ウェブの不可欠な部分となりました。」

But as open standards like HTML5, WebGL and WebAssembly have matured over the past several years, most now provide many of the capabilities and functionalities that plugins pioneered and have become a viable alternative for content on the web. Over time, we’ve seen helper apps evolve to become plugins, and more recently, have seen many of these plugin capabilities get incorporated into open web standards. Today, most browser vendors are integrating capabilities once provided by plugins directly into browsers and deprecating plugins.

(訳)「しかし、HTML5WebGL、WebAssemblyなどのオープンスタンダードがここ数年で成熟した現在、ほとんどの場合、プラグインが開発し、Web上のコンテンツの代わりに実行可能な多くの機能と機能が提供されています。時間が経つと、ヘルパーアプリケーションはプラグインになるように進化し、最近ではこれらのプラグイン機能の多くがオープンなWeb標準に組み込まれているのを見てきました。今日、ほとんどのブラウザベンダーは、プラグインによって提供された機能をブラウザに直接統合し、プラグインを非難しています。」

Given this progress, and in collaboration with several of our technology partners – including AppleFacebookGoogleMicrosoft and Mozilla – Adobe is planning to end-of-life Flash. Specifically, we will stop updating and distributing the Flash Player at the end of 2020 and encourage content creators to migrate any existing Flash content to these new open formats.

(訳)「この進歩と、AppleFacebookGoogleMicrosoftMozillaをはじめとするいくつかの技術パートナーとの共同作業で、Adobe FlashFlashの廃止を計画しています。具体的には、2020年末にFlash Playerの更新と配布を中止し、既存のFlashコンテンツをこれらの新しい公開フォーマットに移行するようコンテンツ作成者に勧めます。

Several industries and businesses have been built around Flash technology – including gaming, education and video – and we remain committed to supporting Flash through 2020, as customers and partners put their migration plans into place. Adobe will continue to support Flash on a number of major OSs and browsers that currently support Flash content through the planned EOL. This will include issuing regular security patches, maintaining OS and browser compatibility and adding features and capabilities as needed. We remain fully committed to working with partners, including AppleFacebookGoogleMicrosoftand Mozilla to maintain the security and compatibility of Flash content. [To see each partner’s announcement on this news, click on the links inside each partner name.] In addition, we plan to move more aggressively to EOL Flash in certain geographies where unlicensed and outdated versions of Flash Player are being distributed.

(訳)「ゲーム、教育、ビデオなどのFlashテクノロジを中心にいくつかの業界やビジネスが構築されており、顧客やパートナーがマイグレーション計画を立案する中で、Flashは2020年までサポートを継続しています。アドビは、予定されているEOLを通じて現在Flashコンテンツをサポートしている多数の主要なOSおよびブラウザでFlashを引き続きサポートしていきます。これには、定期的なセキュリティパッチの発行、OSとブラウザの互換性の維持、必要に応じた機能の追加などが含まれます。 Flashコンテンツのセキュリティと互換性を維持するために、AppleFacebookGoogleMicrosoftMozillaなどのパートナーと協力しています。 [このニュースに関する各パートナーの発表を見るには、各パートナー名のリンクをクリックしてください。]また、Flash Playerのライセンスされていないバージョンと古いバージョンが配布されている地域では、より積極的にEOL Flashに移行する予定です。」

Adobe will also remain at the forefront of leading the development of new web standards and actively participate in their advancement. This includes continuing to contribute to the HTML5 standard and participating in the WebAssembly Community Group. And we’ll continue to provide best in class animation and video tools such as Animate CC, the premier web animation tool for developing HTML5 content, and Premiere Pro CC.

(訳)「アドビはまた、新しいWeb標準の開発をリードし、積極的に進歩に参加する最前線にいます。これには、引き続きHTML5標準への貢献とWebAssemblyコミュニティグループへの参加が含まれます。そして、私たちは、HTML5コンテンツを開発するための最高のWebアニメーションツールであるAnimate CCやPremiere Pro CCなど、最高クラスのアニメーションとビデオツールを提供し続けます。」

Looking ahead, Adobe will continue to provide the best tools and services for designers and developers to create amazing content for the web.

(訳)「Adobeは今後も、デザイナーや開発者がWeb用のすばらしいコンテンツを作成するための最良のツールとサービスを提供し続けます。」(以上)

 

 

 

 

 

 

 

 

シンプルに考えよう、ユニファイドファブリック。

1.ユニファイドファブリック

 DCにおける従来のネットワーク構成は、LANとSANをそれぞれ物理的にも別個のものとしてサーバーに接続する形態が主であった。

 しかし近年の仮想化技術の発展によって、これら二つの異なるネットワークを統合する技術が確立されてきた。これを「ユニファイドファブリック(Unified Fabric)」と言う。

f:id:hirotsugu-furukawa:20170723162324p:plain

 

2.ユニファイドファブリック、二つの規格

 ユニファイドファブリックは異なるデータを同じインフラに乗せるという性質上、どこかのレイヤーで必ずカプセリングを必要とする。このカプセリングをどのように行うかで大きく二つの規格が成立している。

 一つ目は、データリンク層(L2)でカプセリングを行うFCoE(Fiber Channel over Ethernetである。これはイーサネットを拡張したネットワークであって、TCP/IPヘッダが不要であることなどが強みとなる。高速かつ高品質の通信ができるはイーサネットの強みを生かした構造となっているからだ。問題は、FCフレームをどのようにしてイーサネットで運ぶのかという点だが、それについてもよく考えられた規格だ。

 二つ目は、ネットワーク・トランスポート層(L3-L4)のTCP/IPを利用したiSCSIである。FC-SAN、ならびにLANはいずれもL2の通信であって、その上位であるTCP/IPを利用することによって、従来の構成を生かして組み上げることを目的としている。

f:id:hirotsugu-furukawa:20170723165707p:plain

シンプルに考えよう、NATとNAPTの違い。

1. グローバルIPアドレスを有効利用する仕組みとしてのNAT

 限られたグローバルIPアドレスを有効に利用するための技術としてNAT(Network Address Translation)がある。

 NATは単純にグローバルIPアドレスに対して1つのローカルIPアドレスを紐付け、ローカル端末に外部ネットワークへのアクセスを可能とさせるものである。1つのグローバルIPアドレスしか持ち合わせていない場合でも、アクセス毎に利用-解放を繰り返すので、全端末数に応じたグローバルIPアドレスは不要だ。少なくとも、同時利用で想定される台数分のグローバルIPアドレスがあればよいことになる。

f:id:hirotsugu-furukawa:20170723154243p:plain

 

2.グローバルIPアドレスの利用をさらに効率化するNAPT

 NATの発展型としてNAPT(Netework Address Port Translation)がある。NATが同時アクセス数に応じたグローバルIPアドレス数を必要とするのに対し、NAPTではさらにこれとは別にポートの概念を導入し、1つのグローバルIPアドレスでの複数の外部アクセスを可能とするものである。(別名:IPマスカレード、PAT)

f:id:hirotsugu-furukawa:20170723154249p:plain

IPv4アドレッシング

f:id:hirotsugu-furukawa:20170723130336j:plain

1.IPアドレスの基本構成

 

 IPアドレスの基本構成は8bit×4classの計32bitである。

 人がIPアドレスを検討する場合、

 1class毎に区切ったまとまりを10進数に変換し表記する。

 

f:id:hirotsugu-furukawa:20170723133432p:plain

 

 

 

 2.ネットワーク部・ホスト部、Class

 

IPアドレス内の二つの情報

 1つのIPアドレスはそれのみで、ネットワーク部とホスト部の情報をもつ。

 (A)ネットワーク部=ネットワーク自体に割り当てるアドレス情報

 (B)ホスト部=ホスト(端末等)に割り当てるアドレス情報

  ※これらは規格として、RFC731によって規定されている。(RFC 791 - Internet Protocol

 

▷Classの識別

  まず、一般利用可能なアドレスクラスはClassA~ClassCの3つがある。

  これらは先頭のビットによって分類・識別される。

 

ーClassA

先頭1桁の文字列が0となる範囲

2進数 10進数
00000000 0
01111111 127

ーClassB

先頭2桁の文字列が10となる範囲

2進数 10進数
10000000 128
10111111 191

ーClassC

 先頭3桁の文字列が110となる範囲

2進数 10進数
11000000 192
11011111 223

 

 

▷ Classでの付与できるアドレス数の違い

ここで、クラス毎にホストに付与できるアドレス数は以下のとおりとなる。

※各アドレス数から-2をしているのは、次の二つのアドレスはホストに付与できないためである。

 (ⅰ)ホスト部がすべて0の場合:ネットワークそのものを表すネットワークアドレス。

 (ⅱ)ホスト部がすべて1の場合:ブロードキャストアドレス。

 

 

f:id:hirotsugu-furukawa:20170723145450j:plain

 

 

 

ループバックアドレス

ClassAアドレスのうち先頭が127のIPアドレスは、ループバックアドレスと呼ばれ、

ホスト自身を表すアドレスとなります。

 

 

暗号-暗号化技術の概要

f:id:hirotsugu-furukawa:20170723130336j:plain

 

暗号化技術の概要について下記要約。

 

1.機密性を高める暗号化技術

 A. 対象暗号/共通鍵暗号

 (Symmetric key encryption scheme/Common key cryptosystem

   a-1. ブロック暗号(Block cipher)

  :固定長のデータのまとまり(=ブロック)単位で暗号化する方式。

           1971年、IBMHorst Feistelにより開発。

  a-2. ストリーム暗号(Stream cipher)

  :ビット、バイト単位で暗号化する方式。

 

 B. 公開鍵暗号

 (Public-key cryptography

   b-1. ディフィー・ヘルマン鍵共有(Diffie-Hellman key exchange、DH

  :2者が各々公開鍵と秘密鍵を用意し、受信した公開鍵と自身の秘密鍵から共通鍵を生成する方法。

 

   b-2. RSA暗号RSA encryption

  :桁数の大きい合成数素因数分解が難しいことを利用した方法。

(1)公開鍵の生成=適当な自然数eを選択、別途大きな素数{p, q}の積n{=pq}を用意する。この{e, n}を暗号化用の公開鍵とする。

(2)秘密鍵の生成=さきほどの{p, q}を利用し、秘密鍵d(=e^-1(mod(p-1)(q-1)))を作成する。

この結果、暗号文cはc=m^{e}\;\operatorname {mod}\;n

復号文mはm=c^{d}\;\operatorname {mod}\;nによって求めることができる。 

 

   b-3. ElGamal暗号(ElGamal encryption)

  :位数が大きな群の離散対数問題が困難であることを安全性の根拠とした公開鍵暗号

   b-4. 楕円曲線暗号(Elliptic Curve Cryotography: ECC

  :楕円曲線上の離散対数問題(EC-DLP)の困難性を安全性の根拠とする暗号の総称楕円曲線DSA(ECDSA)、楕円曲線ディフィー・ヘルマン鍵共有(ECDH)などがある。

 EC-DLPを解く準指数関数時間アルゴリズムが発見されるまでは、RSA等の暗号に比べ、同レベルの安全性をより短い鍵で実現できる。