Advertisement
Advertisement

More Related Content

Slideshows for you(20)

Advertisement
Advertisement

エニグマ暗号とは何だったのか

  1. エニグマ暗号とは何だったのか 堀川 隆弘   @thorikawa
  2. 今日話すこと •  エニグマの構造と動作原理   •  ポーランドによるエニグマ解読   – ローター配線の解明   – ポーランドによる(初期の)エニグマ解読   •  イギリスによるエニグマ解読   – チューリング・ボンベの仕組み   – チューリング・ボンベの高速化(フィードバック ループとウェルチマンの対角ボード)  
  3. エニグマの構造と原理
  4. そもそもエニグマとは •  第二次世界大戦でドイツが用いた換字式暗 号機   •  1文字ごとにローターが回転し、換字表が切り 替わる多表換字式   •  電動式という点が当時は画期的だった  
  5. エニグマの構造 •  プラグボード・ローター・リフレクタの各パーツが換字 表になっており、組み合わせによって暗号化される   •  ローターは駆動式になっており一文字タイプするごと にローターの換字表が変わる   •  タイプするごとに暗号化された文字が点灯する Source:  h1p://www.electricinca.com/56/annota:ons/enigma_details.htm プラグ ボード ローター リフレ   クタ
  6. エニグマの構造・ローター •  複数のローターから3枚(*)を 選んでエニグマ機にセットする   •  オペレーターはローターを回転 させて、エニグマ機の窓から見 える文字(ローター位置)を調 整する   •  一文字タイプするごとに一番右 のローターが1/26回転する   •  各ローターはある特定の位置 で繰り上がり(「ターンオー バー」と呼ぶ)があり、左側の ローターを回転させる ※大戦後半の設定ローターは4枚の     場合もあり
  7. エニグマの構造・リフレクタ •  ローターと似ているが固定 である(回転しない)   •  13個のペアを入れ替える換 字表であり、対称的である   •  これによりエニグマ全体とし ても対称的、かつ、ある文 字を自分自身に暗号化しな いという特徴がある
  8. エニグマの構造・プラグボード •  5〜10個の文字のペアを作っ てプラグでつなぐ   •  プラグの両端に対応する文 字を入れ替える役割をする   •  組み合わせ数が膨大   –  10ペアだと 150,738,274,937,250通り  
  9. エニグマの設定 以下の設定が「日鍵」として共通鍵として使われる   •  ローター配列   –  どのローターを使いどういう順番でセットするか   •  ローター位置   –  窓から見えるローターの文字を、ローターを回転して調整する   •  リング設定   –  ローターの実配線と、ローター周囲の文字との位置関係を調整する ための設定   –  実質的にはローター位置を変更することとほとんど違いがないため、 無視されることが多い   •  プラグボード   –  どの文字をプラグでつないで入れ替えるか     Source:  h1p:// www.codesandciphers.org.uk/ virtualbp/navenigma/ navenig1.htm
  10. ポーランドによる   エニグマ解読
  11. 当時の状況 •  1932年当時、ポーランドの数学者レイェフス キの手元にあった情報   – 商用版エニグマ機   – オペレーション・マニュアル   – 傍受されたエニグマ暗号文   各ローター(リフレクターを含む)の配線はこの時点 では分かっていない(商用版と軍事版とで異なる)   •  レイェフスキはこれらの限られた情報から軍 事用エニグマの複製を作ることを考えた  
  12. 当時のドイツ軍の暗号送信手順 1.  指定された日鍵(ローター配列・位置・リング設定・ プラグボード)通りにエニグマ機を設定   2.  送信者が選んだ任意の3文字(メッセージ鍵)を2 度タイプする   –  メッセージ鍵はその後本文を暗号化する際に使われる   –  仮にメッセージ鍵をXYZ暗号化された後の6文字をPYQ   KAOとする   3.  ローター位置をメッセージ鍵と同じになるように   回転させる   4.  メッセージの平文をタイプして暗号文を得る   5.  2で得られた暗号化されたメッセージ鍵6文字(PYQ   KAO)に続けて、4の暗号文を無線で送信する  
  13. 弱点:メッセージ鍵のくり返し •  レイェフスキはこのメッセージ鍵のくり返しに着 目した   •  ある1日の中で、1文字目と4文字目(2文字目と 5文字目、3文字目と6文字目)の対応関係は決 まっている   – 例)1文字目がAなら4文字目は必ずTになる   •  十分な数のメッセージを調べることで、これら の対応関係を全て洗い出すことができる ABCDEFGHIJKLMNOPQRSTUVWXYZ TMWORPGSKQFLYEJCAHUDNZIBVX 例)1文字目と4文字目の   対応
  14. サイクル構造 この各文字の対応関係をチェーン・サイクルで表し ていくと、いくつかのサイクルに分解されることが分 かる       サイクル構造:   (A,T,D,O,J,Q)(B,M,Y,V,Z,X)(C,W,I,K,F,P)(E,R,H,S,U,N) (G)(L)     このサイクルはエニグマを解読する上で重要な性 質を持つ   ABCDEFGHIJKLMNOPQRSTUVWXYZ TMWORPGSKQFLYEJCAHUDNZIBVX
  15. 繰り返し文字の対応関係と置換 •  ある日のエニグマ機設定における、1文字目 の平文⇒暗号の置換をA、同様に2文字目以 降B,C,D,E,Fとする   •  暗号文の1文字目と4文字目の対応関係は、       の置換で表せる   – エニグマの対称性からこれはADに等しい   •  同様に2文字目と5文字目はBE、3文字目と6 文字目はCFの置換と等しい   A 1 D
  16. レイェフスキの定理 •  要素数の等しい2つの置換XとYをサイクル構造 で表したとき、全てのサイクルが互換(要素数2 のサイクル)であるならば、XYをサイクル構造で 表した場合、同じ要素数のサイクルの数は偶 数である   •  逆もまた成り立つ   •  例   X=(A,D)(B,E)(C,F)  Y=(A,E)(B,F)(C,D)のとき   XY=(A,C,B)(D,E,F)  :要素数3のサイクル☓2   原文を参照したい人は  h1p://chc60.fgcu.edu/images/ar:cles/rejewski.pdf  
  17. 証明概略 Xの任意の要素a1を起点として、順にX,Yを適用し て、以下のような順列   を得ることができる   a1 a3 a5 ... a2k 3 a2k 1 a2 a4 a6 ... a2k 2 a2k X X X X X Y a2 = X(a1), a3 = Y (a2) a2k = X(a2k 1), a1 = Y (a2k) ...
  18. 証明概略(続) この図から、XY=Kとすると、       なので長さkの                と                 の2つのサイクルはKを   構成する⇒同じ要素数のサイクルが常にペアで存 在   K(a1) = a3, K(a3) = a5, ... K(a2) = a2k, K(a4) = a2, ... a1 a3 a5 ... a2k 3 a2k 1 a2 a4 a6 ... a2k 2 a2k X X X X X Y K K K KK KK K K KK K (a1, a3, ..., a2k 3, a2k 1) (a2, a4, ..., a2k 2, a2k)
  19. レイェフスキの定理(続) •  この証明から新たに次の2つの性質が導かれ る   – XまたはYのある互換に属する文字は、XYにおいて は同じ長さの異なるサイクルに属する   – XYにおいて、同じ長さの異なるサイクルに属する2 つの文字がXまたはYの互換であったならば、その 両隣(片方は右隣・もう片方は左隣)もXまたはYの 互換である   •  つまり、互換のみから構成されるXとYの積XYが 既知であるならば、そこからXとYの候補を絞り 込むことができる
  20. 暗号化されたメッセージ鍵のサンプル AXP AVC .. IOV NKZ .. HSA PYT .. PPZ LEX FZD YQO .. IZL NQL .. NNQ CMA .. GUH BIS FGT YHD .. KDY GNV .. NBJ COQ .. GOI BKK MIW MRI .. VWG EZG .. SYX SJB .. TVB KFM DJG UDG .. OJN QDE .. SNH SMS .. TLI KPK LNK TMF .. ZAO RXJ .. SXV SVZ .. TYO KJJ XKN JAE .. CTL OUL .. ERS XWU .. WHJ WBQ BHG DBG .. CMM OTY .. EAA XXT .. JQR ISH RZU ZQN .. UKM HAY .. YCE FGR .. JEY ICV RTC ZUW .. QFF VLP .. PII LRK .. JCE IGP Source:  h1p://www.codesandciphers.org.uk/virtualbp/poles/cyclom.htm  
  21. 各字目の対応関係から   AD=(LTKGBDUHP)(XJINCOQVE)(FY)(RZ)(A)(M)(S)(W)     BE=(XVFLPECGHBOKA)(ZQSYJDNMTUIRW)   CF=(PCWIKF)(DOJQAT)(NERHSU)(VZXBMY)(L)(G)   を得る。     先のレイェフスキの定理から、A,B,C,D,E,Fそれぞれ の候補を絞り込むことができて、   (A)(M) (FY) (LTKGBDUHP) 
 (S)(W) (ZR) (EVQOCNIJX) ADの例) Aのペアになる 候補がM,S,W   残り2つも   ペアになる (F,Z)(Y,R)と(F,R)(Y,Z)2つの可能 性がある (L,E)がAに含まれると仮定すると、 Aには他に(T,V)(K,Q)…(P,X)が含ま れる。全部で9通りの可能性   A,Dの取りうる 可能性は 3*2*9の   54通り
  22. A〜Fの特定 •  A〜Fの候補から1つに絞り込むにはどうする か?   – 当時(1932年)のドイツ軍の暗号手順の弱点を突く   – 送信者が自由に決められるメッセージ鍵に は、”AAA”や”ABC”など簡単に特定できる文字列が 数多く使われていた   – “Whenever  there  is  arbitrariness,  there  is  also  a   certain  regularity.  There  is  no  avoiding  it.”  -­‐  Marian   Rejewski  
  23. メッセージ鍵の推測 •  暗号化されたメッセージ鍵でSYX  SJBが最も頻繁 に使用されているとして、これをAAA  AAAと仮定   •  この仮説を推し進めて、他にもBBBやABCなどの キーが現れてくれば、最初の仮説は正しかった と分かる   AD=(LTKGBDUHP)(XJINCOQVE)(FY)(RZ)(A)(M)(S)(W)       BE=(XVFLPECGHBOKA)(ZQSYJDNMTUIRW)     CF=(PCWIKF)(DOJQAT)(NERHSU)(VZXBMY)(L)(G     AとDには(A,S)が含まれることが確定 Bに(A,Y)が含まれることが確定するので、他の互換も全て一意に定まる   Cに(A,X)が含まれることにより、C,Fに含まれる6つの互換が定まる
  24. 以上の手順でA〜Fを求めることができた     A=(A,S)(B,N)(C,G)(D,I)(E,P)(F,R)(H,X)(J,U)(K,O)(L,V)(M,W)(Q,T)(Y,Z)   B=(A,Y)(B,N)(C,U)(D,O)(E,I)(F,Z)(G,T)(H,M)(J,K)(L,W)(P,R)(Q,V)(S,X)   C=(A,X)(B,Q)(C,H)(D,V)(E,I)(F,U)(G,L)(J,M)(K,N)(O,Y)(P,S)(R,W)(T,Z)   D=(A,S)(B,C)(D,N)(E,L)(F,Z)(G,O)(H,J)(I,U)(K,Q)(M,W)(P,X)(R,Y)(T,V)   E=(A,J)(B,M)(C,I)(D,K)(E,R)(F,Q)(G,U)(H,T)(L,Z)(N,O)(P,W)(S,V)(X,Y)   F=(A,B)(C,S)(D,Z)(E,K)(F,N)(G,L)(H,W)(I,R)(J,Y)(M,Q)(O,V)(P,U)(T,X)    
  25. A〜Fを定式化する   – 左・中央・右ローターの(メッセージが始まる前の ローター位置における)置換をそれぞれL,M,Nと置く   – リフレクタの置換をR、プラグボードの置換をSと置く   – Pは1文字進めるだけの置換(A,B,C,…,Y,Z)を表す A = SPNP 1 MLRL 1 M 1 PN 1 P 1 S 1 B = SP2 NP 2 MLRL 1 M 1 P2 N 1 P 2 S 1 E = SP5 NP 5 MLRL 1 M 1 P5 N 1 P 5 S 1 F = SP6 NP 6 MLRL 1 M 1 P6 N 1 P 6 S 1 ...............
  26.               で共通項を置き換えると、 Q = MLRL 1 M 1 A = SPNP 1 QPN 1 P 1 S 1 B = SP2 NP 2 QP2 N 1 P 2 S 1 F = SP6 NP 6 QP6 N 1 P 6 S 1 ............... •  S,N,Qの3つの変数(置換)が未知で、このまま 解くのは厳しい   •  しかし丁度いいタイミングでレイェフスキの手 元にドイツ軍の日鍵のデータが届く   ⇒プラグボード配列Sが既知となった  
  27. 残る未知数はNとQ Qを消去することを考える   既知のPとSを左辺に追い出し、U〜Zと置く ............... Z = P 6 S 1 FSP6 = NP 6 QP6 N 1 V = P 2 S 1 BSP2 = NP 2 QP2 N 1 U = P 1 S 1 ASP = NP 1 QPN 1 UV = NP 1 (QP 1 QP)PN 1 V W = NP 2 (QP 1 QP)P2 N 1 WX = NP 3 (QP 1 QP)P3 N 1 XY = NP 4 (QP 1 QP)P4 N 1 Y Z = NP 5 (QP 1 QP)P5 N 1 各値の積を取ると、
  28. 共通項       を消去して以下の式を得る QP 1 QP V W = NP 1 N 1 (UV )NPN 1 WX = NP 1 N 1 (V W)NPN 1 XY = NP 1 N 1 (WX)NPN 1 Y Z = NP 1 N 1 (XY )NPN 1 G = T 1 HT         という形の変換が持つ性質を利用 して、      を一意に定めることができる            NPN 1 NPN 1
  29. 置換の共役性について 置換GとHの間に、ある置換Tが存在して     という関係が成り立つとき   •  置換Gを得るためには、置換Hの中の各文字 をTで置き換えてあげればよい   •  GとHのサイクル構造は一致する   •  Tが未知の場合、H・G間でサイクル構造を保 持する置換を考えればよい   (群論の世界ではこの関係を共役という) G = T 1 HT
  30. 例 UV  =  (A,O,J,P,Z,K,I)(B,G,T,F,Y,R)(C,E,W,V,H,S,D)(L,X,U,M,N,Q)   VW  =  (A,L,E,J,V,X)(B,Q,R,D,Y,Z,H)(C,O,T,W,G,I)(F,U,K,S,N,P,M)   WX  =  (A,O,M,Y,W,N,T)(B,S,R,C,U,I)(D,J,G,E,Z,L,P)(F,H,K,X,Q,V)   XY  =  (A,D,M,C,G,R)(B,P,I,N,Z,S,V)(E,H,O,F,J,Y)(K,T,L,Q,W,X,U)   YZ  =  (A,S,L,B,D,K)(C,O,M,X,I,G,Q)(E,U,Z,T,H,V)(F,W,P,Y,R,J,N) これらのサイクル構造を保持しながら、UV  =>  VW  =>  VWと 置き換えていく置換を考えれば、      を一意に定める ことができる       が求まれば、同様の方法でNの候補を求められ る(候補は26個あり、ローターの回転ごとにずれているだけ で実質的に違いはない) NPN 1 NPN 1
  31. ローター配線の解明   •  こうして右ローターNの配線を解明できた   •  当時ドイツ軍は四半期に一度ローターの配列 を変更していたが、レイェフスキの手元には、 1932年9月と10月の日鍵一覧があった   – つまり、異なる2つのローター配線を解明できた   – 2つのローター配線が既知になったことにより、残 り1つのローター配線とリフレクタの配線は簡単 に計算できる(と、レイェフスキは書いているが詳 細な記述なし・未検証)  
  32. ローター配線の解明後 •  傍受した暗号文と日鍵からエニグマの内部配 線を解明できた   •  今度は日鍵が不明な暗号文から日鍵を割り 出す必要がある   •  レイェフスキは膨大なプラグボードの設定を 無効化する方法を考えた  
  33. 特性シート •  AD,BE,CFのサイクル構造(特性”characteris:c”と 呼ばれる)はプラグボードの設定に依存しないと いう性質を利用   •  あらかじめサイクルの構造をキーにして、ロー ターの設定を網羅した表を用意しておき、それと 照らし合わせることでロータ設定を絞り込む    
  34. 例 AD=(LTKGBDUHP)(XJINCOQVE)(FY)(RZ)(A)(M)(S)(W)     BE=(XVFLPECGHBOKA)(ZQSYJDNMTUIRW)     CF=(PCWIKF)(DOJQAT)(NERHSU)(VZXBMY)(L)(G)   のとき各サイクルの構造は [9,9,2,2,1,1,1,1][13,13] [6,6,6,6,1,1]と表せる)  
  35. ポーランドその後 •  レイェフスキらの成果(軍事用エニグマの複 製含む)は、1939年にイギリスとフランスに引 き継がれた   •  当時イギリス・フランスは軍事用エニグマの配 線すら解明できておらず、ポーランドの成果 なしではその後のドイツ暗号解読に至ってい なかったことも考えられる  
  36. イギリスによるエニグマ解読   チューリング・ボンベの仕組み
  37. ボンベ誕生の背景 •  ポーランドは「メッセージ鍵は二度暗号化され る」という事実を突き、暗号解読に成功した   •  しかし、いずれドイツ側もこの弱点に気付き、 手順が改善されるだろうという予測もあった   •  メッセージ鍵の弱点に頼らずに、暗号を解読 する方法を模索していた  
  38. 基本的なアイデア •  ローターの設定ごとに、プラグボードのペアリ ングの推論を行い、矛盾のある設定を除外し ていく   – 例えば、プラグボードでMとAがペアになっている という仮定からMとSがペアになると推論される場 合、ある1文字に対してペアになる文字は高々1 文字であるという原則に反する   •  上記の推論を行うためにクリブ(暗号文と平 文の対応が分かっている箇所)が必要になる
  39. クリブ •  メッセージに頻繁に現れる定型句などに注目す る   – Keine  Besondere  Ereignisse(報告事項なし)、 Vorhersagebereich  Sieben(第7区の天気予報)など  
  40. メニュー •  クリブの平文・暗号文の対応関係をグラフ化 したもの   •  初期のボンベは、この中に現れる「閉鎖ルー プ」に着目した   source:h1p://www.rutherfordjournal.org/ar:cle030108.html 閉鎖ループ
  41. 推論の進め方 •  ローター設定を固定し、SとBがプラグボードでペアに なっていると仮定する   =>Bを暗号化してZ=>ZとAがペア   =>Zを暗号化してD=>….=>SとLがペア   平文 D A S X I S T X E I N X 暗号 V J A R E V E A D J E V 最初の仮定(ローター 設定か、SとBがペアで あることのいずれか) が間違っていた 矛盾! B L D D Z C Z C
  42. Z C Z C B L D D 初期ボンベの仕組み •  プラグボードの効果は打ち消し合うので無視できる   •  プラグボード無しで、クリブの文字位置に応じてローター 位置を進めた複数の擬似エニグマ回路を直列につなぐ   •  最初にペアになっていると仮定した文字を突っこみ、最 初と最後に矛盾があるかどうかだけを見ればよい   擬似   エニグマ   (AAA) プラグ無し SとBがプラグ結線さ れており、初期ロー ター位置をAAAとした 場合 擬似   エニグマ   (AAD) 擬似   エニグマ   (AAF) 擬似   エニグマ   (AAJ) 矛盾
  43. 初期ボンベの仕組み(続) •  矛盾があれば次のプラグボードのペアの仮 説(SとC,SとD,…)を試し、26文字全てでダメなら、 ローター位置を一つ進める   •  これをローター配列・位置ごとに繰り返す   •  矛盾が見つからない場合、ボンベは停止し、 その時点のローター設定・プラグボードペア の仮説を示してくれる  
  44. 上段:エニグマ機 の右ローター 中段:エニグマ機 の中央ローター 下段:エニグマ機 の左ローター 各列が1台の擬似的な エニグマ機を構成する   各列の出力が次の列の入力 となり、エニグマ機を直列につ ないでいることになる
  45. 偽の停止(False  Stop) •  誤ったローター設定・プラグボード設定だが、 最初のプラグボードの仮定と矛盾のない結果 が得られしまう場合でも、ボンベは停止する   •  ボンベ停止後、真偽を判定するために、手作 業で確認する必要があった   •  初期ボンベでは偽の停止が起こる確率は1/26(!)  
  46. チューリング・ボンベの高速化
  47. 初期チューリング・ボンベの問題点 •  偽の停止が多く、解読までに時間がかかる   •  閉鎖ループを得るためにある程度長いクリブ が必要   •  クリブが長いと途中でローターがターンオー バーする可能性が高くなる   – ボンベはターンオーバーを考慮していない  
  48. フィードバック・ループ •  推論の結果導き出されたペアリング設定は、 最初の仮定と矛盾していたとしても、新たな   偽の仮定として回路への入力に使える   – 回路の出力と入力をつないでしまおう、という発想   Z M C Z C B  L D D 擬似   エニグマ   (AAA) 擬似   エニグマ   (AAD) 擬似   エニグマ   (AAF) 擬似   エニグマ   (AAJ)    …     エニグマ機の対称性から、 偽の仮説からは偽の結 果しか導き出されず、双 方向的   S/Bがペア=>S/Lがペア   S/Lがペア=>S/Bがペア  
  49. フィードバック・ループ(続) •  このフィードバック回路の入力と出力もまたサ イクルをなす   – 例  (B,L,K,O)(C,Z,A,I)…   – この場合、S/Bのペアリング仮説を試せば、S/B,S/ L,S/K,S/Oの仮説が同時に偽であると証明できる  
  50. フィードバック・ループ(続) •  2つ以上のループを持つクリブでは、このフィード バック回路を2つ作ることができる   –  例 フィードバック回路のサイクル   1:  (ACKSMPT)(BREGOXQULHJNVW)(DYZ)(I)(F)   2:  (AJUGFWQLRSCZMO)(BHDKY)(EV)(NTXP)(I)   –  この場合最初の文字がAとペアになっているという仮説 を試すと、異なるサイクルを通して到達可能な文字が 広がり、結果として26個全ての文字に電流が到達する 例は h1p://www.amazon.com/Gordon-­‐Welchman-­‐Bletchley-­‐Architect-­‐Intelligence/dp/1848327528 から抜粋  
  51. フィードバック・ループ(続) •  ただしローター配列・位置が正しい場合、最初の ペアリングの仮説が偽であれば、正しいペアリン グの文字に行き着くことはない(もし正しい文字 に行き着いたとすると、エニグマの対称性から、 最初の偽の仮説も真ということになってしまう)   •  よって正しいローター配列・位置では、以下の現 象が起こる   –  最初のペアリング仮説が正しければ、その1文字だけ に電流が疎通する   –  正しくなければ、残りの25文字に電流が疎通する   (ただし、偽の停止問題は依然起こりえる)  
  52. Diagonal  Board(対角ボード) •  ループだけでなくメニュー全体を使う   •  プラグボードの対称性を利用して、途中で導か れるプラグボードの推論結果を別の箇所の入 力として使う   ここでDとSがペアになるという 結果になった場合、別のSのペ アとしてDを入力する
  53. Diagonal  Board(対角ボード)(続) メニュー文字CがDとペ アであるという結果   ⇒メニュー文字DはCと ペアになっているはず メニューの文字 入力(ペアリングの仮定) h1p://www.amazon.com/Gordon-­‐Welchman-­‐Bletchley-­‐Architect-­‐Intelligence/dp/1848327528  
  54. Diagonal  Board(対角ボード)(続) •  これにより一つの仮定から到達できる文字の範 囲を大幅に広げられる(同時にスキャンできる数 が増えた)   •  偽の停止が減り、少ないメニューでも暗号解読 が可能になった   •  ループの存在しない(十分な長さのあるメニュー であれば)暗号解読が可能になった Source:  “From  Bombe  ‘stops’  to  Enigma  keys”    by  Frank  Carter   各ローター配列ごとの“偽の停止“数の期待値
  55. デモ •  ペアリング仮説の広がりを可視化したデモ h1ps://github.com/thorikawa/PyEnigma P V C A N D E R Y L J Z O H K G T W 2 9 18 10 12 11 14 5 13 4 15 20 16,19 7 17 3 8
  56. 今日話せなかったこと   •  エニグマの日鍵を割り出すための「グリル法」   •  ドイツの暗号送信手順が変わった後にポーラ ンドが暗号解読のために発明した「(ポーラン ドの)ボンベ」と「ザイガルスキのシート」   •  チューリング・ボンベの前段階としてローター 配列を絞り込むための「バンブリスムス」   •  「イミテーション・ゲーム」の色々   – ちゃんと分かってから見ると、色々おかしな興味 深い点がたくさんあります
  57. ありがとうございました
Advertisement