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

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

2026-04-15

公開鍵暗号量子コンピュータで解読されれば暗号通貨とか

電子署名とか

ネットSSLとか

全部こわれるわけだろ

共通鍵暗号まり固定された特定2者間通信以外は全部アウト

公開鍵暗号量子コンピュータで解読されそうな雰囲気だけど

共通通信や専用回線以外のところは解読や改ざんデフォなって昔の2chみたいな無法状態

そして皆がそのうち嫌になってインターネットから距離を取る、と

anond:20201011172549

公開鍵暗号って本当に安全が保たれてるのかね

見直し要求ニュースにしても安全だと「思わせたくて」やってるようにみえ

2025-08-29

anond:20250829133839

量子コンピュータで解けるようになるのは公開鍵暗号であって、AESのような共通鍵暗号量子コンピュータでも難しいって話だと思ってたが

2025-04-09

anond:20250409192654

仮想通貨取引って偽装できないやん?あれ公開鍵暗号署名検証承認してるからやで。

同じ要領で、あらゆるデジタルデータはいつ作られたか、誰が署名たか保証する技術がすでにある。

opensslgnupgが基底技術なんだけど(いや正確には暗号理論でECDHとAESが主だけど)、まぁわかりやすく言えばweb3やな。

2025-03-18

珍棒編集距離

成年向け漫画において、オリジナルからページ入れ替え操作をした回数。

一般的な本であれば距離1の時点で破綻するが、エロ本なんか筋関係ねぇよスジはモザイクかかってしなということで、破綻せずに最大距離が出せる本ほど実用性があるといえる

[増田オリジナル指標]

NP困難組合せ最適化問題を使った暗号

問題を公開しても、公の人は大域最適解は出せない。

中身がTSPの場合、50個の記号(連番の数字でもいい)を並べ替えて下さいってことになるが、組合せが爆発してめっちゃ時間がかかる。デカ数字見せられて素因数出してくださいとまぁまぁ同じくらいにはダルい

(ここが重要、というか本カス暗号方式の唯一の利点)局所解を出してきた場合攻撃とみなせる。

混乱してきた。評価関数を隠して数字並べてください、なら普通秘密暗号と変わらん。任意の平文を暗号化できる?つまり公開鍵暗号として使える?(ふつーの秘密暗号は超強力ブルートフォース以外はそんなに脅威じゃないんじゃない?)

評価関数もお出しして、はい解いてくださいなら、大域最適化を知ってないとムズく、局所解が攻撃と見なせるので利点があるっちゃあるが。

あと、平文と暗号文の定義域が違うので署名には使えない?無理くり組合問題文字列(平文の定義域)に対応させられる?

2024-11-21

anond:20241121203744

やりたいかどうかはともかく方法を考えるのはちょっと面白い

真面目に考えると公開鍵暗号を使うとかとかそういう話になるんだろうか

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

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

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

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

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