Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: BJ512 am 15.11.07 - 10:41:11

Titel: verschlüsselter Mailversand über Mail.Box
Beitrag von: BJ512 am 15.11.07 - 10:41:11
Hallo zusammen,

ich habe mich heute hier neu angemeldet, weil ich als Gast hier im Forum nicht mehr weiterkomme,
da ich zu meinem jetztigen Problem keine Lösung mehr über die Suche bekomme... ;-)


Problem:
Ich  habe eine Datenbank entwickelt, welche die Passwörter von User fürs Internet/Intranet im NAB zurücksetzt.
Ein Agent generiert automatisch ein 8 stelliges Passwort, schreibt das neue Pwd ins NAB und schickt dann eine
Mail an den User um ihm das neue Pwd mitzuteilen.
Beim versenden der Mail müssen die Optionen "Keine Kopie zulässig" und "Verschlüsselt" aktiv sein (die Revision will das so).

-> beim normalen mail versenden über doc.send wir die Mail verschlüsselt , der Empfänger kann diese lesen und alles ist gut :-)

Aber dadurch das die Möglichkeit besteht, das die Mail unzustellbar ist und im Nirvana zu verschwinden droht, fake ich den
Absender mit Hilfe der Mail.Box (wurde ja schon öfter hier im Forum angesprochen).
Sprich ich nehme die Mail, die mit dem doc.send zuverlässig funktioniert hat und kopiere alle Items in ein neues Doc welches ich in der Datenbank
mail.box erstellt habe. abschliessend ein doc.save und alles ist soweit in Ordnung.

-> nicht zustellbare mails werden jetzt umgeleitet an den gefakten adressaten (alles in Ordnung) ABER....
wenn ich die richtig zugestellt Mail probiere zu öffnen dann sagt mir mein Client, kann nicht alle Teile der Mail anzeigen, da diese verschlüsselt sind

Sprich das Mail versenden über die Mail.Box verschlüsselt die Mail derart, das sie kein user mehr öffnen kann.

Habt ihr irgendeine Idee, woran das liegen könnte, welche Verschlüsselungsschlüssel hier bei genommen werden oder ähnliches?!

Danke für eure hilfe...




Code
	
	Call memo.replaceitemvalue("Form", "Memo")
	Call memo.replaceitemvalue("$KeepPrivate","1")
	Call memo.replaceitemvalue("Encrypt","1")
	Call memo.replaceitemvalue("EncryptOnSend", "1")
	Call memo.replaceitemvalue("EncryptionKeys", key)
	Call memo.replaceitemvalue("PublicEncryptionKeys",username)
	Call memo.replaceitemvalue("ReplyTo", Absender)
	Call memo.replaceitemvalue("From", AbsenderLN)
	Call memo.replaceitemvalue("INetFrom", Absender)	
	Call memo.replaceitemvalue("Principal", AbsenderLN)
	Call memo.replaceitemvalue("PostedDate", Now)
	
	
	'An wen, Priorität, Betreff
	Call memo.replaceitemvalue("SendTo", username)
	Call memo.replaceitemvalue("Recipients", username)
	Call memo.replaceitemvalue("Importance",mailpriority)
	Call memo.replaceitemvalue("Subject", mailbetrefftext)
	
	
	'Mailtext wird aus Array zusammengefügt
	For i=0 To Ubound(mailtextzeile)
		Call rtitem.AddNewLine( 2 )	
		Call rtitem.AppendText(mailtextzeile(i))	
	Next
	
	'Verschlüsseln, danach den shared key entfernen
	Call memo.Encrypt
	Call memo.removeItem("sharedEncryptionKeys")
	
	Set dbMailBox = session.GetDatabase(server, MailBoxName)
	If Not dbMailBox Is Nothing Then
		Set docMailBox = New NotesDocument(dbMailBox)
		
		Call memo.CopyAllItems( docMailBox, True )
		
		Call docMailBox.replaceitemvalue("From", AbsenderLN)
		Call docMailBox.replaceitemvalue("INetFrom", Absender)	
		Call docMailBox.replaceitemvalue("Principal", AbsenderLN)
		Call docMailBox.replaceitemvalue("PostedDate", Now)
		docMailBox.Save( False, False )
	Else
		errortext = errortext + " // Mailbox konnte nicht geöffnet werden!"
	End If
Titel: Re: verschlüsselter Mailversand über Mail.Box
Beitrag von: DerAndre am 15.11.07 - 10:56:07
Hilft Dir das aus der Hilfe?:

If the script is running on a server, it must have permission to use Encrypt.
Since mail encryption works differently, don't use this method if you want to mail an encrypted document. Instead, set the EncryptOnSend property to True, and use the Send method.
Titel: Re: verschlüsselter Mailversand über Mail.Box
Beitrag von: BJ512 am 15.11.07 - 11:00:33
Hilft Dir das aus der Hilfe?:

If the script is running on a server, it must have permission to use Encrypt.
Since mail encryption works differently, don't use this method if you want to mail an encrypted document. Instead, set the EncryptOnSend property to True, and use the Send method.

danke, aber das nutzt mir leider nichts, da ich das Dokument ja nicht per Agent senden möchte, sondern ich speicher das Document in der Mail.Box, welche den Versand dann übernimmt.
Titel: Re: verschlüsselter Mailversand über Mail.Box
Beitrag von: Pyewacket am 18.11.07 - 21:09:10
Wozu brauchst du denn einen shared Encryption Key? Wenn du das Feld danach aus der Mail entfernst, woher soll dann der Client wissen wie die Mail zu entschlüsseln ist?
Titel: Re: verschlüsselter Mailversand über Mail.Box
Beitrag von: koehlerbv am 18.11.07 - 21:31:39
Diesen Key zu entdernen, ist sicherlich nicht sinnvoll. Unklar ist aber vor allem, woher dieser denn überhaupt kommen soll!
André hat das schon richtig konstatiert: Verschlüsselung von Mail funktioniert anders als das Verschlüsseln "normaler" Dokumente.
Ich muss aber zugeben: Mit dieser Problematik habe ich mich noch nicht beschäftigt (steht jetzt aber auf der Liste). AFAIK sitzt das Verfahren der Mailverschlüsselung aber in der sendenden Stelle, und der Router (damit auch nicht die MAIL.BOX) hat damit nichts mehr zu tun. So geht es also nicht.

Bernhard
Titel: Re: verschlüsselter Mailversand über Mail.Box
Beitrag von: m3 am 18.11.07 - 21:46:49
Code
'Verschlüsseln, danach den shared key entfernen
	Call memo.Encrypt

Nochmals, zu notesDocument.Encrypt meint die Designer-Hilfe:
Zitat
Since mail encryption works differently, don't use this method if you want to mail an encrypted document. Instead, set the EncryptOnSend property to True, and use the Send method.

Ich denke nicht, dass Encrypt zuverlässig funktionieren wird.
Titel: Re: verschlüsselter Mailversand über Mail.Box
Beitrag von: koehlerbv am 18.11.07 - 22:04:04
Ich denke nicht, dass Encrypt zuverlässig funktionieren wird.

Bestimmt nicht. NotesDocument.Encrypt nimmt den angegebenen Schlüssel (egal, welcher angegeben wurde - aber der muss dann auch dem Empfänger zur Verfügung stehen). NotesDocument.Send mit Verschlüsselung überlässt das Verschlüsseln Notes selber, welches dann den erforderlichen Key aus dem Domino Directory nimmt.
Wie gesagt: Mit Details kann ich aber momentan auch nicht dienen. Mit den Informationen, die man aus dem Domino Directory hat, sollte man das aber lösen können. Wir haben hier bestimmt Kollegen/Kolleginnen, die da mehr wissen. NotesDocument.Encrypt und dann ab in die MAIL.BOX kann aber per se nicht funktionieren.

Bernhard
Titel: Re: verschlüsselter Mailversand über Mail.Box
Beitrag von: BJ512 am 19.11.07 - 17:05:30
Hallo zusammen,
danke erstmal für eure beiträge. konnte nicht vorher reinschaun, bin nen bischen im stress.

Wozu brauchst du denn einen shared Encryption Key? Wenn du das Feld danach aus der Mail entfernst, woher soll dann der Client wissen wie die Mail zu entschlüsseln ist?

den shared Encryption Key entferne ich weil sonst das verschlüsseln nicht geht (sofern ich das richtig verstanden habe). so funktioniert das verschlüsseln auch bei einem doc.send,
habe das mehrmals ausgetestet. hier ein link zu diesem thema:
Klick mich (http://www-10.lotus.com/ldd/nd6forum.nsf/55c38d716d632d9b8525689b005ba1c0/29c9f3df1a27f27e85256f50002282dc?OpenDocument)

also auf gut deutsch wird das problem eindeutig am NotesDocument.Encrypt und der mailbox liegen.
weil die mail.box noch irgendwas mit der mail macht...
wir (mein kollege und ich) sind seit letzter woche leider auch nicht schlauer geworden, unsere admins wissen dazu auch nichts.

gibt es eigentlich mittlerweile irgendeine dokumentation bzgl. des versendens von mails über die mail.box?!
ist ja wenn man IBM anschreibt, laut denen eine undocumented function, man soll halt  doc.send benutzen ::)

ich werde am problem verschlüsselung und mail.box dran bleiben und mich auf jeden fall melden wenn ich
hierzu neuigkeiten habe.

für weitere beiträge hierzu wäre ich dankbar oder anmerkungen zu thema wäre ich dankbar.
Titel: Re: verschlüsselter Mailversand über Mail.Box
Beitrag von: koehlerbv am 20.11.07 - 11:00:43
Wenn ich mir den Code von Björn nochmal genauer anschaue: Eigentlich müsste der funktionieren. Und nach dem Encrypt kann auch $PublicEncryptionKeys wieder entfernt werden.
Was nimmst Du eigentlich als Wert für $PublicEncryptionKeys? Den abbreviated name? Der sollte es nämlich sein.

Bernhard
Titel: Re: verschlüsselter Mailversand über Mail.Box
Beitrag von: BJ512 am 20.11.07 - 12:42:48
hallo Bernhard,

ja ich nehm den abbreviated name. wie vorher schon geschrieben, wenn ich ein doc.send nehme klappt es, aber sobald ich über die mail.box gehe, ist die mail nicht mehr zu lesen.

bei EncryptionKeys nehme ich den Schlüssel ausm personendokument ausm NAB. (Notes zertifizierter öffentlicher Schlüssel = Feld "Certificate")...  kann das evtl. hier dran liegen?

also ich bin mir ziemlich sicher, das die mail.box etwas mit der mail anstellt, weshalb die emails hinterher nicht mehr zu lesen sind ::)
Titel: Re: verschlüsselter Mailversand über Mail.Box
Beitrag von: m3 am 20.11.07 - 12:46:51
Also wenn, dann solltest Du den Public Key des Empfängers nehmen. Sonst kann er das nicht entschlüsseln.

Zitat
If there are no encryption keys specified for a document, the document is encrypted with the current user's public key and can only be decrypted by that user.

Ansonsten: Don't use this method if you want to mail an encrypted document
Titel: Re: verschlüsselter Mailversand über Mail.Box
Beitrag von: BJ512 am 20.11.07 - 12:48:49
Also wenn, dann solltest Du den Public Key des Empfängers nehmen. Sonst kann er das nicht entschlüsseln.

das mache ich, sonst hätte es ja beim doc.send auch nicht geklappt.
Titel: Re: verschlüsselter Mailversand über Mail.Box
Beitrag von: koehlerbv am 20.11.07 - 12:49:58
Benötigt wird nur $PublicEncryptionKeys. Der Schlüssel wird dann automatisch aus dem / den Adressbücher/n ermittelt.
Die MAIL.BOX macht ganz bestimmt nichts mehr mit den Dokumenten, die dort einlangen. Das würde die Router Task machen, und die lässt auch die Finger davon.

Bernhard
Titel: Re: verschlüsselter Mailversand über Mail.Box
Beitrag von: BJ512 am 20.11.07 - 12:53:58
also das ganze mal ausprobieren ohne das feld "EncryptionKeys", weil das eigentlich ja gesetzt werden müsste...
wird das feld nicht mit hilfe des doc.send (in zusammenarbeit mit "EncryptOnSend"=1) befehls gesetzt?

Titel: Re: verschlüsselter Mailversand über Mail.Box
Beitrag von: BJ512 am 27.11.07 - 08:51:35
morgen zusammen,

ich habe die letzte woche mal ein bischen recherchiert.
wie die verschlüsselung an sich in notes funktioniert, konnte ich immer noch nicht herausfinden, selbst in den redbooks steht nicht wirklich mehr drin als das die verschlüsselung client seitig ausgeführt wird.


wie bernhard schon gesagt hat, die mail.box und der routertask machen nichts mehr /fassen die  email nicht mehr an. also bleibt schlussendlich nur ein unterschied:

Backend agent mit direktem senden über doc.send
und
speichern des dokumentes in der mail.box via doc.save

genau dieser kleine unterschied dürfte die verschlüsselung beim versenden über die mail.box nichtig machen:

laut redbooks wird beim doc.send ein beliebiger schlüssel generiert, welcher den PlainText verschlüsselt. diese beliebige automatisch generierte schlüssel wird wiederrum mit dem  private key des senders verschlüsselt. der empfänger kann nun über den public key(des senders) den generierten schlüssel entschlüsseln und damit wieder die mail lesbar machen.

Meine Vermutung:
genau dieses vorgehen des notes clients passiert über das doc.send, wohingegegen beim doc.save anscheinend das automatische generieren des beliebigen schlüssels ausbleibt, und somit die email nicht mehr lesbar ist.


Was meint ihr dazu?

Falls ich irgendwobei falsch liegen sollte, bitte ich euch mich zu berichtigen.


P.S.: unsere Lösung wird vorerst so aussehen (bis das Problem auf richtigem wege gelöst ist), das wir eine seperate ID für die DB erstellen, um damit dann die DB zu signieren womit das faken der email addresse dann erledigt wäre und nicht zustellbare emails nicht im nirvana verschwinden