আমি কীভাবে কোনও মেশিনের টিপিএম মডিউল ব্যবহার করে বাইটগুলি এনক্রিপ্ট করতে পারি?
CryptProtectData
উইন্ডোজ এপিআই ব্যবহার করে একটি ব্লব এনক্রিপ্ট করার জন্য একটি (অপেক্ষাকৃত) সহজ এপিআই সরবরাহ করে CryptProtectData
, যা আমরা সহজেই ফাংশনটি ব্যবহার করতে পারি:
public Byte[] ProtectBytes(Byte[] plaintext)
{
//...
}
ProtectBytes
আপনি এটিকে সহজেই ব্যবহার করতে পারবেন এমন ধারণার চেয়ে বিশদগুলি কম গুরুত্বপূর্ণ:
- এখানে থাকা একটি গোপন কী দ্বারা আমি এনক্রিপ্ট করতে চাই বাইটগুলি এখানে রয়েছে
System
- আমাকে এনক্রিপ্ট করা ব্লবটি ফিরিয়ে দিন
ফিরে আসা ব্লব হ'ল একটি অননুমোদিত ডকুমেন্টেশন স্ট্রাকচার যা মূল ডেটা (হ্যাশ অ্যালগরিদম, সাইফার অ্যালগরিদম, লবণ, এইচএমএসি স্বাক্ষর, ইত্যাদি) ডিক্রিপ্ট করার এবং ফেরত দেওয়ার জন্য প্রয়োজনীয় সমস্ত কিছু অন্তর্ভুক্ত করে।
সম্পূর্ণতার জন্য, এখানে নমুনা সিউডোকোড বাস্তবায়ন ProtectBytes
যা Crypt API
বাইটগুলি রক্ষা করতে ব্যবহার করে :
public Byte[] ProtectBytes(Byte[] plaintext)
{
//Setup our n-byte plaintext blob
DATA_BLOB dataIn;
dataIn.cbData = plaintext.Length;
dataIn.pbData = Addr(plaintext[0]);
DATA_BLOB dataOut;
//dataOut = EncryptedFormOf(dataIn)
BOOL bRes = CryptProtectData(
dataIn,
null, //data description (optional PWideChar)
null, //optional entropy (PDATA_BLOB)
null, //reserved
null, //prompt struct
CRYPTPROTECT_UI_FORBIDDEN || CRYPTPROTECT_LOCAL_MACHINE,
ref dataOut);
if (!bRes) then
{
DWORD le = GetLastError();
throw new Win32Error(le, "Error calling CryptProtectData");
}
//Copy ciphertext from dataOut blob into an actual array
bytes[] result;
SetLength(result, dataOut.cbData);
CopyMemory(dataOut.pbData, Addr(result[0]), dataOut.cbData);
//When you have finished using the DATA_BLOB structure, free its pbData member by calling the LocalFree function
LocalFree(HANDLE(dataOut.pbData)); //LocalFree takes a handle, not a pointer. But that's what the SDK says.
}
টিপিএম দিয়ে কীভাবে এটি করবেন?
উপরের কোডটি কেবল স্থানীয় মেশিনের জন্য ডেটা এনক্রিপ্ট করার জন্য দরকারী। তথ্যটি System
কী জেনারেটর হিসাবে অ্যাকাউন্টটি ব্যবহার করে এনক্রিপ্ট করা হয় ( বিশদ, যদিও আকর্ষণীয়, গুরুত্বহীন )। শেষ ফলাফলটি হ'ল আমি ডেটা এনক্রিপ্ট করতে পারি (উদাহরণস্বরূপ একটি হার্ড ড্রাইভ এনক্রিপশন মাস্টার কী) যা কেবলমাত্র স্থানীয় মেশিন দ্বারা ডিক্রিপ্ট করা যায়।
এখন সময় এসেছে এটি আরও একধাপ এগিয়ে নিয়ে যাওয়ার। আমি কিছু ডেটা (যেমন একটি হার্ড ড্রাইভ এনক্রিপশন মাস্টার কী) এনক্রিপ্ট করতে চাই যা কেবলমাত্র স্থানীয় টিপিএম দ্বারা ডিক্রিপ্ট করা যায়। অন্য কথায়, আমি উইন্ডোজ টিপিএম সহ অ্যান্ড্রয়েডের জন্য নীচের ব্লক ডায়াগ্রামে কোয়ালকম ট্রাস্টেড এক্সিকিউশন পরিবেশ ( টিইই ) প্রতিস্থাপন করতে চাই :
দ্রষ্টব্য : আমি বুঝতে পারি যে টিপিএম ডেটা-স্বাক্ষর করে না (বা যদি তা করে তবে এটি কোনও গ্যারান্টি দেয় না যে একই ডেটাতে স্বাক্ষর করা প্রতি বারে একই বাইনারি আউটপুট দেবে)। যে কারণে আমি "আরএসএ স্বাক্ষর" প্রতিস্থাপন করতে চাই " একটি হার্ডওয়্যার বাউন্ড কী দ্বারা 256-বিট ব্লব এনক্রিপ্ট করা " দিয়ে ।
তাহলে কোডটি কোথায়?
সমস্যাটি হ'ল টিপিএম প্রোগ্রামিংটি এমএসডিএন-তে সম্পূর্ণ নথিভুক্ত । কোনও ক্রিয়াকলাপ সম্পাদনের জন্য কোনও এপিআই উপলব্ধ নেই। এর পরিবর্তে আপনি নিজেকে একটি কপি খুঁজে বের করতে হবে বিশ্বস্ত কম্পিউটিং গ্রুপের সফটওয়্যার স্ট্যাক (TSS ওরফে) , কি কি অনুক্রমে, TPM টি পাঠাতে প্লেলোডগুলি সঙ্গে, এবং কল কমান্ড জিনিসটা উইন্ডো এর Tbsip_Submit_Command ফাংশন সরাসরি কমান্ড জমা দিতে:
TBS_RESULT Tbsip_Submit_Command(
_In_ TBS_HCONTEXT hContext,
_In_ TBS_COMMAND_LOCALITY Locality,
_In_ TBS_COMMAND_PRIORITY Priority,
_In_ const PCBYTE *pabCommand,
_In_ UINT32 cbCommand,
_Out_ PBYTE *pabResult,
_Inout_ UINT32 *pcbOutput
);
উইন্ডোজের ক্রিয়া সম্পাদনের জন্য উচ্চ স্তরের কোনও এপিআই নেই।
এটি আপনার হার্ড ড্রাইভে SATA I / O কমান্ড জারি করে একটি পাঠ্য ফাইল তৈরি করার চেষ্টা করার নৈতিক সমতুল্য ।
কেন শুধু ট্রাউজার ব্যবহার করবেন না
বিশ্বস্ত কম্পিউটিং গ্রুপ (টিসিজি) তাদের নিজস্ব এপিআই নির্ধারণ করেছে: টিসিবি সফ্টওয়্যার স্ট্যাক (টিএসএস) । এই এপিআইটির একটি বাস্তবায়ন কিছু লোক তৈরি করেছিলেন এবং এটি ট্রাউসার্স নামে পরিচিত । তারপরে একজন লোক সেই প্রকল্পটি উইন্ডোজে পোর্ট করে ।
এই কোডটি নিয়ে সমস্যাটি হ'ল এটি উইন্ডোজ বিশ্বে পোর্টেবল নয়। উদাহরণস্বরূপ, আপনি এটি ডেল্ফি থেকে ব্যবহার করতে পারবেন না, আপনি এটি সি # থেকে ব্যবহার করতে পারবেন না। এটি প্রয়োজন:
- দ্বারা OpenSSL
- pThread
আমি কেবল কোডটি আমার টিপিএম দিয়ে কিছু এনক্রিপ্ট করতে চাই।
উপরের CryptProtectData
জন্য ফাংশন বডিটিতে যা রয়েছে তা ব্যতীত অন্য কিছুই প্রয়োজন।
টিপিএম ব্যবহার করে ডেটা এনক্রিপ্ট করার সমতুল্য কোডটি কী? অন্যরা যেমন উল্লেখ করেছে, আপনাকে সম্ভবত তিনটি টিপিএম ম্যানুয়াল পরামর্শ করতে হবে এবং নিজেই ব্লবগুলি তৈরি করতে হবে । এটি সম্ভবত TPM_seal
আদেশ জড়িত । যদিও আমি মনে করি যে আমি ডেটা সিল করতে চাই না , আমি মনে করি আমি এটি আবদ্ধ করতে চাই:
বাইন্ডিং - টিপিএম বাইন্ড কী ব্যবহার করে ডেটা এনক্রিপ্ট করে, একটি অনন্য আরএসএ কী স্টোরেজ কী থেকে নেমে আসে। সিলিং - একইভাবে বাঁধাইয়ের জন্য ডেটা এনক্রিপ্ট করে, তবে পাশাপাশি একটি রাজ্য নির্দিষ্ট করে যেখানে ডিক্রিপ্ট করার জন্য টিপিএম অবশ্যই থাকতে হবে (আনসিল করা হয়নি)
আমার প্রয়োজনীয় 20 টি লাইন কোডের সন্ধানের জন্য আমি তিনটি প্রয়োজনীয় খণ্ড পড়তে চেষ্টা করেছি:
কিন্তু আমার আছে কী পড়ছি তা সম্পর্কে আমার ধারণা নেই । যদি কোনও ধরণের টিউটোরিয়াল বা উদাহরণ থাকে তবে আমার শট থাকতে পারে। তবে আমি পুরোপুরি হারিয়ে গেছি।
সুতরাং আমরা স্ট্যাকওভারফ্লো জিজ্ঞাসা করি
একইভাবে আমি প্রদান করতে সক্ষম হয়েছিল:
Byte[] ProtectBytes_Crypt(Byte[] plaintext)
{
//...
CryptProtectData(...);
//...
}
কেউ কি সমতুল্য সমতুল্য সরবরাহ করতে পারে:
Byte[] ProtectBytes_TPM(Byte[] plaintext)
{
//...
Tbsip_Submit_Command(...);
Tbsip_Submit_Command(...);
Tbsip_Submit_Command(...);
//...snip...
Tbsip_Submit_Command(...);
//...
}
এটি একই কাজ করে, তালাবন্ধে থাকা কোনও চাবি বাদ দিয়ে System
এলএসএ-তে টিপিএম-এ লক করা আছে?
গবেষণা শুরু
বাঁধনের অর্থ কী তা আমি ঠিক জানি না । কিন্তু TPM টি প্রধান দিকে তাকিয়ে - পার্ট 3 কমান্ড - স্পেসিফিকেশন সংস্করণ 1.2, সেখানে একটি উল্লেখ করা হয় বেঁধে :
10.3 টিপিএম_উনবাইন্ড
টিপিএম_উনবাইন্ড একটি ডেটা ব্লব নেয় যা টিএসপি_ডাটা_বিন্দ কমান্ডের ফলাফল এবং ব্যবহারকারীর কাছে রফতানির জন্য ডিক্রিপ্ট করে। কলকারীকে অবশ্যই কীটির ব্যবহার অনুমোদিত করতে হবে যা আগত ব্লবটি ডিক্রিপ্ট করবে। টিপিএম_উইনবাইন্ড একটি ব্লক-বাই-ব্লক ভিত্তিতে কাজ করে এবং এর মধ্যে একটি ব্লক এবং অন্য একটির মধ্যে কোনও সম্পর্কের ধারণা নেই।
কি বিভ্রান্তিকর হয় কোন Tspi_Data_Bind
আদেশ আছে।
গবেষণা প্রচেষ্টা
এটি হতাশাজনক যে কেউ কখনই টিপিএম বা এর ক্রিয়াকলাপ ডকুমেন্ট করার জন্য মাথা ঘামায় না। এটি মনে হয় যেন তারা তাদের সমস্ত সময় এই দুর্দান্ত জিনিসটি নিয়ে খেলতে ব্যয় করে, তবে এটি কোনও কিছুর জন্য ব্যবহারযোগ্য করে তোলার বেদনাদায়ক পদক্ষেপটি মোকাবেলা করতে চায় নি ।
টিপিএম ২.০ এর প্র্যাকটিক্যাল গাইড টু: এখনকার বিনামূল্যে বইয়ের সাথে শুরু : সুরক্ষার নতুন যুগে বিশ্বস্ত প্ল্যাটফর্ম মডিউলটি ব্যবহার করে :
অধ্যায় 3 - টিপিএম 2.0 এর দ্রুত টিউটোরিয়াল
টিপিএমের একটি স্ব-উত্পন্ন বেসরকারী কীতে অ্যাক্সেস রয়েছে, সুতরাং এটি একটি পাবলিক কী দিয়ে কীগুলি এনক্রিপ্ট করতে পারে এবং তারপরে ফলস ব্লবটি হার্ড ডিস্কে সঞ্চয় করতে পারে। এইভাবে, টিপিএম ব্যবহারের জন্য কার্যত সীমিত সীমাহীন সংখ্যক কী রাখতে পারে তবে মূল্যবান অভ্যন্তরীণ সঞ্চয়স্থান নষ্ট করে না। হার্ড ডিস্কে সঞ্চিত কীগুলি মুছে ফেলা যায়, তবে সেগুলি ব্যাকআপও করা যায়, যা ডিজাইনারদের কাছে একটি গ্রহণযোগ্য ট্রেড অফের মতো বলে মনে হয়েছিল।
আমি টিপিএমের পাবলিক কী দিয়ে কী কী এনক্রিপ্ট করব?
অধ্যায় 4 - বিদ্যমান অ্যাপ্লিকেশন যা টিপিএম ব্যবহার করে
অ্যাপ্লিকেশন যে টিপিএম ব্যবহার করা উচিত কিন্তু না
গত কয়েক বছরে, ওয়েব-ভিত্তিক অ্যাপ্লিকেশনগুলির সংখ্যা বৃদ্ধি পেয়েছে। এর মধ্যে ওয়েব-ভিত্তিক ব্যাকআপ এবং স্টোরেজ রয়েছে। বিপুল সংখ্যক সংস্থাগুলি এখন এই জাতীয় পরিষেবাদি সরবরাহ করে, তবে আমরা যতটা অবগত আছি, এই পরিষেবাদির ক্লায়েন্টগুলির মধ্যে কোনওরই ব্যবহারকারী কোনও টিপিএম-এ ব্যাকআপ পরিষেবার জন্য কীটি লক করতে দেয় না। এটি করা হয়ে থাকলে, টিপিএম কী নিজেই একাধিক মেশিনে এটির সদৃশ করে ব্যাক আপ করে নিলে তা অবশ্যই দুর্দান্ত হবে। এটি বিকাশকারীদের জন্য একটি সুযোগ বলে মনে হয়।
কীভাবে কোনও বিকাশকারী টিপিমের চাবি লক করে?
অধ্যায় 9 - হেরার্চি
ব্যবহারের পরিস্থিতি: স্টোরিং লগিন পাসওয়ার্ড
একটি সাধারণ পাসওয়ার্ড ফাইল পাসওয়ার্ডের সল্ট হ্যাশগুলি সঞ্চয় করে। যাচাইকরণটিতে সরবরাহ করা পাসওয়ার্ড সল্টিং এবং হ্যাশিং এবং স্টোর মানের সাথে তুলনা করে। যেহেতু গণনাটিতে কোনও গোপন নেই, এটি পাসওয়ার্ড ফাইলে অফলাইনে আক্রমণের বিষয় to
এই ব্যবহারের ক্ষেত্রে টিপিএম-উত্পন্ন HMAC কী ব্যবহার করা হয়। পাসওয়ার্ড ফাইলটি লবণাক্ত পাসওয়ার্ডের একটি এইচএমএসি সঞ্চয় করে। যাচাইয়ের মধ্যে সরবরাহ করা পাসওয়ার্ড সল্টিং এবং এইচএমএকিং এবং সঞ্চিত মানের সাথে তুলনা করে। কোনও অফলাইন আক্রমণকারীর এইচএমএসি কী নেই বলে, আক্রমণকারী গণনা সম্পাদন করে আক্রমণ আক্রমণ করতে পারে না।
এটি কাজ করতে পারে । যদি টিপিএমের একটি গোপন এইচএমএসি কী থাকে এবং কেবলমাত্র আমার টিপিএমই এইচএমএসি কী জানে, তবে আমি "সাইন (এটির ব্যক্তিগত কী সহ টিপিএম এনক্রিপ্ট)" প্রতিস্থাপন করতে পারি "এইচএমএসি" দিয়ে। তবে তার পরের লাইনেই তিনি নিজেকে পুরোপুরি উল্টে দেন:
TPM2_Create, একটি HMAC কী নির্দিষ্ট করে
যদি আমাকে এইচএমএসি কীটি নির্দিষ্ট করতে হয় তবে এটি টিপিএম গোপন নয়। এইচএমএসি কীটি গোপনীয় নয় তা আপনি যখন বুঝতে পারবেন তখন এটি টিপিএম সরবরাহ করা ক্রিপ্টোগ্রাফিক ইউটিলিটিগুলি সম্পর্কে অধ্যায়টি বোঝায়। আপনার নিজের নিজের SHA2, AES, HMAC বা RSA লেখার পরিবর্তে, টিপিএম ইতিমধ্যে যা পড়েছিল তা আপনি আবার ব্যবহার করতে পারেন।
অধ্যায় 10 - কী
সুরক্ষা ডিভাইস হিসাবে, কোনও হার্ডওয়্যার ডিভাইসে নিরাপদ রাখার সময় কীগুলি ব্যবহার করার জন্য অ্যাপ্লিকেশনটির ক্ষমতা হ'ল টিপিএমের বৃহত্তম শক্তি। টিপিএম উভয়ই বাহ্যিকভাবে উত্পন্ন কীগুলি উত্পন্ন এবং আমদানি করতে পারে। এটি উভয় অসমमित এবং প্রতিসাম্য কী সমর্থন করে।
অসাধারণ! তুমি এটা কিভাবে কর!?
কী জেনারেটর
যুক্তিযুক্তভাবে, টিপিএমের বৃহত্তম শক্তি হ'ল একটি ক্রিপ্টোগ্রাফিক কী উত্পন্ন করার এবং একটি হার্ডওয়্যার সীমানার মধ্যে এর গোপনীয়তা রক্ষা করার দক্ষতা। মূল জেনারেটর টিপিএমের নিজস্ব র্যান্ডম নম্বর জেনারেটরের উপর ভিত্তি করে তৈরি এবং এলোমেলোতার বাহ্যিক উত্সগুলিতে নির্ভর করে না। এটি এন্ট্রপির অপর্যাপ্ত উত্স সহ দুর্বল সফ্টওয়্যার সফটওয়্যারের ভিত্তিতে দুর্বলতাগুলি দূর করে।
না TPM টি ক্রিপ্টোগ্রাফিক কী তৈরী করা এবং একটি হার্ডওয়্যার সীমানা মধ্যে এর গোপন রক্ষা করার ক্ষমতা আছে? তাইলে কীভাবে?
অধ্যায় 12 - প্ল্যাটফর্ম কনফিগারেশন নিবন্ধসমূহ
অনুমোদনের জন্য পিসিআর
ব্যবহারের পরিস্থিতি: প্ল্যাটফর্ম স্টেটের জন্য একটি হার্ড ডিস্ক এনক্রিপশন কীটি বিক্রয় করুন
সম্পূর্ণ ডিস্ক এনক্রিপশন অ্যাপ্লিকেশনগুলি আরও সুরক্ষিত হয় যদি কোনও টিপিএম একই ডিস্কে সঞ্চিত থাকে তবে কেবলমাত্র একটি পাসওয়ার্ড দ্বারা সুরক্ষিত থাকলে এনক্রিপশন কীটি সুরক্ষা দেয়। প্রথমত, টিপিএম হার্ডওয়্যারটিতে এন্টি হাতুড়ির সুরক্ষা রয়েছে (টিপিএম অভিধান আক্রমণ সুরক্ষা সম্পর্কিত বিশদ বিবরণের জন্য অধ্যায় 8 দেখুন), পাসওয়ার্ডটিকে অবৈজ্ঞানিকভাবে আক্রমণাত্মক আক্রমণ তৈরি করে। কেবল সফ্টওয়্যার দ্বারা সুরক্ষিত একটি কী দুর্বল পাসওয়ার্ডের চেয়ে অনেক বেশি ঝুঁকিপূর্ণ। দ্বিতীয়ত, ডিস্কে সঞ্চিত একটি সফ্টওয়্যার কী চুরি করা অনেক সহজ। ডিস্কটি (বা ডিস্কের একটি ব্যাকআপ) নিন এবং আপনি কীটি পাবেন। যখন কোনও টিপিএম কী ধরে রাখে, পুরো প্ল্যাটফর্ম, বা কমপক্ষে ডিস্ক এবং মাদারবোর্ডটি অবশ্যই চুরি করতে হবে।
সিলিং কীটিকে কেবল একটি পাসওয়ার্ড দ্বারা নয়, একটি নীতি দ্বারা সুরক্ষিত করার অনুমতি দেয়। একটি সাধারণ নীতি সিলিংয়ের সময় পিসিআর মানগুলির (সফ্টওয়্যার স্টেট) বর্তমানের চাবিটি লক করে। এটি ধরে নিয়েছে যে প্রথম বুটে রাজ্য কোনও আপোসযুক্ত নয়। প্রথম বুটে উপস্থিত যে কোনও প্রাক-ইনস্টল করা ম্যালওয়ার পিসিআরগুলিতে পরিমাপ করা হবে এবং এই কীটি আপোসযুক্ত সফ্টওয়্যার অবস্থায় সীলমোহর করা হবে। কম বিশ্বাসযোগ্য এন্টারপ্রাইজটিতে একটি স্ট্যান্ডার্ড ডিস্ক চিত্র থাকতে পারে এবং সেই চিত্রটি উপস্থাপনকারী পিসিআরগুলিতে মোহর দেওয়া যেতে পারে। এই পিসিআর মানগুলি সম্ভবত আরও বিশ্বস্ত প্ল্যাটফর্মে প্রাক্কুলেট করা হবে। এমনকি আরও পরিশীলিত এন্টারপ্রাইজ টিপিএম 2_পলিসিঅর্টিফাইজ ব্যবহার করবে এবং বিশ্বস্ত পিসিআর মানগুলির সেটকে অনুমোদন দেওয়ার জন্য বেশ কয়েকটি টিকিট সরবরাহ করবে। পিসিআর ব্রিটলিনেস সমস্যা সমাধানের জন্য নীতি অনুমোদনের বিশদ বিবরণ এবং এর প্রয়োগের জন্য অধ্যায় 14 দেখুন।
যদিও একটি পাসওয়ার্ড কীটিও সুরক্ষিত করতে পারে, এমনকি টিপিএম কী পাসওয়ার্ড ছাড়াই সুরক্ষা পাওয়া যায়। কোনও আক্রমণকারী টিপিএমকি পাসওয়ার্ড সরবরাহ না করে প্ল্যাটফর্মটি বুট করতে পারে তবে ওএস ব্যবহারকারীর নাম এবং পাসওয়ার্ড ছাড়া লগ ইন করতে পারে না। ওএসসিকিউরিটি ডেটা সুরক্ষিত করে। আক্রমণকারী একটি বিকল্প ওএস বুট করতে পারে, হার্ড ড্রাইভ থেকে ওএস লগইন সুরক্ষা বাইপাস করার পরিবর্তে লাইভ ডিভিডি বা ইউএসবি স্টিক থেকে বলতে পারেন। যাইহোক, এই পৃথক বুট কনফিগারেশন এবং সফ্টওয়্যার পিসিআরওয়েলগুলি পরিবর্তন করবে। যেহেতু এই নতুন পিসিআর সিল করা মানগুলির সাথে মেলে না, টিপিএম ডিক্রিপশন কীটি প্রকাশ করবে না এবং হার্ড ড্রাইভটি ডিক্রিপ্ট করা যাবে না।
অসাধারণ! এটি হ'ল আমার ব্যবহারের ক্ষেত্রে এটি ঘটবে। মাইক্রোসফ্ট এটির ব্যবহারের ক্ষেত্রে টিপিএম ব্যবহার করে। আমি এটা কিভাবে করব!?
সুতরাং আমি সেই পুরো বইটি পড়েছি এবং এটি কার্যকর কোনও কিছুই সরবরাহ করে নি। এটি বেশ চিত্তাকর্ষক কারণ এটি 375 পৃষ্ঠা। আপনি কি ভাবছেন বইটি কী রয়েছে - এবং এটির দিকে ফিরে তাকালে আমার কোনও ধারণা নেই।
সুতরাং আমরা টিপিএম প্রোগ্রামিংয়ের সুনির্দিষ্ট গাইড ত্যাগ করি এবং এর পরিবর্তে মাইক্রোসফ্ট থেকে কিছু ডকুমেন্টেশনে ফিরে যাই:
থেকে মাইক্রোসফট TPM টি প্ল্যাটফর্ম ক্রিপ্টো জীবিকাদাতা টুলকিট । এটিতে আমি কী করতে চাই তা উল্লেখ করেছে:
এন্ডোসরমেন্ট কী বা ইকে
ই প্ল্যাটফর্মটির জন্য একটি নির্ভরযোগ্য ক্রিপ্টোগ্রাফিক সনাক্তকারী সরবরাহ করার জন্য ডিজাইন করা হয়েছে। কোনও এন্টারপ্রাইজ তাদের এন্টারপ্রাইজের সমস্ত পিসির টিপিএম সম্পর্কিত এনডোর্সমেন্ট কীগুলির একটি ডাটাবেস বজায় রাখতে পারে, বা একটি ডেটা সেন্টার ফ্যাব্রিক কন্ট্রোলারের সমস্ত ব্লেডে টিপিএমের একটি ডাটাবেস থাকতে পারে। উইন্ডোজে আপনি ইসির পাবলিক অংশটি পড়তে "উইন্ডোজ 8-এ প্ল্যাটফর্ম ক্রিপ্টো সরবরাহকারী" বিভাগে বর্ণিত এনক্রিপট সরবরাহকারী ব্যবহার করতে পারেন।
কোথাও টিপিএমের ভিতরে একটি আরএসএ প্রাইভেট কী রয়েছে। সেই চাবিটি সেখানে লক করা আছে - বাইরের পৃথিবীর দ্বারা আর কখনও দেখা যায় না। আমি চাই টিপিএম এটির ব্যক্তিগত কী (যেমন এটি ব্যক্তিগত কী দিয়ে এটি এনক্রিপ্ট করুন) দিয়ে কিছু সই করতে পারে।
সুতরাং আমি সম্ভবত সর্বাধিক প্রাথমিক অপারেশন চাই যা বিদ্যমান থাকতে পারে:
আপনার ব্যক্তিগত কী দিয়ে কিছু এনক্রিপ্ট করুন। আমি আরও জটিল জিনিস জিজ্ঞাসা করছি না (এখনও):
- এটি পিসিআর রাজ্যের উপর ভিত্তি করে "সিলিং"
- একটি কী তৈরি করা এবং এটি উদ্বায়ী বা অ-উদ্বায়ী স্মৃতিতে সঞ্চয় করা
- একটি প্রতিসম কী তৈরি করা এবং এটি টিপিএম-এ লোড করার চেষ্টা করা
আমি কোনও টিপিএম করতে পারে এমন সবচেয়ে বেসিক অপারেশনটির জন্য বলছি। এটি কীভাবে করবেন সে সম্পর্কে কোনও তথ্য পাওয়া কেন অসম্ভব?
আমি এলোমেলো ডেটা পেতে পারি
আমি মনে করি যে টিপিএম করতে পারে যখন আরএসএ সাইন ইন করা সবচেয়ে মৌলিক জিনিস তখন আমি বলেছিলাম যে আমি গ্লীব হয়ে যাচ্ছিলাম। সবচেয়ে মৌলিক জিনিস TPM টি কি জিজ্ঞাসা করা যেতে পারে আমাকে র্যান্ডম বাইট দিতে হয়। যে আমি কিভাবে করতে হবে মূর্ত আউট করেছেন:
public Byte[] GetRandomBytesTPM(int desiredBytes)
{
//The maximum random number size is limited to 4,096 bytes per call
Byte[] result = new Byte[desiredBytes];
BCRYPT_ALG_HANDLE hAlgorithm;
BCryptOpenAlgorithmProvider(
out hAlgorithm,
BCRYPT_RNG_ALGORITHM, //AlgorithmID: "RNG"
MS_PLATFORM_CRYPTO_PROVIDER, //Implementation: "Microsoft Platform Crypto Provider" i.e. the TPM
0 //Flags
);
try
{
BCryptGenRandom(hAlgorithm, @result[0], desiredBytes, 0);
}
finally
{
BCryptCloseAlgorithmProvider(hAlgorithm);
}
return result;
}
অভিনব জিনিস
আমি বুঝতে পারি যে টিপিএম ব্যবহার করে মানুষের আয়তন খুব কম। এজন্য স্ট্যাকওভারফ্লোতে কারওও উত্তর নেই। সুতরাং আমি আমার সাধারণ সমস্যার সমাধান পেতে সত্যিই খুব লোভ পেতে পারি না। তবে বিষয়টি আমি চাই সত্যিই কাজ করতে চান হয় "সীল" কিছু ডেটা:
- টিপিএমকে কিছু উপাত্ত উপস্থাপন করুন (উদাহরণস্বরূপ কী উপাদানগুলির 32 বাইট)
- টিপিএম ডেটা এনক্রিপ্ট করে কিছু অস্বচ্ছ ব্লব কাঠামো ফিরিয়ে দেয়
- পরে টিপিএমকে ব্লবটি ডিক্রিপ্ট করতে বলুন
- ডিক্রিপশনটি কেবল তখনই কাজ করবে যখন টিপিএমের পিসিআর নিবন্ধগুলি এনক্রিপশন চলাকালীন একই ছিল।
অন্য কথায়:
Byte[] ProtectBytes_TPM(Byte[] plaintext, Boolean sealToPcr)
{
//...
}
Byte[] UnprotectBytes_TPM(Byte[] protectedBlob)
{
//...
}
ক্রিপ্টোগ্রাফি নেক্সট জেনার (সিএনজি, ওরফে বিসিক্রিপ) টিপিএম সমর্থন করে
উইন্ডোজের আসল ক্রিপ্টোগ্রাফি এপিআই ক্রিপ্টো এপিআই হিসাবে পরিচিত।
উইন্ডোজ ভিস্তার সাথে শুরু করে, ক্রিপ্টো এপিআই-কে প্রতিস্থাপন করা হয়েছে ক্রিপ্টোগ্রাফি এপিআই: নেক্সট জেনারেশন (অভ্যন্তরীণভাবে বেস্টক্রিপ হিসাবে পরিচিত , বিসিক্রিপ হিসাবে সংক্ষেপিত , পাসওয়ার্ড হ্যাশিং অ্যালগরিদমের সাথে বিভ্রান্ত হওয়ার দরকার নেই )।
দুটি বিসিক্রিপ সরবরাহকারী সহ উইন্ডোজ জাহাজ :
- মাইক্রোসফ্ট আদিম সরবরাহকারী (
MS_PRIMITIVE_PROVIDER
) ডিফল্ট : সমস্ত আদিম ডিফল্ট সফ্টওয়্যার বাস্তবায়ন (হ্যাশিং, প্রতিসামগ্রী এনক্রিপশন, ডিজিটাল স্বাক্ষর, ইত্যাদি) - মাইক্রোসফ্ট প্ল্যাটফর্ম ক্রিপ্টো সরবরাহকারী (
MS_PLATFORM_CRYPTO_PROVIDER
): টিপিএম অ্যাক্সেস সরবরাহ করে এমন সরবরাহকারী
প্ল্যাটফর্ম ক্রিপ্টো প্রদানকারী দুটিই MSDN নথিভুক্ত করা হয় না, কিন্তু একটি 2012 মাইক্রোসফট রিসার্চ সাইট থেকে ডকুমেন্টেশন আছে:
টিপিএম প্ল্যাটফর্ম ক্রিপ্টো-সরবরাহকারী টুলকিট
টিপিএম প্ল্যাটফর্ম ক্রিপ্টো সরবরাহকারী এবং টুলকিট উইন্ডোজ ৮-তে টিপিএম-সম্পর্কিত কার্যকারিতা ব্যবহারের জন্য স্যাম্পল কোড, ইউটিলিটিস এবং ডকুমেন্টেশন রয়েছে। বর্ণিত সাবসিস্টিমে রয়েছে টিপিএম-ব্যাকড ক্রিপ্টো-নেক্সট-জেন (সিএনজি) প্ল্যাটফর্ম ক্রিপ্টো-সরবরাহকারী, এবং কীভাবে সত্যায়ন-পরিষেবা সরবরাহকারী নতুন উইন্ডোজ বৈশিষ্ট্য ব্যবহার করতে পারেন। উভয়ই TPM1.2 এবং TPM2.0- ভিত্তিক সিস্টেম সমর্থিত।
মনে হচ্ছে মাইক্রোসফ্টের অভিপ্রায়টি ক্রিপ্টোগ্রাফি এনজি এপিআইয়ের মাইক্রোসফ্ট প্ল্যাটফর্ম ক্রিপ্টো সরবরাহকারীর সাথে টিপিএম ক্রিপ্টো কার্যকারিতা উপস্থাপন করবে ।
মাইক্রোসফ্ট বিসিক্রিপ ব্যবহার করে সর্বজনীন কী এনক্রিপশন
দেত্তয়া আছে:
- আমি আরএসএ অসমমিতিক এনক্রিপশন (টিপিএম ব্যবহার করে) সম্পাদন করতে চাই
- মাইক্রোসফ্ট বেস্টক্রিপ্ট আরএসএ অসমমিতিক এনক্রিপশন সমর্থন করে
- মাইক্রোসফ্ট বেস্টক্রিপ্টের একটি টিপিএম সরবরাহকারী রয়েছে
মাইক্রোসফ্ট ক্রিপ্টোগ্রাফি নেক্সট জেনার এপিআই ব্যবহার করে কীভাবে ডিজিটাল স্বাক্ষর করবেন তা নির্ধারণের জন্য এগিয়ে যাওয়ার উপায় হতে পারে ।
আমার পরবর্তী পদক্ষেপটি স্ট্যান্ডার্ড প্রদানকারী ( MS_PRIMITIVE_PROVIDER
) ব্যবহার করে একটি আরএসএ পাবলিক কী সহ বিসিক্রিপ্টে এনক্রিপশন করার কোডটি নিয়ে আসবে । উদাহরণ:
modulus
: 0 এক্সডিসি 67 এফএ এফ 4 9 ই এফ 2 72 1 ডি 45 2 সি বি 4 80 79 06 এ0 94 27 50 8209 ডিডি 67 সিই 57 বি 8 6 সি 4 এ 4 এফ 4 9 এফ ডি 2 ডি 1 69 এফবি 995 ডি 85 0 সি 07 এ 1 এফ 9 47 1 বি 56 16 6 ই এফ 6 7 এফ বি 9 সিএফ 2 এ 58 36 37 99 29 এএ 4 এফ এ 8 12 ই 8 4 এফ সি 7 82 2 বি 9 ডি 72 2 এ 9 সি ডিইএফ 6 এফ সি 2 ইই 12 6 ডি সিএফ এফ 0 এফ 2 বি 8 সি 4 ডিডি 7 সি 5 সি 1 এ সি 8 17 51 এ 9 এসি ডিএফ 08 22 04 9D 2B ডি 7 এফ 9 4 বি 09 ডি 9 এ EB 5C 51 1A D8 F8 F9 56 9E F8 FB 37 9B 3F D3 74 65 24 0D FF 34 75 57 A4 F5 BF 55publicExponent
: 65537
এই কোডটির কার্যকারিতা সহ, আমি টিপিএম সরবরাহকারী ( MS_PLATFORM_CRYPTO_PROVIDER
) ব্যবহার করে স্যুইচ করতে সক্ষম হতে পারি ।
২/২২/২০১6: এবং অ্যাপল ব্যবহারকারীদের ডেটা ডিক্রিপ্ট করতে সহায়তা করতে বাধ্য হওয়ার সাথে সাথে, কীভাবে টিপিএমকে এটি উদ্ভাবিত হয়েছিল সবচেয়ে সর্বাধিক সহজ কাজ সম্পাদন করতে পারে সে সম্পর্কে নতুনভাবে আগ্রহ তৈরি হয় - কিছু এনক্রিপ্ট করা।
এটি মোটামুটি গাড়ির মালিক সবার সমতুল্য, তবে কেউ কীভাবে এটি চালাবেন তা জানেন না। এটি সত্যিকারের দরকারী এবং দুর্দান্ত জিনিসগুলি করতে পারে, কেবলমাত্র যদি আমরা পদক্ষেপ 1 টি পাশ করতে পারি ।