জিপিজি দিয়ে স্বাক্ষর বিশ্বাসকে বৈধকরণ করছেন?


13

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

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

# gpg -v < foo.asc
Version: GnuPG v1.4.11 (GNU/Linux)
gpg: armor header: 
gpg: original file name=''
this is a test
gpg: Signature made Fri 22 Jul 2011 11:34:02 AM EDT using RSA key ID ABCD00B0
gpg: using PGP trust model
gpg: Good signature from "Testing Key <someone@example.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: ABCD 1234 0527 9D0C 3C4A  CAFE BABE DEAD BEEF 00B0
gpg: binary signature, digest algorithm SHA1

আমরা যে অংশটি যত্ন করি তা হ'ল:

gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.

এক্ষেত্রে জিপিজি দ্বারা ফিরে আসা প্রস্থান কোডটি 0, বিশ্বাসের ব্যর্থতা সত্ত্বেও:

# echo $?
0

কোনও অবিশ্বস্ত স্বাক্ষর দিয়ে স্বাক্ষরিত ইভেন্টে আমরা কীভাবে জিপিজি পেতে পারি?

আমি কিছু পরামর্শ দেখেছি যে gpgvকমান্ডটি একটি সঠিক প্রস্থান কোডটি ফিরিয়ে দেবে, তবে দুর্ভাগ্যক্রমে gpgvকীਸਰওয়ার থেকে কীগুলি আনতে হবে তা জানে না। আমি অনুমান করি যে আমরা স্ট্যাটাস আউটপুট (--status-fd ব্যবহার করে) পার্স করতে পারি gpg, তবে এর থেকে আরও ভাল উপায় কি আছে?

উত্তর:


6

এটিই দিয়ে শেষ হয়েছিল:

#!/bin/sh

tmpfile=$(mktemp gpgverifyXXXXXX)
trap "rm -f $tmpfile" EXIT

gpg --status-fd 3 --verify "$@" 3> $tmpfile || exit 1
egrep -q '^\[GNUPG:] TRUST_(ULTIMATE|FULLY)' $tmpfile

এটি gpgআউটপুট করে এমন বিশ্বাসের তথ্য অনুসন্ধান করে --status-fd। অবিশ্বস্ত স্বাক্ষর (বা অবৈধ / স্বাক্ষর নেই) এর উপস্থিতিতে একটি ত্রুটি নিয়ে স্ক্রিপ্টটি প্রস্থান করে:

$ sh checksig sample.sh.bad 
gpg: Signature made Mon 24 Jun 2013 11:42:58 AM EDT using RSA key ID DCD5C569
gpg: Good signature from "Test User <testuser@example.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 6FCD 3CF0 8BBC AD50 662E  5070 E33E D53C DCD5 C569
$ echo $?
1

কোনও বৈধ, বিশ্বস্ত স্বাক্ষরের উপস্থিতিতে কোনও ত্রুটি ছাড়াই স্ক্রিপ্টটি প্রস্থান করে:

$ sh checksig sample.sh.good
gpg: Signature made Mon 24 Jun 2013 11:38:49 AM EDT using RSA key ID 5C2864A8
gpg: Good signature from "Lars Kellogg-Stedman <...>"
$ echo $?
0

5

সুতরাং আমাকে সমস্যাটি বিভক্ত করার চেষ্টা করুন:

প্রথম ইস্যুতে মনে হচ্ছে আপনার যে চাবিটি পরীক্ষা করছেন তার অবিশ্বস্ত।

gpg -v < test.txt.asc 
gpg: armor header: Version: GnuPG v1.4.11 (GNU/Linux)
gpg: original file name='test.txt'
this is a test
gpg: Signature made Thu 11 Aug 2011 09:09:35 PM EST using RSA key ID FE1B770E
gpg: using PGP trust model
gpg: Good signature from "John Doe <jdoe@noemail.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 5DD8 216D ADB1 51E8 4326  3ACA 1DED BB72 FE1B 770E
gpg: binary signature, digest algorithm SHA1

আমি অনুমান এই ইচ্ছাকৃত ... কিন্তু আগে আমরা ফিক্স কিভাবে পেতে, আমাকে সুপারিশ আপনি ব্যবহার gpgv পরিবর্তে জন্য gpg -v ? আপনি এক মিনিটের মধ্যে কেন তা দেখতে পাবেন:

$ gpgv < test.txt.asc 
gpgv: keyblock resource `/user/.gnupg/trustedkeys.gpg': file open error
gpgv: Signature made Thu 11 Aug 2011 09:09:35 PM EST using RSA key ID FE1B770E
gpgv: Can't check signature: public key not found

$ echo $?
2

কোনও কী নেই, কোনও আস্থা নেই ... না আমরা কীটি বিশ্বস্তকিস.gpg তে আমদানি করি না

$ gpg --no-default-keyring --keyring trustedkeys.gpg --import jdoe_pub.gpg
gpg: keyring `/user/.gnupg/trustedkeys.gpg' created
gpg: key FE1B770E: public key "John Doe <jdoe@noemail.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
$ gpgv < test.txt.asc 
gpgv: Signature made Thu 11 Aug 2011 09:09:35 PM EST using RSA key ID FE1B770E
gpgv: Good signature from "John Doe <jdoe@noemail.com>"

$ echo $?
0

আশা করি এটা সাহায্য করবে


আমি আমার প্রশ্নে জিপিজিভিতে মন্তব্য করেছি - জিপিজিভিতে সমস্যাটি হ'ল এটি যখন আরও কার্যকর ত্রুটি কোডটি ফেরত পাঠায়, কীਸਰওয়ার থেকে কী কী কীভাবে আনতে হয় তা তা জানে না।
লারস্কস

1

দুটি বিকল্প মাথায় আসে (আউটপুট পার্সিং ব্যতীত)।

একটি দ্রুত এবং নোংরা উপায় হ'ল উভয় gpg এবং চালানো gpgv। প্রথম রানটি gpgকী-সার্ভার থেকে কীটি আনার বিষয়টি নিশ্চিত gpgvকরবে এবং তারপরে আপনি যে রিটার্ন কোড চান তা আপনাকে দেবে।

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

GPGME গ্রন্থাগারটি আমি এটি ব্যবহার করার সময় কীসার্সের সাথে কথা বলে মনে হচ্ছে যদিও আপনি এটি নিশ্চিত করতে চান। আমি একটি বিট কোড লিখেছি যা রুবি জিপিজিএম লাইব্রেরি ব্যবহার করে ( সই স্বাক্ষরকারী যাচাই করে এমন কোডের সন্ধান করুন verifyএবং verified_ok?এমন sig_output_linesকোনও কোডের জন্য যা স্বাক্ষর বিশ্বাসযোগ্য কিনা তা খুঁজে বের করে)।


-1

আপনার সিস্টেম কনফিগারেশনটিকে পুতুল বা শেফের মতো কোনও সরঞ্জামে স্থানান্তরিত করার বিষয়ে কী ?

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

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