Google to Introduce Tink Cryptographic Library

Google already uses Tink in projects like AdMob, Google Pay, Google Assistant, Firebase and the Android Search App
31 August 2018   2714

Google introduced the open cryptographic library called Tink with support for Java, C ++ and Objective-C, as well as experimental support for Go and JavaScript. Product primitives use theĀ BoringSSL and the Java Cryptography Architecture framework.

Even small errors in the use of cryptographic methods can have serious consequences, and they are carefully study for decades. Many developers do not have so much time, so when creating a new tool, the company tried to reduce the number of potential errors with cryptographic APIs. Google already uses Tink in projects like AdMob, Google Pay, Google Assistant, Firebase and the Android Search App.

These primitives are used in the core of the library:

  • AEAD (Authenticated Encryption with Associated Data) for symmetric encryption of blocks and data streams over a fixed key. The tool does not require the definition of specific algorithms and their parameters. With it, you can quickly perform encryption and decryption operations:
    import com.google.crypto.tink.Aead;
     import com.google.crypto.tink.KeysetHandle;
     import com.google.crypto.tink.aead.AeadFactory;
     import com.google.crypto.tink.aead.AeadKeyTemplates;
     // 1. Generate the key material.
     KeysetHandle keysetHandle = KeysetHandle.generateNew(
     AeadKeyTemplates.AES256_EAX);
     // 2. Get the primitive.
     Aead aead = AeadFactory.getPrimitive(keysetHandle);
     // 3. Use the primitive.
     byte[] plaintext = ...;
     byte[] additionalData = ...;
     byte[] ciphertext = aead.(plaintext, additionalData);
  • The MAC (Message Authentication Codes) provides message authentication codes.

In Tink, there are functions for creating a digital signature and its verification, as well as the functions of fast hybrid encryption.

Features of work
Each primitive supports stateless mode operation, secure copy operations and the use of keys with a length of 128 bits. The library automatically blocks potentially unsafe operations, for example, downloading keys from unencrypted files on the disk. Tink provides an API for rotating keys and interacting with external key management systems: Google Cloud KMS, Amazon KMS, Android Keystore and Apple iOS KeyChain.

The library has a modular architecture, allows you to connect custom primitives and replace them with existing code files without changing the final applications. From Tink, you can exclude part of the tools. For example, if the program only uses digital signature verification, you can remove symmetric encryption components to reduce the application code size.

In August 2018, the creators of the VPN protocol, WireGuard, announced the creation of the Zinc cryptographic library, which, upon introduction into the core Linux kernel, will accelerate the process of data encryption through a simplified set of crypto algorithms.

Apache NetBeans 11.2 IDE to be Released

The release contains support for the Java SE, Java EE, PHP, JavaScript, and Groovy programming languages
05 November 2019   123

Organization The Apache Software Foundation introduced the Apache NetBeans 11.2 IDE. This is the fourth release prepared by the Apache Foundation after the transfer of NetBeans code by Oracle and the first release after moving a project from an incubator to the category of primary Apache projects. The release contains support for the Java SE, Java EE, PHP, JavaScript, and Groovy programming languages. The transfer of C / C ++ support from the code base provided by Oracle is expected in release 11.3, scheduled for January. In April 2020, the release of Apache NetBeans 12 will be formed, which will be accompanied as part of an extended support cycle (LTS).

Key NetBeans 11.2 innovations:

  • Added support for Java SE 13. For example, the ability to use "switch" in the form of an expression rather than an operator is added. Highlighting and conversion operations are implemented for text blocks that include multi-line text data without using character escaping in them and preserving the original text formatting. The indicated features have so far been marked as test and are activated only during assembly with the "--enable-preview" flag;
  • Added new features of the PHP language, developed in the 7.4 branch, the release of which is scheduled for November 28. NetBeans added processing of such innovations as typed properties, the operator "?? =" ("a ?? = b" is similar to "a = a ?? b"), the ability to substitute existing arrays when defining a new array (operator "... $ var "), a new mechanism for serializing objects (a combination of Serializable and __sleep () / __ wakeup ()), the ability to visualize large numbers (1_000_000_00) and a new format for defining functions" fn (parameter_list) => expr "(for example," fn ($ x ) => $ x + $ y "is analogous to" $ fn2 = function ($ x) use ($ y) {return $ x + $ y;} ").
  • Performance optimizations are carried out: The search speed of binary files in the tree with source texts has been increased. On Linux and Windows, the WatchService interface provided by the Java NIO2 API is used to track changes to directories. Faster identification of files with archives;
  • Improved support for the Gradle build system. Added the ability to load Java compiler flags, which allows you to use Java experimental features in Gradle projects ("it.options.compilerArgs.add ('- enable-preview')"). Also added is the processing of user input in a tab that reflects the progress of the assembly (Output). When starting the Gradle Daemon background process, the org.gradle.jvmargs property is now taken into account;
  • The problems with the license for the code with the JavaScript parser were resolved due to which the parser had to be installed separately earlier. Now the graal-js parser has been transferred from the GPL to UPL (Universal Permissive License);
  • Installer work has been improved, in which support for the custom installation of individual NetBeans components has appeared;
  • Payara application server support updated to Payara Platform 5.193;
  • Added support for the extended attribute syntax in HTML5 used in Angular (for example, <input [value] = 'test' />, <input (change) = 'test' />, etc.)