QurioWork

日常思ったことと好奇心の追求

ATOMエディタを入れてみた

ATOMエディタをインストールした。

atom.io

これまでは会社で使っていたけどプライベートでは使っていなかった。

なぜ使い始めたか?

理由は大きく3点!

Markdownのプレビューがとても便利だから

ATOMMarkdownを扱うプラグインは色々あるが、中でも Markdown Preview Plus はとても便利。

atom.io

はてなブログに投稿できるプラグインがある

探してたら見つけた。
Hatena Blog And Fotolife

atom.io

ATOMエディタから記事の投稿と更新が捗るよ。 Markdownのプレビューと合わせると最強。 作成者に感謝感謝。

何となくカッコいいから

カッコイイは正義!
細かい話はさておき、あのGitHubが開発したテキストエディタなので、触っておいて損はないだろう。 当然 Git と親和性が高い。

プラグインの種類が膨大なので、自分のニーズがほぼ叶えられると思う。

デメリット

マシンスペックが貧弱だと重たい

これは職場マシン(32bitOS,2GBRAM)で使用した感想。 軽量な従来のテキストエディタ(秀丸サクラエディタ)に軍配が上がる。 多分、マシンを買えという神の啓示だと思う。

エラーになった時のトラブルシューティングが難しい

プラグインでの拡張自由度がとても高いため、副作用としてエラーが起きやすい。 エラーメッセージを見ても解決しないこともある。 プラグインの競合等、原因は色々あるようだ。

【やさしく分かる】公開鍵(RSA暗号)の仕組み

RSA暗号について、実際に何をしているか調べてみた。
詳細な数学理論は省き、以下について1ステップずつ追ってとにかく試してみる。

まず、RSA暗号の流れは以下3ステップからなる。

  1. 鍵ペア作成
  2. 暗号化
  3. 複号化

鍵ペア作成の流れ

STEP1 素数を2つ用意する

2つの素数

 \displaystyle
p,q

で表す。

今回は計算を簡単にするため小さい数で試してみる。

 \displaystyle
p=11 , q=13

STEP2 N を計算する

 \displaystyle
N=pq

代入すると

 \displaystyle
N = 11\times13 = 143

STEP3 φ(N) を計算する

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

代入すると

 \displaystyle
φ(N)=(11-1)\times(13-1) = 10\times12 = 120

STEP4 下記条件を満たす e を探す。

 \displaystyle
1 \lt e \lt φ(N)

ただし、eφ(N)は互いに素*1となる数を選ぶ。
eφ(N)より小さい素数にしておけば、確実に互いに素となるため楽。

今回は下記にした。

 \displaystyle
e = 17

STEP5 下記条件を満たす d を計算する。

 \displaystyle
 ed \equiv 1\pmod {φ(N)}\\
d \gt 0

これは e × d ÷ φ(N) の余りが 1 になると言う意味。
拡張ユークリッド互除法を使うと求められる*2
このステップが一番の山場だと思う。 以下は完成した表。

 \displaystyle
\begin{array}{c|rrrr}
i & q_i & r_i & u_i & v_i\\
\hline
0 & -&  120&    1&  0\\
1 & -&  17& 0 & 1 \\
2 & 7&  1&  1&  -7\\
3 & 17& 0&  -17&    120
\end{array}\\

最初に下記を埋める。

 \displaystyle
r_0 = φ(N) =120 \\
r_1 = e = 17\\
u_0= 1 \\
u_1= 0\\
v_0 =0 \\
v_1 =1

埋めると下記になる。

 \displaystyle
\begin{array}{c|rrrr}
i & q_i & r_i & u_i & v_i\\
\hline
0 & -&  120&    1&  0\\
1 & -&  17& 0 & 1
\end{array}\\

以降は下記計算を \displaystyle r_i = 0 になるまで繰り返す。

 \displaystyle
q_i = \lfloor r_{i-2} / r_{i-1} \rfloor\\
r_i = r_{i-2}-q_ir_{i-1}\\
u_i = u_{i-2}-q_iu_{i-1}\\
v_i = v_{i-2}-q_iv_{i-1}

 \displaystyle i=2 の場合を計算すると

 \displaystyle
q_2 = \lfloor r_{2-2} / r_{2-1} \rfloor = \lfloor r_0 / r_1 \rfloor = \lfloor 120/ 17 \rfloor = \lfloor 7.05... \rfloor = 7\\
r_2 = r_{2-2}-q_2r_{2-1} = r_0-q_2r1 =120-7\times17=1  \\
u_2 = u_{2-2}-q_2u_{2-1}=u_0-q_2u_1 =1-7\times0 =1  \\
v_2 = v_{2-2}-q_2v_{2-1}=v_0-q_2v_1 =0-7\times1 =-7  \\

埋めると下記になる。

 \displaystyle
\begin{array}{c|rrrr}
i & q_i & r_i & u_i & v_i\\
\hline
0 & -&  120&    1&  0\\
1 & -&  17& 0 & 1 \\
2 & 7&  1&  1&  -7\\
\end{array}\\

 \displaystyle i=3 の場合を計算すると

 \displaystyle
q_3 = \lfloor r_{3-2} / r_{3-1} \rfloor = \lfloor r_1 / r_2 \rfloor = \lfloor 17/ 1 \rfloor = \lfloor 17 \rfloor = 17\\
r_3 = r_{3-2}-q_3r_{3-1} = r_1-q_3r2 =17-17\times1=0  \\
u_3 = u_{3-2}-q_3u_{3-1}=u_1-q_3u_2 =0-17\times1 =-17  \\
v_3 = v_{3-2}-q_3v_{3-1}=v_1-q_3v_2 =1-17\times-7 =120  \\

埋めると下記になる。  \displaystyle r_3=0 のため完成。

 \displaystyle
\begin{array}{c|rrrr}
i & q_i & r_i & u_i & v_i\\
\hline
0 & -&  120&    1&  0\\
1 & -&  17& 0 & 1 \\
2 & 7&  1&  1&  -7\\
3 & 17& 0&  -17&    120
\end{array}\\

ここで、  \displaystyle r_2 = 1 の時の、  v_2 d になる。

ただし、 d \gt 0 が条件なので、 v_2 を正の値にするため、 v_2+v_3 とする。

従って

 \displaystyle
d = v_2 + v_3 = -7 + 120 = 113

鍵ペア作成完了

ここまでのステップでやっと暗号化と複号化に必要な情報が揃った。  

公開鍵(暗号鍵)

N = 143\\
e = 17
秘密鍵(複号鍵)

N = 143\\
d = 113

暗号化してみよう

実際に作成した公開鍵を使って暗号化してみよう。
平文を暗号化するには、公開鍵で以下計算をする。


平文^e \pmod N = 暗号文\\
ただし、平文 \lt N

今回は下記にした。

 \displaystyle
平文=123

実際に計算すると…

 \displaystyle
123^{17}\pmod{143}=106

従って、暗号文は 106 になる。

RSA暗号では、大きな数の累乗計算が登場する。
普通に計算したら、桁溢れを起こしてしまうので高速剰余計算(バイナリ法)を使う。

複号化してみよう

今度は作成した秘密鍵を使って暗号文を複号してみよう。 平文を複号するには、秘密鍵で以下計算をする。


暗号文^d \pmod N = 平文

実際に計算すると…

 \displaystyle
106^{113}\pmod{143}=123

従って、得られた平文は 123 になり、元の平文との一致した。
分かっているけど、キチンと計算できると嬉しい。

まとめ

  • RSA暗号は、鍵ペア作成、暗号化、複合化の3ステップから成る。
  • 実際な暗号は素数pqが非常に大きな数から選ばれている。(1024bit~2048bit)
  • 鍵ペアの作成は計算が大変。
  • 秘密鍵dは他人に教えてはならない
  • 公開鍵から秘密鍵dを計算で導き出すことは実質不可能。
  • RSA暗号を破るということは、N素因数分解dを導き出すということ。

*1:最大公約数が1となること

*2:説明は別の機会に

お勧めの軽量ハイスペックなノートPC

こんにちは、Qtumです。

あなたがノートPCで重視する要素は何でしょうか? 性能、デザイン、持ち運びのしやすさ、、、色々ありますよね。

もし、あなたが軽量ハイスペックPCを求めているならば、富士通のUHシリーズがお勧めです。 www.fmworld.net

そうです。僕が購入したノートPCです。 実際に使って「これはお勧めだ!」と思ったので紹介します。

お勧めの理由

ノートPC本体の重量

このシリーズは重量が800g以下でとにかく軽いです。

一番軽い機種だと698gしかありません。 重量1㎏以下になると、常時持ち運んでも苦痛にならないラインかなと。。

お得なクーポン

富士通のノートPCは公式ショップで購入すると、常に「19~23%引き」*1のクーポンが適用できます。 これを適用すると20万円前後のノートPCが、なんと15万円そこいらで購入できます。 適用しない理由がないですね。

www.fujitsu-webmart.com

気になるスペック

一般に軽量ノートPCはスペックが非力だと思われがちですが、富士通の当PCはスペック面も充実しています。

  • CPU:第8世代 Core i3/i5/i7
  • モリー:4~16GB
  • ストレージ:SSD 128GB~1TB
  • ディスプレイ:13.3インチ 1920×1080ドット
  • その他:USB充電/給電対応、HDMI端子、LAN端子搭載

CPUにCore-i7を積んでメモリ16GBにすると、メインPCとしても良いほど快適です。

USB充電に対応しているのも便利です。 USB-PD*2規格と言います。 「何でもかんでもUSBで充電させちゃおうぜ!」というコンセプトで、今後の普及が見込まれているので先取りしておいて損はないと思います。

www.rohm.co.jp

デメリット

このノートPC唯一のデメリットはバッテリー容量だと思います。

最近のモバイル機器重量の殆どは実はバッテリー重量です。 このノートPCは軽さと引き換えに、バッテリーの持ちを犠牲にしています。

どうしてもバッテリー容量を良くしたい場合、25Wh → 50Wh にカスタムできます。 ただし、200g ほど重量が増します…ので、軽量ノートPC*3とは謳いづらいかな。

僕は悩んだ挙句 25Wh を購入しました。 ネットサーフィンだけの使用であれば4~6時間は使えました。 こまめな充電が欠かせないので、USB-PD規格対応は非常に助かります。

最後に

まとめると、バッテリー持ちを多少犠牲にしても軽量ハイスペックなPCが欲しい!という方にはお勧めだと思います。 ノートPCを探していて、結局どれにすればいいか悩んでるという方の参考になれば幸いです。

*1:ブログ執筆(2019/09/07)時点の情報です。

*2:PowerDeliveryの略

*3:それでも 850g です。

はじめまして

ブログ始めました。 僕が興味を抱いた内容を日々発信したいと思います。

自己紹介

挨拶が遅れました。 はじめまして、Qtumと申します。「きゅーたむ」と呼んでください。

僕は通信業界に従事していて、そこではデータベースエンジニアを名乗ってます。

またお手伝いで、アクセサリ作家のアシスタントをしています。

これまで得た経験や知識を語りたい衝動に駆られてブログを始めました。

興味があること

投資
  • 趣味で投資しています。いつか不労所得だけで暮らすのが目標です(笑)
未来技術
  • 核融合量子コンピュータなど、一昔前はSFと思われていた技術に興味があります。量子(Quantum)は名前の由来だったりします。
コンピュータサイエンス
数学・物理学
  • 社会人になって好きになりました。数学だと「数論」、物理だと「量子論」「宇宙論」が特に興味あります。もっと学生時代に勉強すれば良かったですね~。
都市開発
  • 子供のから超高層ビルが好きで、特に東京の再開発計画をよくチェックしています。

これからよろしくお願いします。

電子申請で商標出願(準備編)

 こんにちは。qtumです。

 

商標登録出願を電子申請したお話です。

出願~商標登録に至るまでの流れについて実体験に踏まえて書き記します。

電子申請は、とても便利な仕組みでした。

これは皆にもオススメしたい!と思いまして記事に残すことにしました。

事の発端

続きを読む