USB-Tokens machen ownCloud sicherer

Ende-zu-Ende-Verschlüsselung (E2EE) für ownCloud Enterprise

| Autor / Redakteur: Dirk Srocke / Florian Karlstetter

Ende-zu-Ende-Verschlüsselung kostet bei ownCloud pro Nutzer und Jahr 20 Euro zusätzlich.

Ende-zu-Ende-Verschlüsselung kostet bei ownCloud pro Nutzer und Jahr 20 Euro zusätzlich.
(Bild: ownCloud GmbH)

Mit der jetzt angekündigten Version 2 einer Ende-zu-Ende-Verschlüsselung (E2EE) für ownCloud Enterprise werden Nutzer auch Hardware-Tokens nutzen können, darunter Smartcards oder USB-Geräte.

OwnCloud kündigt die zweite Generation der Ende-zu-Ende-Verschlüsselung (E2EE) für ownCloud Enterprise an. Mit der kostenpflichtigen Option sollen Nutzer Dateien sicher miteinander austauschen – ohne dass unbefugte Dritte oder Administratoren darauf zugreifen könnten.

Die asymmetrische Ver- und Entschlüsselung findet direkt im Browser statt. Hierbei nutzt die Lösung RSA mit 2.048 Bit. Um private Keys zu schützen, könne E2EE die Entschlüsselung des File-Keys nun auch auf einen externen Key-Service auslagern, der die Kommunikation mit externen Hardware-Tokens unterstützt. Anschließend werde der dechiffrierte File-Key vom Browser für die eigentliche Entschlüsselung verwendet.

OwnCloud bietet Filesharing as a Service

E2EE ist für Nutzer der ownCloud Enterprise Subscription erhältlich und kostet zusätzlich zu dieser 20 Euro pro Nutzer und Jahr; Admins dürfen das Produkt 30 Tage kostenlos testen. Die eigentliche Enterprise Subscription ist ab jährlich 7.200 Euro für 50 Nutzer zu haben. Die Verschlüsselungssoftware sei zudem ein wesentlicher Bestandteil des gehosteten Angebots ownCloud.Online.


‘);
commentHtml.find(‘a’).each(function(){
$(this).prop(“target”,’_blank’);
self.comment(commentHtml.html());
});
/* Like Funktion */
self.like = function (obj) {
if (!obj.hasClass(“inactive”)) {
$.ajax({
type: “PUT”,
cache: false,
url: “/api/comments/” + self.id() + “/like/up/”,
data: JSON.stringify({ token: config.STR_token }),
dataType: “json”,
success: function (data) {
self.likes(data.likes);
obj.closest(“.comment-actions”).find(“.like”).addClass(“inactive”);
},
failure: function (errMsg) {
console.log(errMsg);
}
});
}
};
/* DisLike Funktion */
self.dislike = function (obj) {
if (!obj.hasClass(“inactive”)) {
$.ajax({
type: “PUT”,
cache: false,
url: “/api/comments/” + self.id() + “/like/down/”,
data: JSON.stringify({ token: config.STR_token }),
dataType: “json”,
success: function (data) {
self.dislikes(data.dislikes);
obj.closest(“.comment-actions”).find(“.like”).addClass(“inactive”);
},
failure: function (errMsg) {
console.log(errMsg);
}
});
}
};
/* Bearbeiten Funktion Editor öffnen und mit Content befüllen */
self.showEdit = function (obj) {
if (obj.hasClass(“active”)) {
$(“#commentform-edit”).hide();
$(“.kommentare button”).removeClass(“active”);
}
else {
$(“.kommentare button”).removeClass(“active”);
obj.addClass(“active”);
$(“#commentform-answer”).hide();
if (typeof (CKEDITOR.instances.commentedittext) !== ‘undefined’) {
CKEDITOR.instances.commentedittext.destroy();
};
CKEDITOR.on(‘instanceReady’, function () {
getUsers(CKEDITOR.instances.commentedittext);
});
obj.closest(“.comment-actions”).after($(“#commentform-edit”));
$(“#commentform-edit”).show();
CKEDITOR.replace(‘commentedittext’, ckeditorConfig);
CKEDITOR.instances.commentedittext.setData(self.comment());
CKEDITOR.instances.commentedittext.on(‘focus’, function () {
$(“#cke_commentedittext”).removeClass(“invalid”);
});
/**/
$(“#postbutton-edit”).off(“click”);
$(“#postbutton-edit”).click(function () {
var STR_comment = CKEDITOR.instances.commentedittext.getData();
if ($.trim(STR_comment).length == 0) {
$(“#cke_commentedittext”).addClass(“invalid”);
}
if ($.trim(STR_comment).length > 0) {
$(“.kommentare button”).removeClass(“active”);
$(“#commentform-edit”).hide();
self.update();
}
});
}
};
self.update = function () {
$(“#commentform-edit”).find(“.formoverlay”).show();
self.comment(CKEDITOR.instances.commentedittext.getData());
var parsedComment = “

” + self.comment + “

“;
var ARR_mentions = [];
$(parsedComment).find(“a.mention”).each(function () {
ARR_mentions.push($(this).prop(“rel”));
});
$.ajax({
type: “PUT”,
cache: false,
url: “/api/comments/” + self.id() + “/”,
data: JSON.stringify({
data: ko.mapping.toJS(self),
token: config.STR_token,
mentions: ARR_mentions,
sort: config.sort,
sortorder: config.sortorder,
check: config.check,
mod: false,
usermodified: true
}),
dataType: “text”,
contentType: “application/json; charset=utf-8”,
success: function (data) {
data = jQuery.parseJSON(data);
$(“#commentform-edit”).find(“.formoverlay”).hide();
if (data.id !== null && typeof (data.id) !== ‘undefined’) {
if (config.BOO_approveByAdmin) {
var $content = $(“.comment-alert”);
$.colorbox({
inline: true,
href:$content,
width: “40%”,
overlayClose: true,
opacity: 0.9
});
setTimeout(function () {
$.colorbox.close();
}, 10000);
}
else {
self.usermodified(data.usermodified);
}
}
else {
alert(“Kommentar wurde nicht aktualisiert!”);
}
},
failure: function (errMsg) {
alert(“Fehler beim aktualisieren!”);
console.log(errMsg);
}
});
};
/**/
self.showAnswer = function (obj) {
if (obj.hasClass(“active”)) {
$(“#commentform-answer”).hide();
$(“.kommentare button”).removeClass(“active”);
}
else {
$(“.kommentare button”).removeClass(“active”);
obj.addClass(“active”);
if (typeof (CKEDITOR.instances.commentanswertext) !== ‘undefined’) {
CKEDITOR.instances.commentanswertext.destroy();
};
CKEDITOR.on(‘instanceReady’, function () {
getUsers(CKEDITOR.instances.commentanswertext);
});
$(“#commentform-edit”).hide();
obj.closest(“.comment-actions”).after($(“#commentform-answer”));
$(“#relatedPost”).val(self.id());
$(“#commentform-answer”).show();
CKEDITOR.replace(‘commentanswertext’, ckeditorConfig);
CKEDITOR.instances.commentanswertext.setData(“”);
CKEDITOR.instances.commentanswertext.on(‘focus’, function () {
$(“#cke_commentanswertext”).removeClass(“invalid”);
});
$(“#username-answer”).on(“focus”, function () {
$(“#username-answer”).removeClass(“invalid”);
});
}
};
self.report = function () {
/**/
$(“#comment-report-id”).val(self.id());
/**/
$.colorbox({
inline: true, href: “#comment-report-dialog”, width: “450px”, overlayClose: false, onClosed: function () {
$(“#comment-report-id”).val(“”);
$(“#comment-report-text”).val(“”);
}
});
/**/
$(“#comment-report-send”).off(“click”);
$(“#comment-report-send”).click(function () {
var STR_message = $(“#comment-report-text”).val();
$.ajax({
type: “POST”,
cache: false,
url: “/api/comments/” + self.id() + “/report/”,
data: JSON.stringify({
data: ko.mapping.toJS(self),
message: STR_message,
token: config.STR_token
}),
dataType: “json”,
success: function (data) {
$.colorbox.close();
},
failure: function (errMsg) {
alert(“Fehler beim Senden!”);
console.log(errMsg);
}
});
});
};
self.approve = function () {
var txt = “Hallo ” + self.userinfo.username() + “,

” + “Ihr Kommentar zum Artikel ” + self.articleinfo.articletitle() + “ wurde freigegeben!

” + “Vielen Dank für Ihr Engagement auf ” + self.clientinfo.clientname() + “

” + “Liebe Grüße,
” + “das ‘” + self.clientinfo.clientname() + “‘ Team”;
$(“#textdiv_approve”).html(txt);
/**/
$.colorbox({
inline: true, href: “#comment-approve-dialog”, width: “450px”, transition: “elastic”, overlayClose: false, onClosed: function () {
$(“#textdiv_approve”).html(“”);
}
});
if(self.userinfo.useruuid().length > 0){
$(“#warning-unregistered-approve”).hide();
$(“#mailform_approve”).show();
$.colorbox.resize();
}
else{
$(“#warning-unregistered-approve”).show();
$(“#mailform_approve”).hide();
$.colorbox.resize();
}
/**/
$(“#comment-approve-send”).off(“click”);
$(“#comment-approve-send”).click(function () {
var STR_message = $(“#textdiv_approve”).html();
var STR_subject = $(“#comment-approve-subject”).val();
$.ajax({
type: “POST”,
cache: false,
url: “/api/comments/” + self.id() + “/approve/”,
data: JSON.stringify({
message: STR_message,
subject: STR_subject
}),
dataType: “json”,
success: function (data) {
$.colorbox.close();
location.reload();
},
failure: function (errMsg) {
alert(“Fehler beim Senden!”);
console.log(errMsg);
}
});
});
};
self.unapprove = function () {
var txt = ‘Hallo ‘ + self.userinfo.username() + ‘,

Ihr Kommentar zum Artikel ‘ +
self.articleinfo.articletitle() + ‘
hat leider nicht unseren Richtlinien entsprochen und wurde von unserem Team aktualisiert!

‘ + ‘Falls Sie Fragen zu unseren Kommentar-Richtlinien haben, schreiben Sie uns einfach eine Mail

‘ + ‘Liebe Grüße,
das ‘ + self.clientinfo.clientname() + ‘ Team’;
$(“#textdiv_unapprove”).html(txt);
/**/
$.colorbox({
inline: true, href: “#comment-unapprove-dialog”, width: “450px”, transition: “elastic”, overlayClose: false, onClosed: function () {
$(“#textdiv_unapprove”).html(“”);
}
});
if(self.userinfo.useruuid().length > 0){
$(“#warning-unregistered-unapprove”).hide();
$(“#mailform_unapprove”).show();
$.colorbox.resize();
}
else{
$(“#warning-unregistered-unapprove”).show();
$(“#mailform_unapprove”).hide();
$.colorbox.resize();
}
/**/
$(“#comment-unapprove-send”).off(“click”);
$(“#comment-unapprove-send”).click(function () {
var STR_message = $(“#textdiv_unapprove”).html();
var STR_subject = $(“#comment-unapprove-subject”).val();
$.ajax({
type: “POST”,
cache: false,
url: “/api/comments/” + self.id() + “/unapprove/”,
data: JSON.stringify({
message: STR_message,
subject: STR_subject
}),
dataType: “json”,
success: function (data) {
$.colorbox.close();
location.reload();
},
failure: function (errMsg) {
alert(“Fehler beim Senden!”);
console.log(errMsg);
}
});
});
};
}
/* View Model KOMMENTARMODUL */
var ViewModel = function () {
var self = this;
self.initialized = ko.observable(false);
self.commentsLoading = ko.observable(false);
self.cutoff = config.BOO_cutoff;
self.commentUsers = null;
self.commentLikes = config.LST_commentlikes;
self.loggedUserId = ko.observable(config.useruuid);
self.from = ko.observable(0);
self.count = ko.observable(config.number);
self.totalHits = ko.observable(0);
self.comments = ko.observableArray([]);
self.hasMore = ko.observable(false);
self.hasSubscription = ko.observable(false);
/* Check ob ein Overflow innerhalb des Contents vorliegt*/
self.checkOverflow = function (element, index, data) {
var content = $(element).find(“.comment-content”).first();
if (content.prop(‘scrollHeight’) > content.height()) {
content.addClass(“expandable”);
}
else {
content.addClass(“complete”);
$(element).find(“.comment-actions .expander”).hide();
$(element).find(“.comment-expand”).hide();
}
};
self.addComment = function (STR_id, OBJ_comment) {
if (STR_id !== null && STR_id.length > 0) {
/* Subkommentar */
for (x = 0; x -1 || config.sortsetting.indexOf(‘top’) > -1) {
this.comments.push(OBJ_comment);
}
else {
this.comments.unshift(OBJ_comment);
}
if (this.comments().length > 0) {
$(“#comments”).fadeIn();
}
}
};
self.getComments = function () {
self.commentsLoading(true);
$.ajax({
type: “GET”,
cache: false,
url: “/api/comments/article/” + config.articleid + “/”,
data: { token: config.STR_token, sort: config.sort, sortorder: config.sortorder, count: self.count(), from: self.from(), uid: config.useruuid, approved: config.approved },
dataType: “json”,
success: function (commentsfromserver) {
/*Ladebilder ausblenden*/
self.commentsLoading(false);
self.initialized(true);
if (commentsfromserver.data.length > 0) {
for (x = 0; x ” + comment.comment + “

“;
var ARR_mentions = [];
$(parsedComment).find(“a.mention”).each(function () {
ARR_mentions.push($(this).prop(“rel”));
});
$.ajax({
type: “POST”,
url: “/api/comments/”,
cache: false,
data: JSON.stringify({
data: comment,
mentions: ARR_mentions,
token: config.STR_token,
sort: config.sort,
sortorder: config.sortorder,
check: config.check
}),
dataType: “text”,
contentType: “application/json; charset=utf-8”,
success: function (data) {
data = jQuery.parseJSON(data);
overlay.hide();
$(“.kommentare button”).removeClass(“active”);
if (data.id !== null && typeof (data.id) !== ‘undefined’) {
if (config.BOO_approveByAdmin) {
var $content = $(“.comment-alert”);
$.colorbox({
inline: true,
href:$content,
width: “40%”,
overlayClose: true,
opacity: 0.9
});
setTimeout(function () {
$.colorbox.close();
}, 10000);
}
else {
self.addComment(data.relatedComment, new CommentViewModel(data));
/*Subscribers benachrichtigen über neue Nachricht */
self.notifySubscribers();
}
/* Subscribe */
if (subscribe && !self.hasSubscription()) {
self.subscribe(comment);
}
}
else {
alert(“Kommentar wurde nicht angelegt!”);
}
},
failure: function (errMsg) {
alert(“Fehler beim anlegen!”);
console.log(errMsg);
}
});
};
self.expandContent = function (obj) {
if (obj.closest(‘.comment-item’).find(‘.comment-content’).hasClass(“expandable”)) {
var content = obj.closest(‘.comment-item’).find(‘.comment-content’).first();
content.toggleClass(‘expanded’);
if (content.hasClass(“expanded”)) {
obj.text(lang.collapse);
} else {
obj.text(lang.expand);
}
}
return true;
};
self.subscribe = function () {
$.ajax({
type: “POST”,
url: “/api/comments/article/” + config.articleid + “/subscribe/”,
cache: false,
data: JSON.stringify({
useruuid: config.useruuid,
token: config.STR_token,
articleinfo: comment.articleinfo,
clientinfo: comment.clientinfo
}),
dataType: “json”,
success: function (data) {
if (data.result) {
self.hasSubscription(true);
}
},
failure: function (errMsg) {
alert(“Fehler beim Abonnnieren!”);
console.log(errMsg);
}
});
}
self.unsubscribe = function () {
$.ajax({
type: “POST”,
url: “/api/comments/article/” + config.articleid + “/unsubscribe/”,
cache: false,
data: JSON.stringify({
useruuid: config.useruuid,
token: config.STR_token
}),
dataType: “json”,
success: function (data) {
if (data.result) {
self.hasSubscription(false);
}
},
failure: function (errMsg) {
alert(“Fehler beim Senden!”);
console.log(errMsg);
}
});
}
self.checkSubscription = function () {
$.ajax({
type: “GET”,
url: “/api/comments/article/” + config.articleid + “/checksubscription/”,
cache: false,
data: { useruuid: config.useruuid, token: config.STR_token },
dataType: “json”,
success: function (data) {
self.hasSubscription(data.result);
},
failure: function (errMsg) {
alert(“Fehler beim Senden!”);
console.log(errMsg);
}
});
};
self.notifySubscribers = function () {
$.ajax({
type: “POST”,
url: “/api/comments/article/” + config.articleid + “/notifysubscribers/”,
cache: false,
data: JSON.stringify({ token: config.STR_token }),
dataType: “json”,
success: function () { },
failure: function (errMsg) {
console.log(errMsg);
}
});
}
}
/*Users mit Null initialisieren, um in getUsers darauf prüfen zu können*/
var commentUsers = null;
var getUsers = function (OBJ_ckeditor) {
/**/
if (commentUsers != null) {
OBJ_ckeditor.execCommand(‘reloadSuggestionBox’, commentUsers);
}
else {
$.ajax({
type: “GET”,
cache: false,
url: “/api/comments/article/” + config.articleid + “/users/”,
data: { token: config.STR_token },
dataType: “json”,
success: function (users) {
commentUsers = users.data;
OBJ_ckeditor.execCommand(‘reloadSuggestionBox’, commentUsers);
},
failure: function (errMsg) {
console.log(errMsg);
}
});
}
};
$(document).ready(function () {
/* ViewModel initialisieren */
var viewModel = new ViewModel();
if (config.BOO_commentsAllowed) {
/* CKEditor initialisieren */
/* TriggerKey == @ */
CKEDITOR.replace(‘comment’, ckeditorConfig);
CKEDITOR.instances.comment.on(‘focus’, function () {
$(“#cke_comment”).removeClass(“invalid”);
/* Users laden*/
getUsers(CKEDITOR.instances.comment);
});
CKEDITOR.disableAutoInline = true;
$(“#username”).on(“focus”, function () {
$(“#username”).removeClass(“invalid”);
});
$(“#comment-report-text”).on(“focus”, function () {
$(“#comment-report-text”).removeClass(“invalid”);
});
$(“#postbutton”).click(function () {
comment[“comment”] = CKEDITOR.instances.comment.getData();
comment[“userinfo”][“username”] = $(“#username”).val();
comment[“relatedComment”] = “”;
var subscribe = $(“#subscribe”).prop(“checked”);
var valid = true;
if ($.trim(comment[“comment”]).length == 0) {
$(“#cke_comment”).addClass(“invalid”);
valid = false;
}
if ($.trim(comment[“userinfo”][“username”]).length == 0) {
$(“#username”).addClass(“invalid”);
valid = false;
}
if (valid) {
var form = $(“#commentform”);
CKEDITOR.instances.comment.setData(“”);
var overlay = $(“#commentform”).find(“.formoverlay”);
viewModel.postComment(comment, subscribe, overlay);
}
});
$(“#postbutton-answer”).click(function () {
comment[“comment”] = CKEDITOR.instances.commentanswertext.getData();
comment[“userinfo”][“username”] = $(“#username-answer”).val();
comment[“relatedComment”] = $(“#relatedPost”).val();
var subscribe = $(“#subscribe-answer”).prop(“checked”);
var valid = true;
if ($.trim(comment[“comment”]).length == 0) {
$(“#cke_commentanswertext”).addClass(“invalid”);
valid = false;
}
if ($.trim(comment[“userinfo”][“username”]).length == 0) {
$(“#username-answer”).addClass(“invalid”);
valid = false;
}
if (valid) {
$(“#commentform-answer”).hide();
CKEDITOR.instances.commentanswertext.setData(“”);
var overlay = $(“#commentform-answer”).find(“.formoverlay”);
viewModel.postComment(comment, subscribe, overlay);
}
});
}
/*Data-Binding herstellen*/
ko.applyBindings(viewModel);
/*Kommentare laden*/
viewModel.getComments();
if (config.useruuid.length > 0) {
/*Prüfen ob Thread abonniert wurde*/
viewModel.checkSubscription();
}
});

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter
www.mycontentfactory.de (ID: 45657390 / Smartcard und Token)

https://www.Security-Insider.de/themenbereiche/identity-und-access-management/smartcard-und-token/articles/785102

Related posts