Skip to content

Commit

Permalink
Add README
Browse files Browse the repository at this point in the history
  • Loading branch information
blochberger committed Oct 31, 2016
1 parent 3aae8a8 commit 1d65e31
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
22 changes: 22 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Tafelsalz

The main idea of this project is to provide usable but safe cyryptographic operations. Usability does not mean, that the minimum effort is required to integrate an operation. Minimum effort might result in single lines of code that you write… et voilà your system is secure. No. It means that it requires only the minimum of knowledge to do something wrong.

The [*libsodium*](https://libsodium.org) project has a similar goal, but does not leverage the features available in modern programming languages such as Swift. The *libsodium* library is based on [NaCl](https://nacl.cr.yp.to) whoose authors discussed the security issues related to cryptographic APIs that are too complicated and error-prone[^1] – or as Matthew Green[^2] put it:

> OpenSSL is the space shuttle of crypto libraries. It will get you to space, provided you have a team of people to push the ten thousand buttons required to do so. NaCl is more like an elevator — you just press a button and it takes you there. No frills or options.
>
> I like elevators.
To stay with the analogy: *libsodium* and *NaCl* prevent any accidents to happen if you press a button for some floor which isn't there. This project tries to prevent the button being there in the first place.

This is achieved by leveraging programming language features in a way that an operation cannot be called with invalid or insecure parameters. Every such call should be prevented at compile time already.

Note that the goal is not to prevent malicious attackers to circumvent the established protection mechanisms by the programming language features but to prevent accidental misuse of cryptographic APIs.

⚠️ **WARNING**: This project is still work in progress and the API is highly unstable. It is recommended to use a more stable library for the time being, such as [jedisct1/swift-sodium](https://github.com/jedisct1/swift-sodium).



[^1]: D. J. Bernstein, T. Lange, and P. Schwabe, **The Security Impact of a New Cryptographic Library** in *Progress in Cryptology – LATINCRYPT 2012 – 2nd International Conference on Cryptology and Information Security in Latin America, Santiago, Chile, October 7-10, 2012. Proceedings* (A. Hevia and G. Neven, eds.), pp. 159–176
[^2]: M. Green, **The anatomy of a bad idea**, 2012, URL: http://blog.cryptographyengineering.com/2012/12/the-anatomy-of-bad-idea.html
12 changes: 12 additions & 0 deletions Tafelsalz.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
objects = {

/* Begin PBXBuildFile section */
604E24C91DC7720F00942D54 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 604E24C81DC7720F00942D54 /* README.md */; };
60C695501DBDE36100CE9435 /* Tafelsalz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 60C695461DBDE36100CE9435 /* Tafelsalz.framework */; };
60C695571DBDE36100CE9435 /* Tafelsalz.h in Headers */ = {isa = PBXBuildFile; fileRef = 60C695491DBDE36100CE9435 /* Tafelsalz.h */; settings = {ATTRIBUTES = (Public, ); }; };
60C696551DBDE5CA00CE9435 /* Tafelsalz.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60C696541DBDE5CA00CE9435 /* Tafelsalz.swift */; };
Expand All @@ -29,6 +30,7 @@
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
604E24C81DC7720F00942D54 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
60C695461DBDE36100CE9435 /* Tafelsalz.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Tafelsalz.framework; sourceTree = BUILT_PRODUCTS_DIR; };
60C695491DBDE36100CE9435 /* Tafelsalz.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Tafelsalz.h; sourceTree = "<group>"; };
60C6954A1DBDE36100CE9435 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
Expand Down Expand Up @@ -122,9 +124,18 @@
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
604E24CA1DC7721B00942D54 /* Supporting Files */ = {
isa = PBXGroup;
children = (
604E24C81DC7720F00942D54 /* README.md */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
60C6953C1DBDE36000CE9435 = {
isa = PBXGroup;
children = (
604E24CA1DC7721B00942D54 /* Supporting Files */,
60C695D81DBDE50300CE9435 /* Dependencies */,
60C695481DBDE36100CE9435 /* Tafelsalz */,
60C695531DBDE36100CE9435 /* TafelsalzTests */,
Expand Down Expand Up @@ -357,6 +368,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
604E24C91DC7720F00942D54 /* README.md in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down

0 comments on commit 1d65e31

Please sign in to comment.