Blowfish
ויקיפדיה האנציקלופדיה encyclopedia
Blowfish הוא צופן בלוקים סימטרי שפותח ב-1993 על ידי ברוס שנייר. זהו אלגוריתם הצפנה מהיר ובטוח מ-DES או IDEA ותומך במפתח בגודל משתנה בטווח של 32 עד 448 סיביות במטרה להכשירו לשימוש מקומי או לייצוא (בשל מגבלות הייצוא של ממשלת ארצות הברית על גודל מפתח ההצפנה). Blowfish אינו מוגן בפטנט או ברישיון כלשהו והוא חופשי לשימוש לכל מטרה. מאז המצאתו נבחן האלגוריתם על ידי מומחים רבים וקיבל הכרה כאלגוריתם חזק. חסרונותיו הם: גודל הבלוק, שנקבע ל-64 סיביות בלבד ועל כן אינו מתאים לתקן ההצפנה המתקדם שדורש לפחות 128 סיביות; תהליך הרחבת מפתח ארוך במידה ניכרת, דבר המאט את ביצועיו; כמו כן, התגלו מפתחות הצפנה חלשים שיש להימנע משימוש בהם.
מבנה Blowfish מזכיר רשת פייסטל בדומה ל-DES. בשל שלב ההכנה הארוך מן הרגיל ליצירת תת-מפתחות לכל סבבי ההצפנה, מתאים במיוחד כשאין צורך לשנות מפתח באופן תדיר כגון בהצפנת ארכיון קבצים או דיסק קשיח. גודל הבלוק נקבע ל-64 סיביות ואורך המפתח יכול להשתנות להשגת רמות שונות של ביטחון. הוא כולל שני שלבים עיקריים; הרחבת מפתח שבו מפתח בגודל מרבי של 448 סיביות מורחב לגודל כולל של 4,168 סיביות. ותהליך הצפנה - טרנספורמציה המבוצעת על מחצית מהקלט ב-16 סבבים לסירוגין וכוללת תמורה תלוית מפתח והחלפה תלוית מפתח, תוך שימוש בפעולות חיבור ו-XOR בלבד על מילים בגודל 32 סיביות. בנוסף לארבע פעולות נוספות של חיפוש בטבלה לפי אינדקס (lookup). האלגוריתם מכיל ארבע תיבות החלפה (S-box) דינאמיות תלויות-מפתח, המכילות 256 כניסות בגודל 32 סיביות והוא עושה שימוש בקבועים שהם חלק מספרות הערך פאי בייצוג בינארי.