কেবল এসএসএইচ -প্রাইভ-কী দিয়ে ফাইল এনক্রিপ্ট করা হচ্ছে?


22

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

  1. ধরুন আমি এসএসএইচ-এজেন্ট ব্যবহার করছি, কেবল পরে ফাইলটি খোলার জন্য কি এনক্রিপ্ট করার কোনও সহজ উপায় আছে?

  2. আমি কেন জিপিজি ব্যবহার করব তা দেখতে পাচ্ছি না, এখানে প্রশ্ন করুন ; মূলত আমি পাসওয়ার্ডটি জানি এবং আমি আমার এসএসএইচ কী হিসাবে একই পাসওয়ার্ড দিয়ে ফাইলটি ডিক্রিপ্ট করতে চাই। এটা কি সম্ভব?

উত্তর:


27

আমি মনে করি আপনার প্রয়োজনীয়তা বৈধ, তবে অন্যদিকে এটিও কঠিন, কারণ আপনি প্রতিসাম্য এবং অ্যাসিমেট্রিক এনক্রিপশন মিশ্রণ করছেন। আমি ভুল হলে আমাকে সংশোধন করুন।

রিজনিং:

  1. আপনার ব্যক্তিগত কী এর পাসফ্রেজটি হ'ল আপনার ব্যক্তিগত কী এবং অন্য কিছুই রক্ষা করা নয়।
  2. এটি নিম্নলিখিত পরিস্থিতির দিকে নিয়ে যায়: আপনি এমন কিছু এনক্রিপ্ট করতে আপনার ব্যক্তিগত কীটি ব্যবহার করতে চান যা কেবল আপনি ডিক্রিপ্ট করতে পারবেন। আপনার ব্যক্তিগত কী এর জন্য নয়, আপনার সর্বজনীন কী এটি করার জন্য রয়েছে। আপনি আপনার ব্যক্তিগত কী দিয়ে যা কিছু এনক্রিপ্ট করবেন তা আপনার জনসাধারণ কী (স্বাক্ষর) দ্বারা ডিক্রিপ্ট করা যেতে পারে, এটি অবশ্যই আপনি চান না। (আপনার সার্বজনীন কী দ্বারা যা কিছু এনক্রিপ্ট করা হবে তা কেবল আপনার ব্যক্তিগত কী দ্বারা ডিক্রিপ্ট করা যেতে পারে))
  3. সুতরাং আপনাকে আপনার ডেটা এনক্রিপ্ট করার জন্য আপনার সর্বজনীন কী ব্যবহার করতে হবে তবে তার জন্য আপনার ব্যক্তিগত কী পাসফ্রেজের দরকার নেই। আপনি যদি এটি ডিক্রিপ্ট করতে চান তবে আপনার ব্যক্তিগত কী এবং পাসফ্রেজের দরকার হবে।

উপসংহার: মূলত আপনি প্রতিসামান্য এনক্রিপশনের জন্য আপনার পাসফ্রেজটি পুনরায় ব্যবহার করতে চান। আপনি নিজের পাসফ্রেজটি দিতে যে একমাত্র প্রোগ্রামটি চান সেটি হ'ল ssh-এজেন্ট এবং এই প্রোগ্রামটি কেবল পাসফ্রেজের সাহায্যে এনক্রিপশন / ডিক্রিপশন করে না। পাসফ্রেজটি কেবলমাত্র আপনার ব্যক্তিগত কী আনলক করার জন্য রয়েছে এবং তারপরে ভুলে গিয়েছে।

প্রস্তাবনা: এনক্রিপশনের জন্য openssl encবা gpg -e --symmetricপাসফ্রেজ-সুরক্ষিত কীফিলগুলি সহ বা ব্যবহার করুন । আপনার যদি তথ্য ভাগ করে নেওয়ার দরকার হয় তবে আপনি উভয় প্রোগ্রামের সর্বজনীন কী অবকাঠামো ব্যবহার করে একটি পিকেআই / ট্রাস্ট অফ ওয়েব তৈরি করতে পারেন।

ওপেনসেল সহ, এরকম কিছু:

$ openssl enc -aes-256-ctr -in my.pdf -out mydata.enc 

এবং ডিক্রিপশন মত কিছু

$ openssl enc -aes-256-ctr -d -in mydata.enc -out mydecrypted.pdf

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


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

1
আপনি কেন প্রতিসামগ্রী-ফ্ল্যাজ সঙ্গে জিপিজি পরামর্শ দেন? এটি "gpg -e something"কিন্তু বিভিন্ন ক্ষেত্রে কাজ করে?

1
@hhh আমি ধরে নিয়েছি যে আপনি আপনার ফাইলগুলি ভাগ করবেন না, সুতরাং সরল কী প্রতিলিপি ব্যবহারের চেয়ে কেবল সরল প্রতিসম ব্যবহারটি আরও সুরক্ষিত। পাবলিক / প্রাইভেট কিপায়ার ইত্যাদির দরকার নেই। pgp.net/pgpnet/pgp-faq/… থেকে : "এটি এখনও বিশ্বাস করা হয় যে পিজিপি চেইনের আরএসএই দুর্বলতম লিঙ্ক।" এটি x509 এর মতো অন্যান্য পাবকি প্রক্রিয়াতেও প্রযোজ্য।
ভাস্কেজ

1
ওপেনসেল-এক-লাইনার দেখতে কেমন হবে? সমান কিছু $ gpg -e --symmetric?

1
এনক্রিপ্ট করতে এটি ব্যবহার করুন: openssl enc -aes-256-cbc -in my.pdf -out mydata.encদিয়ে ডিক্রিপ্ট করুন: openssl enc -aes-256-cbc -d -in mydata.enc -out mydecrypted.pdfউভয় কমান্ডই পাসওয়ার্ডের জন্য জিজ্ঞাসা করে। দেখুন man enc(চালু RH / Fedora / CentOS) keyfiles মত সব অপশন করুন Base64- এনকোডিং ইত্যাদি জন্য
Vasquez

21

আমি opensslইউটিলিটিটি প্রায় সর্বব্যাপী বলে মনে হচ্ছে এটি ব্যবহার করতে পছন্দ করব ।

আরএসএর সর্বজনীন কী এবং প্রাইভেট কীকে পিইএম ফর্ম্যাটে রূপান্তর করুন:

$ openssl rsa -in ~/.ssh/id_rsa -outform pem > id_rsa.pem
$ openssl rsa -in ~/.ssh/id_rsa -pubout -outform pem > id_rsa.pub.pem

আপনার সর্বজনীন কী দিয়ে একটি ফাইল এনক্রিপ্ট করা:

$ openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem -in file.txt -out file.enc

আপনার ব্যক্তিগত কী দিয়ে ফাইলটি ডিক্রিপ্ট করছে:

$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc -out file.txt

তবে, গিলস যেহেতু উপরে মন্তব্য করেছেন এটি কেবল আপনার পাবলিক কী-এর চেয়ে ছোট ফাইলগুলি এনক্রিপ্ট করার জন্য উপযুক্ত, সুতরাং আপনি এটির মতো কিছু করতে পারেন:

একটি পাসওয়ার্ড তৈরি করুন, এটির সাথে সিমেট্রিকভাবে ফাইলটি এনক্রিপ্ট করুন এবং আপনার সর্বজনীন দিয়ে পাসওয়ার্ড এনক্রিপ্ট করুন, কী এটিকে ফাইলটিতে সংরক্ষণ করে:

$ openssl rand 64 | 
tee >(openssl enc -aes-256-cbc -pass stdin -in file.txt -out file.enc) |
openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem  -out file.enc.key

আপনার ব্যক্তিগত কী দিয়ে পাসফ্রেজটি ডিক্রিপ্ট করুন এবং ফাইলটি ডিক্রিপ্ট করার জন্য এটি ব্যবহার করুন:

$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc.key | 
openssl enc -aes-256-cbc -pass stdin -d -in file.enc -out file.txt

আপনার দুটি ফাইল, আপনার এনক্রিপ্ট করা ফাইল এবং আপনার এনক্রিপ্ট হওয়া পাসফ্রেজ সমাপ্ত হবে তবে এটি একটি দুর্দান্ত স্ক্রিপ্টে স্ক্রিপ্টে রেখে দেবে ly

আপনি এমনকি একটি যোগ করতে পারে tar cvf file file.enc file.enc.key পরিপাটি করতে ।

সর্বোত্তমভাবে, আপনি আপনার পাসফ্রেজের আকারকে সর্বাধিক করে তুলবেন এবং পাশাপাশি rand 64আপনার পাবলিক কী আকারে পরিবর্তন করবেন।


ওপি'র উদ্বেগের প্রয়োজনীয়তা বিবেচনা করে খুব সুন্দরভাবে সম্পন্ন করেছেন।
আরএসউ

2
কেবলমাত্র এটি পাওয়া গেছে, একটি ভাল পোস্ট। আমি দেখতে পেলাম যে আপনি সর্বাধিক আকারের প্রতিসাম্য কীটি আপনি ssh-key থেকে উত্পন্ন করতে পারবেন তা ssh-key থেকে 12 বাইট সংক্ষিপ্ত নয় অন্যথায় rsautl "কী আকারের জন্য খুব বড় ডেটা" দিয়ে ব্যর্থ হবে। সুতরাং এটি একটি স্ক্রিপ্টে কাজ করেছে: KEYLEN_BYTES=$(ssh-keygen -l -f $PRIV_KEY | awk '{printf("%d", ($1 - 96) / 8)}')কী দৈর্ঘ্যের স্বয়ংক্রিয়তা বাড়ানোর জন্য। প্রদত্ত এসএস-কিজেনের ন্যূনতম কীল দৈর্ঘ্য 768 বিট রয়েছে, এটি এখনও 672 বিট বা 84 বাইটের ন্যূনতম প্রতিসাম্য কী বাড়ে।
মার্কফ

6

লুক / ডিএম-ক্রিপ্ট দেখুন । আপনি উপযুক্ত বিকল্পটি ব্যবহার করে এনক্রিপশন কী হিসাবে আপনার এসএস-প্রাইভেট-কীটি ব্যবহার করতে পারেন।

আপডেট: এলভি-ব্লক-ডিভাইস (ভিজি সিস্টেমে এলভি পরীক্ষা) দিয়ে LUKS ব্যবহার করে উদাহরণ এনক্রিপশন:

KEY=/home/youraccount/.ssh/id_dsa
DEVICE=/dev/system/test
cryptsetup luksFormat $DEVICE $KEY
cryptsetup luksOpen $DEVICE test_crypt --key-file $KEY

এটিতে কোনও ব্লক-ডিভাইস / dev / mapper / test_crypt উত্পন্ন করা উচিত যা আপনি আপনার ডেটা (আপনার পছন্দের ফাইল সিস্টেমের সাথে ফরম্যাট করার পরে) সঞ্চয় করতে ব্যবহার করতে পারেন।

এ থেকে মুক্তি পেতে, এটি ব্যবহার করুন এবং ব্যবহার করুন cryptsetup luksClose test_crypt


আপনি কী এমভিওকে দিতে পারবেন যাতে এটি পুনরায় ব্যবহার করা সহজ? "$ sudo apt-get install cryptmount crypt-setup; cat '...' > bin/myEncrypt.sh; chmod +x bin/myEncrypt.sh; ./bin/myEncrypt.sh; ...; ..."আমি যদি সঠিকভাবে বুঝতে পারি তবে এই পদ্ধতিটি ফাইল-সিস্টেম-স্তরের এনক্রিপশন। এটি আপনার চূড়ান্ত / মাউন্ট প্রয়োজন যা fs এনক্রিপ্ট করে বা আমি এটি ভুল পড়ছি?

2
আপনি যা ভাবেন এটি এটি করে তা আমি ভাবি না। --key-fileCryptsetup করার বিকল্প এক বড় পাসওয়ার্ড ফাইলের প্রকৃত বিষয়বস্তু ব্যবহার করে। এটি ফাইলের বাইরে ওপেনসেল কীটি পড়তে পারে না এবং এটি ব্যবহার করে। আপনি চাইলে আপনি এলোমেলো বাইটের একটি ফাইল ব্যবহার --key-fileকরতে পারেন।
প্যাট্রিক 7

@hhh হ্যাঁ এটি একটি এফএস-স্তর-এনক্রিপশন।
নিলস

4
@ নীল তবে যখন তিনি তার ব্যক্তিগত কীতে পাসওয়ার্ড পরিবর্তন করেন তখন কী কী ফাইলের ডেটা পরিবর্তিত হয় সে তার ফাইলগুলি ডিক্রিপ্ট করতে সক্ষম হবে না। --key-fileবিকল্পটির পক্ষে সত্যই বাজে নাম নির্বাচন করা উচিত, এটি হওয়া উচিত--password-file
প্যাট্রিক

1
@ পেট্রিক এটি সত্য - পাসফ্রেজ পরিবর্তন করা ফাইল এবং এইভাবে কী (লুসের দৃষ্টিকোণ থেকে) পরিবর্তন করবে। তবে এসএসএসের দৃষ্টিকোণ থেকে আমি এটি কোনও পাসওয়ার্ড ফাইলের নাম দেব না। আমি জানি যে আমার উত্তরটি চিহ্নটিকে আঘাত করে না - তবে আমি মনে করি এটি কিছু ধারণা সরবরাহ করবে।
নিলস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.