Comments
Description
Transcript
コンピュータリテラシ 6. 情報の表現
文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 コンピュータリテラシ 6. 情報の表現 Chris Plaintail 2013 1 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 目次 1 文字コード 2 アナログからデジタルへ 3 画像データの表現 4 さまざまな画像データ 5 音声データの扱い 6 データの圧縮 2 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 情報の表現 コンピュータによる情報処理が基礎においているの は,いうまでもなく デジタル技術 である.デジタル技術 においては諸量(情報)を 離散的に (0, 1, 2, 3, . . . ) 表す 点が大きな特徴である.たとえば文字の情報はひとつひ とつが(離散的な)数に対応づけられて処理されるが, 連続データ( アナログ )として扱われてきた画像や音声 も離散的に扱われている.様々な情報を数に対応させる ことを 符号化 とよぶ.ここでは符号化およびその応用と して 圧縮技術 や 暗号 についても学ぶ. 3 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 文字コード A B C D E F G H 0 8 > > > > > > > < > > > > > > : 0 1 8 > > < > > : 8 > > < > : 0 1 0 1 0 1 0 1 0 1 0 1 0000 0001 0010 0011 0100 0101 0110 0111 0 1 2 3 4 5 6 7 4 / 73 文字コード アナログからデジタルへ A B C D E F G H a b d e f g h 0 1 画像データの表現 8 > > > > > > < > > > > > > : 8 > > > > > > < > > > > > > : さまざまな画像データ 音声データの扱い データの圧縮 文字コード 0 1 0 1 8 > > < > : 8 > > < > : 8 > < > > : 8 > > < > > : 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0 1 2 3 4 5 6 7 8 9 A B C D E F 5 / 73 文字コード アナログからデジタルへ A a B b C D d E e F f G g H h 0 1 画像データの表現 8 > > > > > > < > > > > > > : 8 > > > > > > < > > > > > > : さまざまな画像データ 音声データの扱い データの圧縮 文字コード 0 1 0 1 8 > > < > : 8 > > < > : 8 > < > > : 8 > > < > > : 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0 1 2 3 4 5 6 7 8 9 A B C D E F 6 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 文字コード 文字の処理:文字集合・符号化 アルファベット・数字・記号 < 128 文字 ↔ 7 bit ⇒ 半角英数 + 制御文字 (CR, LF, DEL,...): ASCII ::::::::: ⇒ ISO/IEC 646 : \, ˜ 日本語(カナ) < 128 文字 ↔ 7 bit ⇒ 半角カナ →× ::::::::: ASCII + ドイツ語・アラビア語・ギリシア語 · · · ⇒ ISO/IEC 8859 256 文字 ↔ (7 + 1) bit = 1 Byte 7 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 文字コード 2 Byte = 16 bit ↔ 65, 536 文字 ⇔ 康煕字典・諸橋漢和字典・今昔文字鏡 ⇒ 全角文字 ::::::::: 文字集合 ::::::::: JIS X 0208 : 94(区) × 94(点) = 8, 836 字 非漢字 (1 - 8 区:524 字) 第 1 水準 (16 - 47 区:2.965 字) 第 2 水準 (48 - 84 区:3,390 字) JIS X 0212 : 補助漢字(第 3 水準・第 4 水準) JIS X 0213 : ::: 面・区・点:11,233 字 8 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 文字コード 国際符号化文字集合 JIS X 0221 = ISO/IEC 10646 (Universal Coded Character Set) (群) ・面・区 (0-255) ・点 (0-255) JIS X 0213 : 面区点 JIS X 0208 : 区点のみ ASCII : 点のみ 符号化方式 : ISO/IEC 2022 2 バイトの文字集合を切り替える エスケープシーケンス ::::::::::::::::::::: 9 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 文字コード 文字集合と符号化方式 JIS X 0208 : ISO/IEC 2022-JP, Shift-JIS, EUC-JP JIS X 0213 : ISO/IEC 2022-JP-2004 Unicode : UTF-8, UTF-16 ISO/IEC 8859 Big5 EUC (EUC-JP, EUC-KR, GB2312) 10 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 文字コード unicode (21 bit) 文字集合 BMP (16 bit) = UCS-2 異体字セレクタ 符号化方式 UTF-8 (1 - 4 Bytes) UTF-16 (BMP : 16 bits, ohter : 2×16 bits) CID (Adobe) IME パッド 11 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 文字コード ブラウザ:文字エンコーディング 文字化けサンプル 環境依存文字 Windows XP まで Windows Vista 以降 Shift JIS unicode JIS X 0208-1990 JIS X 0213-2004 12 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 文字コード 字義・字体・異体字・包摂・字形・例示字形 「斎」(3A58) と「斉」(4046) は字義が異なる. 「齋」(6337) と「斎」(3A58) は 字義が同じで字体が異なる(異体字). 「齊」(736E) と「斉」(4046) は 字義が同じで字体が異なる(異体字). 「高」島屋・「葛」飾区と「葛」城市 「吉」野家 13 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 問題 I 1 使える文字がちょうど 16 種あるとき,そのうちの 1 文字だ けを伝えるために何 bit 必要か?(たとえば A, B, C, D, ..., O, P のうちどれか 1 文字)また,これらから 2 文字を取り出して 順に伝えるためには何 bit 必要になるか? 2 ASCII (ISO 646) のコード表をみて,どんな文字がどんな符号 に割り当てられているか確認しよう.たとえばアルファベッ トの「A」や「a」が 10 進数のどんな数に対応しているか. またそれらは 2 進数でどのように表現されているか? 3 字義・字体・字形・包摂・異体字,それぞれの言葉の意味を説 明せよ. 4 コンピュータで正しく表示されない文字にどんなものがある か.それらは,なぜ正しく表示されないのか. 14 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 問題 II 5 異体字に別々のコードが割り当てられている例を探してみよ. 6 ブラウザで表示されているページのエンコードを変えてみて, 表示がどのように変化するか確かめよ(わざと文字化けさせ てみよ). 15 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 データの圧縮 非可逆圧縮(ロスのある圧縮) 画像圧縮:JPEG (.jpg), GIF (.gif). . . ⇒ GIMP でファイル保存 音声圧縮:MP3, AAC, WMA, . . . ⇒ audacity でファイル保存 可逆圧縮(ロスのない圧縮) ZIP (.zip), LHA (.lzh), gzip (.gz), bzip2 (.bz2),... ⇒ 送る-圧縮フォルダ (zip) 16 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 データの圧縮 画像ファイル JPEG : DCT + 視覚効果 + Huffman GIF : LZW BMP : RLE 音声ファイル MP3 : DCT + 聴覚効果 + Huffman 可逆圧縮 ZIP : LZSS + Huffman 17 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 データの圧縮 画像・音声の情報処理 周波数特性 対数圧縮 差分予測・差分 PCM 符号化 連長圧縮 RLE ハフマン符号化(エントロピー符号化) 辞書式 (LZW, LZ77, LZSS) 18 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 データの圧縮 連長圧縮 BBBBBBBBBWWBBBBBBBWWWWWWWBBB ⇓ B9W2B7W8B3 19 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 データの圧縮 ハフマン符号化 8 文字 A B C D 出現回数 400 200 100 100 符号 0 10 110 111 A= 400 400 B= 200 200 C= 100 D= 100 1 × 400 + 2 × 200 + 3 × 100 + 3 × 100 = 1400 bits 2 × (400 + 200 + 100 + 100) = 1600 bits 20 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 データの圧縮 ハフマン符号化 1 文字 A, B, C, D のみを含む文書に対して前ページのような符号 化の規則を適用しているものとすると次の符号列はどんな文 字列を表しているか. 10111111111110100 2 文字列 ABCDABAA を前ページのような規則にしたがって符号 化するとどうなるか.また,各文字を A(00), B(01), C(10), D(11) と符号化するとどうなるか. 21 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 データの圧縮 辞書式 The long and winding road that leads to your door will never disapear ⇒ 2681/4 1514/11 96/44 2997/39 2238/62 2679/18 1455/8 2720/57 3039/17 749/50 2992/55 1726/18 716/33 22 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号 秘匿と認証 古典暗号 シーザー暗号, etc.,... 現代暗号 対象鍵暗号(共通鍵暗号) : AES, DES, etc.,... 非対称鍵暗号(公開鍵暗号) : RSA, ECC, ElGamal 23 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:シーザー暗号 IBM −→ HAL DaitoBunkaUniversity −→ FckvqDwpmcWpkxgtukva A computer is a general device that can be programmed to carry out a finete set of arithmetic or logical operations. −→ D frpsxwhu lv d jhqhudo ghylfh ... 24 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号 アルゴリズム 暗号化:平文 −→ 暗号 ⇑ 鍵 ⇓ 復号化:暗号 −→ 平文 アルゴリズム 25 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:現代暗号 アルゴリズム:公開 鍵 対称鍵(共通鍵)暗号 DES, AES, RC4 同一の鍵(非公開)で暗号化・復号化 ストリーム暗号 (RC4) ブロック暗号 (DES, AES) 非対称鍵(公開鍵)暗号 RSA, PGP 異なる鍵で暗号化・復号化,鍵の一方を公開 共通鍵を暗号化するために使われる 実装 SSL/TLS : RC2, RC4, triple DES, AES WEP, WPA : RC4 26 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:現代暗号 ストリーム暗号:RC4 秘密鍵 p(初期値として) ⇒ 疑似乱数列 k 暗号化:平文と排他的論理和 : m = M ⊕ k 復号化:暗号と排他的論理和 : M = m ⊕ k 排他的論理和:コーヒーまたは紅茶 論理和:6 才未満または女性 論理積:体重 47 kg 以上かつ身長 160 cm 以上 排他的論理和 a ⊕ b 論理和 a + b 論理積 a · b a\ b 0 1 a\ b 0 1 a\ b 0 1 0 0 1 0 0 1 0 0 0 1 1 1 1 0 1 1 0 1 27 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:現代暗号 ストリーム暗号:RC4 — GNU Octave による計算例 準備(秘密鍵) p を初期値として疑似乱数列をつくる. p=13 : 適当な整数 p を設定 rand("seed", p) : 疑似乱数を p で初期化 rand(1, 8) : 1 行 8 列の疑似乱数( 0 ∼ 1 の値) int32(rand(1, 8)) : 各要素の小数点以下を四捨五入 (0 or 1) num2str(int32(rand(1, 8)),"%d") : 0 and/or 1 からなる数値配列を文字列に変換 bin2dec(num2str(int32(rand(1, 8)),"%d")) : 0 and/or 1 からなる文字列を対応する十進数に変換 28 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:現代暗号 ストリーム暗号:RC4 — GNU Octave による計算例 1 平文: M=65 ::::: 2 進表現:dec2bin(M) 乱数の種: p=13 ::::::::: 疑似乱数の初期化: rand("seed", p) :::::::::::::::::: 疑似乱数発生: :::::::::::::: k=bin2dec(num2str(int32(rand(1,8)),"%d")) 2 進表現:dec2bin(k) 暗号化: m=bitxor(M, k) ::::::: 2 進表現:dec2bin(m) 復号化: bitxor(m, k) ::::::: 29 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:現代暗号 ストリーム暗号:RC4 — GNU Octave による計算例 2 平文: M=toascii("A") ::::: 乱数の種: p=13 ::::::::: 疑似乱数の初期化: rand("seed", p) :::::::::::::::::: 疑似乱数発生: :::::::::::::: k=bin2dec(num2str(int32(rand(1,8)),"%d")) 暗号化: m=bitxor(M, k) ::::::: 復号化: char(bitxor(m, k)) ::::::: 30 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:現代暗号 ストリーム暗号:RC4 — GNU Octave による計算例 3 平文: M=bin2dec("10001110") ::::: 乱数の種: p=13 ::::::::: 疑似乱数の初期化: rand("seed", p) :::::::::::::::::: 疑似乱数発生: :::::::::::::: k=bin2dec(num2str(int32(rand(1,8)),"%d")) 暗号化: m=bitxor(M, k) ::::::: 復号化: dec2bin(bitxor(m, k)) ::::::: 31 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:RSA 暗号 秘密鍵方式における「安全な鍵配送」の問題 公開鍵のアイディア (1976) Whitfield Diffie, Martin Hellman, ”New Directions in Cryptography” 実装 (1977) Ronald Rivest, Adi Shamir, Lenonard Adelman, ”A Method for Obtaining Digital Signatures and Public-Key Cryptosystems” 暗号技術の禁輸(国家による情報管理) 特許 (RSA Data Security inc.) 普及と自由化 (PGP) Phillip Zimmermann 32 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:RSA 暗号 秘匿 n α ← p, q, β # 㐿㎛ $ n, α ⒁ኒ㎛ p, q, β m M ᓳภൻ M ᥧภൻ 33 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:RSA 暗号 認証 n α ← p, q, β # $ 㐿㎛ ⒁ኒ㎛ ᥧภൻ ᓳภൻ 34 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:RSA 暗号 鍵の生成 p, q : 巨大な素数 n = pq α : 適当な整数 1 以外に (p − 1)(q − 1) と共通の約数をもたない β : 整数 αβ を (p − 1)(q − 1) で割ったあまりが 1 である 35 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:RSA 暗号 鍵の生成 — maxima による計算 r() := random(2ˆ8); p : next_prime(r()); q : next_prime(r()); n : p*q; factor(n); a : next_prime((p-1)*(q-1)); gcd(a, (p-1)*(q-1)); b : inv_mod(a, (p-1)*(q-1)); 36 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:RSA 暗号 秘匿通信 平文データ M 公開鍵で暗号化 m = ( M a を n で割ったあまり) 秘密鍵で復号化 M ′ =(mb を n で割ったあまり) 37 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:RSA 暗号 秘匿通信 — maxima による計算 平文データ(例) M : 65; 暗号化 復号化 m : mod(Mˆa, n); mod(mˆb, n); 38 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:RSA 暗号 認証 平文データ M 秘密鍵で暗号化 m = ( M b を n で割ったあまり) 公開鍵で復号化 M ′ =(ma を n で割ったあまり) 39 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:RSA 暗号 認証 — maxima による計算 平文データ(例) M : 65; 暗号化 復号化 m : mod(Mˆb, n); mod(mˆa, n); 40 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:RSA 暗号 安全性 公開鍵 n, α から秘密鍵 p, q, β を知るには... 素因数分解 n = pq → p, q が必要 r() := random(2ˆ8); p : next_prime(r()); q : next_prime(r()); n : p*q; factor(n); 41 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 暗号:GPG 原理はさておき... GPG(GNU Privacy Guard) で暗号を利用しよう. 42 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 レンダリング 音楽 ⇐ MIDI データ (楽譜) / 音源 テキスト ⇐ 文字コード / フォント 3D 画像 ⇐ シーン記述言語 リッチテキスト ⇐ マークアップ言語 ウェブページ Postscript TEX 43 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 44 / 73 文字コード アナログからデジタルへ 画像データの表現 さまざまな画像データ 音声データの扱い データの圧縮 45 / 73