আমার সত্যিকারের এলোমেলো নম্বর জেনারেটরের ওয়েব পরিষেবা প্রয়োজন [বন্ধ]


10

র্যান্ডম.আরজি প্রতিদিন আইপি প্রতি এনালগ ওয়ার্ল্ড ( সিএফ ।) থেকে 200k ফ্রি র্যান্ডম বিট (কেবল 6250 32-বিট ইন্টিজার!) সরবরাহ করে ।

কেউ কি এমন কোনও বিকল্প ওয়েব পরিষেবা সম্পর্কে জানেন যা প্রতিদিন আরও অন-ডিমান্ড এলোমেলো বিট সরবরাহ করে?

(মূল্য প্রতি ইউএসডে ১০০০ × ১০২৪ বিটসের "প্রত্যাশার মধ্যে থাকা" হিসাবে প্রদান ঠিক আছে) (এলোমেলো.অর্গের প্রদত্ত পরিষেবাটি এই মূল্যটি 100 charges চার্জ করে)


9
আরও বড় প্রশ্ন হ'ল "কেন" আপনার "সত্যিকারের" র্যান্ডম নম্বর জেনারেটর দরকার?
রাতের রাত

5
খাঁটি সফ্টওয়্যারটিতে সত্যিকারের এলোমেলো জেনারেটর নেই। আপনি দিনের কাছাকাছি যেতে পারেন, এটি সত্যই এলোমেলো হবে না।
রামহাউন্ড

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

4
এই যে! [webservice] public int GetRandomNumber() { return 4; // rfc 1149.5 }। ক্রেডিট: xkcd.com/221
হোমমে

3
মাফ করবেন স্যার, আপনি কিছু পূর্ণসংখ্যা কিনতে চান? আমরা কেবল সেরা ফ্রি-রেঞ্জ, আর্টিসিনাল পূর্ণসংখ্যার স্টক করি।
রেন হেনরিচস

উত্তর:


25

সম্ভবত এই এক।

http://qrng.physik.hu-berlin.de/

সাইট থেকে:

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

উচ্চ গতি সরবরাহের সাথে (ইউএসবি-তে 150 মেগিবাইট / গুলি পর্যন্ত) সরবরাহের পরে, কাঁচা ডেটা প্রয়োগ করা পোস্ট-প্রসেসিং অ্যালগরিদম তথ্য তত্ত্বের দৃ pred় পূর্বাভাসের উপর ভিত্তি করে যা এলোমেলো সংরক্ষণের গ্যারান্টি দেয়। এটি শর্তহীন সুরক্ষিত এনক্রিপশন স্কিমগুলিতে বিতরণ করা এলোমেলো নম্বর ব্যবহার করার অনুমতি দেয়।
[...]
অ্যাক্সেস নীতিসমূহ
পরিবেশন করা ডেটাগুলির কোনওটিই একাধিকবার সরবরাহ করা হয় না, একক ব্যবহারকারীর কাছেও নয়> স্বাধীন ব্যবহারকারীদের জুড়ে। পরিষেবাটি ব্যবহার নিখরচায়, তবে নিবন্ধকরণ প্রয়োজন requires


1
(0.o) ?! হা ভগবান! আমি ভেবেছিলাম এটি একটি রসিকতা ছিল, তবে আসলেই এটির কোনও অস্তিত্ব নেই :) (+1) দুর্দান্ত সন্ধান
ডার্ক নাইট

4
নিম্নমানের উত্তরের জন্য -1। এটি খুব ভাল সমাধান হতে পারে তবে আপনি লিঙ্ক / পরিষেবা সম্পর্কে কোনও বিবরণ সরবরাহ করেন নি এবং সারাংশের জন্য আমি পুরো লিঙ্কটি পড়তে পাত্তা দিই না। যখন পি.এসইতে কোনও উত্তরের কোনও লিঙ্ক দরকার হয়, দয়া করে আপনি যে সমাধানটি সংযুক্ত করছেন তার সংক্ষিপ্তসার সরবরাহ করুন। আপনি যদি নিজের উত্তরটি পুনরায় সংশোধন করেন তবে আমি আমার ডাউনটোট সরিয়ে নেওয়ার বিষয়টি বিবেচনা করব।
ক্রেইজ

4
@ নিমচিম্পস্কি - কেন? কারণ সেভাবেই আপনি পি.এসইতে একটি মানের উত্তর লিখবেন। এই প্রশ্নটি পড়ার জন্য বা__ফ্রেন্ডের পরিষেবাটির একটি সংক্ষিপ্ত বিবরণ পোস্ট করা উচিত ছিল। পরিষেবাটি এলোমেলো সংখ্যাগুলি কীভাবে উত্পন্ন করে সে সম্পর্কে একটি দ্রুত ব্যাখ্যা / উদ্ধৃতি।
ক্রেইজ

2
@ ক্রেইজ আমি পোস্টটি আপডেট করেছি সাইট থেকে একটি উদ্ধৃতি দিয়ে।
আদম লিয়ার

5
@ নিমচিম্পস্কি: কারণ লিঙ্করোট হয়।
জন পুর্ডি

31

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

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

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

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

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

আমি অনলাইন ক্যাসিনো ব্যবহারের জন্য এলোমেলো সংখ্যা জেনারেটর তৈরি করেছি যা স্বতন্ত্র শংসাপত্র অর্জন করেছে। এই পদ্ধতিগুলি বাস্তব বিশ্বে ব্যবহৃত হয়।


6
সাধারণ জ্ঞানের জন্য +1, আকর্ষণীয় উদাহরণ এবং চমৎকার পবিত্র জলের রূপক!
মাইকেরা


@ ডেভিড, হাই, মনটি গল্পটি ব্যাখ্যা করে "আমি অনলাইন ক্যাসিনো ব্যবহারের জন্য এলোমেলো সংখ্যা জেনারেটর তৈরি করেছি" ..?
পেসেরিয়র

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

13

আমি এখনও বুঝতে পারছি না যে আপনার সমস্যার জন্য কোনও ক্রিপ্টোগ্রাফিক পিআরএনজি যথেষ্ট ভাল নয়। একটি ক্রিপ্টো-পিআরএনজির একটি সংজ্ঞায়িত সম্পত্তি হ'ল এটি সম্ভব হয় না (যুক্তিসঙ্গত পরিমাণ হার্ডওয়্যার সহ) এর আউটপুটকে সত্যিকার আরএনজি থেকে আলাদা করা সম্ভব নয়।

এর অর্থ এটি প্রজন্মের ক্রিপ্টোগ্রাফিক কী বা ক্রিপ্টো পিআরএনজি নিজেই আরম্ভ করার পরিবর্তে যে কোনও ধরণের সিমুলেশন বা অ্যাপ্লিকেশন সম্পর্কে আমি ভাবতে পারি তার পক্ষে এটি যথেষ্ট ভাল (এটি শুরু করার জন্য অবশ্যই প্রকৃত এনট্রপির কয়েকশ বিট প্রয়োজন)।

অন্যদিকে ওয়েব সার্ভিস আরএনজিগুলি তখন থেকে ক্রিপ্টোর জন্য ব্যবহার করা যাবে না

  1. আপনি প্রমাণ করতে পারবেন না যে এগুলি আসলেই সত্যিকারের পিআরএনজি, যেহেতু আপনি পিআরএনজি থেকে তাদের আউটপুট আলাদা করতে পারবেন না
  2. আপনি পরিষেবার অপারেটর বিশ্বাস করতে হবে
  3. র‌্যান্ডম ডেটা আপনার কাছে নিম্ন সুরক্ষা চ্যানেলের মাধ্যমে প্রেরণ করা হয়। একজন আক্রমণকারী যিনি একটি পিআরএনজি ভাঙতে পারে সে এসএসএলকেও ভেঙে দিতে পারে।

সুতরাং আমি কোনও একক ব্যবহারের কথা ভাবতে পারি না যেখানে কোনও ভাল পিআরএনজির চেয়ে একজন ওয়েব সার্ভিস আরএনজি পছন্দ করে। আপনার যদি সত্যই এবং সুরক্ষিত এলোমেলো সংখ্যার প্রয়োজন হয় তবে আমি নিজে হার্ডওয়্যার তৈরির বিকল্প দেখি না।


হ্যাঁ আমি আউটপুটটিকে সত্যই এলোমেলো প্রমাণ করতে পারি না। তবে এটিকে এলোমেলো.আর / স্ট্যাটিকসিতে বিশ্বাস করা এতটা কঠিন নয় । আপনি মনে করছেন সুরক্ষা আমার প্রয়োজনীয়তার একটি তবে এটি নয়। আমার একটি এলোমেলো নম্বর ফুলস্টপ দরকার need একটি এলোমেলো এবং সুরক্ষিত নম্বর নয়। (কোনও আক্রমণকারী যদি
নিখরচায় স্বভাব

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

@ কোডইনচাউস একটি অনলাইন ক্যাসিনো খুব কঠিন গাণিতিক সমস্যা? এটি নয়, তবে এর জন্য এমন ধরণের সত্য র্যান্ডম দরকার যা আপনি মনে করেন না?
পেসারিয়ার

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

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

5

বেশ কয়েক বছর আগে আপনি এসজিআইয়ের লভর্যান্ডকে কল করতে পারেন যা বর্তমান ব্লব আকারটি ব্যবহার করে এবং একটি ওয়েবক্যাম্প দ্বারা দেখা লাভা প্রদীপের পোস্টিং ব্যবহার করে এলোমেলো সংখ্যা তৈরি করে।

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

(আমি জানি এটি কোনও পরিষেবা নয় যা আপনি এখন ব্যবহার করতে পারেন তবে এটি যেহেতু এটি আগে ব্যবহৃত হত, কারণ এটি খুব শীতল ছিল এবং আপনি খুব সহজেই প্রায় একটি নিখরচায় তৈরি করতে পারেন বলে আমি বুঝতে পেরেছিলাম যে এটি উত্তর হওয়ার উপযুক্ত ছিল))


তবে সময়ের সাথে সাথে ওয়েবক্যামের দ্বারা উত্পাদিত "এলোমেলো" শব্দটি একটি সাধারণ বিতরণে মাপসই হবে? আমি জানি না এটি পরিষ্কার করা চাই?
অন্ধকার রাত

4
@ ডার্কনাইট: এলোমেলোভাবে বিতরণটির কী দরকার? যে কোনও বিতরণ মেলানোর জন্য নির্ধারক ক্রমগুলি তৈরি করা সম্ভব এবং এলোমেলো সংখ্যার পক্ষে কোনও বিতরণ মাপসই করা সম্ভব।
ডেভিড থর্নলে

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

মারাত্মকভাবে ম্যাথিউ সহজেই তৈরি করার উপায় নেই। আপনি ঠিক কিভাবে সংজ্ঞায়িত করবেন?
পেসারিয়ার

2
@ পেসারিয়র আপনি ঠিক বলেছেন যে "সহজ" দৃষ্টিভঙ্গির বিষয়। এই পদ্ধতিটি সহজ যদি আপনি আপনার সার্ভারে অ্যাক্সেস পেয়ে থাকেন এবং উপযুক্ত ওয়েব ক্যামের সন্ধান করতে বেশি সময় না লাগে - ইবেতে একটি $ 10 "এখনই এটি কিনুন" বলুন। যে ক্যামেরা সংযুক্ত পাতা; বিনামূল্যে সফ্টওয়্যার ডাউনলোড, সংকলন, এবং পরিচালনা; এবং আপনার কোডটিতে পরিষেবাটিতে একটি কল যুক্ত করা হচ্ছে। তুচ্ছ নয়, তবে বেশ সহজ, অত্যন্ত সস্তা, এবং সীমাহীন সংখ্যক অনুরোধ সরবরাহ করে।
ম্যাথু ফ্রেডেরিক

1

যে কোনও হোস্ট / পোর্টের জন্য একটি টিসিপি সংযোগ খুলুন এবং এটি যে ন্যানো সেকেন্ড লাগে সেগুলি গণনা করুন। আপনার এলোমেলো নম্বর আছে।


আমি আশা করি এটি আপনি ঠিক এলোমেলো সংখ্যার উত্পাদন করছেন না isn't
ক্রেইজ

9
আমার (মৃদু ব্যঙ্গাত্মক) উত্তরের বক্তব্যটি হ'ল প্যাকেটগুলিতে যাতায়াত করতে সময় লাগে এমন এনট্রপি একটি "এলোমেলো" সংখ্যার চেয়ে অনেক বেশি মূল্যবান, যার এনট্রপি আপনি কোনও তৃতীয় পক্ষের সার্ভারকে বিশ্বাস করেন।
আর .. গীটহাব বন্ধ করুন ICE

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

1
@ পেসারিয়র তবে আপনি এখনও দেখাননি যে মাঝেমধ্যে এনট্রপি ইঞ্জেকশন (স্থানীয় এনট্রপি উত্স থেকে) স্থানীয় পিআরএনজি ব্যবহারের বিকল্প কেন সম্ভব নয়।
CodeInChaos

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

1

এখানে অন্য কোয়ান্টাম ভিত্তিক জেনারেটর রয়েছে, বিশ্রাম এপিআই কম নয়:

http://photonics.anu.edu.au/qoptics/Research/qrng.php

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

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