עובד בלאס, oved@nethost.co.il
נטהוסט - שרותי אינטרנט
אפריל 2003
http://nethost.co.il/encrypted/
אנו מציעים כאן שיטה לשליחת דואר אלקטרוני מוצפן מאתר אינטרנט. שימוש שכיח לדואר אלקטרוני מוצפן הוא שליחת פירטי הזמנה כולל מספר כרטיס אשראי מדף אינטרנט לבעל האתר. הדואר האלקטרוני מוצפן בשרת עליו מאוחסן האתר ומשם נשלח בדואר אלקטרוני, דרך האינטרנט עד שהוא מגיע לתוכנת ה Outlook Express של מנהלי האתר. הדואר האלקטרוני מוצפן בהצפנה חזקה ואינו קריא באף אחד מן השלבים בדרך (שרתי הדואר האלקטרוני המטפלים בהעברת הדואר, תיבת הדואר של מנהלי האתר אצל ספק האינטרנט). תוכנת Outlook Express מפענחת באופן אוטומטי דואר אלקטרוני מוצפן ומאפשרת למקבל הדואר לקרוא אותו באותה קלות בה הוא קורא דואר אלקטרוני רגיל.
כדי שמנהלי האתר יוכלו לקבל את הדואר האלקטרוני המוצפן, יש לשלוח אליהם תחילה את המפתחות שיאפשרו לתוכנת Outlook Express לפענח את ההצפנה. מי שאין ברשותו את המפתח, לא יוכל לקרוא את הדואר. העברת המפתחות מתבצעת פעם אחת (בדרך כלל לאחר השלמת אתר האינטרנט). אפשר להעביר את המפתח למספר אנשים ורק הם יוכלו לקרוא את הדואר מהאתר. לדוגמא אתר אינטרנט השולח פירטי כרטיס אשראי מוצפנים לאחראית על הגבייה וכן למחליף שלה שממלא את תפקידה כשהיא נעדרת.
קיימים רכיבי תוכנה מסחריים המאפשרים שליחת דואר אלקטרוני מוצפן, רכיבים כמו:
ASPEncrypt
Cilikat Email ActivX Control
השיטה שאנו מציגים כאן, משתמשת בחבילת התוכנה החופשית OpenSSL.
הפרוטוקול S/MIME מאפשר שליחת דואר אלקטרוני מוצפן. ל S/MIME יש יתרון גדול בהעברת דואר אלקטרוני מוצפן כי הוא נתמך ומוטמע היטב בתוכנת הדואר Outlook Express (מגרסא 4 ואילך של Outlook Express). לאחר שהותקנו המפתחות המתאימים בתוכנת Outlook Express, השימוש בחתימות דיגיטליות והצפנה התואמים ל S/MIME דומה לשימוש בדואר אלקטרוני רגיל. ההודעות המתקבלות מופיעות באאוטלוק אקספרס בצורה דומה מאוד להודעה רגילה שאינה מוצפנת, מלבד סימון של חותם או מנעול בחלון ההודעה.
חבילה תוכנה חופשית (http://www.openssl.org) המאפשרת לבצע את הפעולות הקשורות בהצפנה ופיענוח. החבילה מאפשרת ביצוע הפעולות הדרושות לשליחת דואר אלקטרוני ב S/MIME. גירסא של OpenSSL ל Windows אפשר להוריד מ: http://www.openssl.org/related/binaries.html
אנו מניחים שהתקנתם את החבילה בספרייה: c:\OpenSSL
כדי לשלוח דואר אלקטרוני מוצפן מאתר אינטרנט יש ליצור קבצים המכילים מפתחות הצפנה. אנו נייצר את המפתחות האלה על מחשבנו הפרטי ולאחר מכן נעביר את המפתחות הדרושים לנו נמעני הדואר ולאתר האינטרנט.
נייצר את המפתחות באמצעות פקודות של OpenSSL. פיתחו חלון Command Prompt.
(בדוגמאות כאן אנו מניחים שהוספתם את הספריה C:\OpenSSL\Bin ל Path ולכן פקודות openssl פועלות ללא צורך לרשום את מיקומם השלם של הקבצים. אם אינכם מעוניינים להוסיף את C:\OpenSSL\Bin ל Path, רישמו את המיקןם המלא של openssl כדי להריץ את הפקודה, לדוגמא: C:\openssl\bin\openssl)
נייצר מפתח הצפנה פרטי עבור אתר האינטרנט:
כדי לייצר קובץ מפתח הצפנה פרטי website_key.pem עם מפתח פרטי חדש:
openssl genrsa -out website_key.pem
מהמפתח הפרטי נייצר סרטיפיקט (סרטיפיקט הוא המפתח הציבורי שלנו, חתום באופן דיגיטלי על ידי רשות סרטיפיקטים מוכרת ומקובלת). מכיוון שלא חשוב לנו לחתום באופן דיגיטלי על ההודעות אלא רק, שההודעות יעברו ברשת האינטרנט כשהן מוצפנות, לא נשתמש ברשות סרטיפיקטים מוכרת (כמו VeriSign או Thawte). נייצר את הסרטיפיקט, website_cert.pem בעצמנו (מאושר על ידינו בלבד):
C:\OpenSSL\mykeys>openssl req -new -x509 -key website_key.pem -out website_cert.pem -config c:\openssl\bin\openssl.cnf.cnf -days 1095
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:IL
State or Province Name (full name) [Some-State]:Tel Aviv
Locality Name (eg, city) []:Tel Aviv
Organization Name (eg, company) [Internet Widgits Pty Ltd]:our-website.com
Organizational Unit Name (eg, section) []:Company
Common Name (eg, YOUR name) []:our-website.com
Email Address []:info@website.com
עתה יש בידנו שני קבצי טקסט רגילים, קובץ המפתח הפרטי והסרטיפיקט. נחבר אותם לקובץ אחד, קובץ הזהות הדיגיטלית:
copy website_key.pem + website_cert.pem website_id.pem
קובץ הטקסט שנוצר מכיל בתחילתו את המפתח הפרטי ואחר כך את הסרטיפיקט:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
נמיר את הקובץ לפורמט המשמש את Outlook Express:
C:\OpenSSL\mykeys>openssl pkcs12 -export -in website_id.pem -out website_id_outlook.p12 -name "our-website.com Certificate"
Loading 'screen' into random state - done
Enter Export Password:
Verifying - Enter Export Password:
הקובץ שנוצר website_id_outlook.p12, הוא קובץ המכיל את מה שמכונה על ידי אאוטלוק Digital ID. הקובץ מוגן בססמא, שנדרשנו לספק בעת ההמרה. נשתמש בססמא הזו בעת יבוא ה Digital ID ל Outlook Express
את הקובץ שיצרנו, נעביר למנהלי האתר (או כל מי שאנו מעוניינים שתהיה לו אפשרות לקרוא את הדואר האלקטרוני המוצפן).
על מקבלי הקובץ לייבא את הקובץ לתוך תוכנת Outlook Express המותקנת במחשביהם, בהתאם להסבר שלהלן.
לצורך יבוא ה Digital ID הרשומה בקובץ website_id_outlook.p12, לתוכנת Outlook Express, דרושים לנו הקובץ והססמא ששימשה בעת יצירתו.
ב Outlook Express, ניגש ל Tools-Options ונבחר בלשונית ה Security. יופיע המסך הבא
נלחץ על הכפתור Digital IDs…. ונבחר Import במסך שיופיע:
נלחץ Next ונבחר את קובץ ה p12 שהועבר אלינו. נרשום את הססמא ששימשה בעת יצירת הקובץ:
במסכים הבאים נקבל את האופציות שמציע לנו Outlook Express, על ידי לחיצה על Next.
בסיום התהליך נוכל לראות את הזהות הדיגיטלית שהותקנה (שמה בדוגמא our-website.com):
נלחץ Close לסיום. עתה אנו מוכנים לקבל דואר אלקטרוני ב Outlook Express אשר הוצפן על ידי המפתח website_key.pem.
לצורך הצפנת הדואר האלקטרוני, אנו זקוקים לקובץ המפתח הציבורי (הנמצא בסרטיפיקט). את הקובץ הזה (website_cert.pem בדוגמא) יש להעתיק לאתר האינטרנט. נציין שאין חשש מבחינת בטיחות מידע להעביר את הקובץ הזה לאתר האינטרנט ולאפשר גישה כללית אליו. הקובץ מאפשר להצפין הודעה כך שרק אנו נוכל לקרוא אותה, אולם לא ניתן באמצעותו לפענח את ההודעה.
נעתיק את הקובץ website_cert.pem (ואותו בלבד) שיצרנו קודם על מחשבנו הפרטי, לשרת האינטרנט לדוגמא, לתת ספריה keys.
חבילת התוכנה החופשית OpenSSL כולל תוכנית לשליחת הודעות דואר אלקטרוני מוצפנות מ Command Prompt. כדי לשלוח דואר אלקטרוני מוצפן, נריץ את openssl מתוך ASP.
דוגמא לפקודת openssl המייצרת דואר מוצפן:
openssl smime -encrypt -in msg.txt -text -rc2-128 -out enc.eml website_cert.pem
הפקודה מייצרת קובץ דואר אלקטרוני enc.eml מוצפן באלגוריתם RC2, 128 Bit. תוכן ההודעה רשום בקובץ msg.txt. כדי לשלוח את הודעה יש להוסיף להוסיף לה Headers המציינים למי ההודעה מיועדת ולהעבירה לשרת SMTP.
בקיבצי הדוגמא המצורפים יש תוכנית המאפשרת שליחת דואר אלקטרוני מתוך ASP תוך שימוש בעקרונות שהוצגו כאן. התוכנית מקבלת את מיקומו היחסי של קובץ הסרטיפיקט, ומחרוזת המכילה את ההודעה ב HTML.
<!--#INCLUDE FILE="send_enc_functions.asp"-->
<html>
<body>
<%
.
.
SendEncryptedEmail FromAddress,ToAddress,Subject,html,CertFileVirtualLocation
%>
</body>
</html>
הדוגמא וקובץ להורדה נמצאים כאן:
http://nethost.co.il/encrypted/
כדי לאפשר שליחת דואר אלקטרוני מוצפן כפי שמתואר כאן יש לבצע על השרת את פעולות ההכנה הבאות:
להתקין את חבילת התוכנה החופשית OpenSSL For Windows ולדעת את מיקומה. (אפשר להוריד את החבילה מכאן: http://www.openssl.org/related/binaries.html).
לתת הרשאות קריאה, לספריה שבה הותקן OpenSSL לחשבונות המיוחדים של IIS: IUSR_COMPUTERNAME, IWAM_COMPUTERNAME (השמות המדוייקים של חשבונות אלה תלויים בהתקנה ובהגדרות של IIS ו Windows). הרשאות אלה דרושות כדי שניתן יהיה להריץ את פקודות ה openssl מתוך ASP.
לתת הרשאות קריאה לקבצי האתר לחשבונות המיוחדים של IIS הרשומים בסעיף הקודם (בדרך כלל ההרשאות לאתרי אינטרנט מוסדרות כך, אך יש לשים לב בעיקר למתן הרשאה לחשבון IWAM_Computername)
להעתיק את קובץ הסרטיפיקט שיצרנו לאתר האינטרנט (website_cert.pem בדוגמא)
על שרת האינטרנט לתמוך בשליחת דואר אלקטרוני בשיטה כלשהי. כאן מתוארת שליחה באמצעות Microsoft SMTP Service הנפוץ, אולם ניתן להשתמש ברכיבי דואר אלקטרוני אחרים.
להכין ספריה באתר האינטרנט עם הרשאות כתיבה. (ספריה זו משמשת ליצירת קבצים זמניים, בדרך כלל אפשר לתת לה את השם Temp. בספריה זו ייוצר הקובץ המכיל את ההודעה המוצפנת). יש לתת הרשאות כתיבה לחשבון IWAM_COMPUTERNAME
כדי שההודעה המוצפנת, תגיע לנמען בעברית יש להקפיד על Headers בהודעת הדואר המציינים שפה עברית. בקבצי הדוגמא המצורפים, יש קובץ ששמו mime_template.eml סקריפט ה ASP המייצר את הדואר האלקטרוני המוצפן משתמש בקובץ זה כ Template ליצירת ההודעה הסופית. יש לדאוג שבקובץ הזה מופיע ה Charset הנכון. בדוגמא, קיים קובץ מוכן לטיפול בהודעות בעברית hebrew_mime_template.eml.
העתיקו קובץ זה על mime_template.eml כדי שההודעות יישלחו בעברית.
לשליחת הודעות בשפות אחרות יש לערוך את הקובץ mime_template.eml ולשנות את שורת ה Charset ל Charset המתאים לאותה שפה.