استفاده از gpg در نرم افزار

برای استفاده از gpg توی نرم‌افزار، چه روشی رو پیشنهاد میکنید؟

من لایبرری درست و حسابی براش پیدا نکردم!
این صفحه‌ی خودشه که لایبرریها رو معرفی کرده.
لایبرری C که اصلا کار نمیکنه. حتی نمونه کد‌هاش رو نتونستم کامپایل کنم.
لایبرریهای پایتون هم هرکدوم یه مشکلی دارن. یا داکیومنت ندارن. یا بعضی قسمتهاشون کار نمیکنه. (احتمالا با نسخه‌ی gpg موجود روی سیستمم مطابقت نداره)

یه روش دیگه هم هست، که کامند بفرستم به شل و با آرگومانهای نرم‌افزار gpg کار کنم. خودش گفته این‌کار خوب نیست و منم میدونم منظورش چیه.

حالا شما چه روشی رو پیشنهاد میکنید؟ اگه تجربه‌ی انجام اینکار توی یه زبون دیگه رو دارید هم ممنون میشم لایبرری یا روش کار رو بهم معرفی کنید. مشکلی با تعویض زبان برنامه نویسی ندارم. (مثلا جاوا یا کلوژور) پروژه تفریحیه. چه بهتر که چهارتا چیز جدید هم تجربه کنم. (اگه بشه نرم افزار اندروید هم ازش گرفت که نور‌علی‌نوره)

حتی اگه جایگزینی برای gpg توی public key encryption و digital signature سراغ دارید هم خوبه. البته بجز الگوریتم rsa. همین الآن با rsa کار میکنم و به خاطر کند بودن و محدودیت حجم دیتا (که باید کوچیکتر از کلید باشه) مشکل دارم. و احتمالا استفاده از یه چیزی مثل gpg که متشکل از چندین الگوریتم رمزنگاریه عقلانی‌تر از استفاده از یه دونه الگوریتمه!

شاید بهتر باشه بدونم چه کار می خوای انجام بدی دقیقا

به زبان ساده، مسنجر.
دوتا کلید پابلیک رد بشه و پیامها و فایلها با اون کلیدها رمز بشه.

ولی نمیخوام کاربر بره تو ترمیال کلید بسازه اد کنه تو نرم افزار. میخوام خود نرم افزار اینکارها رو انجام بده.

با چه زبانی؟

با پایتون نوشتم و با rsa پیام رو رمزنگاری میکنه. (دیدم محدودیت حجم داره خواستم برم سراغ gpg که نشد)
با c هم نوشتم ولی بدون رمزنگاری (هدفم این بود که مستقیم برم سراغ gpg که نشد.)

ولی زبان اصلا مهم نیست. هرچی شما بگی :wink:

برای پایتون فکر می کنم این کتابخونه جوابتو بده.

https://cryptography.io/en/latest/

1 پسندیده

مثل اینکه gpg نداره. یه سری الگوریتمهای خودشه.
مرسی.

کلوژور چطور؟
منکه دارم کلوژور یاد میگیرم. یه پروژه هم باهاش بزنم بد نیست.
به بایت‌کد جاوا هم که کامپایل میشه، احتمالا بشه فرستاد تو اندروید.

اصلا چ ربطی به زبان داره این الگوریتم های رمزنگاری ؟؟‌ اینها استاندارد هایی هستن ک تعریف شدن … و صرفا رپ شدن به زبان ها … ک راحت استفاده بشه …

تامین امنیت ارتباط با شل هم بر عهده شماست … نه ک اگر با شل ارتباط برقرار کنید ایمنی تون کلا به خطر بیفته …

راه خوبش (چیزی ک تلگرام هم استفاده میکنه) اینه ک متن رو درصورتی ک از حد مجاز بیرون زد … بشکنید به چند تکه و با rsa رمز کنید … اما بقول خودتون RSA کند هست … چون میخاد سکیوریتی بالایی تامین کنه … AES256 / 512 راه حل های جایگزین هستن … اما مشکل اینه ک عینن باید کلید ها برای طرفین موجود باشه (به تفکیک خصوصی و عمومی نیستن) …

باید یکم راه حل های ابتکاری و مطالعه تو حیطه رمزنگاری انجام بدید … و همینطور با ۱زبان اینکار امکان پذیر نیست( سورس صرفا اندرویدی تلگرام رو نگاه کنید … توش C هم بکار رفته … برای قسمت های کانورت ویدیو/گیف و… و قسمت هایی ک پرفورمنس نیازه) …

1 پسندیده

شما کاری به GPG نباید داشته باشی. شما الگریتم برات مهمه نه ابزار. کتابخانه های زیادی هستند که از الگریتم های مختلف پشتیبانی میکنن.

واسه JVM کتابخونه فت فراون هست مخصوص این کار.

1 پسندیده

میدونم ولی باید یه چیزی داشته باشم که صداش بزنم کارو برام انجام بده دیگه! مشکل من همین ساپورت نشدن wrapper هاست. یا اصلا کار نمیکنن، یا داکیومنت ندارن و ۴سال پیش آخرین کامیت زده شده، یا یه سری از کدهایی که توی داکیومنت هست ارورهای عجیب میده (احتمالا قدیمیه).

تامین امنیت مساله‌ی خاصی نیست، تغییراتی که ممکنه توی نسخه‌های مختلف نرم افزار شل وجود داشته باشه هم مساله‌ایه. من Arch دارم. آخرین نسخه‌ی نرم افزاره. یکی Debian داره شاید نسخه‌ی ۲سال پیش باشه. میدونم که آرگومانها معمولا تغییر نمیکنن ولی به هر حال سازگاری پایین میاد.

نمیدونستم تلگرام اینکارو میکنه! اتفاقا ماژول rsa توی پایتون این قابلیت رو خودش داره (تو داکیومنت با عنوان large file یا همچین چیزی اومده) ولی فکر نمیکردم راه حل خوبی باشه برای این کار. فکر میکردم صرفا برای «کار راه انداختن» باشه.

ممنون بابت آلترناتیو.
با همچین چیزی هم آشنا هستم. میشه یه جفت کلید RSA درست کرد و کلیدهای الگوریتم دیگه ای رو از طریق RSA منتقل کرد و بعد با اون الگوریتم اصلی، ارتباط برقرار کرد. یه نگاری به AES میندازم. شاید این روش کارمو راه بندازه.
(یه جا خوندم که GPG با همچین روشی کار میکنه)

حالا یواش یواش :slight_smile: فعلا از صحت کار مطمئن بشم. بعد…

والا من GPG رو به عنوان بهترین راه به حساب میاوردم. برای همین روش تاکید داشتم.
پس با این شرایط کار حتی راحتتر (بخونید «جذابتر») هم شد.

از ساختار جاوا متنفرم. حتی بیشتر از php :sweat_smile:
ولی امیدوارم Clojure بتونه کمک کنه از قابلیتهای جاوا استفاده کنم بدون اینکه با خودش دست به یقه شم.

ممنون از هردو بابت راهنمایی.

کلا GPG یه نرم افزار پیاده کننده یه سری الگریتم هست که شما هم همونا رو می تونین با استفاده از یه کتابخونه پیدا کنید.
در مورد JVM و اینا هم مطمئنم که کتابخونه Clojure هست براش اما من اطلاعی ندارم اما اگرم نباشه شما جاوا نخواهید نوشت و از همون کتابخونه تو کد clojure می تونین استفاده کنین.

1 پسندیده

داداش رو سرور آرچ نزن بالا غیرتا :neutral_face: یه دبیان بزن تا اخر لایف سایکل نگهش دار … و صرفا آپدیت های امنیتی رو بگیر… یا سنت او اس بزن … لایف سایکل طولانی تری داره … من کتاب شل اسکریپت مال 10سال پیش رو خوندم … کامند ها عینن اجرا شدن . بجز موارد معدود ک تغییر تو ارگومان ها بودن ( ک بعیده حتی بکارت بیان! یا استفاده کرده باشیش!) …

الان یه پیام دراز بنویس … برا یکی ارسالش کنی… قدیم یه ارور too large میداد … الان چند تیکه میکندش و میفرسته …

خوب. خیلی مسائل روشن شد.

درمورد من چی فکر کردین؟ :joy:
کامپیوتر شخصیم آرچه. سرورها تقریبا همیشه Centos هستن مگر اینکه واسه کسی کار انجام بدم و طرف روی اوبونتو یه چیزای استیبل دیگه اصرار داشته باشه.
مساله اینه که نمیخوام این مسنجر، تمرکز خاصی روی سرور داشته باشه. میخوام همش دست خود یوزر باشه. سرور فقط دیتا رو از اینطرف بگیره بفرسته اونطرف. (مثل سرور mega.nz که خودش هم نمیدونه چه فایلی توشه)

والا اینی که من دارم استفاده میکنم الآن هم ارور میده.
ولی مساله ای نیست. توی خود لایبرری پایتونی که گفتم این قابلیت هست. فقط باید یه مقدار توی کد تغییرات بدم.

و البته پروژه تفریحیه در کنار کار اصلیم دارم انجام میدم و هدف اصلیم یاد گرفتنه. «نتیجه گرفتن» اولویت آخره!