উবুন্টু কমান্ড-লাইন সরঞ্জাম এবং নিজের কীগুলি দিয়ে কীভাবে ফাইল সাইন করবেন?


14

আমি লিখেছি কিছু পাইথন কোড ফাইলগুলিতে সই করতে চাই, কারণ সেগুলি আমার একটি প্রকল্পের জন্য প্লাগ-ইন মডিউল। এটি বিতরণ করার জন্য, আমি চাই যে ব্যবহারকারী নিশ্চিত হতে পারে যে একটি প্লাগ-ইন যাচাই করা হয়েছে এবং নিরাপদ (কারণ আমার দ্বারা বা আমার দ্বারা বিশ্বাস করা কোনও) লিখেছেন এবং এটি সংশোধিত হয়নি।

সফ্টওয়্যারটি কেবল একটি মুক্ত উত্স শখের প্রকল্প, তাই আমি অফিসিয়াল শংসাপত্র কেনার জন্য কোনও অর্থ ব্যয় করতে চাই না। পরিবর্তে, আমি ধরে নিই যে মূল প্রোগ্রামটি সর্বদা বৈধ এবং অতিরিক্ত যাচাইকরণ ছাড়াই বিশ্বাসযোগ্য। যদি কেউ আমার গিটহাব সংগ্রহস্থল ব্যতীত অন্য কোনও স্থান থেকে এটি ডাউনলোড করে তবে এটি তাদের দোষ।

আমি যা পড়েছি তা থেকে, স্বাক্ষরটি সাধারণত অসমমিত কী কী তৈরি করে কোড ফাইল থেকে শক্তিশালী ক্রিপ্টোগ্রাফিক হ্যাশ মান (যেমন SHA-512) গণনা করে, আমার ব্যক্তিগত কী ব্যবহার করে হ্যাশ এনক্রিপ্ট করে এবং স্বাক্ষরটি একটি পৃথক ফাইলে সংরক্ষণ করে মূল কোড ফাইলের সাথে প্রেরণ করা হবে।
মূল প্রোগ্রামটির পরে মূল প্রোগ্রামের উত্স কোডের সরল-পাঠ্যে সংরক্ষিত পাবলিক কী ব্যবহার করে স্বাক্ষরটি ডিক্রিপ্ট করতে হবে, কোড ফাইলের একই হ্যাশ ফাংশনটি গণনা করতে হবে এবং তারপরে এটি ডিক্রিপ্ট হওয়া সাথে তুলনা করতে হবে। যদি সেগুলি মিলে যায় তবে প্লাগ-ইনকে বিশ্বাস করা যায়।

সুতরাং এখন আমার প্রশ্ন:

আমি কীভাবে সহজেই উবুন্টু সরঞ্জামগুলির সাথে একটি শক্তিশালী অসমমিত কী কী তৈরি করব এবং আমি কীভাবে সহজেই কোনও ফাইলের একটি ক্রিপ্টোগ্রাফিক হ্যাশ মান গণনা করব?
কোনও স্ক্রিপ্টে স্বাক্ষরকরণ প্রক্রিয়াটি স্বয়ংক্রিয়করণ করা (সর্বদা একই কী ব্যবহার করে) দুর্দান্ত হবে।

উত্তর:


19

এই উত্তরটির বেশিরভাগ অংশটি আর্ক উইকি এবং জ্ঞানপিজি ডকুমেন্টেশন থেকে ছিন্ন করা হয়েছে । এই উত্তরের যে কোনও প্রস্তাবনাগুলি নিখুঁতভাবে আমার মতামত, এবং এক টন নুন দিয়ে নেওয়া উচিত।

পিজিপি কী তৈরি করা হচ্ছে

গুই

  1. পাসওয়ার্ড এবং কী অ্যাপ্লিকেশন (ওরফে seahorse) খুলুন এবং দেখুন +(বা ফাইল -> নতুন যান বা টিপুন CtrlN) এ ক্লিক করুন:

    সিহর্স জন্য নতুন আইটেম ডায়ালগ

  2. পিজিপি কী নির্বাচন করুন এবং আপনার বিশদটি প্রবেশ করান। আমি বাইট কমান্ডারকে নকল করছি:

    কী বিশদ সংলাপ

    RSA এবং 2048 বিট বেশিরভাগ কারণে ভাল। আপনি যদি সাইন ইন করতে শুধুমাত্র এটি ব্যবহার করতে চান তবে ড্রপ-ডাউন মেনু থেকে আরএসএ (কেবলমাত্র সাইন ইন) বিকল্পটি বেছে নিন, তবে আপনার প্রয়োজন হবে না - এটি সাবকি ব্যবহার করে পরিচালনা করা যেতে পারে । আপনি একটি মন্তব্য করতে পারেন। আপনার কীতে মেয়াদোত্তীকরণের তারিখ রাখাও দরকারী। ক্লিক করুন Create

  3. উপযুক্ত দীর্ঘ পাসওয়ার্ড প্রবেশ করান (এবং আমি দীর্ঘ অর্থ , আমার উদাহরণটি ছোট, আইএমও), এবং ক্লিক করুন Ok:

    পাসওয়ার্ড এন্ট্রি ডায়ালগ

    সিএলআইয়ের বিপরীতে সিহর্সের কোনও প্রতিক্রিয়া আছে বলে মনে হয় না। আপনি যা করতে চান তা করে কিছুক্ষণ অপেক্ষা করুন, যখন এটি এনট্রপি সংগ্রহ করে এবং একটি কী তৈরি করে। এটি একটি সময় নিতে পারে। এর পরে, আপনি পিজিপি কী বিভাগে কীগুলি দেখতে পাবেন :

    পিজিপি কীগুলির তালিকা

CLI

কমান্ড লাইন থেকে একটি কী তৈরি করতে, কেবল চালান gpg --gen-key। এটি আপনাকে জিইউআই একই বিবরণ জিজ্ঞাসা করবে:

$ gpg --gen-key 
gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 1y
Key expires at Tuesday 27 September 2016 03:45:19 PM IST
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and E-mail Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: Byte Commander
E-mail address: byte@command.er
Comment: 
You selected this USER-ID:
    "Byte Commander <byte@command.er>"

Change (N)ame, (C)omment, (E)-mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.

passphrase not correctly repeated; try again.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, use the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy!  (Need 186 more bytes)
.....+++++
+++++
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, use the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy!  (Need 80 more bytes)
....+++++

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy!  (Need 83 more bytes)
...+++++
gpg: key 8AE670A6 marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   2  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 2u
gpg: next trustdb check due at 2016-09-26
pub   2048R/8AE670A6 2015-09-28 [expires: 2016-09-27]
      Key fingerprint = 82D9 0644 B265 8E75 1E01  538B B479 3CF4 8AE6 70A6
uid                  Byte Commander <byte@command.er>
sub   2048R/0E2F4FD8 2015-09-28 [expires: 2016-09-27]

ননু জিপিজি কীভাবে আমাদের জানায় এর আরও এনট্রপি দরকার তা নোট করুন। সমুদ্র ঘোড়াও করুক আশা করি। তবে তারপরে আবারও মনে হচ্ছে GnuPG অলিভার টুইস্টের মতো অভিনয় করছে। : P: P

আপনার কী প্রকাশ করা হচ্ছে

এখন, আমাদের সেখানে আমাদের সর্বজনীন কীটি বের করা দরকার, যাতে লোকেরা এটি ব্যবহার করে জিনিসগুলি যাচাই করতে পারে।

গুই

seahorseঅ্যাপের পিজিপি কীগুলির তালিকায় ফিরে যান (শেষ স্ক্রিনশটটি দেখুন)। আপনি যে কী (গুলি) রফতানি করতে চান তা নির্বাচন করুন এবং রিমোট মেনুতে সিঙ্ক এবং প্রকাশ কীগুলি চয়ন করুন :

এখানে চিত্র বর্ণনা লিখুন

Syncযদি আপনি প্রকাশ করতে একটি সার্ভার নির্বাচন করেন নি বোতাম অক্ষম করা। Key Serversবোতামটি ক্লিক করে এটি করুন :

এখানে চিত্র বর্ণনা লিখুন

আমি উবুন্টুর সার্ভারটি বেছে নিয়েছি।

এখন, আপনি Syncবোতামটি ক্লিক করতে পারেন এবং এটি উবুন্টুর কীসারবারে প্রকাশ করতে পারেন (স্প্যামের জন্য দুঃখিত, উবুন্টু!)।

CLI

সি এল এলির সাথে আপনার কীটি প্রকাশ করতে চান তার মূল আইডি দরকার। কীটি তৈরি করার সময় এটি আউটপুটটির একেবারে শেষ লাইন 8AE670A6। আপনি মনে করতে না পারেন এটা কি শুধু চালানোর gpg --list-keys। প্রকাশ করতে:

$ gpg  --keyserver pgp.mit.edu --send-keys 8AE670A6
gpg: sending key 8AE670A6 to hkp server pgp.mit.edu

দুঃখিত, MIT- র

স্বাক্ষর

আমি কোনও নথিতে স্বাক্ষর করার সুবিধাজনক জিইউআই পদ্ধতিটি এখনও জানি না।

আপনি যে ফাইলটি স্বাক্ষর করতে চান তা তৈরি করার পরে টার্মিনালে যান। চেষ্টা করুন gpg --list-keys:

$ gpg --list-keys       
/home/muru/.gnupg/pubring.gpg
---------------------------
pub   2048R/F7878B0C 2015-09-28 [expires: 2016-09-26]
uid                  Byte Commander <byte@command.er>
sub   2048R/345B9A4F 2015-09-28 [expires: 2016-09-26]

আপনি দুটি পদ্ধতি ব্যবহার করে ফাইলটিতে স্বাক্ষর করতে পারেন:

এনক্রিপশন সহ সাইন ইন

$ gpg --sign --output examples.sig examples.desktop 

You need a passphrase to unlock the secret key for
user: "Byte Commander <byte@command.er>"
2048-bit RSA key, ID F7878B0C, created 2015-09-28

gpg: Invalid passphrase; please try again ...

You need a passphrase to unlock the secret key for
user: "Byte Commander <byte@command.er>"
2048-bit RSA key, ID F7878B0C, created 2015-09-28

আপনি যদি কোনও ডেস্কটপ সেশনে থাকেন তবে সম্ভাবনা হ'ল আপনাকে গ্রাফিকাল পাসওয়ার্ড প্রম্পট দিয়ে স্বাগত জানানো হবে। উদাহরণস্বরূপ, জিনোমে:

এখানে চিত্র বর্ণনা লিখুন

যদি প্রাপকের কাছে আপনার সর্বজনীন কী থাকে তবে তারা এটি যাচাই করতে পারে বা ডিক্রিপ্ট করা সামগ্রী পেতে পারে:

$ gpg --verify examples.sig
gpg: Signature made Monday 28 September 2015 03:25:00 PM IST using RSA key ID F7878B0C
gpg: Good signature from "Byte Commander <byte@command.er>"
$ gpg --decrypt examples.sig
[Desktop Entry]
Version=1.0
Type=Link
Name=Examples
Name[aa]=Ceelallo
...
URL=file:///usr/share/example-content/
Icon=folder
X-Ubuntu-Gettext-Domain=example-content

gpg: Signature made Monday 28 September 2015 03:25:00 PM IST using RSA key ID F7878B0C
gpg: Good signature from "Byte Commander <byte@command.er>"

ক্লিয়ারটেক্সট দিয়ে সাইন ইন

আপনি সামগ্রীগুলি এনক্রিপ্ট করতে না চাইতে পারেন, উদাহরণস্বরূপ, কোনও মেল প্রেরণ করার সময়। কোন ক্ষেত্রে, --clearsignবিকল্পটি ব্যবহার করুন :

$ gpg --clearsign examples.desktop 

You need a passphrase to unlock the secret key for
user: "Byte Commander <byte@command.er>"
2048-bit RSA key, ID F7878B0C, created 2015-09-28

$ cat examples.desktop.asc 
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

[Desktop Entry]
Version=1.0
Type=Link
Name=Examples
Name[aa]=Ceelallo
...
URL=file:///usr/share/example-content/
Icon=folder
X-Ubuntu-Gettext-Domain=example-content

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJWCRAaAAoJEGUZkqX3h4sMBWsH/1yw+G0v5Ck+T3PBS90SkvC8
5C0FJeGVr0AgYQohhsE3zEGQ7nn53N7JsvNlF6VccvN99DZIp18JbrJ+qs5hWjtg
KU/ACleR5dvVrJgfjppkuC8Q3cAudvqciKlLjA7Xycr3P49oCNCy8k/ue2TrgCvS
mMb5IS/kqpO7wrOMBAR0c/2CjQsA91S1/YK7DbuUqeNgEzW1grsI7XZPhiDGpAib
D20HWrbdLhklAEJuo1EvuOIggW6MF6ksxDoVapsUzQalD0TWEq6OnvzIS5qhITrc
XaDPQJpiHyCyINnL5aZCUwr2uon7osJ+2a8Ahp1REpzIZTdND9jA5NWSel5+yAs=
=ZrtB
-----END PGP SIGNATURE-----

স্বাক্ষর জন্য স্বতন্ত্র ফাইল, স্বাক্ষর জন্য পৃথক (স্বাক্ষর)

সবশেষে, কিছু ফাইলের জন্য, দস্তাবেজে আপনার স্বাক্ষর থাকতে পারে না। উদাহরণস্বরূপ, প্যাকেজিং ফাইলগুলি বা কোনও সংগ্রহস্থলের জন্য মেটাডেটা, উভয়েরই একটি নির্দিষ্ট প্রকৃতির সামগ্রী রয়েছে যা এম্বেড থাকা স্বাক্ষরগুলিকে সহজেই অনুমতি দেয় না। এই ক্ষেত্রে, আপনি --detached-sigবিকল্পটি ব্যবহার করুন :

$ gpg --output examples.desktop.sig --detach-sign examples.desktop

You need a passphrase to unlock the secret key for
user: "Byte Commander <byte@command.er>"
2048-bit RSA key, ID F7878B0C, created 2015-09-28

$ gpg --verify examples.desktop.sig examples.desktop
gpg: Signature made Monday 28 September 2015 03:35:55 PM IST using RSA key ID F7878B0C
gpg: Good signature from "Byte Commander <byte@command.er>"

বিঃদ্রঃ

এনক্রিপশন + সাইন ইন এবং স্বতন্ত্র স্বাক্ষরে, এর আউটপুট gpgবাইনারি হয়। --armorবিকল্পটি (এএসসিআইআই-আর্মার্ড) ব্যবহার করে আপনার GnuPG আউটপুট বেস 64-এনকোডড ডেটা রাখতে পারেন ।

স্বয়ংক্রিয়তা

স্ক্রিপ্ট স্বাক্ষর করতে, আপনি করতে পারেন:


খুব সুন্দর এবং বিস্তারিত উত্তর। তবে আপনি তৈরি উদাহরণ কীগুলি সম্পর্কে ... আমি জানি না যে আমার ছদ্মনামের জন্য অব্যবহৃত কীগুলির একটি সেট চারপাশে পড়েছে এই বিষয়ে আমি খুব খুশি। আমি যদি পরে সেই নামের সাথে আসল কীগুলি তৈরি করতে এবং সেগুলি ব্যবহার করতে চাই তবে তাদের জন্য অনুসন্ধান করা লোকেরা বিভ্রান্ত হতে পারে। আমি আপনার উদাহরণ কীগুলি অনুমান করি এবং আমার আসল কীগুলি বিভিন্ন ইমেল-ঠিকানাগুলির কারণে সহাবস্থান করতে সক্ষম হবে এবং সে কারণে একটি আলাদা আইডি পাবে, তবে এখনও ... আপনি কি সেই কীগুলি আবার মুছতে পারবেন?
বাইট কমান্ডার

@ বাইটকম্যান্ডার শব্দটি প্রত্যাহার করা হয় । আমি তাদের প্রত্যাহার করে দেখব। এই বিষয়ে, আমার চাবি প্রত্যাহারের উপর একটি বিভাগ যুক্ত করা উচিত।
মুড়ু

@ বাইটকম্যান্ডার দুঃখিত, আমি প্রকাশিত কীটি মুছে ফেলেছি (এবং প্রত্যাহার শংসাপত্রটি তৈরি করা হয়নি (ক্লাসিক এন 100 বি ভুল), তাই আমি এই চাবিটি প্রত্যাহার করতে পারি না however এটির অবশ্য এক বছরের মেয়াদ শেষ হবে, সুতরাং, ভাল, যে কোনও বিভ্রান্তি এক বছরেই সমাধান হয়ে যাবে
মুরু

ঠিক আছে, ভাল - এটা ঘটে। আমার বিরক্ত হওয়া উচিত বা ঠিক সেই নির্বোধের ভুলটি সম্পর্কে হাসি উচিত কিনা তা নিশ্চিত নই ... আমি মনে করি আমার প্রকল্পের জন্য আমি বরং পাইথন মডিউলটি ব্যবহার করব rsaযা সমস্ত জিপিজি স্টাফের সাথে লড়াই না করেই সহজেই ডেটা সাইন করতে দেয়। আমি বাস্তবের জন্য প্রকাশনা এবং প্যাকেজিং সফ্টওয়্যারটি একবার চালু করার পরে এটি খুব কার্যকর হয়ে উঠতে পারে তবে খুব সম্ভবত এই মুহুর্তে আমার উদ্দেশ্যটির জন্য খুব বেশি। ততক্ষণে সম্ভবত এটির মেয়াদ শেষ হয়ে যাবে! :)
বাইট কমান্ডার

আমি মনে করি @ বাইটকম্যান্ডার দু'জনেই। যদিও আমি আপনাকে কীটি তৈরি করার সময় আপনার আসল নামটি ব্যবহার করার পরামর্শ দিচ্ছি এবং মন্তব্য ক্ষেত্রের জন্য ডাকটি ছেড়ে দেব।
মুড়ু

4
  1. জিপিজি সহ একটি অসম্পূর্ণ কী তৈরি করুন

    gpg --gen-key
    
  2. আপনার ফাইলে সাইন ইন করতে জিপিজি ব্যবহার করুন (আপনার ব্যক্তিগত কী ব্যবহার করা হয়েছে)

    gpg --output foo.sig --detach-sig foo.py
    
  3. স্বাক্ষর ফাইলটি পরীক্ষা করুন (আপনার সর্বজনীন কী ব্যবহৃত হয়েছে)

    gpg --verify foo.sig foo.py
    

    উদাহরণ আউটপুট

    % gpg --verify foo.sig foo.py 
    gpg: Signature made Mo 28 Sep 2015 12:46:04 CEST using RSA key ID 89B30DEC
    gpg: Good signature from "Your Name <your.name@host.com>"
    
    % echo "bad" >> foo.py
    
    % gpg --verify foo.sig foo.py
    gpg: Signature made Mo 28 Sep 2015 12:46:04 CEST using RSA key ID 89B30DEC
    gpg: BAD signature from "Your Name <your.name@host.com>"
    
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.