LoginSignup
2
2

More than 5 years have passed since last update.

dumpasn1の使い方メモ

Last updated at Posted at 2016-11-30

https://www.cs.auckland.ac.nz/~pgut001/ で配布されているASN.1の中身を見るツールdumpasn1の使い方メモ。

インストール

上記URLからdumpasn1.cを持ってきてコンパイル、$HOME/binにインストール。

あわせて上記URLからdumpasn1.cfgもダウンロード、やはり$HOME/binに設置。

使い方(1) RSA公開鍵

検査対象をいちどDER形式のファイルに落とす必要があるらしい。少し面倒。

$ echo -n | openssl s_client -connect www.google.com:443 | openssl x509 -noout -pubkey | openssl rsa -pubin -outform der > /tmp/google_com_pubkey.der

まずこのようにして公開鍵をDER形式で保存。

$ dumpasn1 -al /tmp/google_com_pubkey.der
  0 290: SEQUENCE {
  4  13:   SEQUENCE {
  6   9:     OBJECT IDENTIFIER rsaEncryption (1 2 840 113549 1 1 1)
       :       (PKCS #1)
 17   0:     NULL
       :     }
 19 271:   BIT STRING, encapsulates {
 24 266:     SEQUENCE {
 28 257:       INTEGER
       :         00 97 A4 10 AC BC D8 D2 32 AF 6C 7F CB FC 46 2B
       :         8C 5E E1 0A 47 BD 82 3F 0C F3 42 A8 CB EA 0C 45
       :         FE 1D A4 D6 83 63 9E 6D 03 E6 94 6F 1D C2 68 28
       :         9F 35 7E 27 59 22 F5 8A 4E D4 1A AB A2 E8 13 81
       :         F9 5F DD 92 0E 4F 7E 12 EC FC D7 B7 4B 39 E4 03
       :         50 C2 D0 E2 F9 F2 22 C4 3E 87 FA C9 98 B7 D6 4C
       :         D4 A5 EE F5 DF 37 20 63 6E 4D A4 8A 27 E8 F8 A7
       :         7E 2C 95 4F DB 59 22 C5 7B 62 9A D5 7D 30 9D 1C
       :         5F 0F 47 D5 34 9C A8 69 D3 BB E5 04 45 D5 4C 70
       :         1F E4 4D 84 FE 5B 81 86 61 C9 A3 C7 CF 70 C3 6C
       :         DE 44 06 9E E7 A0 E5 61 A2 E7 85 B4 81 A0 95 E2
       :         35 CF BF 1E 1E 68 CE B5 7B AC 8F 44 FE 50 8B 5B
       :         37 18 F1 33 0A 20 08 26 7A A4 ED 15 38 C5 6F 5E
       :         53 8A BA 8D 0C 35 87 97 C1 7A F9 F2 DF D0 01 7B
       :         0C 2C 2E 35 8B 49 BB 9D FD 88 B3 37 43 AB 4D 51
       :         09 75 69 67 59 43 5D DC E8 2F AA 52 A6 C6 F2 48
       :         A7
289   3:       INTEGER 65537
       :       }
       :     }
       :   }

0 warnings, 0 errors.

読めました。やったね。

ファイルに保存せずにパイプで渡すと、なぜかBIT STRINGの内側を見せてくれない。不思議。

使い方(2) ECDSA公開鍵

OpenSSHフォーマットのECDSA公開鍵の中身を見てみる。

$ ssh-keygen -t ecdsa -f /tmp/id_ecdsa
$ cat /tmp/id_ecdsa.pub
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPdtAjzYrqVRP+rxzp81vJgiaycY5E+jlSp1oQLJUYOl6VIEKoCPzcOPrG61xWfM8m/9xdWp6A9kShi96+GBhLE= hnw@localhost
$ ssh-keygen -e -m pkcs8 -f /tmp/id_ecdsa.pub > /tmp/id_ecdsa.pub.pem
$ openssl ec -in /tmp/id_ecdsa.pub.pem -pubin -outform DER -out /tmp/id_ecdsa.pub.der

DER形式に保存して dumpasn1

$ dumpasn1 /tmp/id_ecdsa.pub.der
  0 331: SEQUENCE {
  4 259:   SEQUENCE {
  8   7:     OBJECT IDENTIFIER ecPublicKey (1 2 840 10045 2 1)
 17 247:     SEQUENCE {
 20   1:       INTEGER 1
 23  44:       SEQUENCE {
 25   7:         OBJECT IDENTIFIER prime-field (1 2 840 10045 1 1)
 34  33:         INTEGER
       :           00 FF FF FF FF 00 00 00 01 00 00 00 00 00 00 00
       :           00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF
       :           FF
       :         }
 69  91:       SEQUENCE {
 71  32:         OCTET STRING
       :           FF FF FF FF 00 00 00 01 00 00 00 00 00 00 00 00
       :           00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FC
105  32:         OCTET STRING
       :           5A C6 35 D8 AA 3A 93 E7 B3 EB BD 55 76 98 86 BC
       :           65 1D 06 B0 CC 53 B0 F6 3B CE 3C 3E 27 D2 60 4B
139  21:         BIT STRING C4 9D 36 08 86 E7 04 93 6A 66 78 E1 13 9D 26 B7 81 9F 7E 90
       :         }
162  65:       OCTET STRING
       :         04 6B 17 D1 F2 E1 2C 42 47 F8 BC E6 E5 63 A4 40
       :         F2 77 03 7D 81 2D EB 33 A0 F4 A1 39 45 D8 98 C2
       :         96 4F E3 42 E2 FE 1A 7F 9B 8E E7 EB 4A 7C 0F 9E
       :         16 2B CE 33 57 6B 31 5E CE CB B6 40 68 37 BF 51
       :         F5
229  33:       INTEGER
       :         00 FF FF FF FF 00 00 00 00 FF FF FF FF FF FF FF
       :         FF BC E6 FA AD A7 17 9E 84 F3 B9 CA C2 FC 63 25
       :         51
264   1:       INTEGER 1
       :       }
       :     }
267  66:   BIT STRING
       :     04 F7 6D 02 3C D8 AE A5 51 3F EA F1 CE 9F 35 BC
       :     98 22 6B 27 18 E4 4F A3 95 2A 75 A1 02 C9 51 83
       :     A5 E9 52 04 2A 80 8F CD C3 8F AC 6E B5 C5 67 CC
       :     F2 6F FD C5 D5 A9 E8 0F 64 4A 18 BD EB E1 81 84
       :     B1
       :   }

0 warnings, 0 errors.

この公開鍵で使っている楕円曲線はsecp256r1。

Mathematical routines for the NIST prime elliptic curves」の「4.3 Curve P-256」と見比べると下記のパラメータが対応していることがわかる。

  • 21byte目: ?
  • 35byte目: p
  • 72byte目: a
  • 106byte目: b
  • 140byte目: seed(?)
  • 163byte目: G(ベースポイント)
  • 230byte目: q
  • 265byte目: ?
  • 268byte目: Q=dG(公開鍵)
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2