caldav选择导入日历

日历技术默认情况下未加密。 这意味着您与您的日历通知之间的任何个人或提供者都可以读取并可能存储该信息。 用户应该通过使用与端到端加密配对的开源软件来拥有和保护数据。

许多人都熟悉日历的iCal格式(.ics文件)。 这是联盟协议罕见的成功案例之一,因为不同的供应商在日历格式方面达成了相对共识。 它也经受了时间的考验。 成立于1998年 ,至今已有20多年的历史了。 日历协议必须做正确的事。

CalDAV需要更新

客户端-服务器的故事是较新的(只有13年的历史了),但它迫切需要更新。 CalDAV是用于与服务器交换日历信息的协议,基本上说“通过WebDAV提取iCal文件”(类似于FTP )。

CalDAV的问题与IMAP的电子邮件存在相同的问题:用户依靠其服务提供商来保护其数据安全。 所有互联网访问都需要一定程度的信任。 信任安全固然有其地位,但它不能防止数据泄露:大提供商已经积累了如此多的数据,它们已成为网络犯罪分子的有利可图的目标。 这是加密必须成为新常态的原因之一。

通过加密日历流量来增加隐私

为了充分利用共享托管的所有优势并节省成本,并同时保护用户隐私,我们必须进行加密。 如果我们可以加密整个邮箱,为什么不能加密日历?

设计加密的日历服务

端到端加密带来了一系列独特的挑战。 在Tutanota,我们开发加密日历的主要目的是我们的服务器必须不知道您的事件发生的时间,地点或与谁,但是您仍然必须能够接收警报并与其他用户共享日历。

加密数据(发生事件的地点,地点和与谁相关)相对容易。 但是,许多此类数据会通过警报发送并通过通知传递给用户,这可能会泄漏重要信息。 因此,我们还需要对警报进行加密,并从服务器中隐藏事件的时间。

加密警报的挑战在于,即使没有用户密码来解密警报,警报也必须可用。 最简单的解决方案是在用户创建警报的设备上本地安排警报。 但是云服务设置了用户的期望:如果在桌面上设置警报,则希望在移动应用程序中收到警报。 为了成为主流云日历的可行替代方案,我们需要一种针对私人警报的解决方案。

这可以通过消息传递服务来完成。 在这种情况下,大多数应用程序都使用云服务,但这会特别麻烦:当服务使用专有的推送工具时,该服务不仅可以看到通知中的所有信息,还可以存储该信息并将其用于其他目的。 为了使日历完全不公开,我们需要一种可确保隐私的替代方法。 经过大量研究和考虑,我们构建了自己的开源通知服务 。

尽管使用非加密警报本来会容易得多,但我们决定改编此安全日历系统以使其适用于警报。 从一开始就将安全性和隐私性纳入代码中,因此用户可以完全控制其数据。

通知加密如何工作

解决方案如下所示:我们仅为此设备加密部分事件信息,而无需冒险将日历密钥存储在设备上。 我们用于电子邮件的通知系统已经包含处理不同设备的机制,每个设备都有加密密钥,并且可以处理错过的更新。

那么,当用户设置警报时会发生什么? 每个设备的警报详细信息都经过加密,并且无提示通知发送到每个设备。 由于不同的设备之间已经具有共享的机密(即,其他设备密钥可供登录用户使用,而后台设备不可用),因此我们可以使用对称加密(AES)安全有效地加密警报更新。

设备要么立即接收它,要么在联机时获取通知。 用户不会注意到此过程。 如果设备密钥被盗用,攻击者仍然无法解密日历的其余部分,从而极大地限制了潜在攻击的影响。 用户可以随时替换或撤消设备密钥,因此不会使用旧密钥加密更多信息。

设备使用其设备加密密钥存储警报,并在设备上本地安排警报。 这样,当警报在用户设备上弹出时,我们的服务器就不会参与。 因此,我们完全不了解用户的日历事件。

事件加密如何工作

日历事件的所有详细信息都用日历密钥加密,这意味着只有创建日历的人(和共享日历的人)才能访问它。 加密链如下所示:

user key –> calendar key –> calendar event session key –> field of the calendar 
user key –> calendar key –> calendar event session key –> field of the calendar

共享日历后,日历密钥将使用收件人的公共密钥加密并放入邀请中。 接受邀请后,日历将不再使用非对称加密,因为用户现在拥有一个共享的秘密:日历密钥。 这样,本着端到端加密的最佳精神,我们将完全忽略日历的内容,同时仍促进共享和协作。

项目状态

目前,我们的客户是完全开源的。 但是,您需要一个服务器实现来存储数据。 Tutanota服务器软件目前尚未发布,因为在有联邦协议进行加密之前,拥有多个服务器是没有意义的,我们首先要解决量子后的加密问题。

Tutanota使用一层加密。 例如, crypto目录中有一些加密 。 那里的功能遍历数据类型的描述,并将其转换为加密的对象。 例如,这里是一个日历事件 。

也有用于Android的本机部分,用于解密警报(例如,在alarms / AlarmInfo.java中)和用于iOS的本机代码(在Sources / Alarms / TUTAlarmNotification.m中)。

您可以将Tutanota客户端修改为自定义服务器,也可以只查看加密代码以了解其实现方式。 如果您不希望自己的系统被黑客入侵,可以将Tutanota.com作为服务使用。

隐私是权利

我们相信CalDAV已经达到了目的。 现在是时候用支持加密以及端到端加密警报的东西代替它了。 组成Tutanota的开源组件证明了这是可能的。 我们认为iCal仍然是进行“离线”交换的良好文件格式,并且Tutanota日历支持导入和导出。

端到端加密没有得到广泛使用-不是因为它无法实现-因为它不符合大型企业的利益。 我们认为,隐私权是开源用户关心的一项权利,Tutanota的日历旨在使我们到达那里。 在那里保持安全。

翻译自: https://opensource.com/article/20/3/caldav-security

caldav选择导入日历