অনুলিপি সুরক্ষা, বৌদ্ধিক সুরক্ষা এবং স্থাপনার বিষয়গুলি


10

রাস্পবেরি পাই 2 মডেল বি v1.1 এর সাথে এক সময়ের পরে, আমার কি নিম্নলিখিত উদ্বেগ রয়েছে?

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

আগাম ধন্যবাদ.


2
এটি একটি সাধারণ এমবেডেড লিনাক্স প্রশ্ন। প্রযুক্তিগত ও আইনীভাবে এটি একটি জটিল সমস্যা।
ক্রেগ 17

2
হ্যালো এবং রাস্পবেরিপিএসই তে স্বাগতম! এটি একটিতে অনেকগুলি প্রশ্ন। কিছু সমস্যাগুলি খুব বিস্তৃত এবং পাই-নির্দিষ্ট নয়। আপনার বিবেচনা করা উচিত যে প্রদত্ত সময় এবং প্রচেষ্টা সমস্ত অনুলিপি সুরক্ষা সিস্টেমগুলি ছিন্ন করা যায়। বিশেষত তাই যদি আপনার সিস্টেমটি মোতায়েন করা হয় এবং আপনার সুরক্ষা ভঙ্গ করার জন্য সমস্ত "সরঞ্জাম" ব্যবহার করা থেকে "খারাপ লোক" রোধ করার উপায় নেই।
han

@ ক্রেইগ: এম্বেডড লিনাক্স কমিউনিটি আছে কি?
ব্রেথলোজে

ডাব্লুআরটি # 2: আপনি কোনও প্ল্যাটফর্মে প্রযুক্তিগতভাবে জলদস্যুতা রোধ করতে পারবেন না , আপনি যা করতে পারেন তা আইনত লড়াই করুন । আমার মনে হয় আপনার এখানে ঘোড়ার আগে কার্ট আছে। আপনার কাছে পাই-ভিত্তিক সফ্টওয়্যার প্রকল্প রয়েছে যেখানে এটি উদ্বেগের বিষয়, আপনি বুঝতে পারবেন যে পাই-ভিত্তিক এমন কোনও পাই নেই যা সত্যিই পাইয়ের সাথে আবদ্ধ is এটি কেবল একটি সাধারণ উদ্দেশ্য ডিভাইস এবং সম্প্রদায়টি উন্নয়নমুখী।
স্বর্ণকেশ

2
এটি "তাদের প্ল্যাটফর্ম" নয়, অ্যাপ্লিকেশন বিকাশ বুদ্ধিমান, এবং তারা এটি জানে এবং যত্ন করে না। এটি "তাদের উদ্দেশ্য" নয়। এটি একটি এআরএম আর্কিটেকচার বাস্তবায়ন করে একটি ব্রডকম এসসি। পাই এর সাথে কেউ করার কিছু নেই যা অন্য ডিভাইসগুলির একটি বিস্তৃত পরিসরে তুচ্ছভাবে পোর্ট করা যায় না। সুতরাং, আবার: আপনার ঘোড়া আগে গাড়ী আছে । বুদ্ধিজীবী সম্পত্তির সাথে আপনার উদ্বেগের কোনও অর্থ বা তাত্পর্য রয়েছে এমন সময়ে আপনি যখন পৌঁছবেন তখনই আপনি বুঝতে পারবেন যে আমি আপনাকে কী বলতে চাইছি ...
স্বর্ণলোকস

উত্তর:


6

আপনি যদি সত্যই আপনার আন্তঃআলৌকিক সম্পত্তি রক্ষার বিষয়ে উদ্বিগ্ন হন তবে আপনি আপনার র‌্যাবেরি পাই ভিত্তিক অ্যাপ্লিকেশনটি কিছু বাহ্যিক কাস্টম তৈরি মাইক্রো কন্ট্রোলারের (এমসিইউ এর মতো এভিআর, পিক, 8051 ...) ভিত্তিক হার্ডওয়্যার কী (ইউএসবি, আরএক্সটিএক্সের মাধ্যমে পাইতে সংযুক্ত, আই 2 সি, এসপিআই, 1 ওয়্যার ...)। উদাহরণস্বরূপ, পাই সাইড অ্যাপ্লিকেশনটি একটি এলোমেলো সংখ্যা উত্পন্ন করে যা এমসিইউতে পাঠানো হয়, ডিকোড করা হয় এবং গুরুত্বপূর্ণ কিছু ডিক্রিপ্ট করার জন্য একটি আনলক কী হিসাবে ফিরে পাঠানো হয়। তারপরে আপনার এমসিইউতে সরাসরি কিছু কার্যকর ক্রিয়াকলাপ চালানো হয় (আপনি কেবলমাত্র পরামিতিগুলি পাস করেন এবং এমসিইউ থেকে ফলাফল পাবেন)। আপনি কল্পনা করতে পারেন যে কীভাবে এটি একটি হ্যাকারের পক্ষে ক্র্যাকিংয়ের অসুবিধা বাড়িয়ে তুলবে বিশাল আকারের দিক থেকে, কারণ তার জ্ঞান তখনকার চেয়ে আরও বিস্তৃত হতে হবে। একটি নিখুঁত সুরক্ষা নেই, তবে আপনি যদি সত্যিই এটিকে চ্যালেঞ্জ তৈরি করতে চান তবে এটি যাওয়ার উপায় হতে পারে।


1
এটি আসলেই একটি দুর্দান্ত সমাধান .... আমি এই ধারণার চেষ্টা করব ....
ব্রেথ্লোজ

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

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

1
এই বাহ্যিক সার্কিটরি প্রকৃতপক্ষে সুরক্ষা যোগ করার সময় এই জিনিসগুলির জন্য প্রচুর অর্থ ব্যয় হয়: গবেষণা, প্রোটোটাইপিং, উত্পাদন, পরীক্ষা, বাস্তবায়ন, রক্ষণাবেক্ষণ। লাইনের সাথে কিছু হলে কি হবে? ভবিষ্যতের মডেলগুলিতে যদি রাস্পবেরি তাদের ইন্টারফেস (গুলি) পরিবর্তন করে তবে কী হবে? এটি যদি একটি স্বল্প আজীবন বা কোনও শখের প্রকল্প হয় তবে এর জন্য যান। যদি এটি একটি শিল্প / বাণিজ্যিক পণ্য হয় তবে সম্ভবত ওএম একটি নিরাপদ বাজি।
ইডিপি

5
  1. আমি মনে করি যে সমস্ত বরাবর গণনা মডিউল সঙ্গে ধারণা ছিল। লাভের দিকে ঘুরতে সমস্যা হওয়া উচিত নয়।

  2. / 4. সুপারগ্লিউ বিকল্পটি সম্ভবত একটি ভাল ট্রেড অফ। শেষ পর্যন্ত আপনি কোনও আক্রমণকারীকে ডিভাইসে শারীরিক অ্যাক্সেস সহ পরাজিত করতে পারবেন না। গেম কনসোলগুলি দেখুন যা সম্ভবত ডিআরএম অবকাঠামোতে লক্ষ লক্ষ বিনিয়োগ করেছে এবং সেগুলি সবশেষে হ্রাস পায়। অন্যরকম অনুভূতিতে, আপনি খোলামেলাতা আলিঙ্গন করতে এবং আপনার পণ্যের বিকাশ সংস্করণ বিক্রয় করতে পারেন এবং এক ধরণের এসডিকে অন্তর্ভুক্ত করতে পারেন। কোনও প্রযুক্তিগত ফোকাসযুক্ত ব্যবহারকারী গোষ্ঠীর কাছ থেকে আপনি যে প্রতিক্রিয়া পান তা মূল্যবান এবং আপনার আগ্রহের সাথে কাজ করে।


সুপারগ্লিউ বিকল্পটি সম্ভবত সম্পূর্ণ বাদাম, তবে আপনি এখানে আরও কিছু ভাল পয়েন্ট তৈরি করেন। ; |
স্বর্ণকেশ

আসলে, আমি রাস্পবেরি পাই থেকে কিছু হার্ডওয়্যার আইডি নিয়ে ভাবছিলাম, যাতে প্রতিটি আরপিআই সফ্টওয়্যার প্রতিটি আরপিআই কার্ডের জন্য প্রোগ্রাম করা যায়, এবং এইভাবে, আমি যদি সফ্টওয়্যারটি ক্লোন করি তবে সিস্টেমটি কাজ করবে না। পুরানো ইউপ্রসেসরগুলি কেবল বোর্ডে প্রোগ্রাম করা হয়েছিল, সুতরাং আপনি এটিকে প্লাগ করতে পারবেন না :)।
ব্রেথ্লোজে

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

LOL .. না, আমি মনে করি আমি তাদের মধ্যে খুব ছোট পরিমাণে বিক্রি করব !. সুতরাং, আমার কাছে যদি রাস্পবিয়ানের অধীনে একটি কোড চলছে, অন্য যে কোনও এসডি কার্ডটি গ্রহণ করতে পারে এবং এটি পড়তে পারে? এটি ডিবাগ? এটা ভেঙে ফেল?. আমি পুরোপুরি নিশ্চিত, উত্তর অবশ্যই হ্যাঁ। অভ্রেরHardware Key দ্বারা প্রস্তাবিত হওয়া এবং এসডি কার্ডটিকে এর সংযোজকের ভিতরে সুপারগ্লিউ দিয়ে কবর দেওয়া কি সেরা পছন্দ হবে ?
ব্রেথলোজে

4

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

তবে এখন বিষয় ...

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

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

তার উপরে রয়েছে ডিপ্লোয়মেন্ট ফ্যাক্টর। আপনার বাজারটি যত বিস্তৃত হবে তত বেশি আকর্ষণীয় হয়ে উঠবে আপনার প্রযুক্তিগুলিকে ভাঙতে এবং চুরি করতে।

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

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


3

আপনি একটি এনক্রিপ্ট কী দিয়ে রাস্পবেরির অভ্যন্তরে পিগি-ব্যাক ব্যবহার করতে পারেন। বাজারে বেশ কয়েকটি বাণিজ্যিক ডিভাইস রয়েছে are আমি এই সফটওয়্যার সিরিয়াল সুরক্ষা রাস্পবেরি পাই এর জন্য ব্যবহার করেছি যা খুব ভাল কাজ করে।


2
এটি সিস্টেমকে ক্লোনিং থেকে রক্ষা করতে আপনাকে সহায়তা করবে না - হ্যাকাররা চাইলে আপনার বাইনারি থেকে এইচডাব্লু কী জন্য চেকটি সরিয়ে ফেলবে ... এইচডাব্লু কী কেবলমাত্র একটি নির্দিষ্ট মাত্রার সুরক্ষা সরবরাহ করবে (সম্ভবত প্রথম স্তরের শখ বন্ধ করতে হ্যাকার)।
কোজুচ

2

এটিকে ওপেন সোর্স করুন

গুরুত্ব সহকারে এটিকে অনুলিপি করার চেষ্টা করবেন না। এটিকে ওপেন সোর্স করুন। সম্ভব হলে অন্যকেও আপনার প্রকল্পে যোগদান করতে দিন।

তারপরে পরিষেবাগুলির জন্য চার্জ দিন। আপনি যদি এটি সঠিকভাবে করেন তবে আপনি বালতি অর্থোপার্জন করতে পারেন।

রেড- হ্যাড এটি এবং অন্যান্য কয়েকটি সংস্থার মতো করে। তারা সবাই ভাল করছে এবং বাড়ছে।


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

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


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

1
আবার এটি আপনার সমস্ত কাজকে মানুষের সুবিধার জন্য উপহার দেওয়ার বা আপনার যা কিছু করার জন্য প্রত্যেককে চার্জ করার একান্তই আলোচনা।
ব্র্যাথলজ

1

আমার কয়েক সেন্ট:

  1. স্ক্রিপ্টগুলির আশেপাশে কোনও সমাধান কখনই তৈরি করবেন না যা সরাসরি পড়তে পারে।
  2. একাধিক সফ্টওয়্যার / প্রসেস এবং হার্ডওয়্যারের ক্ষেত্রে ব্রেকডাউন কার্যকারিতা।
  3. কিছু পঠিত হার্ডওয়্যার "ক্রিয়ামূলক" নির্ভরতা যুক্ত করুন।
  4. স্মার্ট কার্ড রিডার যুক্ত করুন এবং আপনার পণ্যটির সাথে "সক্ষম" স্মার্ট কার্ড বিক্রি করুন।
  5. লাইসেন্স সার্ভার আছে
  6. EEPROM এ ব্যবহারের কাউন্টার রয়েছে !!! এবং অনলাইনে "রিচার্জ" করার কিছু উপায় থাকতে হবে .. ;-)

...


1

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

আইডি ব্যবহার করে সুরক্ষা সম্পর্কিত আরেকটি পরামর্শ হ'ল সাধারণ চেক ব্যবহার করা এড়ানো

if(readID() != 0xDEADBEEF) exit();

এর মতো সাধারণ চেকগুলি আবিষ্কার করা সহজ (হয় পরিচিত আইডি অনুসন্ধান করে বা কলগুলি পর্যবেক্ষণ করে exit()) এবং অপসারণ করতে পারে। আইডিটিকে গণনার ক্ষেত্রে ধ্রুবক হিসাবে অন্তর্ভুক্ত করা একটি আরও ভাল পদ্ধতির। অর্থাৎ i++আপনার কোডের কোথাও পরিবর্তে আপনি লিখবেন

i = i + readID() - 0xDEADBEEF + 1;

এটি আবিষ্কার করা আরও অনেক কঠিন হবে কারণ সঠিক কোডটি আপনার কোড ভারব্যাটিম ( 0xDEADBEEF + 1 == 0xDEADBEF0) এ প্রদর্শিত হবে না এবং সমস্ত কল পরিদর্শন exit()করাও আপনার প্রতিরক্ষামূলক কোডের অবস্থান প্রকাশ করবে না। পরিবর্তে, আপনার কোডটি ভুল আইডির সাহায্যে কোনও সিস্টেমে ক্রাশ হবে এবং সমস্যাটি বুঝতে এবং সমাধান করার জন্য আক্রমণকারীটিকে আপনার অ্যাপ্লিকেশনটির যুক্তিটি ডিবাগ করতে হবে।


0

একটি বাহ্যিক উপাদান ব্যবহার করে, আমার অর্থ সুরক্ষা উপাদানটি এই সমস্যার সমাধান করবে solve যদি আপনি সত্যিই ভাবেন যে আপনার ধারণাটি দুর্দান্ত এবং এটির জন্য অতিরিক্ত মূল্য ব্যয় করা হয় তবে আমি আপনাকে এটি করার জন্য কিছু পেশাদার এমসিইউ / সিপিইউ ব্যবহার করার পরামর্শ দিচ্ছি। ব্রডকম বিসিএম ৫৮১০১ সিরিজের মতো, কোনও নতুন ব্যবহারকারীর পক্ষে কার্যকরভাবে ব্যয়বহুল এবং বন্ধুত্বপূর্ণ নয় তবে উচ্চ সুরক্ষা স্তরও আপনার ধারণা / নকশা রক্ষা করতে পারে।

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