「RSA暗号」を含む日記 RSS

はてなキーワード: RSA暗号とは

2024-10-31

量子コンピュータを用いてRSA暗号を解読する

RSA暗号構造

RSA暗号は、以下の手順で構成される。

1. 素数選択: 2つの大きな素数 p と q を選ぶ。

2. モジュラスの計算: N = p * q

3. オイラートーシェント関数: φ(N) = (p-1)(q-1) を計算する。

4. 公開鍵秘密鍵の生成: 公開鍵は (N, e) であり、e は gcd(e, φ(N)) = 1 を満たす整数である秘密鍵は d であり、d * e ≡ 1 (mod φ(N)) を満たす。

素因数分解問題

RSA暗号安全性は、合成数 N の素因数分解計算的に困難であることに依存している。具体的には、次の問題が考えられる:

N = p * q

この問題解決することがRSA暗号を破る鍵となる。

ショアのアルゴリズム

ショアのアルゴリズムは、量子コンピュータ上で動作する効率的素因数分解アルゴリズムである。以下にその主要なステップを示す。

ステップ1: 整数選択

任意整数 a を選択し、N に対して次の条件を満たすことを確認する:

  • a < N
  • gcd(a, N) = 1 (これは、a が非自明な因子を持たないことを意味する)
ステップ2: 順序の計算

整数 a の順序 r を求める。順序とは、次の条件を満たす最小の整数である

a^r ≡ 1 (mod N)

この順序は、量子フーリエ変換を用いて効率的計算される。

ステップ3: 量子フーリエ変換

量子フーリエ変換は、状態ベクトルを重ね合わせて次のように表現される:

|x⟩ = Σ(k=0 to N-1) |k⟩

ここで、量子フーリエ変換適用することで周期性に関する情報が得られる。具体的には、

QFT |x⟩ = (1/√N) Σ(j=0 to N-1) Σ(k=0 to N-1) e^(2πi jk / N) |j⟩

ステップ4: 古典的な後処理

得られた状態から測定を行うことで周期情報が得られる。この周期情報を用いて次の式を考える:

x = a^(r/2) - 1

y = a^(r/2) + 1

これらが非自明な因子である場合、p と q を次のように計算できる:

p = gcd(x, N)

q = gcd(y, N)

ステップ5: 確率成功率誤り訂正

ショアのアルゴリズム確率的であり、成功率は高いもの100%ではない。そのため、誤り訂正技術複数回実行することで成功確率を向上させる必要がある。

2024-10-29

楕円曲線暗号について

楕円曲線暗号(Elliptic Curve Cryptography, ECC)は、数論と代数幾何学に基づく公開鍵暗号方式である

特に有限体上の楕円曲線構造を利用して安全性を確保する手法として知られ、RSA暗号に比べて少ないビット数で同等の安全性を実現できる。

1. 楕円曲線の基本構造

楕円曲線とは、一般的に次の形で表される三次方程式により定義される:

y² = x³ + ax + b

ここで、係数 a, b は、定義する体 F 上の元である特に上記の式が体 F 上で非退化(特異点存在しない)であるためには、判別式ゼロでないこと、すなわち

4a³ + 27b² ≠ 0

であることが必要条件となる。

楕円曲線上の点の集合 E(F) は、無限遠点 O を加えた集合として群構造を持ち、加法演算定義できる。加法演算は、点の「和」を取る操作であり、次の規則に従う:

このように、楕円曲線上の点の集合はアーベル群となる。この群の構造活用し、暗号方式が構築される。

2. 有限体上の楕円曲線

実際の暗号応用では、有限体 Fₚ(p は素数)や拡大体 F₂ᵐ 上の楕円曲線使用する。有限体上の楕円曲線 E(Fₚ) は有限個の点から構成され、その数は次のようにハッセの定理によって評価される:

|E(Fₚ)| = p + 1 - t,

ただし、トレース t は |t| ≤ 2√p を満たす。

3. 楕円曲線ディフィー・ヘルマン鍵共有

ECC代表的な応用として、楕円曲線上のディフィー・ヘルマン鍵共有(ECDH)がある。これを次のように構成する:

1. 楕円曲線 E と基点 G ∈ E(Fₚ) を公開する。

2. ユーザーAは秘密鍵 a を選び、公開鍵として P_A = aG計算して送信する。

3. ユーザーBは秘密鍵 b を選び、公開鍵として P_B = bG を計算して送信する。

4. 双方は共通鍵として K = aP_B = bP_A = abG を計算する。

この手法安全性は、離散対数問題特に楕円曲線離散対数問題(ECDLP)」に依存している。楕円曲線上の点 P と Q = nP が与えられたとき、係数 n を求めるのは計算的に難しいため、敵対者秘密鍵を推測するのが困難である

4. 楕円曲線暗号安全性

楕円曲線暗号安全性の要因としては、以下の点が挙げられる:

5. 数論と代数幾何の関連

楕円曲線理論には数論的な性質が深く関わっている。

例えば、リーマン予想特別場合であるヴェイユ予想は、有限体上の楕円曲線の点の数に対する評価を与え、暗号設計の基礎となっている。

さらに、現代暗号学では楕円曲線とモジュラー形式関係ガロア表現といった高度な数論的構造研究されており、これらが量子耐性を持つ新たな暗号方式研究に貢献している。

楕円曲線暗号はこのようにして、抽象代数学、数論、代数幾何学の融合によって成り立ち、安全性効率を両立させた暗号技術として広く利用されている。

RSA暗号数学的背景

RSA暗号は、代数的構造特に合同算術および整数環における準同型写像を用いた公開鍵暗号である

RSA安全性は、環の自己同型写像の一方向性と、有限生成群の元の分解が困難であることに基づいている。

この暗号方式整数環 Z/NZ(N = p・q)上の準同型写像の一方向性活用する。

1. 鍵生成における数論的準備

まず、RSAにおける鍵生成は、代数的に以下のように構築される:

1. 整数環の構成

互いに素な大きな素数 p および q を選び、合成数 N = p・q を作成する。

これにより、商環 Z/NZ定義される。ここで、N はRSAにおける「モジュラス」として機能する。

この商環は、全体として単位的な環であり、RSA暗号計算基盤となる。

2. オイラートーシェント関数

オイラートーシェント関数 φ(N) を次のように計算する:

φ(N) = (p - 1)(q - 1)

これは環 Z/NZ の単数群 (Z/NZ)* の位数を表し、RSA準同型構造における指数計算に用いられる。

3. 群の生成元と公開指数 e の選定:

単数群 (Z/NZ)* は、φ(N) を位数とする巡回群であり、一般に生成元 g ∈ (Z/NZ)* を持つ。

RSAでは、この群の生成元から得られる公開指数 e は、φ(N) と互いに素な整数として選ばれる。公開指数 e はRSAの「公開鍵指数」となる。

4. 秘密指数 d の計算

次に、以下の合同式を満たす整数 d を求める。

e・d ≡ 1 (mod φ(N))

これは、e に対する逆元 d の存在保証し、秘密指数として機能する。ここで d はユークリッド互除法により効率的に求められる。

 

以上により、公開鍵 (N, e) と秘密鍵 (N, d) が生成される。これらの鍵は、合同算術と商環上の準同型写像によって定義される。

2. RSA暗号暗号化と復号の代数的構造

RSA暗号は、モジュラー演算によるべき乗写像使用した暗号化および復号過程である。この操作は、(Z/NZ)* 上の自己同型写像に基づいている。

任意メッセージ M ∈ Z/NZ に対し、公開鍵 (N, e) を用いて次の準同型写像作用させる:

C = σ(M) = M^e (mod N)

ここで σ: M → M^e は (Z/NZ)* の自己同型写像として作用し、得られた C は暗号文となる。

この写像はモジュラ指数写像として同型写像であるが、一方向的であるため暗号化に適している。

暗号文 C を受け取った受信者は、秘密指数 d を用いて復号を行う。具体的には次のように計算する:

M = C^d (mod N) = (M^e)^d (mod N) = M^(e・d) (mod N)

ここで e・d ≡ 1 (mod φ(N)) であるため、e・d = kφ(N) + 1(整数 k)と表すことができ、したがって

M^(e・d) = M^(kφ(N) + 1) = (M^(φ(N)))^k・M ≡ 1^k・M ≡ M (mod N)

により、元のメッセージ M を復元することができる。ここでオイラーの定理に基づき、(M^(φ(N))) ≡ 1 (mod N) が成り立つため、この復号化が成立する。

3. RSA暗号抽象代数的な安全性評価

RSA暗号安全性は、以下の代数的な構造依存する。

1. 合成数環の分解問題

RSA暗号は、Z/NZ構成において N = p・q の因数分解が困難であることを仮定する。

合成数 N の素因数分解問題は、現在計算アルゴリズムにおいて指数時間に近い計算量が必要であり、代数的には解読が非常に難しい問題であるとされる。

2. 一方向性関数特性

RSA暗号における暗号化は群の自己同型写像によって構成されるが、逆写像を求めることは一般に困難である

これはRSAの一方向性保証し、現実的に解読不可能構造形成している。

RSA暗号の解読は逆写像としてのべき乗の逆操作計算することに相当し、これを効率的解決する手段存在しないことが安全性根拠となる。

3. 合同条件の準同型

RSA暗号構造は合同算術に基づく準同型性を有し、M → M^e (mod N) というモジュラ指数写像によりメッセージ空間上の一対一対応を実現する。

この準同型性により計算効率保証されつつも一方向性を持ち、安全暗号化が可能である

  

以上より、RSA暗号は合同算術準同型写像、群の生成元と逆元の難解さに基づく暗号であり計算理論抽象代数からその安全性保証されている。

RSA暗号の解読可能性は準同型写像の逆像を効率的に求める方法存在しないことに基づいており数学的にはこの逆像問題の困難性がRSA安全性を支えているといえる。

2024-03-10

anond:20240309135728

RSA暗号素数作るのが大変だからちょくちょく紛い物を混ぜてる

2023-06-11

Web3ヤー対策 一問一答

アメリカクリプト規制に本気出し始めたので本邦Web3ヤーたちがざわざわしていますさらなる詐欺の撲滅のため、彼らが常用するレトリックとそれに対する正しい反応をあらかじめ書き連ねました。これらが有耶無耶のまま来年ビットコイン半減期を迎え、万が一雰囲気相場好転すると、耳さわりの良いポジトークが増えていくでしょう。これ以上被害者を出さないためにWeb3ヤーワクチンを打ってください。

Web3ヤー「ゲンスラーのせいで損した。SEC投資家保護するんじゃないのか?」

解答「あなたが損した分、ショートしている人は儲かっていますあなたポジションはSECも守ってくれません。そもそもトーク自体価値があるなら、その価格ドル建てで上がろうか下がろうか関係無いはずです。それなのに価格上下一喜一憂するということは、そのトーク自体価値がなく、ドル価値があると自ら告白しているようなものです。そんなトークン遊びは規制されて当然でしょう。」

Web3ヤー「ゲンスラーは昔と言ってることが違う!Binanceに就職しようとして落とされた私怨でBinanceにやり返す姑息な奴だ!」

解答「むしろ考えるべきなのは、そんなゲンスラーでもこうなってしまうほどアメリカクリプト規制に本気を出していることです。ゲンスラーすらSEC相手には犬なのです。個人攻撃で国がひっくり返るほど、アメリカ中央集権的な国家ではありません。もっと大きな敵を相手しましょう。それを突き詰めていくと、規制がないことを良いことに、資金洗浄テロ資金供与に目を瞑り、いい加減なポンジスキームを乱立させて、マネーゲームに狂乱したあなた方が本当の敵だったことを発見するでしょう。」

Web3ヤー「アメリカイノベーション保護しろ!」

解答「クリプトイノベーションだったのでしょうか。イノベーションは誰かの役に立つからイノベーションなのです。金融ゲームに勝ってドルを誰かから奪える以外のユースケースを挙げてください。」

※別解「暗号資産そもそも国家依存しない通貨というコンセプトのもと発明されました。その暗号資産は、国家保護されるべきものなのでしょうか。国家から保護必要なら、その挑戦に失敗した、ただそれだけではないでしょうか。」

Web3ヤー「こうなったのはすべてアメリカの陰謀」

解答「あなた方の間違いを認めたくがないために、無理やり陰謀論帳尻合わせですか。本当に失望しました。試しにアメリカTwitterトレンドを見てみましょう。誰もクリプトことなんか話していませんし、見つかるのはbotterによる詐欺ミームコインのエアドロップの告知ツイートだけです。これを見るだけでもクリプト百害あって一利なしだと分かるでしょう。あなた方のようなルサンチマンに陥ったイノベーターに誰がついていくのでしょうか。あ、イノベーターではないか。そーか、そーか。」

Web3ヤー「DeFi政府企業コントロールされない金融システムです!」
ゲンスラー規制しまーす」
Web3ヤー「俺らからイノベーションを奪うな!」

「ふぁっっ?」

Web3ヤー「DeFiは、途上国や様々な事情金融サービスアクセスできない人々のために、検閲されないオープン金融システムを実現します!」

解答「DeFi金融リテラシーが低い人には向きません。スキャムやポンジスキームプロジェクトに溢れているからです。金融インフラが進んでいない地域では金融教育も行き届いていないことを想定すると、そのような地域の人々が安心して触れるものでは決してありません。途端に泣き崩れる嫁が大量発生するでしょう。」

※別解「え、DeFiって、金融強いマンたちが、余裕資金脳汁ブシャーに興じるオンラインカジノじゃないんすか?途上国の人から見ればDeFi手数料だけで一ヶ月暮らせるけど?」

Web3ヤー「クリプト業界プロダクトは99%詐欺だけど俺たちのは違うぜ!!!

解答「みんなそう言ってるから信じられません。そもそも、その断り文句を入れなければならないあなた方のその業界は、何かが根本的に間違っています。」

Web3ヤー「うちのDAOのガバナンストークンは、過半数コミュニティに分配してます!」

解答「そのコミュニティ運営が成り済ますことが技術的に簡単にできる以上、我々投資家あなた方を信頼しなければなりません。そんなあなた方が発行するトークンを証券と呼ばずに何と呼べばいいのでしょうか?」

Web3ヤー「エアドロップするから、うちのサービス使って!」

解答「プロダクトの素晴らしさではなくて、エアドロップ集客しなければいけないプロダクトのバリューは何ですか?エアドロップ自己目的化してませんか?」

Web3ヤー「エアドロップは未定です。」

解答「エアドロップ客引きするのがダサいと分かっているから、未定で誤魔化しているのでしょう。こう言うプロジェクトからはエアドロップしたい下心が透けて見えます。いずれVCに突かれてエアドロップするでしょう。」

Web3ヤー「エアドロップしません」

解答「真面目なプロダクトはこの業界では報われません。触っても無駄なので無視しましょう。」

Web3ヤー「NFTをフリーミントします!」

解答「エアドロップができない日本プロジェクトが取る日本特有マーケ戦略です。基本ミントしても何にも起こりません。くだらない電子ゴミにしゃぶりついた黒歴史ブロックチェーン上で全世界に晒されるだけです。絶対にやめましょう。」

Web3ヤー「うちのプロトコルのソースコード監査済みなので安全!」

解答「今までハッキングされたプロジェクトもそう言ってきました。それでも大丈夫と言える根拠を述べてください。」

※別解「そんな定型句は聞き飽きたので、あなたのチームに朝鮮訛りかロシア訛りの英語を喋って、リモート会議で顔見せない開発者がいないかだけまず教えていただけますか?」

Web3ヤー「最近ハッキングされても犯人からお金が返ってくる!」

解答「それは仮想通貨取引所が全世界的にAML/CFT対策を強化してきた努力の成果です。現在暗号資産ハッキングしても大規模な資金洗浄が困難になっています規制恩恵に守られながら、Web3ウェーイ、政府なんていらねーぜウェーイ、とイキるのは恥ずかしいのでやめましょう。」

Web3ヤー「ハッカソン開催します!」

解答「ハッカソンはWeb3業社の主要事業です。自社エンジニアに去られ、プロダクトのネタが切れ、エアドロップもしてしまったWeb3業社はやる事がありません。何かやっているアピールのために、ハッカソンを頻繁に開催して事業偽装しています。そんなハッカソン会場には、闇バイト戦士リクルーティングしようと怪しい人がウヨウヨしています。気をつけましょう。」

Web3ヤー「イベント開催します!」

解答「イベントハッカソンに次ぐ事業です。英語で何かを聞かされますが何も中身はありません。ポジショントーク馴れ合いプロ驚き屋たちのサクラトークだけです。分かりやす英語で話してくれるので、いいリスニング練習になります。また、会場にいるWeb3女子の9割はバックに怖い人たちがいます。近づいてはいけません。」

Web3ヤー「〇〇ポジション採用中」

解答「組織内部が崩壊しています同義です。Web3の中の人はとっくにヤバさに気づいて逃げています特にエアドロップを終えたプロジェクト新規で入る人には何の旨味もありません。また、トークンをもらえても、証券認定されれば、むしろトークンを持つことで面倒なことに巻き込まれ可能性があります。関わらずが正解です。」

Web3ヤー「イベント登壇しました。有名な〇〇さんとツーショット(カシャ」

解答「Web3起業家ワナビーが取りがちな行動です。しかし、そういった仲間意識からまれ信頼関係の重み付きグラフから権威創発され、権威国家権力を生み出し、やがて私有財産権を脅かすに至ったアンチテーゼとして暗号資産は生み出されたはずです。ドバイシンガポール村社会楽しいですか?仲間と内輪ノリで楽しくやっててください。政治家写真撮って、偉い人と握手して、セルフブランディングして、素晴らしいプロダクトを世に送り出してください。待ってます。」

Web3ヤー「ブロックチェーンエンジニアです!」

解答「さぞ難しそうなことをしている響きですが、JavaScriptしか書けない弱々エンジニアです。ブロックチェーンAPIを呼んだり、ウォレットAPIを呼んだりすることしかできません。楕円曲線暗号は知っているのにRSA暗号は知りませんし、デーモンは知っているのにプロセスは知りません。トランザクションと聞けばブロックチェーントランザクションが先に思い付きます。もちろんSQLは知りません。それなのに自分が何かクールなことをしていると勘違いしています。え、Solidityも書ける?ああ、自分クールじゃないと気付いたから周りのエンジニアとの差別化を図ったんだよね。わかるよ。でも、小手先で見栄えだけよくする様は、Web3起業家ワナビーマインドが一致しています。頑張ってください。」

Web3ヤー「〇〇チェーンは高スループット(もしくは高TPS、高スケーラビティ)!」

解答「〇〇チェーンが高いTPSを記録しているのは、分散性を犠牲にしているからです。ブロックチェーンとは呼べません。どこかに単一障害点があるので不安定でよく止まります分散していないので、ゲンスラーの手にかかれば瞬殺されるでしょう。」

※別解「高スループットなのはいいけど、その分増えるデータ容量はどうすんの?将来的に何十~何百テラバイトにもなるチェーンデータを非中央集権的に持続的に分散管理できるとでも思ってるの?結局は、Googleのようなところに集中しない?」

Web3ヤー「SolanaやPolygonは分散してる!!」

解答「SolanaやPolygonはコンセンサスに参加できるノード制限しています。ちなみにSolanaのバリデータノードは走らせるためだけに一年で数万ドルかかるので一般人には手が出せません。また、Polygonは人が管理するブリッジに全ユーザー資産ロックしているので、実質中央集権です。バリデータ偽装工作です。もちろん証券でしょう。」

※別解1「Polygonは速いのはいいけどさ、reorg(チェーン巻き戻し)多すぎない?まだ少しの人にしか使われてない黎明期に、そんな調子大丈夫なの?でもバグった自民党NFTがデプロイされてキッシーが無限ミントされたおもしろチェーンだから、消えたりしないでね。」

※別解2「Solanaはトランザクションの9割は同期用のトランザクションから実際のTPSはずっと低くない?例えるなら、モバイル事業者が一日10000通話達成したって宣伝しながらそのうち9000通話がその事業必要な内線ってことでしょ?はなしもりすぎ。お前の父ちゃんアーフロ。」

Web3ヤー「ADA Cardanoしか勝たん!」

解答「今もこんな養分いるんですかね。Cardanoはプロジェクトの開始時から世界中のクリプトから嫌われている稀有プロジェクトの一つです。日本では反社との接点が報道されるなど真っ黒なブロックチェーンとして知られています。SolanaやPolygonとともにSECから証券と名指しされましたが、反論余地はないでしょう。技術的にも、UTXOモデル採用したCardanoにスマートコントラクト未来はありません。」

Web3ヤー「リップル!」

解答「頑張ってください」

Web3ヤー「NEM、Symbolが来る!」

解答「君たちは、良い人そうだし、駆け出しエンジニアと繋がりたそうですね。君たちの純粋眼差しを見ると、わたしは胸が締め付けられます。少なくとも来世では幸せになれるでしょう。」

Web3ヤー「Astar大好き!」

解答「君たちはNEM勢と同じ顔をした若い世代です。英語難しいか日本人がたくさんいるAstarに来たんだよね。わかるよ。はぁ、みんな揃って、優しいのに彼女いない顔をしていますね。来世では幸せになれるでしょう。」

Web3ヤー「IEO!」

解答「IEOはメチャクチャです。規制の緩い資金調達手段は、売り抜け目的悪徳プロジェクト養分を狩る場にしかなっていません。チャートを見る限り今年日本で行われたIEOはすでに全てが死んでいます。今後も触らぬが正解でしょう。しかし、それでも触りにくる養分は集まってしまうので、雰囲気祭りになりやす半減期前に、何らかの規制が求められます。」

Web3ヤー「NFTを使えば画像の無断コピーを防げる!」

解答「防げません。ふつうコピーできます。」

Web3ヤー「NFTによってあらゆる電子データを所有できるようになった。革命だ!」

解答「NFTの所有と、法的な所有は別です。有体物ではない電子ゴミ所有権もクソもありません。」

Web3ヤー「NFTが盗まれても保険があるから大丈夫!」

解答「ブロックチェーン上では、成りすましが容易にできてしまうため、盗まれたふりも紛失したふりも簡単にできます。そのような保険サービスは持続できないでしょう。そもそも代替不可能なNFTの金銭価値を測るのは容易ではありません。」

Web3ヤー「ブロックチェーンゲームなら、ゲーム資産ブロックチェーン上にNFT化され永遠に残るから、たとえゲームサービス終了してもあなた資産は売却できる!」

解答「ブロックチェーンが無くなる、もしくは止まったら全て思い出になるのは変わりません。」

※別解「サ終したゲーム資産って誰が買うんすか?」

Web3ヤー「STEPNのような〇〇 to Earnは革新的!」

解答「それはポンジスキームです」

※別解1「あれれ、STEPN息してなくない、ウォウ、ウォウ?」

※別解2「去年は滑稽だったなぁ、STEPN起動しながら歩いてる人たち。ペースが崩れるとトークンがもらえないからみんな同じ歩き方でさ。まるで朝鮮人民軍の軍事パレードなんだ。資本主義共産主義も、行き過ぎれば同じってハッキリわかんだね。」

Web3ヤー「ブロックチェーンゲームと相性が良い。ミッションクリア報酬仮想通貨でもらったり、アイテムをNFTでもらえるんだ。参加者同士で交易もできるから仮想世界経済圏をつくれるんだ!」

解答「チート使って人間のふりして24時間稼働して金稼ぐbot天国になりますブロックチェーンゲームBCG)は、いかプロトコルをハックして稼ぐかを追究する数字ゲーム還元されるので、純粋ゲームする人間養分になるでしょう。ポケモンGoのような従来のゲームならさほど大きな問題にはなりませんが、チートお金を稼げるようになる、しかもそれが他プレイヤーに損を押し付ける形でなので、すぐさま深刻な問題になるでしょう。」

※別解1「掛け金を払ってそれを超えるリターンを期待するゲームは、ゲームではなくギャンブルです。今日からBCGのGはギャンブルのGってことにしましょう。」

※別解2「最近サッカーBCGを始めましたが、数字比べゲームでした。いつになればサッカーができますか?」

つづく

2021-09-14

anond:20210914162445

出来ないよ

量子何とかで解読できるのはRSA暗号だけでAESは無理

2021-01-27

jjwt初めて触ったけど、公開鍵使用しているのにjjwtのエラーダイアログに従って、hmacで(正確にはhmacShaKeyForで)生成した暗号鍵を与えて、動かんなー動かんなーってうなり続けて二時間後、ふとhmacって共通形式なことに気づいた。公開鍵だって、RS256やって、RSA暗号くらい知っているだろゴラァって自分を殴りながら、適当にググって見つけたgistにしたがってぶち込んだら、普通に動いた。泣きそうになった。

2021-01-01

メーカーSIer勤務の年収600万のプログラマー技術スタック

先に言っておくがたいした技術習得していない。

この程度でも600万は稼げるという夢を持つか、こんなのでもちょっと何かが違うだけで600万稼げるか否かが分かれてしま業界に闇を感じるか、600万程度で何ドヤってるの?と思うかはご自由にどうぞ(外資系ってもっと稼げるの?)。

歳は30台前半。学部卒。BtoB向けのパッケージ製品の開発プロジェクトで、設計コーディングテストあたりを担当している。仕様について発注元との折衝もやっている。

業務で使う技術のうち、自分自身がそれなりに習得しているものだけを書く。プライベートしか習得使用していない技術は別。


以上。

PythongitDockerkubernetesもAnsibleもCIツールAWSGCPRuby on Railsも知らなくてもなんとかなってしまっている。業務でこれらのスキル要求されることは(今のところは)ないから。

楽でいいと思う一方、このままだと将来ヤバいとも思っている。いざ転職となったときに詰みそう。

でもいざとなったらググっていくらでも独学できるだろうとたかをくくっているので焦ってはいない。

というか「その他」のところに書いた能力が高ければ世の中大体はなんとかなるんじゃないの。知らんけど。

ちなみに自分は構築できないというだけで、プロジェクトではJenkinsとかgradleとかbabelだかwebpackだかでビルド環境は整えられている。

あとプライベートで、単純な仕様独自言語コンパイラフロントエンドC++LLVMで作っている(これで金が稼げるとは微塵も思っておらず、完全にただの趣味)。

2019-10-19

アニメ「ぬるぺた」で物理数学

アニメ見てたら3話で物理数学ネタが出てきてすごく嬉しい。

ぬるぺたにはこの調子ディープネタを続けてほしい



唐突位相幾何ネタNewtonを読んでイキる大学1年生には鉄板ネタだよね。

2019-10-03

anond:20191003011208

RSA暗号簡単に解けると思うならそうなんだろうな

2019-04-03

セキュリティクラスタって性格悪いよなあ

徳丸さんとか高木さんとか、いつまでも武雄市長に粘着して息吸って吐いてるだけで文句わめいてるし。

なーにがこんにちわ~~だよクソが

2014-02-27

Apple's SSL/TLS bug (22 Feb 2014)の意訳

例のAppleSSL/TLSバグの件、日本語情報がなかったので意訳しました。

Adam Langleyさんによって書かれた原文はこちら。要所要所に親切なリンクがついているので、ぜひ原文も見てみてください。

Apple's SSL/TLS bug (22 Feb 2014)

https://www.imperialviolet.org/2014/02/22/applebug.html

(Hi Adam Langley, Than you for your blog! We really appreciate you.)

-----

昨日、AppleはばかばかしいiOS向けのセキュリティアップデートを発行した。
それは詳しく明かされていないが、SSL/TSLについてとんでもなく恐ろしい間違いを示すものだった。

その答えは既にハッカーニューストップにタレこまれている(https://news.ycombinator.com/item?id=7281378)し、アップルが隠したい秘密はもうバレてしまっていると思う。
そして現在、俺たちはその誤った情報を正すステージに来ているんだ。

ほらここに、Applebugがあるんだ。:
static OSStatus
SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams,
                                 uint8_t *signature, UInt16 signatureLen)
{
 OSStatus        err;
 ...

 if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
  goto fail;
 if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
  goto fail;
  goto fail;
 if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
  goto fail;
 ...

fail:
 SSLFreeBuffer(&signedHashes);
 SSLFreeBuffer(&hashCtx);
 return err;
}(Quoted from Apple's published source code.)
(訳者注:(Quoted from Apple's published source code)→sslKeyExchange.c)

2行のgotoがあるだろ。
2行目のgotoは、見て分かる通り常に発動する。
変数[err]にはエラーを示す値が入らず、正常を示す値のままfailに飛ぶってことだ。
それって成功したのと同じなんだよね!

この署名検証処理は(訳者注:SSL/TLSハンドシェイクのやりとりのうちの一つである)ServerKeyExchangeメッセージ署名検証するものだ。
このServerKeyExchangeでは、"the ephemeral key"(通信のための一時的な鍵)を交換するためのDHE や ECDHE という暗号スイートが使われる。
そのサーバーは言うんだ。
「ここに"the ephemeral key"と署名があるよ、ほら、これが証明書だ。君はこれが僕からのものだってわかってくれるよね!」

今、もし"the ephemeral key"と証明書関係が破たんしているならば、すべては無意味なんだ。
これってつまり、正規の証明書チェーンをクライアントに送信したけど、ハンドシェイクへの署名には正しくない間違った(つまり適当にその辺で作った)鍵を使ったり、そもそもハンドシェイク署名しなかったりってことができるってことなんだよ!

そこには、今君が通信しているサーバーが、サーバー証明書に含まれる公開鍵秘密鍵を持っているってことの証明が、何もないんだ。

これはSecureTransport(というライブラリ)に入っていて、以下に影響する。
・iOS 7.0.6より前(俺は7.0.4で確認した)
・OS X 10.9.2より前(10.9.1で確認した)
(訳者注:つまりiOS 7.0.6、OS X 10.9.2で解決した)

これはSecureTransportを使っているすべてに影響するけど、ChromeFirefoxはそうじゃない。
ChromeFirefoxSSL/TLSのためにNSSを使っている。
でも、それはあんまり君のマシンがSecureTransportを使っていないってことを意味しないよ。(ソフトって更新されるしね)


超特急テストサイト作ってみたよ。https://www.imperialviolet.org:1266
ポート番号に気を付けてね。(テストサイトCVE番号になってるよ)
443は通常通りに動いているからね。

ポート1266のサーバーと443のサーバーは同じ証明書を送っているけど、完全に異なるキー署名しているんだ。
君がもしポート1266のHTTPSサイトアクセスできたんだったら、君のマシンはこのイケてるバグを抱えてるってことだね。:)


それってつまり証明書チェーンは正しいってことで、そしてハンドシェイク証明書チェーンの関係は壊れたってことで、もう俺はどんな証明書も信じないよ。

またこれは、DHE または ECDHE 暗号スイートを使っているサイトに影響を及ぼすだけじゃないんだ。
攻撃者は、この暗号スイートを使うサーバー自分で建てるようになるだろう。

また、これはTLS 1.2には影響しない。このバグを含まないTLS 1.2の別の関数があったから。
でも攻撃者は使うプロトコルをある程度選ぶことができるから安心できないよ。
(訳者注:サーバー側がTLS1.2を使えないことにしていたら、それ以外の例えばSSL3.0とかTLS1.0とか1.1で通信が始まっちゃうから。)
でもでも、クライアント側でTLS1.2だけを使えるようにしておけば、それは今回の問題の回避策になる。。
同じく、クライアント側でRSA暗号スイートだけを許可するということも、ServerKeyExchangeが発生しなくなるので今回の問題の回避策になる。
(2つのうち、1つ目のほうがだいぶ好ましい。)

俺のテストサイトでは、iOS 7.0.6 と OS X 10.9.2で問題は解決していた。
(更新:このバグOS X 10.9 のときに入ったように見えたけど、iOS6にもっあったぽい。iOS 6.1.6は昨日リリースされたよ。)

こんなような微妙バグって、悪夢だ。
俺はこれは単なるミスだと思うし、なんかもうほんと最悪って思う。


ここに、今回の問題を明らかにするコードがある。:
extern int f();

int g() {
 int ret = 1;

 goto out;
 ret = f();

out:
 return ret;
}
もし俺が"-Wall "を付けてコンパイルしたとしても、XcodeGCC 4.8.2 や Clang 3.3は死んでるコード(the dead code)について警告をしないんだ。
本当にビックリだよ!!!

ここで警告が出ていたらこの問題は止められたのに。でもたぶん、現実には死んでるコードが多すぎて無視することにしてるんだろうね。
(ピーターネルソンが教えてくれたけど、Clangはこれを警告するための"-Wunreachable-code"を持ってる。でもこれ、なんと"-Wall "には含まれてない!)

if文に{}をつけないことを許すコーディングスタイルはこの問題を誘発したかもしれない。
でも、人は{}を付けたとしても間違ったプログラムを書くことがあるから、これは俺はあんまり関係ないように思う。

テストケースはこれを見つけることができたはずだけど、今回のはいろいろ条件が複雑なやつだったから難しかったと思う。
TLSのめちゃめちゃ多くのオプションを試さなきゃいけなかったからね。しかも正常系じゃないやつも。
俺、TLSLiteでちゃんとテストしてるか思い出せないもん。(月曜日怖いかも)

コードレビューはこの種類のバグについて効果的でありえる。
ただし単なる審査じゃなく、それぞれの変更に対してしっかりとレビューすることだ。
Appleコードレビューカルチャーがどんなもんか知らないけど、もし俺が同じようなことをやっちゃったとしたら、同僚のWan-Teh や Ryan Sleevi がばっちり見つけてくれたと、固く信じてる。
でも、誰もがそんなにいい仲間を持てるわけじゃないよね。


最後に。昨日、Apple証明書ホスト名をちゃんとチェックしていなかったことについて多くの議論があったんだけど、
それは OS Xコマンドラインcurlを使うと、IPじゃない証明書でもIPHTTPSにつながっちゃうってだけだったよ。変だけど。
Safariはこの問題には関係なかったよ。

2009-09-13

サマーウォーズ真犯人

サマーウォーズの鑑賞中、セキュリティ描写が気になって映画を半分(主にカズマパート)しか楽しめなかった。

その後、はたしてどのような描写であれば納得感を得られたのかと妄想していたら、妙な答えに行き着いた。

まぁ、妄想ネタであることを承知置きください。

http://d.hatena.ne.jp/LM-7/20090831/1251727185

ここにあるように、もしあの2056桁の数列がRSA暗号における鍵であるとして、健二が素因数分解により平文(おそらくアバターの操作や仮想建物への入室のためのパスワード)の復号をマトモに暗算で行っているということは考えにくい。そこには何らかのショートカットが存在するはず。おそらく、OZ暗号鍵生成アルゴリズムに実装上のバグがあり、何らかの推察(法nに規則性、乱数が甘いとか)を許してしまうような物だろう。これは、おそらくOZ技術者の中では既知のもので、対応中のものだったのではないだろうか。そう、だいたい55人くらいにはそのショートカット法を知られていたくらいには。

ここで思い出してほしいのは、健二はOZメンテナンスアルバイトをしていたということ。

メンテナンスのため管理棟(だっけ?)と言われる領域へログインし、何か作業を行っている様子が見られる。どんな作業かは分からないが、物理部の彼らのこと、そうした暗号への興味もあるだろうし、知ってしまっていたとしてもおかしくはない。(こんな危険バグの対応をバイト学生に任せるなんてありえないが、あるいはバイトとはこの問題への対応のためのテストであり、その過程で知ってしまったのかもしれない。)

健二が上田へ向かい、ラブマシーンが暴れだす。

だが、ラブマシーンの描写を見ると、できることはアバターを乗っ取ることだけで、OZの基幹系システムそのものを乗っ取ったわけではない。あくまでアバターの可能な範囲での権限の行使に限られていて、たとえば花札ルールに介入したり、配られる札を操作したりするようなことはできない。

ラブマシーンが米軍によりOZに放たれたとき、彼にできることは相当限られていたはず。

彼が暴れるためには、多くのユーザ秘密鍵管理を行う管理棟へ入れるアバターを乗っ取ることが必要だった。

ラブマシーンは何かのきっかけで上記の脆弱性を知り、OZ管理者に近いアバターの鍵をなぜか知り、その解を解けそうな人物へ送付する。メールでその鍵の復号を知る。

それを手がかりに秘密鍵へのアクセスを可能にし、あとは選択平文攻撃によってアバターを次々に乗っ取っていく。でも、最初の一歩、管理棟への出入りのための鍵はどこから?

その、最初の鍵は、どうやって手に入れたんだろう?

ここで、一人の傷心の人物が浮かび上がる。

OZバイトしていた、物理に興味のある、あまり目立たなかった人物。

彼は暗号を自力で解くほど数学の才に恵まれていたわけではなかったが、秘密鍵のありかと、脆弱性があることは知っていた。

じゃん拳に負け、東京に一人残った彼。

傷心の彼はその日、管理塔のまわりをうろつくラブマシーンに気がついた。何でも知ろうとし何でも吸収しようとするbot

本当は、知識を吸収して報告するだけの何も権限のないbot

そう、佐久間敬君、きみ、あれに何か渡さなかったかい?その見返りとして健二のアバターを使うように申し出たり?

暴走したラブマシーンとは、あれは君?

2007-07-09

http://anond.hatelabo.jp/20070708222412

暗号の鍵が問題って事でいいんじゃないの。

スタンドアローンでなく共有された仮想空間において、空間の整合性のためにオブジェクト暗号化されて管理されているとするわな。一方でアルゴリズム上の問題で暗号の鍵は正規のものと別に「偶然」開錠できてしまうものがあるとする。(RSA暗号の問題から着想)

その未発見の「合鍵」が各ハッキングツールの「違法な処理」を可能にしているものだと解釈すればどうか。未発見合鍵は管理者に発見サッチーに処理)されると対策されて使えなくなる。

2006-11-13

[]『水からの伝言』の世界

昔、妖精現実のトップにあった記事。探しても見つからないや。

水からの伝言」…水は否定的な言葉を見せたときと肯定的な言葉を見せたときで異なる結晶を作る。

(念のために言うが、↑は科学事実ではない。しかしネタとして、あえて) これが成り立つ世界を考える。ただし、次の公準も仮定する。

公準: 悪意・うそ・いつわりの言明は否定的である。

考古学的応用: 水は世界中言語を理解できるので、 未解読文字の解読に役立つ。 少なくとも、お礼を言っているのか、宣戦布告の文章か、といった程度の判別はつく。 「正しい解読結果をアルファベットで表記したとき1文字目は大文字小文字を区別せずにAである」「…Bである」…と書いてある30枚弱の紙を水に見せて、どれが肯定的かを判断することを、結果の文字列長(この整数値も水に問い合わせることができる)だけ繰り返せば、あらゆる謎の古文書が解読できる。 水さん、ありがとう

問1: 解読結果が1万文字以内であることは分かっている文がある。 解読結果の文字列長を表す整数値を必ず確定させるのに必要な最小の「水への問い合わせ回数」はいくつか。

問2: 現在は不治の病であるXについて、それを根治する薬品があると仮定する。 その有効成分をIUPAC等の標準的な化合物命名法で記述して1万文字以内であると仮定せよ。 以上によって、水が肯定否定を判断できるなら、難病のいくつかが克服できることを説明せよ。

問3: 水に問い合わせられるときP=NP問題は肯定的に解決されるか。

軍事的応用1: ゆえにRSA暗号楕円曲線暗号、その他、いかなる未知の暗号であっても、ダイレクトに高速にクラックできる。 上記同様、解読結果のどれが肯定的か1文字ずつ判断させるだけで良い。量子通信・量子暗号さえ解読できてしまうだろう。

軍事的応用2: さらに、暗号に限らず、情報一般に応用できるから、チャフによる妨害や、敵の欺まん電波を見破るように水を結晶させる装置を弾頭に装着することで、電子妨害を受けない強力な兵器を構築できる。

あらゆるプライバシーは破られ、あらゆる外交機密はばれる。水さん、ちょっと漏れすぎです。

DRMも破られるので、水は著作権を侵害する。

このように、情報を「絶対的」に評価できるデバイス存在する世界では、社会の秩序が保てない。

こういうの、大好きだ。

 
ログイン ユーザー登録
ようこそ ゲスト さん