مقدمه
شبکه های Ad-hoc به شبکه های آنی و یا موقت گفته می شود که برای یک منظور خاص به وجود می آیند. در واقع شبکه های بی سیم هستند که گره های آن متحرک می باشند. تفاوت عمده شبکه های Ad-hoc با شبکه های معمول بی سیم 802.11 در این است که در شبکه های Ad-hoc مجموعه ای از گره های متحرک بی سیم بدون هیچ زیرساختار مرکزی نقطه دسترسی و یا ایستگاه پایه برای ارسال اطلاعات بی سیم در بازه ای مشخص به یکدیگر وصل می شوند.
ارسال بسته های اطلاعاتی در شبکه های بی سیم Ad-hoc توسط گره های مسیری که قبلا توسط یکی از الگوریتمهای مسیریابی مشخص شده است، صورت می گیرد. نکته قابل توجه این است که هر گره تنها با گره هایی در ارتباط است که در شعاع رادیویی اش هستند، که اصطلاحا گره های همسایه نامیده می شوند[1].
پروتکلهای مسیریابی بر اساس پارامترهای کانال مانند تضعیف انتشار چند مسیره، تداخل و همچنین بسته به کاربرد شبکه به صورت بهینه طراحی شده اند. در هنگام طراحی این پروتکلها به امر تضمین امنیت در شبکه های Ad-hoc توجه نشد. در سالهای اخیر با توجه به کاربردهای حساس این شبکه از جمله در عملیاتهای نظامی، فوریتهای پزشکی و یا مجامع و کنفرانسها، که نیاز به تامین امنیت در این شبکه ها بارزتر شده است، محققان برای تامین امنیت در دو حیطه عملکرد و اعتبار پیشنهادات گوناگونی را مطرح کردند و می کنند.
شبکه های Adhoc :
شبکه های بی سیم Ad-hoc فاقد هسته مرکزی برای کنترل ارسال و دریافت داده می باشد و حمل بسته های اطلاعاتی به شخصه توسط خود گره های یک مسیر مشخص و اختصاصی صورت می گیرد. توپولوژی شبکه های Ad-hoc متغیر است زیرا گره های شبکه می توانند تحرک داشته باشند و در هر لحظه از زمان جای خود را تغییر بدهند[2].
وقتی گره ای تصمیم می گیرد که داده ای را برای گره مورد نظر خود بفرستد. ابتدا با انجام یک پروتکل مسیریابی پخش شونده کوتاهترین مسیر ممکن به گره مورد نظر را بدست می آورد و سپس با توجه به این مسیر داده را ارسال میکند. به هنگام به روز رسانی یا کشف مسیر مورد نظر تمام گره های واقع بر روی مسیر اطلاعات مربوط به راه رسیدن به گره مقصد را در جدول مسیریابی خود تنظیم می کنند، تا در هنگام ارسال داده از مبدا روند اجرای عملیات ارسال داده به درستی از طریق کوتاهترین مسیر ممکن انجام شود.
در شکل 1نمایی از یک شبکه متحرک بی سیم Ad-hoc را مشاهده می کنید که در آن گره D شروع به حرکت به سمت راست می کند و در نهایت همانطور که در سمت راست شکل مشخص شده است، از دید رادیویی گره A خارج می شود.
1 - نمایی از توپولوژی در حال تغییر یک شبکه Ad-hoc
2 - لزوم امنیت در شبکه های اقتضایی
شبکه های Ad-hoc نیز مانند بسیاری از شبکه های بی سیم و سیمی برای انجام و کارکرد صحیح اعمال شبکه که در اینجا شامل مسیریابی، جلورانی بسته های داده، نگهداری و به روز رسانی اطلاعات مسیریابی است، به امنیت نیازمند هستند. در واقع امنیت شرط لازم برای عملکرد درست اعمال شبکه است و بدون نبود آن تضمینی برای انجام صحیح این اعمال وجود ندارد و مهاجمان به راحتی می توانند یکپارچگی شبکه را بر هم بزنند[3].
سیاستی که در این راستا تدبیر می شود آن است که اعتماد کامل به گره های شبکه برای انجام اعمال حیاتی شبکه کاری عبث و بیهوده است و این رابطه اعتماد تنها در برخی از سناریوهای شبکه Ad-hoc قابل فرض است. مثلا در یک شبکه Ad-hoc که گره های آن سربازان یک گروهان باشند می توان از قبل، یعنی پیش از شروع عملیات، کلیدهای متقارن مشترک و یا کلیدهای عمومی افراد (بسته به نوع رمزنگاری متقارن یا نامتقارن) را با یکدیگر مبادله کرد. ولی مشکلات و محدودیتهای دیگری همچنان باقی می ماند. از جمله اینکه چنین شبکه ای نمی تواند امنیت را برای قرارگیری افزایشی تامین کند. چرا که گره های جدیدی که می خواهند در شبکه قرار گیرند باید به نوعی خود را به گره های دیگر معرفی کنند و احراز اصالت متقابل برای همه آنها بتواند، صورت بگیرد.
با توجه به بحثهای اخیر می توان چنین برداشت کرد که گره های شبکه Ad-hoc برای انجام مدیریت کلید به یک محیط مدیریت شده نیاز دارند. در واقع باید یک یا چند مرکز معتمد وجود داشته باشند تا گره های تازه وارد را در شبکه ثبت کنند و گره های مخرب را از شبکه خط بزنند و بدین ترتیب امنیت شبکه مورد نظر را بر اساس گره های سالم موجود تامین کنند، چرا که گره های مخرب در لیست ابطال قرار گرفته اند.
منظور از کارکرد صحیح اعمال شبکه این است که هر گره ای از شبکه به وظایف خود مبنی بر جلورانی بسته ها و مسیریابی به درستی عمل کند و در این عملیاتها به خوبی با دیگر گره ها همکاری و مشارکت کند. یعنی اینکه در نهایت اعمال شبکه بین گره ها به صورت منصفانه تسهیم شود[4].
با توجه به ماهیت ذاتی شبکه های Ad-hoc بسادگی می توان چنین برداشت کرد که عملکرد شبکه شدیدا وابسته به رفتار گره های شبکه می باشد. یعنی اگر گره ای وظایفش را به درستی انجام ندهد، بازده عملکرد شبکه به شدت افت میکند و تبادل اطلاعات حیاتی ممکن است به خطر افتد. بر این اساس در برخی از مدلهای پیشنهادی برای برقراری امنیت از منطق اکثریت استفاده میکنند و رفتار ناصحیح گره ها را بر اساس سابقه اعمال آنها بررسی میکنند و اگر این سابقه از یک حد آستانه مربوط به متوسط اعمال بدتر باشد رفتار گره مخرب تشخیص داده می شود. البته این تصمیم گیریها تا حدی نسبی اند و هرگز به طور مطلق نمی توان تعیین کرد که هر رفتاری که از گره ای سر میزند صحیح است یا ناصحیح.
برای پیداکردن گره خرابکار به انجام اعمالی چون ردیابی، نگهبانی و دیده بانی نیاز است که خود محتاج پردازش ارتباطاتی بالا می باشد که هم انرژی می طلبد و هم پهنای باند و حافظه. در نتیجه در شبکه های بی سیم چون Ad-hoc نمی توان از پروتکلهای شبکه های بی سیم چون BGP استفاده کرد هم از جهت محدودیت پردازش ارتباطاتی و هم از این جهت که توپولوژی شبکه دایما در حال تغییر است.
3 پروتکل مسیریابی AODV
پروتکل AODV نمونه ای از یک پروتکل مسیریابی بر حسب نیاز است که بر اساس مسیریاب بردار فاصله عمل میکند. نمایی از نحوه عملکرد این پروتکل در شکل 2آمده است. همانطور که در شکل 2 مشاهده می شود ابتدا گره مبدا (A) بسته درخواست مسیر خود به گره مقصد (I) را می سازد و آن را به اطراف پخش میکند.
سپس هر گره ای که در شعاع رادیویی گره مبدا باشد (گره های B و D) بسته RReq را شنود میکند و اگر بسته تکراری باشد، آنگاه آن را دور می ریزد و اگر تکراری نباشد، به جدول مسیر خود نگاه میکند. اگر مسیر تازه ای به مقصد درخواستی در جدول موجود باشد، آنگاه بسته جواب مسیر را می سازد و برای گره مبدا در یک جهت پخش میکند.
ولی اگر مسیر تازه ای وجود نداشت، آنگاه به شمارنده گره یک واحد می افزاید، بسته RReq را دوباره به همه گره- های همسایه پخش میکند و اطلاعات مبدا را برای مسیریابی معکوس ذخیره میکند.
2 - نمایی از پروتوکل مسیریابی AODV
مقادیر و پارامترهای مربوط به بسته های RReq و RRep که شامل آدرس مبدا و مقصد، شماره درخواست در RReq، شماره مسلسل مبدا و مقصد، شمارنده گره و طول عمر بسته می باشد، در شکل 3 نشان داده شده است.
Route Request Packet
Route Reply Packet
3 - بسته RReq و RRep در پروتکل مسیریابی AODV
4 - انواع حملات بر روی شبکه های اقتضایی
حملات انجام شده بر روی شبکه های Ad-hoc را می توان از چند جنبه دسته بندی کرد. در اینجا ابتدا یک دسته بندی کلاسیک از حملات ارائه شده است و در ادامه به طور مستقل به حملات ممکن پرداخته می شود.
حملات فعال که در آنها گره بدرفتار برای اجرای تهدید خودش باید هزینه انرژی آن را بپردازد. چنین گره ای اصطلاحا گره مخرب یا بداندیش نامیده میشود. هدف از انجام این حمله از هم گسستگی شبکه یا ضرر رساندن به گره- های دیگر است.
حملات غیرفعال که در آنها گره بدرفتار به قصد ذخیره انرژی از همکاری امتناع میکند. چنین گره ای گره خودخواه نامیده میشود. هدف از انجام این حمله کاهش عملکرد شبکه یا تقسیم شبکه با شرکت نکردن در عملیاتها است.
از دیدگاهی دیگر می توان حملات را به سه بخش زیر تقسیم کرد که هر کدام از این بخشها را می توان جزئی از حمله فعال ذکر شده در بالا نیز محسوب کرد. در واقع حمله غیرفعال می تواند به طور غیرمستقیم بر روی عملکرد شبکه تاثیر بگذارد لذا آن را به عنوان یک مورد خاص هم می توان در نظر گرفت. در عمل همواره ترکیبی از حمله فعال به همراه غیرفعال وجود دارد.
حمله به قصد تغییر بر روی پروتوکلهای فعلی قابل اعمال است چرا که پروتوکلهای فعلی هیچ حفاظتی در برابر یکپارچگی اطلاعات ندارند لذا براحتی قابل تغییرند. در نتیجه گره خرابکار می تواند یکپارچگی محاسبات مسیریابی را با تغییر بر هم بزند و بدین طریق بسته های اطلاعات صحیح را دور بریزد و پروسه را به کشف مسیر نادرست هدایت کند و یا اینکه مسیر ترافیک را طولانی کند و یا اینکه باعث ازدیاد ترافیک در یک مسیر خاص شود.
حمله به قصد جعل هویت به این صورت است که گره خرابکار اصالت خود را به گره دیگری تغییر می دهد و از آنجا که در پروتوکلهای فعلی بسته ها احراز اصالت نمی شوند، مهاجم با هویت نادرست شناخته می شود. به این حمله در امنیت شبکه اصطلاحا Spoofing گفته می شود که در اینجا مهاجم حتی می تواند تصویر توپولوژی شبکه را تغییر دهد و یا در اطلاعات مسیریابی حلقه تکرار بینهایت ایجاد کند.
حمله به قصد جعل پیامبرای تولید پیامهای مسیریابی غلط توسط گره مخرب و حذف گره همسایه با ارسال خطای مسیریابی جعلی است. متاسفانه این حملات به سختی قابل تشخیص اند چرا که جاعل پیام را نمی توان براحتی شناسایی کرد و مهاجم براحتی می تواند قسمتهای مختلف پیام را به نفع خود تنظیم کند و بعد آنها را در میان شبکه پخش کند.
از انواع دیگر حملات می توان حمله DoS را نام برد که مهاجم بسته صحیح داده را به قصد گسستن مسیریابی در مسیر غلط هدایت میکند. از دیگر انواع این حمله می توان از حمله مصرف منابع نام برد که در آن حمله کننده برای اشغال پهنای باند کانال، توان محاسباتی، یا حافظه گره ها به شبکه داده بی مورد تزریق میکند.
در حمله سیاهچاله مهاجم با انتشار اخبار دروغین مسیریابی برای کوتاهترین مسیر، ترافیک شبکه را به طرف خود جذب میکند و سپس آن را دور میریزد. مدل پیشرفته تر حمله سیاهچاله حمله Grey-hole است که در آن مهاجم تنها بسته های داده را دور میریزد، ولی بسته های مسیریابی را forward میکند تا مسیر ساختگی خود را پابرجا نگاه دارد!
در حمله انحراف بلاعوض مهاجم با افزودن گره های مجازی به اطلاعات مسیریابی مسیر را بلندتر نشان میدهد.
در حمله سریع مهاجم اخبار نادرست درخواست مسیر را به سرعت در سراسر شبکه پخش میکند تا گره ها به علت تکرار پیام درخواست صحیح مسیریابی را دور بریزند.
حمله لانه کرمی به عنوان یک حمله ماهرانه تلقی می شود که در آن دو مهاجم فعال با ایجاد یک تونل ارتباط خصوصی مجازی جریان عادی حرکت پیامها را اتصال کوتاه میکنند و با این روش می توانند دو گره غیرمجاور را با هم همسایه کنند و یا از پروتکل کشف مسیر جلوگیری کنند. متاسفانه بسیاری از پروتکلهای مسیریابی مانند DSR، AODV، OLSR، و TBRPF به این حمله آسیب پذیرند.
یکی از روشهای مقابله با حمله لانه کرمی استفاده از افسار بسته که به دو صورت جغرافیایی و زمانی انجام می شود. ایده اصلی آن است که گیرنده با احراز اصالت اطلاعات دقیق مکان یا زمان به همراه تمبر زمانی متوجه سفر غیرواقعی بسته برای یک توپولوژی خاص شبکه میشود.
در افسار بسته زمانی زمان سفر بسته از تفاوت بین زمان گیرنده و تمبر زمانی بدست می آید که این زمان هم با این فرض بدست آمده که گره های شبکه سنکرون باشند و در عمل همواره یک ماکزیمم خطای همگامی داریم که باید لحاظ شود. یکی از متدهای مورد استفاده در افسار بسته زمانی پروتکل TESLAمی باشد که در آن از درخت درهم ساز Merkle استفاده شده است. همانطور که در شکل 4 می بینید برای احراز کردن مقدار m07 با فرض داشتن v'3، m01، و m47 مقدار خروجی رابطه 1را بدست می آوریم و با مقدار m07 مقایسه می کنیم.
Merkle Hash Tree (1980)
1 - محاسبه مقدار راس در Merkle Hash Tree
در افسار بسته جغرافیایی یا مکانی از اطلاعات مکانی و کلاکهای همگام آزاد استفاده می شود و از روی خطای همگامی ±Δ، حد بالای سرعت گره v، تمبر زمانی Ts، زمان محلی گیرنده Tr، مکان گیرنده Pr، و مکان فرستنده Ps مقدار حد بالای فاصله بین فرستنده و گیرنده را به صورت زیر بدست می آورند.
2 - حد بالای فاصله بین گیرنده و فرستنده
افسار بسته مکانی یا جغرافیایی به دلیل وابستگی شدید به توپولوژی شبکه و پارامترهای کانال همچون مقدار تضعیف و Short and Long Range Fading در عمل با توجه به مدل انتشار رادیویی بسیار آسیب پذیر است و بیشتر از مدل زمانی آن که بهینه تر است، استفاده می شود.
5 آرایش کلید در شبکه های اقتضایی
در شبکه های Ad-hoc مصالحه گره توسط مهاجم یک تهدید فاجعه آمیز است. قدرت حمله مهاجم توسط تعداد گره های در اختیار خودش به همراه تعداد گره های مصالحه شده یا لو رفته توسط او تعیین می شود. از این جهت نیز می توان برای قدرت تخریب و نفوذ حملات باند بالا و پایین در نظر گرفت. همانطور که گفته شد برای جلوگیری از این حملات نیاز به یک محیط مدیریت شده حیاتی است.
برای یک شبکه اختصاصی توزیع کلیدهای جلسه می تواند قبل از قرارگیری گره ها از طریق یک بخش ثالث معتمد انجام شود و به منظور تمیز دادن گره های سالم از بقیه گره ها هر گره سالم با چند کلید منحصر به فرد احراز هویت میشود. مشکل آرایش کلید در شبکه های Ad-hoc این است که چگونه اطلاعات کلید معتبر را توزیع کنیم!
یکی از روشها این بود که کلیدهای مخفی مشترک تولید کنیم، همانند مدل احیای جوجه اردک که در آن دو گره برای اتصال گره Slave به گره Master به هم وصل میشوند و اطلاعات تبادل کلید از طریق آنها برقرار می شود، یا مدل کانال کناری برای یافت فرستنده ها. این مدلها همگی دارای محدودیتهای ساختاری هستند و انعطاف پذیری موجود در شبکه های Ad-hoc را به نوعی مقید می کنند.
اگر فرض کنیم که هر گره لیست کلیدهای عمومی معتبر گره های سالم را قبل از قرارگیری در شبکه دارد. بعد از توزیع کلیدهای عمومی با استفاده از پروتوکل تبادل کلید Diffie-Hellman بین هر دو گره مورد نظر می توان کلید مخفی مشترک را مبادله کرد. در نتیجه لزوم وجود مرکزی معتمد (TA) برای ثبت گره های جدید و کلا برقراری زیرساختار کلید عمومی شبکه کاملا احساس می شود. همچنین برای تبادل کلید مخفی وجود ارتباط امن (بدون شنود) بین TA و گره تازه وارد لازم است و برای تبادل لیست کلید گره های سالم وجود ارتباط امن از حمله فعال الزامی است.
یک راه حل برای حل این مشکل استفاده از آدرسهای SUCV بود که در آن هر گره یک کلید عمومی و یک کلید خصوصی برای خود دارد و آدرس SUCV را بر اساس درهم شده کلید عمومی بدست می آورد. ولی در این روش همچنان مشکل بدست آوردن لیست نام گره های سالم (بدون کلید عمومی) باقی است. برای رفع این مشکل در برخی شبکه های Ad-hoc یک یا چند CA تعریف می کنند که کار آنها صدور گواهینامه گره که شامل آدرس، کلید عمومی و امضای CA است، می باشد. مراکز CA نمی توانند همواره درونخطباشند چرا که دوباره یک وابستگی چرخشی بین مسیریابی و امنیت به وجود می آید. زیرا مسیریابی به امنیت نیازمند است و پیاده سازی امنیت نیازمند مسیریابی درونخط است. در نتیجه در موارد حیاتی CAها به صورت برونخط عمل می کنند.
روش پیشنهادی دیگر برای حل مساله زیرساختار کلید عمومی استفاده از رمزنگاری آستانه ای می باشد که در آن سهمی از هر کلید خصوصی بین گره ها به اشتراک گذاشته می شود. این روش در واقع نوع بسط یافته از مبحث تسهیم راز می باشد. همانطور که در شکل 5 نشان داده شده است هر t انتخاب از serverهای S1 تا Sn می تواند به بازیابی یا به روز رسانی کلید یکی از serverها منجر شود.
مصداقی از رمزنگاری آستانه ای در شبکه های Ad-hoc
راه حل بعدی استفاده از اعتماد تراگذر است که نمونه ای از آن در شبکه اعتماد PGP استفاده می شود و بدین صورت عمل میکند که گره A هویت یا کلیدعمومی گره B را با توجه به امضاهای گره های معتمد (از نظر گره A) پای کلیدعمومی گره B احراز میکند. مشکل اساسی در این ساختار ابطال کلیدهای جعلی است و اینکه چگونه به سرعت اطلاعات لیست کلیدهای ابطال شده را در شبکه پخش کرد.
6 - نمونه هایی از پروتکلهای امن پیشنهادی در شبکه های Ad-hoc
این بخش به معرفی اجمالی برخی از پروتکلهای امن که در شبکه های Ad-hoc برای برقراری مسیریابی و نگهداری امن آن استفاده می شود، پرداخته است. بیشتر این پروتکلها یا بر مبنای پروتکلهای معمول مسیریابی در قدیم بوده اند که به آنها یک پسوند یا پیشوند امنیتی اضافه شده است و یا بر اساس مطالب بیان شده در بخشهای قبلی مدل پیشنهادی بیشتر از حیث پروتکلهای امنیت شبکه نمود یافته است و عملکرد بهینه مسیریابی در آن لحاظ نشده است.
6.1 پروتکل مسیریابی SEAD
پروتکل مسیریابی SEAD در برابر حملات ناهماهنگ فعال مقاوم است و از رمزنگاری متقارن استفاده میکند. مسیریابی با توجه به پروتکل مسیریابی DSDV که مدل بهبود یافته پروتکل مسیریابی بردار فاصله است، صورت میگیرد. لازم به ذکر است که در مسیریابی با بردار فاصله، متریک هر مقصد (که معمولا همان تعداد گره های عبوری در مسیر است) و اولین گره مسیر به مقصد در برداری به نام بردار فاصله مشخص می شود و در مدل بهبود یافته آن شماره مسلسل آخرین باری که مقصد به روز رسانی شده است هم ذکر می شود.
در پروتکل مسیریابی SEAD از زنجیره اعداد درهم شده استفاده می شود. بدین صورت که مجموعه ای از اعداد درهم شده متوالی توسط مبدا و مقصد تولید می شود و احراز اصالت پیام دریافتی همانگونه که در رابطه 3 نشان داده شده است، با توجه به متریک و شماره مسلسل پیام صورت میگیرد. در واقع گیرنده با انجام Hashهای متوالی بر روی مقدار دریافتی می تواند به مقدار اولیه در انتهای زنجیره اعداد درهم خود برسد که تعداد عملهای Hashی لازم برای این کار را با توجه به روابط زیر انجام می دهد.
3 - زنجیره اعداد درهم
از زنجیره اعداد درهم علاوه بر احراز اصالت به روز رسانیهای مسیریابی می توان برای تثبیت باند پایین متریک هم استفاده کرد، چرا که مهاجم هرگز نمی تواند مقدار متریک داخل کد احراز پیام درهم شده را کاهش دهد، زیرا باید معکوس تابع درهم ساز را بدست آورد! ولی با قراردادن گره های مجازی می تواند مقدار متریک مسیر را بزرگتر نشان دهد. لذا شبکه باید یک باند بالا برای متریک مسیرهای ممکن در شبکه تعیین کند که این کار خود بسیار مشکل است چرا که توپولوژی شبکه دایما در حال تغییر می باشد.
6.2 پروتکل مسیریابی امن برحسب نیاز به نام ARIADNE [5]
پروتکل مسیریابی امن برحسب نیاز ARIADNE در برابر مصالحه گره ها ایستادگی میکند و بر مبنای رمزنگاری متقارن بهینه عمل میکند. احراز اصالت پیامها توسط کلید مشترک بین هر جفت گره یا کلید مشترک بین گره های مرتبط با احراز جزئی در میان مسیر و یا امضای دیجیتال صورت میگیرد که در اینجا امضای دیجیتال انکارناپذیری را تامین نمی کند و تنها احراز هویت را انجام می دهد. برای احراز اصالت از مدل پروتکل TESLA استفاده می شود و همگام سازی گره ها به صورت آزاد انجام می شود. در نتیجه باید هزینه بیشتری برای آرایش کلید بپردازیم.
برای مسیریابی و نگهداری مسیر از پروتکل DSR ایده گرفته شده است. ولی با این وجود به حمله مهاجمی که در مسیر کشف شده پنهان شده است، آسیب پذیر می باشد لذا تصمیم گیری بر اساس سابقه عملکرد گره ها صورت میگیرد که همانطور که در ابتدای بحث بیان شد این تصمیم گیریها نسبی است.
مدل پروتکل ARIADNE را در شکل 6مشاهده میکنید. مقادیر پررنگ توسط همان گره ای که نامش پررنگ شده و همچنین توسط مبدا (Source) و مقصد (Destination) قابل احراز اصالت هستند. کلید مشترک Ksd بین مبدا و مقصد مشترک است. در مسیر بازگشت پیام RRep با عبور از هر گره احراز اصالت می شود و در نهایت نیز توسط مبدا قابل احراز است، اگر مهاجم فرضی آن را تغییر نداده باشد. چنین مهاجمی می تواند در میان مسیر قرار گرفته و با مسکوت گذاردن عمل مسیریابی حمله DoS را پیاده سازی کند.
[1] Howard 2002, pp.169-171
[2] Carroll, Robert T. "Ad hoc hypothesis." The Skeptic's Dictionary. 22 Jun. 2008
[3] Texas A&M University. "Einstein's Biggest Blunder? Dark Energy May Be Consistent With Cosmological Constant." ScienceDaily 28 November 2007. 22 June 2008 .
[4] Future Shock by Alvin Toffler (ISBN 0-553-27737-5)
[5] Carroll, Robert T. (23 February 2009), "Ad hoc hypothesis", The Skeptic's Dictionary, http://skepdic.com/adhoc.html, retrieved 1 May 2009