আরএসএ পাবলিক কী ফর্ম্যাট


139

আরএসএ পাবলিক কী এর বিন্যাসে আমি কোথায় কিছু ডকুমেন্টেশন পেতে পারি?

এর দ্বারা ফর্ম্যাট করা একটি আরএসএ সর্বজনীন কী OpenSSH:

SSH-RSA AAAAB3NzaC1yc2EAAAABJQAAAQB / nAmOjTmezNUDKYvEeIRf2YnwM9 / uUG1d0BYsc8 / tRtx + + RGi7N2lUbp728MXGwdnL9od4cItzky / zVdLZE2cycOa18xBK9cOWmcKS0A8FYBxEQWJ / q9YVUgZbFKfYGaGQxsER + + A0w / fX8ALuk78ktP31K69LcQgxIsl7rNzxsoOQKJ / CIxOGMMxczYTiEoLvQhapFQMs3FL96didKr / QbrfB1WT6s3838SEaXfgZvLef1YB2xmfhbT9OXFE3FXvh2UPBfN + + ffE7iiayQf / 2XR + + 8j4N4bW30DiPtOQLGUrH1y5X / rpNZNlWW2 + + jGIxqZtgWg7lTy3mXy5x836Sj / 6L

সুরক্ষিত শেল (আরএফসি 4716 - সিকিউর শেল (এসএসএইচ) সর্বজনীন কী ফাইল ফর্ম্যাট) ব্যবহারের জন্য একই সর্বজনীন কী ফর্ম্যাট করা হয়েছে :

---- BEGIN SSH2 PUBLIC KEY ----
AAAAB3NzaC1yc2EAAAABJQAAAQB/nAmOjTmezNUDKYvEeIRf2YnwM9/uUG1d0BYs
c8/tRtx+RGi7N2lUbp728MXGwdnL9od4cItzky/zVdLZE2cycOa18xBK9cOWmcKS
0A8FYBxEQWJ/q9YVUgZbFKfYGaGQxsER+A0w/fX8ALuk78ktP31K69LcQgxIsl7r
NzxsoOQKJ/CIxOGMMxczYTiEoLvQhapFQMs3FL96didKr/QbrfB1WT6s3838SEaX
fgZvLef1YB2xmfhbT9OXFE3FXvh2UPBfN+ffE7iiayQf/2XR+8j4N4bW30DiPtOQ
LGUrH1y5X/rpNZNlWW2+jGIxqZtgWg7lTy3mXy5x836Sj/6L
---- END SSH2 PUBLIC KEY ----

আরএসএ সর্বজনীন কী হিসাবে ফর্ম্যাট করা একই পাবলিক কী ( পাঁচটি নোট করুন -, এবং কোনও স্থান নেই):

-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEA+xGZ/wcz9ugFpP07Nspo6U17l0YhFiFpxxU4pTk3Lifz9R3zsIsu
ERwta7+fWIfxOo208ett/jhskiVodSEt3QBGh4XBipyWopKwZ93HHaDVZAALi/2A
+xTBtWdEo7XGUujKDvC2/aZKukfjpOiUI8AhLAfjmlcD/UZ1QPh0mHsglRNCmpCw
mwSXA9VNmhz+PiB+Dml4WWnKW/VHo2ujTXxq7+efMU4H2fny3Se3KYOsFPFGZ1TN
QSYlFuShWrHPtiLmUdPoP6CV2mML1tk+l7DIIqXrQhLUKDACeM5roMx0kLhUWB8P
+0uj1CNlNN4JRZlC7xFfqiMbFRU9Z4N6YwIDAQAB
-----END RSA PUBLIC KEY-----

বেস -৪৪ এনকোডড ডেটার হেক্স ডাম্প:

00 00 00 07 73 73 68 2d 72 73 61 00 00 00 01 25 00 00 01 00 7f 9c 09
8e 8d 39 9e cc d5 03 29 8b c4 78 84 5f d9 89 f0 33 df ee 50 6d 5d d0 
16 2c 73 cf ed 46 dc 7e 44 68 bb 37 69 54 6e 9e f6 f0 c5 c6 c1 d9 cb
f6 87 78 70 8b 73 93 2f f3 55 d2 d9 13 67 32 70 e6 b5 f3 10 4a f5 c3 
96 99 c2 92 d0 0f 05 60 1c 44 41 62 7f ab d6 15 52 06 5b 14 a7 d8 19 
a1 90 c6 c1 11 f8 0d 30 fd f5 fc 00 bb a4 ef c9 2d 3f 7d 4a eb d2 dc 
42 0c 48 b2 5e eb 37 3c 6c a0 e4 0a 27 f0 88 c4 e1 8c 33 17 33 61 38 
84 a0 bb d0 85 aa 45 40 cb 37 14 bf 7a 76 27 4a af f4 1b ad f0 75 59 
3e ac df cd fc 48 46 97 7e 06 6f 2d e7 f5 60 1d b1 99 f8 5b 4f d3 97 
14 4d c5 5e f8 76 50 f0 5f 37 e7 df 13 b8 a2 6b 24 1f ff 65 d1 fb c8 
f8 37 86 d6 df 40 e2 3e d3 90 2c 65 2b 1f 5c b9 5f fa e9 35 93 65 59 
6d be 8c 62 31 a9 9b 60 5a 0e e5 4f 2d e6 5f 2e 71 f3 7e 92 8f fe 8b

আমি পড়েছি যে বেশ কয়েকটি ফর্ম্যাট রয়েছে 🕗 :

কী ডেটা তিনটি সাধারণ উপায়ে এনকোড করা যেতে পারে:

  • বাইনারি ডিইআর-এনকোডড ফর্ম্যাট। এটিকে কখনও কখনও ASN.1 BER-encoded বলা হয়
  • পিইএম বা বেস 64 ফর্ম্যাট। এটি ডিইআর-এনকোডযুক্ত ফাইলের মতো একই ডেটা তবে এটি অতিরিক্ত শিরোনাম এবং পাদচরণের লাইনগুলির সাথে বেস 64 এ এনকোড করা রয়েছে
  • এক্সএমএল ফর্ম্যাট।

যদি এটি এএসএন ১ , হেক্স অবশ্যই দেখতে পছন্দ করে না।

একটি আরএসএ পাবলিক কী এর ফর্ম্যাটটি কী?


আরো দেখুন

উত্তর:


68

আপনি শুধু থেকে বিভেদক পরিবর্তন করতে পারেন ---- BEGIN SSH2 PUBLIC KEY ----করতে -----BEGIN RSA PUBLIC KEY-----এবং আশা যে এটা এক ফরম্যাট থেকে অন্য রূপান্তর করতে (যা কি আপনি আপনার উদাহরণে কাজ করেছি) যথেষ্ট হবে।

এই নিবন্ধটি উভয় ফর্ম্যাট সম্পর্কে একটি ভাল ব্যাখ্যা আছে।

আপনি কি একটি পেতে RSA PUBLIC KEYএকটি বিষয়বস্তুর কাছাকাছি PUBLIC KEY, কিন্তু আপনি আপনার ASN.1 গঠন শুরুর অফসেট সত্য যে প্রতিফলিত করার প্রয়োজন PUBLIC KEYএছাড়াও একটি সূচক বলছে কী কোন ধরনের এটি করা হয় (দেখুন রয়েছে বোঝায় যা RFC 3447 )। আপনি এটি ব্যবহার করে openssl asn1parseএবং এই উত্তরে-strparse 19 বর্ণিত হিসাবে দেখতে পাচ্ছেন ।

সম্পাদনা : আপনার সম্পাদনা অনুসরণ করে, আপনি RSA PUBLIC KEYব্যবহার করে আপনার কাঠামোর বিশদটি পেতে পারেন grep -v -- ----- | tr -d '\n' | base64 -d | openssl asn1parse -inform DER:

    0:d=0  hl=4 l= 266 cons: SEQUENCE          
    4:d=1  hl=4 l= 257 prim: INTEGER           :FB1199FF0733F6E805A4FD3B36CA68E94D7B974621162169C71538A539372E27F3F51DF3B08B2E111C2D6BBF9F5887F13A8DB4F1EB6DFE386C92256875212DDD00468785C18A9C96A292B067DDC71DA0D564000B8BFD80FB14C1B56744A3B5C652E8CA0EF0B6FDA64ABA47E3A4E89423C0212C07E39A5703FD467540F874987B209513429A90B09B049703D54D9A1CFE3E207E0E69785969CA5BF547A36BA34D7C6AEFE79F314E07D9F9F2DD27B72983AC14F1466754CD41262516E4A15AB1CFB622E651D3E83FA095DA630BD6D93E97B0C822A5EB4212D428300278CE6BA0CC7490B854581F0FFB4BA3D4236534DE09459942EF115FAA231B15153D67837A63
  265:d=1  hl=2 l=   3 prim: INTEGER           :010001

এসএসএইচ কী ফর্ম্যাটটি ডিকোড করার জন্য, আপনাকে আরএফসি 4251-তেও ডেটা ফর্ম্যাট স্পেসিফিকেশনটি ব্যবহার করতে হবে, আরএফসি 4253 এর সাথে একত্রে:

   The "ssh-rsa" key format has the following specific encoding:

      string    "ssh-rsa"
      mpint     e
      mpint     n

উদাহরণস্বরূপ, শুরুতে, আপনি পান 00 00 00 07 73 73 68 2d 72 73 61। প্রথম চারটি বাইট ( 00 00 00 07) আপনাকে দৈর্ঘ্য দেয়। বাকীটি নিজেই স্ট্রিং: 73 = s, 68 = এইচ, ... -> 73 73 68 2d 72 73 61= এর ssh-rsaপরে দৈর্ঘ্য 1 ( 00 00 00 01 25) এর দৈর্ঘ্য এবং 256 ( 00 00 01 00 7f ...) দৈর্ঘ্যের মডুলাস by


2
যে লেখাটি উল্লেখ করেছেন যে OpenSSH- র বিন্যাস হল একটি বিন্যাসে কিন্তু বিন্যাসের বিস্তারিত মধ্যে পাবেন না। পরিবর্তে এটি উল্লেখ করেছে যে ফর্ম্যাটটি সম্পূর্ণরূপে আরএফসি 4253 - সিকিউর শেল (এসএসএইচ) পরিবহন স্তর প্রোটোকল - বিভাগ 6.6 এ নথিভুক্ত রয়েছে পাবলিক কী অ্যালগরিদম ; আমি বাদে সেখানে কোনও ডকুমেন্টেশন পাই না। আমি যে কারওর পাবলিক আরএসএ কী পেয়েছি তা ব্যবহার করতে প্রশ্নটি আপডেট করেছি।
ইয়ান বয়ড

আমি বিশ্বাস করি যে প্রথম লিঙ্কটি blog.oddbit.com/2011/05/08/converting-openssh-public-keys
mbargiel

আপনি ডেটা, বা অন্য কোনও PEM কাঠামো openssl asn1parse -inform PEMদিয়ে ব্যবহার করতে পারেন -----BEGIN RSA PUBLIC KEY----। গ্রেড / টিআর / বেস 64 কমান্ডের সাহায্যে শিরোনামগুলি ম্যানুয়ালি করার চেষ্টা করার চেয়ে অনেক সহজ।
davenpcj

55

একটি ওপেনএসএসএল আরএসএ-এসএস কী-এর ডিকোডড বেস 64 তথ্য থেকে শুরু করে আমি একটি ফর্ম্যাটটি অনুমান করতে সক্ষম হয়েছি :

  • 00 00 00 07: চার বাইট দৈর্ঘ্যের উপসর্গ (7 বাইট)
  • 73 73 68 2d 72 73 61: "এসএসএস-আরএসএ"
  • 00 00 00 01: চার বাইট দৈর্ঘ্যের উপসর্গ (1 বাইট)
  • 25: আরএসএ এক্সপোনেন্ট ( e): 25
  • 00 00 01 00: চার বাইট দৈর্ঘ্যের উপসর্গ (256 বাইট)
  • আরএসএ মডুলাস ( n):

    7f 9c 09 8e 8d 39 9e cc d5 03 29 8b c4 78 84 5f
    d9 89 f0 33 df ee 50 6d 5d d0 16 2c 73 cf ed 46 
    dc 7e 44 68 bb 37 69 54 6e 9e f6 f0 c5 c6 c1 d9 
    cb f6 87 78 70 8b 73 93 2f f3 55 d2 d9 13 67 32 
    70 e6 b5 f3 10 4a f5 c3 96 99 c2 92 d0 0f 05 60 
    1c 44 41 62 7f ab d6 15 52 06 5b 14 a7 d8 19 a1 
    90 c6 c1 11 f8 0d 30 fd f5 fc 00 bb a4 ef c9 2d 
    3f 7d 4a eb d2 dc 42 0c 48 b2 5e eb 37 3c 6c a0 
    e4 0a 27 f0 88 c4 e1 8c 33 17 33 61 38 84 a0 bb 
    d0 85 aa 45 40 cb 37 14 bf 7a 76 27 4a af f4 1b 
    ad f0 75 59 3e ac df cd fc 48 46 97 7e 06 6f 2d 
    e7 f5 60 1d b1 99 f8 5b 4f d3 97 14 4d c5 5e f8 
    76 50 f0 5f 37 e7 df 13 b8 a2 6b 24 1f ff 65 d1 
    fb c8 f8 37 86 d6 df 40 e2 3e d3 90 2c 65 2b 1f 
    5c b9 5f fa e9 35 93 65 59 6d be 8c 62 31 a9 9b 
    60 5a 0e e5 4f 2d e6 5f 2e 71 f3 7e 92 8f fe 8b
    

আমার তত্ত্বের নিকটতম বৈধতা আমি এটি আরএফসি 4253 থেকে খুঁজে পেতে পারি:

"Ssh-rsa" কী ফর্ম্যাটটিতে নিম্নলিখিত নির্দিষ্ট এনকোডিং রয়েছে:

  string    "ssh-rsa"
  mpint     e
  mpint     n

এখানে 'ই' এবং 'এন' পরামিতি স্বাক্ষর কী ব্লব গঠন করে।

তবে এটি দৈর্ঘ্যের উপসর্গগুলি ব্যাখ্যা করে না।


RSA PUBLIC KEYআমি খুঁজে পেয়েছি এলোমেলো (প্রশ্নে), এবং বেস 64 কে হেক্সে ডিকোডিং:

30 82 01 0a 02 82 01 01 00 fb 11 99 ff 07 33 f6 e8 05 a4 fd 3b 36 ca 68 
e9 4d 7b 97 46 21 16 21 69 c7 15 38 a5 39 37 2e 27 f3 f5 1d f3 b0 8b 2e 
11 1c 2d 6b bf 9f 58 87 f1 3a 8d b4 f1 eb 6d fe 38 6c 92 25 68 75 21 2d 
dd 00 46 87 85 c1 8a 9c 96 a2 92 b0 67 dd c7 1d a0 d5 64 00 0b 8b fd 80 
fb 14 c1 b5 67 44 a3 b5 c6 52 e8 ca 0e f0 b6 fd a6 4a ba 47 e3 a4 e8 94 
23 c0 21 2c 07 e3 9a 57 03 fd 46 75 40 f8 74 98 7b 20 95 13 42 9a 90 b0 
9b 04 97 03 d5 4d 9a 1c fe 3e 20 7e 0e 69 78 59 69 ca 5b f5 47 a3 6b a3 
4d 7c 6a ef e7 9f 31 4e 07 d9 f9 f2 dd 27 b7 29 83 ac 14 f1 46 67 54 cd 
41 26 25 16 e4 a1 5a b1 cf b6 22 e6 51 d3 e8 3f a0 95 da 63 0b d6 d9 3e 
97 b0 c8 22 a5 eb 42 12 d4 28 30 02 78 ce 6b a0 cc 74 90 b8 54 58 1f 0f 
fb 4b a3 d4 23 65 34 de 09 45 99 42 ef 11 5f aa 23 1b 15 15 3d 67 83 7a 
63 02 03 01 00 01

আরএফসি 3447 থেকে - পাবলিক-কী ক্রিপ্টোগ্রাফি স্ট্যান্ডার্ডস (পিকেসিএস) # 1: আরএসএ ক্রিপ্টোগ্রাফি বিশেষ উল্লেখ সংস্করণ 2.1 :

A.1.1 আরএসএ সর্বজনীন কী সিনট্যাক্স

একটি আরএসএ সর্বজনীন কী ASN.1 প্রকারের সাথে উপস্থাপন করা উচিত RSAPublicKey:

  RSAPublicKey ::= SEQUENCE {
     modulus           INTEGER,  -- n
     publicExponent    INTEGER   -- e
  }

আরএসএপাবলিক্য টাইপের ক্ষেত্রগুলির নিম্নলিখিত অর্থ রয়েছে:

  • মডুলাস হল আরএসএ মডুলাস এন।
  • পাবলিক এক্সপোঞ্জেন্ট হ'ল আরএসএ পাবলিক এক্সপোনেন্ট ই।

মাইক্রোসফ্টের দুর্দান্ত (এবং একমাত্র বাস্তব) ASN.1 ডকুমেন্টেশন ব্যবহার করে :

30 82 01 0a       ;SEQUENCE (0x010A bytes: 266 bytes)
|  02 82 01 01    ;INTEGER  (0x0101 bytes: 257 bytes)
|  |  00          ;leading zero because high-bit, but number is positive
|  |  fb 11 99 ff 07 33 f6 e8 05 a4 fd 3b 36 ca 68 
|  |  e9 4d 7b 97 46 21 16 21 69 c7 15 38 a5 39 37 2e 27 f3 f5 1d f3 b0 8b 2e 
|  |  11 1c 2d 6b bf 9f 58 87 f1 3a 8d b4 f1 eb 6d fe 38 6c 92 25 68 75 21 2d 
|  |  dd 00 46 87 85 c1 8a 9c 96 a2 92 b0 67 dd c7 1d a0 d5 64 00 0b 8b fd 80 
|  |  fb 14 c1 b5 67 44 a3 b5 c6 52 e8 ca 0e f0 b6 fd a6 4a ba 47 e3 a4 e8 94 
|  |  23 c0 21 2c 07 e3 9a 57 03 fd 46 75 40 f8 74 98 7b 20 95 13 42 9a 90 b0 
|  |  9b 04 97 03 d5 4d 9a 1c fe 3e 20 7e 0e 69 78 59 69 ca 5b f5 47 a3 6b a3 
|  |  4d 7c 6a ef e7 9f 31 4e 07 d9 f9 f2 dd 27 b7 29 83 ac 14 f1 46 67 54 cd 
|  |  41 26 25 16 e4 a1 5a b1 cf b6 22 e6 51 d3 e8 3f a0 95 da 63 0b d6 d9 3e 
|  |  97 b0 c8 22 a5 eb 42 12 d4 28 30 02 78 ce 6b a0 cc 74 90 b8 54 58 1f 0f 
|  |  fb 4b a3 d4 23 65 34 de 09 45 99 42 ef 11 5f aa 23 1b 15 15 3d 67 83 7a 
|  |  63 
|  02 03          ;INTEGER (3 bytes)
|     01 00 01

সর্বজনীন কী মডুলাস এবং ঘনিষ্টর প্রদান:

  • মডুলাস =0xfb1199ff0733f6e805a4fd3b36ca68...837a63
  • সূচক = 65,537

আপডেট : অন্য প্রশ্নের মধ্যে আমার এই উত্তরটির প্রসারিত ফর্ম


1
RSA PUBLIC KEYASN.1 ফর্ম অনুসরণ করে (পিকেসিএস স্পেস দেখুন), ওপেনএসএসএইচ-এর ফর্ম্যাটটির সাথে এর কোনও যোগসূত্র নেই।
ব্রুনো

3
দুর্দান্ত উত্তর - অনেক অনেক ধন্যবাদ। "শীর্ষস্থানীয় শূন্য কারণ উচ্চ-বিট কিন্তু সংখ্যাটি ইতিবাচক" উত্স অনুসারে এটি এসএসএস-আরএসএ কী বিন্যাসে প্রবেশ করে। আমি এটি সম্পর্কে সবচেয়ে দরকারী ইঙ্গিতটি খুঁজে পেতে পারি github.com/openssh/openssh-portable এর একটি মন্তব্য যা "/ * যদি এমএসবি সেট করা থাকে তবে ssh-rsa ফর্ম্যাটে বিনমনামগুলি লেখার সময় একটি \ 0 * /" চাপান। এটি কেবলমাত্র সময়ের 50% (?) পাবলিক মডুলাসের জন্য সমস্যা বলে মনে হচ্ছে এবং উত্পন্ন আরএসএ কীগুলির প্রকৃতির কারণে সর্বজনীন প্রকাশকের ক্ষেত্রে কখনও নয়।
টিম পটার

দুর্দান্ত উত্তর, সম্পর্কে stringএবং mpint - এটি আরএফসি 4251, সেকশন 5 এ বর্ণিত আছে, কোয়াস করার দরকার নেই :)
ব্যবহারকারীর 1516873

10

সিআরএল, সিআরটি, সিএসআর, নতুন সিএসআর, প্রাইভেট কী, পাবলিক কী, আরএসএ, আরএসএ পাবলিক কী পার্সারের রেফারেন্স ডিকোডার

আরএসএ পাবলিক কী

-----BEGIN RSA PUBLIC KEY-----
-----END RSA PUBLIC KEY-----

এনক্রিপ্ট করা ব্যক্তিগত কী

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
-----END RSA PRIVATE KEY-----

সিআরএল

-----BEGIN X509 CRL-----
-----END X509 CRL-----

সিআরটি

-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

সিএসআর

-----BEGIN CERTIFICATE REQUEST-----
-----END CERTIFICATE REQUEST-----

নতুন সিএসআর

-----BEGIN NEW CERTIFICATE REQUEST-----
-----END NEW CERTIFICATE REQUEST-----

অবশ্যই PEM

-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

PKCS7

-----BEGIN PKCS7-----
-----END PKCS7-----

প্রাইভেট কী

-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----

ডিএসএ কে

-----BEGIN DSA PRIVATE KEY-----
-----END DSA PRIVATE KEY-----

উপবৃত্তাকার বক্ররেখা

-----BEGIN EC PRIVATE KEY-----
-----END EC PRIVATE KEY-----

পিজিপি প্রাইভেট কী

-----BEGIN PGP PRIVATE KEY BLOCK-----
-----END PGP PRIVATE KEY BLOCK-----

পিজিপি পাবলিক কী

-----BEGIN PGP PUBLIC KEY BLOCK-----
-----END PGP PUBLIC KEY BLOCK-----
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.