سی میں امنپسندانہ رابطہپسندانہ علاج تعمیر کرنے کے لئے ضروری تجاویز
عمل میں آنے سے پہلے اپنے ترقیاتی ماحول کو یقینی بنائیں، سوئچ پروگرامنگ کا بنیادی علم اور اوپن ایس ایل ایل ایل ایل ایل ایل ایل ایل پر رورسائیس کی تنصیبات فراہم کرتا ہے جس سے آپ کے پیکج مینیجر (مثلاً:T0com یا بنام) پر محفوظ گفتگو کے لیے معیار کا انتخاب ہوتا ہے۔
یہ بات سمجھ میں نہیں آتی کہ یہ عمارت کس لحاظ سے تعمیر ہوئی ہے ۔
ایک محفوظ رابطہ پروٹوکول تین ستونوں پر منحصر ہے: خفیہ، دیانت اور تصدیق۔ توثیقی عمل کو خفیہ طریقے سے حاصل کیا جاتا ہے، یہ یقین دلانا کہ صرف مقصد دینے والا پیغام کو پڑھ سکتا ہے
ایسایس کیساتھ ہمجنسپرستی
access-date=, date=, archive-date= (معاونت) یہ سب سے زیادہ استعمال ہونے والا سامی میٹر (ASymrtic sperter) ہے یہ 128-bit بلاک بلاکوں پر کام کرتا ہے اور اس کی مدد کرتا ہے 128، 192 یا 256 بٹوں کی کل ادائیگیوں کی حمایت کرتا ہے. محفوظ رابطہ کے لیے، جو Galois/CM) دونوں خفیہ اور دیانتداری کو ایک ہی عمل میں رکھتا ہے. اوپن ایس ایم پی ٹی وی پی اے کے ذریعے ڈیٹا کو درست اور صحت کے ساتھ ساتھ ملایا جاتا ہے
دیفی–ہیمن کے ساتھ کلیدی تبادلہ –
محفوظي پر ايک غیر مجاز چینل پر ایک شیئر خفیہ پر متفقه طور پر، Diffi–Hellman (DH) کلیدی متبادل استعمال. دونوں فریق نجی کلیدیں اور متبادل عوامی پیرامیٹرز تخلیق کرتے ہیں، [FLT] الزام زدہ كے خلاف مـنـیـمـبـلـبـتـلـلـتـتـتـتـتـرـتـتـتـتـتـتـتـتـتـتـرـتـرـتـتـتـرـرـتـرـتـتـرـتـرـتـرـرـتـتـتـتـتـرـتـتـتـرـ هـ کو ئي کريں
ایچ ایم سی کیساتھ پیغاموتربیت اور توثیق
یہ یقین کرنے کے لیے کہ پیغام کو تبدیل نہیں کیا گیا ہے، ھششْتُرِهِهِمْتُونَ أَخْرَكَلِكُمْنَا أَن يَفْتَرَكَى كَفَرَّكَّةً وَأَرَكُتَرَكَابًا لَهُمْتَهُمْتَرَرَهُونَ سانچہ:قرآن-سورہ 20 آیت 19۔۔۔*
اپنے سی پروجیکٹ میں ایسایسایس کو کھولیں
اوپن ایس ایل ایل کو احتیاط سے ابتدا کی ضرورت ہوتی ہے. اس میں ضروری ہیڈ کوارٹرز شامل ہیں اور اور آپ کے پروگرام کے شروع میں . . . جب آپ کو رابطہ کرنا ہوگا تو آپ کے جھنڈوں کو اس طرح ملا کر رکھیں گے:
#include <openssl/evp.h>
#include <openssl/rand.h>
#include <openssl/err.h>
// Initialize OpenSSL
void init_openssl() {
SSL_load_error_strings();
OpenSSL_add_all_algorithms();
}
ٹیسیسیایس سوکلوِن بنانا
آپ کے پروٹوکول کے لیے ذیلی نقل و حمل ہو گی، جو قابل اعتماد، وصیت دے رہی ہے، سرور تخلیق کریں جو آنے والے اتصال اور ایل ایل ٹی:7 کے لیے متعین کردہ سرور جو متعین کرتا ہے. ، ، ، [FLT]، اور پر:TPT پر]، [FFFFFF1، [FFFFF1]] پر غلطیوں کو کنٹرول کرنے کے بعد، [FLTC:TC]
سرور نمونہ سکیلٹن
int server_fd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in address;
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(8080);
bind(server_fd, (struct sockaddr*)&address, sizeof(address));
listen(server_fd, 3);
int client_fd = accept(server_fd, (struct sockaddr*)&client_addr, &addr_len);
ایک اہم مثال سکللٹن
int sock = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8080);
inet_pton(AF_INET, "127.0.0.1", &server_addr.sin_addr);
connect(sock, (struct sockaddr*)&server_addr, sizeof(server_addr));
دیفی–ہیمان چیس ایکسچینج کا افتتاح
ٹی سی پی اتصال قائم کرنے کے بعد کلائنٹ اور سرور ایک DH کلید مبادلہ کرتے ہیں. ہر پہلوی جانب اوپن ایس ایل ایل ایل کے استعمال سے ایک DH کلید پیدا کرتا ہے پبلک کلید کو صوتی پر بھیجا جاتا ہے اور دونوں اطراف میں ایک مشترکہ خفیہ گروپ کے استعمال کے لیے، (الف)، ایک طے شدہ جماعت (الف) استعمال کرتے ہیں [الف)، [1). [1 میل ]
// Generate DH parameters
EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_DH, NULL);
EVP_PKEY_paramgen_init(pctx);
EVP_PKEY_CTX_set_dh_paramgen_prime_len(pctx, 2048);
EVP_PKEY *params = NULL;
EVP_PKEY_paramgen(pctx, ¶ms);
// Generate key pair
EVP_PKEY_CTX *kctx = EVP_PKEY_CTX_new(params, NULL);
EVP_PKEY_keygen_init(kctx);
EVP_PKEY *my_key = NULL;
EVP_PKEY_keygen(kctx, &my_key);
// Export public key to send
unsigned char *pub_key_der = NULL;
int pub_len = i2d_PUBKEY(my_key, &pub_key_der);
send(sock, pub_key_der, pub_len, 0);
حاصل ہونے پر ہمسائے کو عوامی کلید درآمد کراتے ہیں اور پھر مشترکہ راز حاصل ہوتا ہے. ماخوذ راز (مثلاً SHA ⁇ 256) کے ساتھ ساتھ Aes اور HMAC کے لیے یکم کلید تیار کرنے کے لیے.
Aes ⁇ GCM کے ساتھ پیغامات کو بے خبر اور تنقیدی پیغامات
AS ⁇ GCM وه انتخابی موڈ ہے کیونکہ یہ ایک آپریشن میں دونوں تخطيب اور تصدیقی ٹیگ فراہم کرتا ہے [FLT:]] کے ساتھ اوپنSSL کا استعمال کریں [1] آپ کو 12 ⁇ byt Nonce (IV) اور 256 ⁇ bit کلید سے حاصل کرکے ڈی ایچ آئی ڈی پر اپ لوڈ کی گئی ہے.
// Encryption
EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();
EVP_EncryptInit_ex(ctx, EVP_aes_256_gcm(), NULL, key, nonce);
unsigned char ciphertext[1024];
int outlen;
EVP_EncryptUpdate(ctx, ciphertext, &outlen, plaintext, len);
int tmplen;
EVP_EncryptFinal_ex(ctx, ciphertext + outlen, &tmplen);
unsigned char tag[16];
EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_GET_TAG, 16, tag);
ایچ ایم سی (یا لیورمنگ جی سی ایم ٹیگ) کے ساتھ راستی میں شامل ہونا
اگر آپ AESGCM استعمال کرنا چاہیں تو آپ ASS ⁇ CCCCC کو استعمال نہیں کر سکتے اور پھر آپ NAC پر SMAC استعمال کر سکتے ہیں کا استعمال Open SSL سے شروع کر نے کے بعد. A سوا دستي ای ایس این اے سی ایل کر نے کے لئے SHAT.
اِسے ایک ساتھ بانٹنا : کام مکمل کرنا
- کلائنٹ اور سرور کے درمیان میں ٹی سی پی اتصال قائم کریں.
- دونوں اطراف سے sense Difie ⁇ Helman juers پیدا ہوتے ہیں۔
- عوامی کلیدوں کا تبادلہ کرکے شیئر راز کا حساب کریں۔
- Derve an 256 ⁇ bit AES کلید اور ایک 256 ⁇ bit HMAC کلید (یا GCM کے لیے یکساں کلید استعمال کرتا ہے)۔
- کلنٹن ایک نوس (12 Baghmation) بھیجتا ہے اور پھر Aes ⁇ GCMM نے جمع ٹیگ کو دبا دیا. سرور ڈی کرافٹ اور تصدیق کرتا ہے۔
- سرور ایک نیا نونسی (غیر قانونی طور پر نونسی) کے استعمال کے ذریعے جواب بھیجتا ہے (جو اسی کلید کے ساتھ جاری نہیں ہوتا)۔
- دونوں اطراف پیغامات کو جاری رکھ سکتے ہیں ؛ طویل نشستوں کیلئے ، ایک ہی DH کیمرا یا ایک trachet serves استعمال کرتے ہیں ۔
سیکورٹی کی بہترین مشق
- [fLT] مضبوط حادثاتی عددی generators. کال سے لیکر OpenSSL سے لیکر کلیدیں، noncens، اور DH نجی کلیدیں پیدا کریں. یا ] آنسوؤں کے مقاصد کے لیے استعمال نہ کریں ]۔
- تمام حاصل کردہ ڈیٹا. چیک لمبائی، عوامی کلیدی پیرامیٹرز (مثلاً p پریمیئر، جی او)، اور ایچ ایم سی ٹیگز سے قبل
- [AUNUrst coded کلیدیں یا ڈی بگس. ہمیشہ سے حالیہ رازداری فراہم کرنے کے لیے تازہ کلیدیں تازہ سیشن کو ہمیشہ ترتیب دیا جاتا ہے۔
- Handle غلطیوں کو ناقابل استعمال بنا. [1] اگر Dictionary کو ناکام یا HMAC پیش رفت، اتصال اور لاگ آفات کو بند کریں تو یہ انکشاف نہ کریں کہ ناکامی کیوں واقع ہوئی۔
- [Mount Guardinution. [1] Ported اپ ایس ایل ایل ایل ایل ایل ایل ایل ایل ایل ایل ایل ایل ایل ایل ایل کیشن[2]. . اخذ شدہ بتاریخ 23 دسمبر 2018. تحقق من التاريخ في:
- [TLS کو استعمال کرتے ہوئے ایک دستوری پروٹوکول کی بجائے TLS استعمال کریں. پروڈکشن سسٹمز کے لیے، اچھی طرح سے خطرناک پروٹوکول پر بھروسا کریں جیسے TLS 1.3 سے ایک دستور پروٹوکول بنانا غلط ہے اور اس کی سفارش نہیں کرتا جب تک کہ آپ کے پاس گہری نعرے لگانے والے ماہر نہیں ہوں۔
پروٹوکول کی جانچ کرو
آپکا عمل اسکے عمل کو جانچنے کے ساتھ ہی مشین پر کلائنٹ اور سرور (localhost) چلا نے کے ذریعے آزما سکتے ہیں اور یہ تصدیق کرتا ہے کہ پیغامات ڈی چارج درست طور پر واپس بھیج دیں۔ پروٹوکول کے بعد سے متعلقہ غلطیوں کو تسلیم کرنا اور انہیں مسترد کرنا ہے.
کُنَّا
سی میں محفوظ رابطہ پروٹوکول بنانا ایک بہترین تعلیمی مشق ہے، لیکن اس میں تفصیل سے توجہ کا تقاضا کرتا ہے۔