「公開鍵暗号」を含む日記 RSS

はてなキーワード: 公開鍵暗号とは

2024-10-29

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-09-29

anond:20240929092551

計算機科学知識体系とネットワーク技術

計算機科学は、情報理論的基盤から実用的な応用まで、広範な領域カバーする学問です。以下に、計算機科学の主要な分野と、特にネットワークに関連するトピックを体系的にまとめます

1. 計算機科学の主要分野

1.1 アルゴリズムデータ構造

アルゴリズム設計: 問題解決のための効率的な手順の開発。

データ構造: データの整理と管理効率化するための手法

1.2 プログラミング言語コンパイラ

プログラミングパラダイム: 手続き型、オブジェクト指向関数型、論理型など。

コンパイラ設計: 高水言語機械語翻訳する技術

1.3 オペレーティングシステム

プロセス管理: CPUスケジューリングマルチタスキング

メモリ管理: 仮想メモリメモリ割り当て。

ファイルシステム: データの保存とアクセス方法

1.4 データベースシステム

リレーショナルデータベース: SQLによるデータ操作

NoSQLデータベース: 非構造データ管理

1.5 人工知能機械学習

機械学習アルゴリズム: 教師あり学習教師なし学習強化学習

深層学習: ニューラルネットワークによる高度なパターン認識

1.6 ソフトウェア工学

開発プロセス: アジャイルウォーターフォールモデル

品質保証: テスト手法バグトラッキング

1.7 セキュリティ暗号

暗号アルゴリズム: 対称鍵暗号公開鍵暗号

セキュリティプロトコル: SSL/TLSIPsec

2. ネットワーク技術

ネットワークは、情報の共有と通信可能にする計算機科学の核心的な分野です。

2.1 ネットワークの基本概念

OSI参照モデル: ネットワーク通信を7つのレイヤーに分割し、それぞれの機能定義

物理層: 電気信号ビット伝送。

データリンク層: フレーム転送エラー検出。

ネットワーク層: パケットルーティング

トランスポート層: エンドツーエンドの通信制御

セッション層: コネクションの管理

プレゼンテーション層: データ形式の変換。

アプリケーション層: ユーザーアプリケーション使用するプロトコル

TCP/IPモデル: 現実インターネット使用される4層モデル

2.2 ネットワークトポロジー

スター型: 中央ハブを介して各ノード接続

リング型: 各ノードが一方向または双方向に隣接ノード接続

バス型: すべてのノードが一本の通信ラインを共有。

メッシュ型: ノード間が多重に接続され、高い冗長性を持つ。

2.3 ネットワークプロトコル

IPInternet Protocol): データパケット化とアドレッシング

TCPTransmission Control Protocol): 信頼性のある通信提供

UDPUser Datagram Protocol): 信頼性よりも速度を重視した通信

HTTP/HTTPS: ウェブデータの送受信。

FTP/SFTP: ファイル転送プロトコル

SMTP/POP3/IMAP: 電子メールの送受信。

2.4 ネットワークデバイス

ルーター: 異なるネットワーク間のパケット転送ルーティング

スイッチ: 同一ネットワーク内でのフレーム転送

ブリッジ: ネットワークセグメントの接続

ゲートウェイ: 異なるプロトコル間の通信可能にする。

2.5 ワイヤレスネットワーク

Wi-Fi802.11規格): 無線LANの標準技術

Bluetooth: 近距離間のデータ通信

セルラーネットワーク: モバイル通信3G、4G、5G)。

2.6 ネットワークセキュリティ

ファイアウォール: 不正アクセスを防止。

IDS/IPS(侵入検知/防止システム): ネットワーク攻撃の検出と防御。

VPN仮想プライベートネットワーク): 安全リモートアクセス提供

暗号技術: データの機密性を保護

2.7 クラウドネットワーキング

クラウドサービスモデル: IaaSPaaSSaaS

仮想ネットワーク: ソフトウェアによるネットワーク構築。

SDNSoftware-Defined Networking): ネットワークの柔軟な管理制御

2.8 分散システム

分散コンピューティング: 複数ノードタスク分散処理。

ブロックチェーン: 分散型台帳技術

2.9 IoTモノのインターネット

センサーネットワーク: デバイス間の通信データ収集

IoTプロトコル: MQTT、CoAPなどの軽量プロトコル

2.10 ネットワーク管理モニタリング

SNMPSimple Network Management Protocol): ネットワークデバイス管理

ネットワークトラフィック分析: パフォーマンスセキュリティ最適化

3. ネットワーク技術の最新動向

3.1 5Gと次世代通信

帯域幅と低遅延: リアルタイムアプリケーションの実現。

エッジコンピューティング: データ処理の分散化。

3.2 SD-WANSoftware-Defined Wide Area Network

ネットワーク仮想化: 柔軟なWAN構築とコスト削減。

中央集中的な管理: ネットワークポリシーの一元管理

3.3 ネットワーク自動化AI

ネットワークオーケストレーション: 自動化された設定と管理

AIによるトラフィック最適化: パフォーマンスの向上と障害予測

3.4 ゼロトラストセキュリティ

信頼しない設計: 常に認証検証を行うセキュリティモデル

マイクロセグメンテーション: ネットワーク内部の細かなアクセス制御

4. 学習リソースと参考文献

4.1 推奨書籍

コンピュータネットワーク』 アンドリュー・S・タネンバウム著

TCP/IP詳解』 W. リチャード・スティーブンス著

ネットワークはなぜつながるのか』 戸根勤著

4.2 オンラインコース

Coursera: 「コンピュータネットワーク」、「ネットワークセキュリティコース

edX: 「Computer Networking」、「Cybersecurity Fundamentals」

4.3 標準化団体リソース

IETFInternet Engineering Task Force): ietf.org

IEEE Communications Society: comsoc.org

W3CWorld Wide Web Consortium): w3.org

2024-08-17

コンピュータサイエンスとは何か

コンピュータサイエンスで取り組まれている問題の一覧を紹介しよう。

計算複雑性

特定アルゴリズム問題における多項式時間と非決定性多項式時間

その他のアルゴリズム問題

プログラミング言語理論

  • POPLmark
  • バレンドレヒト・ギューヴァース・クロップ予想

その他の問題

2023-04-08

anond:20230408001224

ワイが代わりにchatGPTに聞いてやったやで

 

1.電子メールの内容は、中継サーバーで盗み見可能なのか?

中継サーバー上の電子メールは、暗号化されていない場合は、中継サーバー管理者攻撃者によって盗み見られる可能性があります。ただし、多くのメールプロバイダーは、暗号化された通信プロトコル(例:TLS)を使用して、中継サーバー上の電子メール暗号化しているため、中継サーバー上で盗聴される可能性は低いです。

 

2.電子メール送信される過程で、怪しい第三者が設置したサーバーを経由して送られることはあり得るのか?

インターネット上のどこかに、怪しい第三者が設置したサーバー存在する可能性はあります。このようなサーバー使用して、電子メール送信すると、そのメール第三者によって盗聴、改ざん、または中断される可能性があります

 

3.電子メール送信元のクライアントと受信先のクライアント間のP2P暗号化される技術は何があるのか?

P2P暗号化された電子メール送信するために使用できる一般的技術には、Pretty Good Privacy(PGP)、GNU Privacy Guard(GPG)、またはS/MIMEがあります

 

4.「3.」の実現は中小企業で導入するのは難しいものなのか?

PGP、GPG、S/MIMEなどの技術中小企業実装することは可能ですが、技術的な知識スキル必要です。また、P2P暗号化された電子メールの受信側も同じ技術使用する必要があります中小企業では、公開鍵暗号化を使用したエンドツーエンド暗号化提供するメールサービスを利用することが簡単効果的な解決策となる可能性があります

 

5.中継サーバーを経由するなら、メールアドレスは容易に漏洩し、迷惑メールが来るのはそれで漏れたのが原因?

中継サーバーを経由することによって、メールアドレスが漏洩する可能性があります。この漏洩によって、スパムメール送信元として使用される可能性があります

 

6.例えば、会社PCWiresharkからネットワーク上を流れるデータを盗聴し、隣にいる社員メール内容を盗み見することは容易に可能なのか?

Wiresharkなどのネットワークプロトコルアナライザーを使用して、ネットワーク上を流れるデータを盗聴することは可能です。ただし、一般的には、電子メールの内容は、中継サーバー上で暗号化されているため、中継サーバー上での盗聴による情報漏洩がより問題となります。また、会社ネットワーク内でのデータ盗聴は、セキュリティポリシー監視機能の設定によって防止される場合があります

2023-02-27

何か言ってるようで何の意味もない言葉一覧(ワイ調べ)

  • JTC

和製英語ジャパニーズトラディショナルカンパニー」の略。自分観測範囲内でなんかデカいけどイケてない感じがする日本企業を指す。富士通かのこと。任天堂は入らない。ソニートヨタは入ったり入らなかったりする。

  • Web3

ブロックチェーンかに関わる新しそうなITっぽい技術」の総称メタバースは一応入るけどAIは一応違うらしい。あと公開鍵暗号もWeb3らしい。

  • MBTI

性格診断。多くの心理学者精神医学から星占いの亜種」と批判されつつ何故か世に蔓延る、心理学の本を読んだ作家とその娘(法学部)によって作られた不思議テスト

「バカ」「アホ」をカッコよく言いたいときに使う。最初は違った意味だったみたいだけどそんな細かいことを気にして何の意味があるのか。

ハイリーセンシティブ・パーソンの略。MBTIとは比較できない程度にはマトモに研究されているが現状マトモに体系化された概念ではないので「神経質です」「内向的です」の言い換えとして濫用されがち。

なんかほかにもいっぱいあったはずなのに思い出せないからもうこれでいいや。

みんなも似たような言葉があったらおしえてね。

2022-10-14

anond:20221014011035

利用者証明電子証明書署名電子証明書用途の違いでPWの長さ(強度)決めているだけだと理解している。後者文書署名用なので価値が重い(その文書署名したのが確かに自分だと言うことになってしまう)。前者はあくま利用者自分だと真正証明するだけだし、機会も多いか利便性必要なので。

しろマイナンバーカード本質公開鍵認証基盤とその電子証明書よ。非IT技術者やIT技術者でもセキュリティ関連が弱い人(まぁ多いんだよね。ベースにある公開鍵暗号自体が共有鍵暗号比較して仕組みが直観的には分かりづらいし、ましてやそれを利用したPKIとなると)は、本質マイナンバーにあると思いがちだが。

2021-06-17

経験から1ヶ月でWeb企業就職する勉強法

取り上げた技術は、本格的な開発でも役に立つもので、最も学習コストが低いものを選んだ。

重要度が低いものは載せていない。たとえばHTMLCSSなんてググりながら書けば全く問題ない。Bootstrapなどのフレームワークも全くやる必要はなく、仮に就職先で使っていたら覚えればいい。

逆に言えば以下に挙げる技術は、そもそも概念自体プログラミングにとって普遍的ものであり、(基礎的な部分を)調べながら使うようではエンジニア失格ということ。

基本的現在では、バックエンドフロントエンド運用保守全てができないエンジニア価値は無い。

以下に挙げた技術(①⑤⑥は他の言語フレームワーク代替可能)が身に付いていなければまともな企業就職することは難しい(もちろん、下らない業務システム下請けで作ってる底辺企業には入れるだろうが)。

経験者でも、これらができない/わからないのは、相当恥ずかしいことだと思った方がいい。

特定言語フレームワークの書き方を知っていること自体意味は無い。

重要なのは、他の言語フレームワークにも共通する基礎を理解すること・保守性やセキュリティなどの品質を高める使い方ができること。

PythonJavaScriptマスターする

この2つは習得が容易だし、今覚えておけば向こう10年腐ることはないだろう。

プログラミング言語完璧理解する必要がある。

基本的な構文や、よく使う標準ライブラリは勿論、高階関数クラス・非同期処理等の発展的な機能も知り尽くしていなければならない。

言語のみではなく、パッケージ管理単体テストタスクランナー等の周辺ツールの使い方も熟知している必要がある。

また、「リーダブルコード」や「コードコンプリート」に書いてあるような良い作法も身に付ける必要がある。


Gitの基本操作を覚える

Gitを使えないのはプログラマーとして論外。細かい機能は調べればよいが、

等の基本的フローは必ずできなければならない。


Linuxの基本操作を覚える

多くの場合、本番環境テスト環境Linuxサーバーであるから、以下のような基本的概念と使い方を知っておく必要がある。


Dockerの基本操作を覚える

環境構築、CIデプロイなどは、現在コンテナを使って行うことが当たり前になっている。

これも細かいことをすべて覚える必要はないが、Dockerfileの書き方や、docker-composeの使い方などは知っておかなければいけない。


⑤ Flaskを覚える

Flaskは、数あるWebフレームワークの中で最も簡単。本当に呆れるほど簡単で、Pythonさえ書ければすぐにアプリを作れる。

フレームワークを覚えること自体重要なのではなく、Web開発の基本を習得することが重要HTTPルーティングデータベースSQL認証セッション管理などは当然すべて覚える。

データベースは、就職したらMySQLPostgreSQLなどを使うことが多いかも知れないが、今はPythonの標準ライブラリにあるSQLite3を使えば十分。

作ったアプリを公開したければ、「Heroku」などにデプロイするのが良いだろう。

追記 2021/06/17 14:07

ブコメで指摘をいただきました。HerokuではSQLite3は使用できないようです。公式ドキュメントに従ってPostgreSQL使用して下さい。

SQLite3はファイルデータを持てる簡易DBなんだけど、Herokuデプロイしてもストレージ的な使い方はできないから、結局PostgreSQLを使う必要あるから注意してね。(DAOを丸ごと書き換える羽目になる)

参考: https://devcenter.heroku.com/ja/articles/sqlite3

ありがとうございます

Vue.jsを覚える

今の時代フロントエンドフレームワークなしで作るのはただのバカ

2021年現在実用的なフロントエンドフレームワークはReactとVueしかない。Vueの方が少し簡単なのでこちらを選んだが、JavaScriptをしっかり理解しているなら大差は無い。

フロントエンドには膨大なパッケージ群があって全部覚えるのは大変だが、とりあえずまずはVue完璧に使えればいい。Webpackの設定などは既存のものを流用すればいい。



基本的アルゴリズムを学ぶ

アルゴリズムは全てのコンピュータ技術の基礎であり、絶対に知っていなければならない。

高速フーリエ変換のような高度な数学必要ないが、クイックソート木構造のような基本的アルゴリズムは当然、その性質を知っていなければならない。

それらは言語組み込み関数や標準ライブラリでも使われており、理解していなければ、それらの機能を正しく使うことができない。

また、プログラムを読み書きする際には、そのコード計算量を見積もれなければならない。

セキュリティを学ぶ

セキュリティは言うまでもなく学ばなければならない。

有名な脆弱性攻撃手法XSSSQLインジェクション・CSRFなど)が何だか理解していて、その対策実装できなければならない。

各種暗号化技術署名などについても、実装の詳細は知らなくていいが、共通鍵暗号や公開鍵暗号などの特性理解する必要がある。

認証パスワード管理などを実装する際は、当然ベストプラクティスに従わなければならない。

2021-05-06

anond:20210506222312

電子メールは誰のものとも知れぬサーバ回線を通って送られるものから途中で盗み見られることを覚悟して使わなければいけないからという理由一択なんじゃないのか。

よりましにするには公開鍵暗号を使えって話だが、誰も公開鍵暗号の使い方まで覚える気はないかポーズだけのZIP共通鍵暗号お茶を濁していると。

2021-03-25

インターネットがあれば、学校に行かなくても勉強ができる。

周りのペースに合わせる必要もなければ、好きな分野だけを掘り下げることもできる。

最高の環境だ。そう思った。20年前は。

しかし本当に必要なのは能力ではなく、その能力を簡潔に説明できる証明の方だ。

それが確かであるということを証明できれば、実体を持たないビットコインにさえ価値が与えられる。

暗号解読を読んだか?あん通俗書に価値はないと誰もが言っていた。

だが、もし仮にあの時、公開鍵暗号価値に気付いて行動を起こしていたら今頃どうなったと思う?

結局、大半の人々は頭の良い凡人でしかなかった。常軌を逸した者だけが天才になった。

飛び抜けた結果を残したければ、他の全てを失っても挑戦するしかない。

2021-03-23

anond:20210321005812

将来的に性欲は技術的に制御することになるだろうな。

公開鍵暗号のようなもので、男女(に必ずしも限らないが)が互いに同意したときのみ性欲をオンにすることができるようになるだろう。

それ以外に解決法は無いと思う。

2021-01-09

anond:20210109163447

公開鍵暗号暗号化したメールを送って秘密鍵で開いてもらうのが良いと思う。

ZIP暗号でもいいけどパスワードSMSにするとか経路を変えないと意味はないな。

意識高いつもりのセキュリティ意味いからそういうソリューション提供してほしいわ。

2020-10-11

エンドツーエンド暗号化(通称: E2E)について解説する

[B! セキュリティ] フェイスブックの暗号化、日米英などが見直し要求へ (写真=AP) 日本経済新聞

エンドツーエンド暗号化という技術がある。

暗号とは

平文一定アルゴリズムに従って暗号から生成したノイズデータを掛け合わせ、意味が読み取れない暗号を作るのが暗号化である。逆に意味が取れない暗号から平文を求める操作復号と呼ぶ。アルゴリズムがよく知られていながら暗号鍵が無ければ復号できないものがよい暗号と言われる。一般には256bitAESでも使っておけばまずパッと見ても聞いても数学的にもほぼ乱数区別できなくなる。

ノイズデータの生成方法には色々あり、事前に送り付けた乱数表を使い使用後は破棄するもの、事前に送り付けた共通鍵や公開鍵を使うもの、都度生成するものなどがある。掛け合わせる方法も色々あり、乱数表に書いてある数字暗号文を足し合わせると平文になるもの共通鍵を暗号文に使うと平文になるもの公開鍵を使うと平文になるものなどがある。

共通鍵を平文に使うと暗号文になり、共通鍵を暗号文に使うと平文になるものを、対称暗号とか共通暗号と呼ぶ。

公開鍵を平文に使うと暗号文になり、暗号文に秘密鍵を使うと平文になるもの公開鍵暗号と呼ぶ。非対称暗号ともいう。

ノーマルモードコモンモードみたいで意味不明だが耐えろ。

共通暗号でも公開鍵暗号でも「平文が、暗号文になり、平文に戻る」というところは同じだが、

共通鍵では「平文→   鍵→暗号文→鍵   →平文」と同じ鍵を使い、

公開鍵では「平文→ 公開鍵暗号文→秘密鍵 →平文」と二種類の鍵を順に使う。

なお、この二種類の鍵は順に使えば順序はどっちでも良い。先に秘密鍵で処理して公開鍵で処理することも可能だ。とにかく2種類両方を使えば良い。

共通暗号は分かりやすい。zipパスみたいなもんだ。Wi-Fiパスワードも同じだ。だが公開鍵暗号については、二種類の鍵を順番に使うと何が良いのかと思う人も多いだろう。どうせ暗号で読めないのだからいいじゃないかと思うだろう。実は名前の通り鍵を公開しても全くノーダメージというところがメリットなのだ。書かなかったが公開鍵から秘密鍵数学的に求めることは不可能である。逆も不可能である。そして処理する順番もどっちでもいい。つまり適当暗号文と鍵の片割れを公開しておくことで、もう片割れの所有を証明できるである。これが公開鍵暗号醍醐味である

この技術HTTPS証明書に使われている。というかすべての公開鍵基盤で使われている。.pemとか.cerとかid_rsa.pubはこの片割れであり、ウェブブラウザの「証明書の検証」とは、ネットを見てる時にサーバが送ってくる「適当暗号文」として"*.hatena.ne.jp"のハッシュを知らん鍵で暗号化したものハッシュを知らん鍵で暗号化したものハッシュ暗号化したものに対して、事前にWindowsインストールした時に付いてきたHatena-Masuda Ultra Global Root CAかいったけったいな鍵の片割れを使ってみてちゃんと復号出来てるかチェックしているのである

ここまでが暗号技術のおさらいである。

暗号化通信とは

暗号化通信を行うには、暗号鍵でデータ暗号化すればいい。暗号化には共通暗号を使うのが高速で便利だ。公開鍵暗号原理的に計算量が多く低速であるしかし、どうやって共通鍵を事前に知らせればいい? 公開鍵暗号共通鍵を暗号化すれば、受け取り手自分秘密鍵で復号できるだろう。しかし、秘密鍵は本当に秘密か? 暗号文と秘密鍵が手に入れば、公開鍵暗号でも解読できてしまうのではないか? HTTPS化しているウェブサービスでも、TLSロードバランサで終端してデータセンタ内は平文だったりするのではないか? そこで鍵交換、セッション鍵生成の議論が登場する。

Diffie-Hellman-Merkle鍵交換方式

Diffie-Hellman-Merkle(Diffie-Hellman)鍵交換方式とは、ディッフィー君とヘルマン君が下宿階段をドタドタやってる時に天啓のように降ってきたと言われる、ネット上に数字のものを公開することなく、2者間で同じ1つの乱数を得る方法である

送信者と受信者の間で共通の1つの乱数を得ることができ、その乱数第三者に知られることがない。

上で何度か「公開鍵暗号秘密鍵公開鍵は、平文に対して両方使えば平文に戻り、順序は関係ない」と書いたのを覚えているだろうか。Diffie-Hellmanはこれに似た方式だ。まず、AさんとBさんは送信者がお互い本人であることを証明できるようにする(公開鍵基盤を使う)。そして、それぞれ手元で乱数AとBを生成する。次に、鍵用の乱数Aを適当乱数暗号化した鍵Aと、鍵用の乱数Bを適当乱数暗号化した鍵Bを計算し、お互いに送り付ける。この暗号Aと暗号Bは盗聴されているものとする。

Aさんの手元には乱数A、適当暗号Bがある。

Bさんの手元には乱数B、適当暗号Aがある。

AさんとBさんはそれぞれ鍵Bと鍵Aに対して暗号化を行う。すると鍵BAと鍵ABが生まれる。このとき数学的な都合により鍵BA == 鍵ABである

では、暗号A、暗号B、適当A、適当Bのみから鍵ABや乱数Aを求めることはできないのか? 可能だが式変形などで「解く」ことができず、総当たりになるため計算量が膨大になる。従って実質的にはできない。

或は、暗号A、暗号Bを掛け合わせれば、鍵ABになるのではないか? これもできない。暗号AまたはBと掛け合わせるのは生の乱数AまたはBでなければ意味がない。第三者乱数Cを作って暗号AやBと掛け合わせても、鍵ACや鍵BCになってしまい、鍵ABと一致しない。

これにより、手元で生成した乱数以外のすべての情報が公開で既知で盗聴されているにもかかわらず、2者間で秘密暗号鍵用乱数を得ることができる。

原始的Diffie-Hellman鍵交換の実際の計算は非常に簡単であり、この「暗号化」は事前に決めた別の方法で生成する既知の2つの整数X, Yと乱数A, Bに対して、

暗号A = XをA乗してYで割った余り、

暗号B = XをB乗してYで割った余り、

鍵AB = 暗号BをA乗してYで割った余り、

BA = 暗号AをB乗してYで割った余り

である

なお、くれぐれも簡単と聞いてPython 2.7とかで実装しようとしないように。算数の上手い人が作ったライブラリを使え。暗号処理の自作絶対バグらせて割られるのがオチだ。ちなみにDiffie-Hellman-Merkleの三人目のマークル氏というのは両名と何のゆかりもないので普通名前に入れないのだが、Merkle氏の先行研究が直接の元ネタなので入れるべきだと主張する派閥もある。俺はどっちでもいいと思うが折角なので入れておく。

End-to-End(E2E) 暗号化

ここでやっとE2E暗号化が登場する。上のセクションでしれっと書いたが、DH鍵交換が完了した時に送信者と受信者が得る共通乱数は、各々ローカルで都度生成する乱数を元にしている。身許保証公開鍵によるが、鍵は公開鍵に縛られないのだ。つまりSNSメールサーバその他、身許を保証する機能文章をやり取りする機能があるツールと、そのツールで間違いなく本人にDH鍵交換の暗号を送れるクライアントアプリがあれば、その経路で本人同士の間だけで共通乱数を生成し、それを「セッション鍵」として共通暗号方式による通信経路が設定できる。

この「公開鍵認証基盤で本人確認し、DH鍵交換でセッション鍵を設定し、鍵を端末に出し入れすることなく、受信側端末のメモリに入るまで暗号化を解くこともないまま、共通暗号通信する」のがいわゆる「End-to-End 暗号化である

E2E暗号化を行うと、鍵はDH鍵交換で生成され、端末の外に出ないし書き出す必要もなく、通信の中で割り出す事もできず、通信が終われば破棄してもよい。好きなだけ定期再生成してもよい。認証に使う公開鍵数学的な関係もない。一度設定してしまえば、SNS運営チャットログを出させても鍵交換した意味不明な履歴意味不明な暗号文が出てくるのみで、盗聴者をなりすまさせて鍵を再設定させても前の鍵と何も関係のない新しい鍵が出てくるだけで、意味不明な暗号文の解読の助けにはならない。ちょっと量子コンピュータめいているが、端末となりすましの両方で鍵を一致させることもできない。

ざっくり言えば送信側端末と受信側端末に残っている平文か鍵をバレる前にぶっこ抜く以外に解読方法がない。

これは盗聴関係者にとって非常に大きな問題で、米国FBIなどは盗聴能力を維持するには法規制以外に策がないと考えている。DH鍵交換のアルゴリズムは上に書いた剰余以外にも楕円曲線を用いた数学的に更に複雑なものもあり、ソースネットいくらでも転がっているし、電子計算機アルゴリズムの常でやたら強力な癖に計算量的には全然負担にならない。NSAなどは数学者を揃えて最高のアルゴリズム提供する振りをして、規格書で事前に決めた一定数学的特徴を備えているべき定数に備えていないもの指定するとか、実装ミスが出やす関数を選ぶなど小細工を入れているが俺は二次関数分からんので詳しいことは知らん。しばしば政府陰謀にキレた若いITキッズが小細工を抜いて差し替えた再実装を公開したりして揉めている。

実際にSNSなどでE2E暗号化実装する上での問題点は、本人確認機種変マルチデバイス嫌がらせ対応がある。まず本人確認コケればMITMは可能だ。E2Eでは鍵を外に出さないのがメリットなので複数端末ログインができず(鍵が変わって別端末で書いたメッセージは解読できなくなる)、運営で常時メッセージ監視できない(したら意味がない)ので嫌がらせ対応が多少困難になる。またMITBというか、改造偽アプリで抜かれる可能性は、まあ、ある。

まとめ

  • 平文を鍵で暗号化するのが暗号である
  • DH鍵交換では、信頼されない通信路を使って2者間で鍵を生成できる。
  • E2E暗号化では、端末上で鍵を都度生成し、その端末以外での復号を防げる。

終わりに

時間もかけてこの程度かもうちょっと短く書けるだろボケ🍆と思ったので投稿する。

2020-08-04

とくに暗号化されているというふうには認識Kしていなくて、ちょっとむずかしい書き方や表現をしているか

ぼくも似たような表現メールしたよっていわれると

おまえのあたまのなかではそうなんだろうなぁっていう

実際に暗算でとけるのを証明してもらうのは簡単証明できる以上

おまえのあたまのなかではそうなんだろうなぁっていう

ってなるっていわれると

とりあえず

映画の中ではそうですねっていう(映画サマーウォーズより)

 

ぼくの感想『512Bitなり1024Bitなりの公開鍵暗号筆算でとかないで』

それね暗号化をとくゲームじゃないから。ふつう彼女デートして

SSL署名とか気にしなくていいから、メールは多分安全から大丈夫

ごく一部の人筆算でといているだけだお?

2020-06-09

公開鍵暗号方式理解するのってなかなか難しい

anond:20200608212713

エントリーの人がどこまで理解しているか不明だけど、自分初心者だったときこういう説明がほしかったという話をしてみる。

暗号方式特に公開鍵暗号理解が難しいのはいくつか理由がある。

物理的なものに例えられない

②素朴な利用例が少なく応用的な利用がいくつもある

③実際の利用例はアプリの一機能になっていて見えづらい

また、ざっくりした概念以上のものをきちんと理解しようと思うと

④何がどのくらい安全で何がどのくらい危険セキュリティ的な概念説明

数学的な仕組みの説明

必要になり、これがまた挫折の原因になる。


ここでは自分的にこういう順番で概念を把握していったという流れを書いてみる。

利用者から見た公開鍵暗号の特徴

まず、物理的な錠前や書留郵便イメージするのはあきらめてほしい。

あくまでもデジタルデータを別のデジタルデータに変換して再び元に戻すためのものだ。

公開鍵暗号登場以前は、パスワードを使って変換(暗号化)して、同じパスワードを使って元に戻す(復号化)という共通鍵暗号時代が長く続いた。

そこに、ひとつの大発明があった。

それが暗号化のパスワードと復号化のパスワードで異なるものを使うという技術だ。

特殊数学アルゴリズムパスワードから、それと対になるパスワード2を生成する

パスワードからパスワード1を逆算することは困難

パスワード1で暗号化したものパスワード2で復号できるだけでなく、その逆つまりパスワード2で暗号化したものパスワード1で復号できる(※)

今はその数学アルゴリズムまで理解する必要はない。ただそういうことが可能になったというだけでいい。

パスワード1(秘密鍵)を自分以外が見られないように保管して、パスワード2(公開鍵)を通信相手に渡せば暗号通信ができそうということは理解できると思う。

ちなみにこのパスワードの長さは、プログラムで生成した100桁以上の数字が使われることが多く、それを定型的な千文字程度のテキストにして使われるのが一般的

ツールで生成すると千文字程度のテキストファイル秘密鍵用と公開鍵用の2個できる。

これだけの桁数なので暗号化復号化の計算はそれなりに時間がかかる。(※)

(※) このあたりは一般的公開鍵暗号というよりRSA公開鍵暗号特有の話も混ざってます。詳しくは専門書参照


応用的な利用

次にこの発明を使ったらどういうことができるだろうか、応用できる先を考えてみよう。

(a)秘密鍵暗号化した文書を送るね。公開鍵は〇○○だよ

誰でも最初に思いつく例だけどシンプルすぎて共通鍵と変わらなくありがたみがない。

(b)僕にメッセージを送るときは僕の公開鍵暗号化してね(いわゆる公開鍵暗号

これだと「僕」以外は秘密鍵がなく復号できないので安全

メッセージ送信先を間違って別人に送ってしまっても他人は読めないし、経路のどこかで盗み見や内容の一部を改竄されたりすることがない。

メッセージに返信するときは今度は「僕」ではなく相手公開鍵を使って暗号化する。

(c)本文を毎回全部暗号化すると時間がかかるから共通鍵を君の公開鍵暗号化したものを送るね。それを君の秘密鍵で復号したら以降は高速な共通鍵暗号通信しよう(鍵交換)

共通鍵暗号の高速性というメリットを利用できて、かつ生の共通鍵がネット流れるリスク排除した良いとこ取りの方式

(d)暗号化しない本文と、本文から計算したハッシュ値秘密鍵暗号化したものを送るね。公開鍵で復号化したハッシュ値がそっちで計算したハッシュ値と同じなら本文は改竄されてないよ。

それからこの暗号化は僕しかできないから確かにから送られた文書、僕から送られた内容である保証できるよ。(電子署名

この「電子署名」の実現により、さらに次のような応用が可能になる。

(e)ログイン時に毎回パスワードを打つと見られたりして危険からユーザ名等に署名したものを送るね。公開鍵で復号(検証OKならログインさせて(公開鍵認証

(f)僕は信頼できるよ。これがAさんの署名入りのお墨付き検証してみて。

Aさんは信頼できるよ。これがBさんの署名入りのお墨付き検証してみて。

Bさんは信頼できるよ。これが世界一信頼できる人の署名入りのお墨付き検証してみて。

サーバ証明書

アプリの一機能としての見え方

前項のようなやりとりはほとんどアプリ自動的にやってくれるので、コンピュータ技術者以外の人が公開鍵秘密鍵を直接扱う機会は現状ほとんどないと思う。

ウェブブラウザアドレス欄に鍵マークが表示されていたらそれは鍵交換やサーバ証明書技術が使われていて、鍵マーク右クリックすると証明書を表示できる。

メールアプリでも最近自動的に鍵交換やサーバ証明書が使われている。

もしメールアプリPGPの設定オプションがあればそこで公開鍵秘密鍵を設定すると特定相手と本格的な暗号メールがやり取り可能になる。

サーバ操作するコンピュータ技術者だと公開鍵認証もよく使われていて、ツールで生成した公開鍵サーバ登録してログインに利用してる。

2020-06-08

anond:20200608212713

暗号方式アルゴリズムを知りたい?

暗号方式動作を知りたい?

後者であれば、メールソフト暗号化で試せば、おおよその動きは分かると思う。

たぶん、フリーソフトで着いてくる暗号化は、ほぼ公開鍵暗号方式

とりあえず公開鍵が分かれば秘密鍵もわかる筈。

2019-04-24

公開鍵暗号マウントを取るくせに「回復逮捕」は知らない人達

そして他人馬鹿と呼びながら陰謀論を吹聴する。

醜いってレベルじゃないな。

典型的な「自分が詳しい分野は常識だと思い込み自分が詳しくない分野は常識であっても知らなくて当然の知識だと思い込み、そして前者の情報には莫大な価値があり、後者情報は知らなくても人生で何も困らないからどうでもいい、なんてことを平気で言い張るタイプ非常識極まる自分が賢いと思っているけど実際は単に自分がソレで飯食ってる分野の経験を積んだだけでソレ以外の事については何も知らないだけのちょっとオツムが残念な技術屋(?)さん」じゃないですかー。

救えないよー。

全くもって救えないよー。

算数問題が解けないのにポケモン沢山知ってるから俺はカーチャンより頭いーぞと言い張る小学生と同じレベルだよー。

その事に自覚がないのが駄目だよー。

2019-04-03

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

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

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

2018-08-07

anond:20180807220349

そなたは素数自然界の法則ではないと申すのか?

素数 - Wikipedia

長い間、数論、その中でもとりわけ素数に関する研究は、その分野以外での応用の全くない純粋数学の見本と見なされていた。

特にイギリスの数論研究であるハーディは、自身研究軍事的に何の重要性も持たないことを誇っていた。

しかし、この見方1970年代には覆されてしまった。素数公開鍵暗号アルゴリズム使用できると広く知られるようになったためである

現在では素数ハッシュテーブル擬似乱数生成にも用いられ、工学的応用上重要度の高いものとなっている。


なんで数学自然界の法則に含んでくれないの(´;ω;`)ウッ

2016-10-17

How the Textsecure Protocol (Signal, WhatsApp, Facebook, Allo) Works

http://www.alexkyte.me/2016/10/how-textsecure-protocol-signal-whatsapp.html これエキサイト翻訳か?主語が全部theyという支離滅裂英語なんだが。

----

TextSecureの目標は「経路末端までのセキュリティ否認性、前方秘匿性、将来の秘匿性のすべて」を提供することである。具体的には、可能な限り短い時間だけ鍵情報を保持するメッセージストリームを二者の間に構築するということを目指す。将来に鍵の危殆化があっても、現在観測されたトラフィックを復号化できなくするのだ。

以下にSignal Protocolの批評分析を羅列してある。実装構造研究し、発見した欠陥を記述し、上述の目標がどれほど実現されているか評価するものである。まず仕組みの説明をしてから、より詳細な分析を続けることにする。

用語

TextSecureは、今ではSignalと呼ばれているアプリに与えられた名の一つだ。コード文書も一貫してTextSecureという名を使っている。一貫性を保つため、システム全体をTextSecureと呼ぶことにする。

ただ実際には数々の異なるものが含まれている:

構造

TextSecureは、非同期整合性に焦点を当ててOff-The-Recordというチャットプロトコルを改造したものだ。OTRが対話ハンドシェイク必要とする一方、TextSecureは不確定な遅延を認めない。メッセージを送れるようになるまでアプリを表示したままにしてハンドシェイク遂行しなければならないというのであれば、ユーザ体験はひどいことになる。

そうではなく、通常の鍵交換においてサーバが果たす役割の部分だけ、将来のクライアントが取得しに来るよう中央サーバに格納される。このサーバは、すべてを復号化できる鍵情報は預けておかない、信用なし経路となる。すべての暗号化は末端どうしだ。

暗号

TextSecureは暗号学の基礎のほんの一部を使うものである公開鍵暗号は楕円Diffie-Hellmanを通し、Curve25519を用いて実行される。AESがパディングなしカウンター(CTR)モードサイファーブロックチェーン(CBC)モードの双方で対称暗号に使われる。HMAC-SHA256がメッセージ認証に使われる。これらが信頼の基礎(TCB)である

ダブルラチェット:

TextSecureの暗号化エンジン中心部はAxolotlダブルラチェットアルゴリズムである。大まかに言うと、一方向にだけ回ることのできるラチェットが二つあり、一つは受信ラチェット、もう一つは送信ラチェットである。この構造により、鍵交換の前半を保管しておいて、後から非同期的に再生し完全なハンドシェイクを得ることが可能になっている。

受信ラチェットメッセージが受信されるときに使われるが、そこには次の鍵交換のための新しい材料が含まれていなければならない。この材料が後ほど暗号化メッセージ認証に使う対称鍵の生成に用いられる。

送信ハッシュラチェットは前回の整合性ある共有秘密から生成された鍵ストリームを使って新たな鍵セットを生成する。このラチェットは、受信ラチェットが進んで共有秘密が変化するとリセットされる。

ここで注目すべきは、メッセージ送信するために送信者が待つ必要は一切ないということだ。いつでも送信第一歩を踏み出すことができ、その一歩は必ず有限の時間で終わる。メッセージはすべて異なる対称鍵で暗号化されるが、これにより、ある時点の鍵は、どちら側のデバイスのものであっても、過去送信されたメッセージを復号化するためには使えないことになる。(ただし後で一つ警告がある。)

プロトコル

フェーズ1: TextSecure登録

登録は、クライアントに言って、連絡用の電話番号サーバに教えてもらうことから始まる。また同時に、トークン通話SMSどちらで受け取りたいか希望登録してもらう。このトークンが持ち主の証明となり、TextSecureで情報登録できるようにしてくれる。

クライアントメッセージ認証暗号化の対称鍵('signaling'鍵)、および長期公開鍵を送る。

また、複数のプレ鍵も送信する。これはクライアントが受信者になる時の鍵交換の半分、クライアント側部分の使い捨てコピーである。こうして保管されているプレ鍵のおかげで、将来の送信者はクライアントの応答を待つ必要もなく鍵交換を完了でき、こうして遅延を劇的に減らすことができる。クライアントは「最後の手段のプレ鍵」もアップロードするが、これは最後に使われ、受信者が新しいプレ鍵を追加するまでのセッションでずっと共有され続ける。

他のクライアントからも使われるプレ鍵に頼ることについてSignalが警告をしないというのは、筆者の意見では、理想と程遠い。

クライアントは次にGoogle Cloud Messagingに登録して、登録IDをTextSecureに出す。このTextSecureへの登録には、クライアントSMSを受け取りたいかデータだけにしたいか情報も含まれる。

フェーズ2: 鍵の比較

TextSecureはクライアントどうしがお互いの長期鍵のフィンガープリント比較して本人確認できるようになっている。鍵をQRコードとして表示して便利に検証できるようにする機能も含まれている。

フェーズ3.1: 最初メッセージ送信

送信者は、まず相手のプレ鍵を要求し、プレ鍵インデックス、プレ鍵、登録ID、長期公開鍵をもらう。これらを使い、HKDFという鍵派生アルゴリズムを通して共有秘密を取り決める。この秘密情報ルート鍵と呼ぶ。

このメッセージだけの一時鍵ペアが生成される。ルート鍵を使ってHKDFで新しいルート鍵とつなぎ鍵を派生させる。このつなぎ鍵は、暗号化MACの鍵を生成するのに使われる。

最後AESカウンター初期化される。カウンターは二つある: ctrとpctrだ。ctrカウンターメッセージ送信ごとに増える一方で、pctrカウンターは、最後既読メッセージの番号を保持する。これにより、受信者側にバラバラの順番で届いたメッセージを正しく並べ直すことができる。

これらを使って相手メッセージ暗号化し、それをSignalサーバに送る。このメッセージには、相手が鍵交換ハンドシェイク完了できるだけの必要情報が含められている。

SignalサーバGoogle Cloud Messenger登録IDが件の電話番号に合っているかチェックし、メッセージを'signaling'鍵で暗号化してからクラウドサーバに送る。この遠回しな方法により、Google Cloud Messengerがメッセージ送信元を知らずにいることが保障される。

フェーズ3.2: メッセージ受信

信者はプレ鍵インデックスを受け取り、送信者がどのプレ鍵を使ったかをそれで調べる。そして送られてきた情報を使ってハンドシェイク完了したり送信者と同じルート鍵を持ったりする。送られてきたメッセージを復号化するために使う鍵は、このルート鍵が生成する。

フェーズ4: 追伸メッセージ送信

相手が返信する前に、もとの送信から続きのメッセージを送りたい場合は、新しいつなぎ鍵を生成して、これを使って新しい暗号化およびメッセージ認証の鍵を得る。

フェーズ5: 返信の送信

信者が返事を出したい時は、まず新しい一時鍵ペアを選ぶ。送信者の一時公開鍵自分の一時秘密鍵を使って、新しい共有秘密を生成する。これを使って新しいつなぎ鍵を得て、そこから新しい暗号化認証の鍵を得る。これを使ってメッセージ暗号化し、さきほどの新しい一時公開鍵と一緒に送信する。

既知の問題

鍵の提出

TextSecureは、サーバクライアント間の共有秘密、いわば機械生成パスワードを使って、新しいプレ鍵のアップロード認証する。これは送信メッセージ認証にも使われる。このパスワードを漏らしてしまうと、それだけでメッセージ送信も鍵アップもそのユーザなりすましてできてしまうことになる。エキスポート機能があった頃はTextSecureクライアントを別のスマホに移行することができたが、この機能は削除された。エキスポート情報には機械生成パスワードが含まれていたからだ。この平文バックアップデバイスSDカードに置かれていたので、他のアプリから読むことができたのだ。

この機能はそれ以来削除されたままだ。なくて困る人がいるとしても、これはユーザビリティ問題ではなく、現実問題であり、それに対する後ろ向きな対策なのである

未知の鍵共有 (UKS) 攻撃

この攻撃は偽配送一種だ。攻撃者がUKS攻撃を実行すると、ある送信者が攻撃者に向けて送ったつもりのメッセージが、攻撃から別の人(標的)へのメッセージとして送信される。

これは能力のある攻撃者にとっては簡単にできる。TextSecureサーバ上にある自分公開鍵を、標的の公開鍵に変えればいい。これは自分電話番号を再登録すればできる。送信者はQRコードを使って、相手フィンガープリントが合っていることを検証できるが、これが本当に標的の鍵のフィンガープリントになるのである

それから、今度は送信者のアカウントを再登録して、その検証SMS確認通話送信者に到達しないよう横取りしなければならない。これは太っ腹に権限を与えられた人には造作もないことだ。こうして、送信者として認証し、既知の署名つきメッセージ送信できるようになる。

この攻撃はTextSecureでは解決されていない。プレ鍵の署名は追加したが、まだ暗号学的にIDと関連付けられているわけではないので、奪われて再生される危険がある。

できることがあるとすれば、送信者と受信者の双方がメッセージ暗号化された本文内で言及されるようにすることなどだ。

目標達成率

TextSecureはその構造のおかげで前方秘匿性を獲得している。前方秘匿性(forward secrecy)は、もし長期公開鍵安全なままであれば、ある時点の対称鍵が漏れても、そのセキュリティ突破限定的時間範囲しか有効でないとする。新しいラチェットのそれぞれに公開鍵必要であることから、これは達成されている。

完全前方秘匿性(perfect forward secrecy)は、クライアントの持つある時点の鍵が奪取されても、それ以前に送信したメッセージの復号化が不可能である性質定義されている。このことはTextSecureのwire protocolにより施行されるが、少々ことば遊びに入ってくる。というのも鍵はデバイスにのみ格納されているので、アプリ上の他の鍵にアクセスすることなく鍵が暴露されることはありそうにない。長期鍵だけではメッセージを復号化できず、ラチェットステート対応する一時鍵が必要になるが、これはそのスマホから引き出すことができるので、送信したものの返信されていない(前回のラチェット使用した)メッセージを復号化できる。これは技術的に言えば「以前の」メッセージ暴露である

否認性(アリバイ)はさらあやふやだ。ある特定メッセージについて、それはだれにでも作成できたのだと言うことは可能だが、その一方で、プレ鍵は公開されているので、TextSecureの中央集中構造が脅威をもたらす。TextSecureサーバ認証メッセージ転送をするものだが、それを記録することもできる。内容は末端どうしで暗号化されているとはいえ、メタデータは違う。

Sources

Analysis Whitepaper:

http://ieeexplore.ieee.org/document/7467371/

Marlinspike, Moxie (30 March 2016). "Signal on the outside, Signal on the inside". Open Whisper Systems. Retrieved 31 March 2016. https://whispersystems.org/blog/signal-inside-and-out/

Posted by Alexander Kyte at 11:47 PM

2015-10-15

LINE Engineers' Blog掲載された記事を読み解こうとして力尽きた

http://developers.linecorp.com/blog/ja/?p=3591

Letter Sealing って何でしょうか。私気になります

必要範囲で、原文を引用しています。原文は先に引用元アドレスと閲覧日時を記し、引用記法によって地の文識別できるようにしています

長すぎ;読まない

ECDHAES256-CBC 使ってみた。通信相手の認証については読み取れない。

暗号通信の流れ

図2 において、 Server のところで Re-Encryption (一度復号されて、再度暗号化されている) ことが明示されています

この図を素直に読むと、送信者からサーバーまでの通信路は暗号化されているものLINEサーバーが受信したところで復号されて平文で保存され、サーバーから信者までの通信路は暗号化されていると理解できます文脈から、この流れを変えたいのであると推測できます

SSL公開鍵暗号

http://developers.linecorp.com/blog/ja/?p=3591 より引用2015年10月14日 22時40分に閲覧:

加えて、LINEでは、仮に通信ネットワークの傍受が行われたとしてもメッセージを覗くことができないように、公開鍵暗号(public key encryption)方式を使っていますユーザーに対してLINEアプリ提供する際、暗号化ができる公開鍵のみをアプリに入れて提供し、ユーザー端末とサーバ接続されたときだけLINEサーバでのみ解析できる暗号化された安全チャネルを作ります。こうすることで、SSL(Secure Socket Layer)より軽く、LINEの全バージョンで使用できる安全暗号化を実現できます

SSL はすでに時代遅れの代物で、 2015年現在は皆さん TLS を利用されていることでしょう。 Web ブラウザSSL 2.0SSL 3.0 を有効にしているそこのあなた、今すぐ無効しましょう。

TLS では、公開鍵暗号方式共通鍵暗号方式電子証明書暗号学的ハッシュ関数といった複数暗号技術要素を組み合わせて安全通信路を確保しています

RSA代表される公開鍵暗号方式一般的AES代表される共通鍵暗号方式と比べて計算量が大きい、つまり重たい処理となります

このため TLS では、通信路を流れるデータ暗号化に共通鍵暗号を用いて、共通鍵の共有や相手の認証のために公開鍵暗号方式を用いるのが一般的です。

仮にメッセージ暗号化に RSA を用いているとしたら、 SSL より軽いという点をどのように実装しているのか気になります

http://developers.linecorp.com/blog/ja/?p=3591 より引用2015年10月14日 22時40分に閲覧:

ユーザー側のLINEアプリ(クライアント)には、サーバが発行したRSA鍵を使用してデータ暗号化に使う暗号化鍵値を共有します。この鍵を利用してデータ暗号化すると、第三者メッセージを見ることができなくなります

これは上で説明したとおり SSLTLS でも行っていることです。

RSA を用いているので安全であるという主張をしていますが、メッセージ暗号化に用いられている暗号スイートアルゴリズムの種類、鍵の長さ、ブロック暗号場合暗号利用モード、そしてハッシュアルゴリズムの種類)は、その通信路が安全である判断できるか否かを決める大切な情報です。

http://developers.linecorp.com/blog/ja/?p=3591 より引用2015年10月14日 22時40分に閲覧:

既存RSA方式秘密データの共有に使う安全方式ではありますが、鍵管理の面から見ると、ユーザー側の端末でそれぞれのRSA鍵をすべて管理しなければならないという問題があり、その代替手段としてDHを使用するようになりました。

DH および ECDH による共通鍵暗号に用いる鍵の交換は SSLTLS でも実装されており近年では広く使われていますSSL より軽いと主張し、 SSLTLS公開鍵暗号方式以外の要素によって担保している安全性をどのように確保しているか不明実装に比べると、大きな改善です。

なお SSLTLS においては通信相手の公開鍵を全て管理する必要がないように、上で説明した電子証明書による公開鍵基盤 (PKI) の仕組みを利用しています

まり共通鍵暗号に用いる鍵の交換にどのような手段を用いるかは、鍵管理とは(ほぼ)独立です。

共通鍵暗号暗号利用モード

http://developers.linecorp.com/blog/ja/?p=3591 より引用2015年10月14日 22時40分に閲覧:

ここでメッセージ暗号化に使用している暗号アルゴリズムAES-CBC-256という方式で、現在一般に使われている暗号アルゴリズムの中で最も強度が高いと評価されています

メッセージ認証と組み合わせない CBCビット反転攻撃に弱いことが知られていますGCM ではデータ暗号化と認証を同時に行うためビット反転攻撃に耐性がありますAESGCM で利用するのは、 最近TLS実装では広く用いられており、 Googletwitter も利用しています

CBCCBC-MAC のようにメッセージ認証と組み合わせることでビット反転攻撃に強くなります

解決されない鍵管理問題

図6 のとおり、 ECDH共通鍵暗号に用いる鍵の交換を行うにしても通信相手の公開鍵必要です。 上で説明したとおり鍵管理という問題への解決策になりません。また公開鍵が本当に通信相手のものであることをどのように検証するのかについても不明です。通信相手の検証は、送信側では秘密の話を他の人に知られないように、受信側では他の人になりすまされないように、双方にて必要です。

ここから安易パターン想像ですが、通信相手の公開鍵情報LINE ユーザー情報の一部として LINE サーバー管理されており、必要に応じて安全通信路を用いて LINE サーバーから取得するようなものではないかと思います公開鍵情報のやりとりに用いられる通信路に正しく実装された TLS が用いられていて、サーバークライアントの両方が認証されていて、現在の水準から見て妥当レベル暗号スイートが用いられていることを願うばかりです。

公開鍵秘密鍵がどこでどのように保管されているのか気になります。各端末で保管するのが安全ですが、サービス要求として端末を乗り換えてもメッセージが読めるという条件を安易に満たすために秘密鍵LINE サーバーに預託していないことを祈るばかりです。

ECDH 鍵の生成は計算量が大きい処理であり質の良い乱数必要します。 PC に比べると非力なスマートフォンで生成した鍵の質をどのように担保しているのか気になります

2015年10月17日 10時16分追記

先ほど閲覧したところ、上記引用箇所の多くは削除されていました。公開鍵が本当に通信相手のものであることをどのように検証するのかについては明らかではないようです。 LINE サーバーが介在する形であれば、鍵をすり替えることで別のユーザーになりすますことが可能でしょう。または、 LINE アプリに何か細工をする方がより簡単でしょう。

ECDH 鍵はその場限り (ephemeral) という説明がないので Perfect Forward Secrecy ではないと考えられ、望ましくないという意見もあるようです。 LINE サーバーとの間に安全通信路を確立する目的で ECDH 鍵を用いる場合LINE サーバーが用いる秘密鍵漏洩は全てのユーザーに影響を与えうるため PFS は非常に重要です (TLS を用いた Web サーバーでも同様です) 。一方ユーザー間でメッセージ暗号化する場合ユーザー所有の ECDH 鍵についてはそのユーザーに影響が限定されます通信相手ごとに必要なその場限りの鍵生成とユーザー所有の ECDH 鍵を利用した鍵交換にかかる計算量と ECDH漏洩リスクを天秤にかけて PFS を採用しないという判断かもしれません。

通信の秘密という観点ではメッセージの内容だけではなく誰と通信たか (または、していないか) という情報も守りたくなります。宛先を LINE サーバー確認できない形に暗号化されるとメッセージの配送ができなくなるため、通信相手や通信の有無については秘密ではないと考えられます

2013-05-30

まねして本の紹介 その4(とりあえずラスト

http://anond.hatelabo.jp/20130530181122 からの続き。本の紹介。とりあえずこれで一区切り。書くのは時間がかかるけれど、得るものもあった。

このエントリでは以下の二冊を紹介します。

加えて、今までに本を紹介したURLを列挙しておきます

あなたに似た人

チャーリーとチョコレート工場」で知られるロアルド・ダールさんの短編集。翻訳田村隆一さん。

http://anond.hatelabo.jp/20130530181122 で紹介した「心の鏡」と同じく短編集なので、印象に残ったものだけ。

「味」「南から来た男」「毒」「お願い」が記憶に残っている。全体に人間の気味の悪い部分を誇張して書いた短編集なので、予めそう知った上で読んでも良いかな。

暗号解読

著者はサイモン・シンさん。翻訳青木薫さん。この著者の紹介は三作品目。「暗号」をテーマにしたノンフィクションだ。ただ、暗号と言ってもいくつか種類があったり、本来は暗号ではなかったもの暗号のようになってしまったものも取り上げられている。

暗号は仕組みが難しい。理解するのに時間がかかる。最初のほうは簡単だけれど、だんだんと複雑・巧妙になっていく。というのも、情報秘密にしたままやり取りするのが目的で、いったん解かれてしまうと自分の生存や国家の存亡にかかわることになるから暗号解読者は暗号を解読しようとあらゆる手段を講じるし、そしてそれを防ぐために自然と複雑なものになっていく。

翻訳者青木薫さんは、あとがきドイツ軍第二次世界大戦の時に使用した暗号機械エニグマ」の仕組みを説明した箇所のわかりやすさを絶賛しておられた。自分には、本質的な複雑さがあるので、深く理解することをあきめてしまった。(この本は手元にあるので、読もうと思えばいつでも読めるというのもあるんだけれど)

で、そんな状態でもこの本は楽しめるのだ。エニグマは単にこの本の中でいくつも紹介される暗号の一つにすぎない。

ほかにも、公開鍵暗号はもちろん(そしてそれを事前に発見していた英国人のトリオ)、第二次世界大戦米軍採用した「ナバホ・コードトーカー」の活躍古代文明の文字を解析する話、財宝が埋まっていると噂されるビール暗号、などなど――。いくつものトピックがある。

一番印象に残っているのは英国人のあの人だ。先に発表された三人が訪れたときの受け答えが格好良いね。まさにイギリス紳士といった受け答え。もう一人挙げるとすれば、「神は愚か者に報いたまう」の節のヘルマンさん。このガッツにはおそれいった。

あれば読みたいなあと思っている本

最後に、こんな本があったら読んでみたいなあ、というものを2つ記して終わりにします。良い本を知っている人がいれば教えてほしいです。

英語ではたくさんあるみたいだけれど、日本語でこなれた感じのを知る人がいたらぜひ。

たぶん無い。もしそういうものがあればということで。

2013-01-11

http://anond.hatelabo.jp/20130111014156

わかるよ。しんどいよね。

自分の周囲にいる人たちが重要視するような物事に意義を感じない

でも、そんな自分であることを知られて軽蔑されるのは怖い

かといって、一人ぼっちでいるのは寂しい

人付き合いって面倒くさい。

じゃあ誰にも会わなきゃいいって?そんなの寂しいじゃん。

から好かれるように、軽蔑されないように自分を磨けって?やだよ面倒くさい。

自分でもわがままだって分かってるよ。

人の話は聞きたいのに、人から自分の話を聞かれるのはイヤなんだもん。

一方的に話しまくる奴?そういう奴の話ってたいてい面白くないじゃん。

話を聞きたいって言ったけど、ただし話が面白いやつ限定ね。俺基準で。

...っていう自分自身を客観的に見たら、劣等感を感じちゃうよね。

つらいよね。苦しいよね。もっと楽になれないものかな。

何か良いアイデアがないかブコメから探してみよう。

b:id:bloominfeeling

すべての話を楽しむ必要はないと思う。楽しい話も興味のない話もある。自分楽しい話をできる人たちを大切にするのがいいのでは。あと最初にずぎゅーん来なくても好きになることはあると思う。

話してて楽しい人はもちろん大切にしてるよ。でも、そもそも友達が少ない。

気の合う仲間って、どうやったら増えるんだろう。面倒くさいのはイヤだなあ。

b:id:dagama

生への執着を捨てて刹那的に生きてみるといいと思う

別に死にたいわけじゃないです。

b:id:vid

擬態するのを止めれば楽になるよ! ぼっちが平気ならそっちの方がよっぽどか楽だよ!

ぼっちはイヤです。軽蔑されるのはもっとイヤです。

b:id:gdno

もっと浮いてる人と会えるとこに行ってみるとか。ベンチャー社長とか。

そういう人って、自分がやりたいことを突き詰めてる人でしょ。余計に軽蔑されそう。

b:id:ysync

趣味女性への興味がなくとも、暇で暇で仕方ないというわけでもなさそうだし、別にいいんじゃね?

うん。自分では別にいいと思うんだけど、やっぱり人の目も気になる。

b:id:era1978

自分は他人に興味無いけど、他人には自分に興味持ってほしいんだよね。わかるよ

あー、そうなのかも。

b:id:u_eichi

そのうちに、そういう悩みもどうでもよくなるよ。放っといても暮らしを続けていれば自分の御し方も身についてくる。歳をとることは、そういう意味ではすばらしい。そのときまでになにか悦びが見つかるといいね

うーん。時間が解決するのかもしれないけど、いま苦しいのは何とかならないかな。

b:id:nochiu74

情報工学オタクとだけ深く付き合うのはどうでしょう大学でしたらコンピュータサークルとかあるでしょうし。もしくはネットベンチャーみたいな所でバイトとか。興味ない話しをふられたら、ノッテるフリだけしとく。

これは元増田環境次第だね。

b:id:skgctom

本当は「どうでもいい」んじゃなくて「僕の人生に干渉するのはやめてくれ」と言いたいけど、言えずに疲れてしまっただけじゃないか。法と倫理に触れなきゃどんな生き方も自由だよ。正解の人生なんかない。

うそう。

b:id:kazsoga

泣けば良いんじゃないかなあと思いました。また、一度発散すると良い気がします。お酒の力を借りたって良いかなと。

「いやだから、泣かせてくれる相手が居ないんだって」と思うかもしれないけど、誰も見てないところで思いっきり泣くだけでも、けっこうスッキリするもんだよ。傍目にはみじめに見えるかもしれないけど、誰も見てないんだからいいんだよ。

b:id:moronbee

"客観視点に基づくアドバイス"←すべて「その人から見た主観」なので気にすることはない。興味がないことはしない方がいいですよ。

その通り。

b:id:bayassie

よくわかる。自分も似た気持ちだった/人に理解されるのを放棄して、人とは通じ合える話だけで通じ合えばいい(自分の好きなことは自分が好きであればそれでいい)と割りきって考えると心は少し楽になる、と思う

ブコメの中では一番良さそうなアドバイスかな。

他に、俺からアドバイスとしては

やりたいコトだけやればいいし、話したいコトだけ話せばいい

もしそれだけじゃ満足できなくて、誰かから認められたいなら、自分で一番自信のある分野で自分よりレベルの低い人が集まる場に参加してみよう

そういう場を探すのが面倒だったり参加するのが怖かったりしても、いずれ就職とか何かのキッカケで、新しい集団に参加するタイミングがあるはず

そんなに我慢できない。もっと安全赤の他人に思いの丈をぶちまけて、その上でありのまま自分を認めて欲しい。

もしそこまで思いつめてるなら、俺が話を聞くよ。

元増田に限らず、このエントリ最後まで読んでくれた人なら誰でも歓迎する。

このエントリトラックバックで意思表明してくれたら、エントリを使って連絡方法を交換しよう。

情報工学勉強している元増田なら、公開鍵暗号原理は理解できると思う。

2010-01-03

http://anond.hatelabo.jp/20100103182755

金融系は例外だね。もともと4桁の数字だけで成り立っている暗証番号に基づくシステムだし、『ネットよりも以前』からあるシステムだからな。

ネット以後のシステムや、ネットを中心としたサービスとは比べられない。

ただし、最近は、公開鍵暗号を使ったワンタイムパスワードに移行しているところが多いよ。あとは暗号表。

ただ、銀行システムから、Webシステム転職してそのノリでパスワードを平文という重役は老害

なにより、銀行システムサーバーWebシステムサーバー物理的な設置場所を含める硬さの違いに気がつけと。

大手町にある、どんだけ厳重なんだ?っていうサーバー管理システムと、そこいらの、隣のラックこじ開けようと思えばこじ開けられるんじゃね?っていう普通DC物理的に差があるって知らないからできる。

サーバーの設置場所くらい視察しろと

あと、プルートフォースアタックができないから、銀行系は。パスワードも2つだし。

監視カメラで客を見張るならWeb系でも平文でいいのかも。という話もある。銀行パスワード以外のセキュリティがカネがかかってる。という話。

ATMで金下ろすときにはカメラで撮影されてるしな、隠しカメラも沢山あるしな。

2007-01-19

Re:Re:?

http://anond.hatelabo.jp/20070119214005

http://e-words.jp/w/E585ACE9968BE98DB5E69A97E58FB7.html

ん?こういう感じで、いいんじゃないの?

面倒だからここに追記。

http://e-words.jp/w/E585ACE9968BE98DB5E69A97E58FB7.html

公開鍵暗号(Public Key Cryptosystem)

片方は他人に広く公開するため公開鍵と呼ばれ、もう片方は本人だけがわかるように厳重に管理されるため秘密鍵と呼ばれる。秘密鍵暗号化されたデータは対応する公開鍵でしか復号できず、公開鍵で暗号化されたデータは対応する秘密鍵でしか復号できない。

これはe-wordsが間違ってる。

一般に公開鍵暗号系の秘密鍵暗号化することは出来ない。実装されているようなものでは、ElGamal暗号やCramer-Shoup暗号なんかがそう。

電子署名のこと言ってない?

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